summaryrefslogtreecommitdiff
path: root/source4/scripting
diff options
context:
space:
mode:
Diffstat (limited to 'source4/scripting')
-rwxr-xr-xsource4/scripting/python/examples/dnsserver.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/source4/scripting/python/examples/dnsserver.py b/source4/scripting/python/examples/dnsserver.py
new file mode 100755
index 0000000000..c65b1c4099
--- /dev/null
+++ b/source4/scripting/python/examples/dnsserver.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+
+# script to test the dnsserver RPC protocol
+
+import sys
+from optparse import OptionParser
+
+sys.path.insert(0, "bin/python")
+
+import samba
+import samba.getopt as options
+from samba.dcerpc import dnsserver, security, dnsp
+
+
+########### main code ###########
+if __name__ == "__main__":
+ parser = OptionParser("dnsserver [options] server")
+ sambaopts = options.SambaOptions(parser)
+ credopts = options.CredentialsOptionsDouble(parser)
+ parser.add_option_group(credopts)
+
+ (opts, args) = parser.parse_args()
+
+ if len(args) < 3:
+ print("Usage: dnsserver.py [options] DNSSERVER DNSZONE NEWNAME")
+ sys.exit(1)
+
+ server = args[0]
+ dnszone = args[1]
+ newname = args[2]
+
+ lp = sambaopts.get_loadparm()
+ creds = credopts.get_credentials(lp)
+
+ if not creds.authentication_requested():
+ parser.error("You must supply credentials")
+
+ binding_str = "ncacn_ip_tcp:%s[print,sign]" % server
+
+ dns_conn = dnsserver.dnsserver(binding_str, lp, creds)
+
+ print("querying a NS record")
+ res = dns_conn.DnssrvEnumRecords2(0x00070000,
+ 0,
+ server,
+ dnszone,
+ newname,
+ None,
+ dnsp.DNS_TYPE_NS,
+ 0x0f,
+ None,
+ None)
+
+ print("adding a NS glue record")
+ name = dnsserver.DNS_RPC_NAME()
+ name.str = newname
+
+ addrec = dnsserver.DNS_RPC_RECORD()
+ addrec.wType = dnsp.DNS_TYPE_NS
+ addrec.dwFlags = 0
+ addrec.dwSerial = 0
+ addrec.dwTtlSeconds = 3600
+ addrec.dwTimeStamp = 0
+ addrec.dwReserved = 0
+ addrec.data = name
+
+ addrecbuf = dnsserver.DNS_RPC_RECORD_BUF()
+ addrecbuf.rec = addrec
+
+ res = dns_conn.DnssrvUpdateRecord2(0x00070000,
+ 0,
+ server,
+ dnszone,
+ newname,
+ addrecbuf,
+ None)
+
+
+ print("querying the NS record")
+ res = dns_conn.DnssrvEnumRecords2(0x00070000,
+ 0,
+ server,
+ dnszone,
+ newname,
+ None,
+ dnsp.DNS_TYPE_NS,
+ 0x0f,
+ None,
+ None)