diff options
Diffstat (limited to 'python/examples/dnsserver.py')
-rwxr-xr-x | python/examples/dnsserver.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/python/examples/dnsserver.py b/python/examples/dnsserver.py new file mode 100755 index 00000000000..c65b1c40998 --- /dev/null +++ b/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) |