From 8daa83a594a2e98f39d764422bfbdbc62c9efd44 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 19:20:00 +0200 Subject: Adding upstream version 2:4.20.0+dfsg. Signed-off-by: Daniel Baumann --- python/examples/dnsserver.py | 87 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100755 python/examples/dnsserver.py (limited to 'python/examples/dnsserver.py') diff --git a/python/examples/dnsserver.py b/python/examples/dnsserver.py new file mode 100755 index 0000000..caca998 --- /dev/null +++ b/python/examples/dnsserver.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python3 + +# script to test the dnsserver RPC protocol + +import sys +from optparse import OptionParser + +sys.path.insert(0, "bin/python") + +import samba.getopt as options +from samba.dcerpc import dnsserver, 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") + 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 + + dns_conn.DnssrvUpdateRecord2(0x00070000, + 0, + server, + dnszone, + newname, + addrecbuf, + None) + + print("querying the NS record") + dns_conn.DnssrvEnumRecords2(0x00070000, + 0, + server, + dnszone, + newname, + None, + dnsp.DNS_TYPE_NS, + 0x0f, + None, + None) -- cgit v1.2.3