mirror of
https://github.com/samba-team/samba.git
synced 2025-07-26 03:42:04 +03:00
dns: added example python script for dnsserver protocol
This commit is contained in:
89
source4/scripting/python/examples/dnsserver.py
Executable file
89
source4/scripting/python/examples/dnsserver.py
Executable file
@ -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)
|
Reference in New Issue
Block a user