2018-12-12 03:43:21 +03:00
#!/usr/bin/env python3
2011-09-26 03:50:41 +04:00
# script to test the dnsserver RPC protocol
import sys
from optparse import OptionParser
sys . path . insert ( 0 , " bin/python " )
import samba . getopt as options
2022-05-05 12:04:48 +03:00
from samba . dcerpc import dnsserver , dnsp
2011-09-26 03:50:41 +04:00
########### 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 " )
2022-05-05 12:32:13 +03:00
dns_conn . DnssrvEnumRecords2 ( 0x00070000 ,
0 ,
server ,
dnszone ,
newname ,
None ,
dnsp . DNS_TYPE_NS ,
0x0f ,
None ,
None )
2011-09-26 03:50:41 +04:00
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
2022-05-05 12:32:13 +03:00
dns_conn . DnssrvUpdateRecord2 ( 0x00070000 ,
0 ,
server ,
dnszone ,
newname ,
addrecbuf ,
None )
2011-09-26 03:50:41 +04:00
print ( " querying the NS record " )
2022-05-05 12:32:13 +03:00
dns_conn . DnssrvEnumRecords2 ( 0x00070000 ,
0 ,
server ,
dnszone ,
newname ,
None ,
dnsp . DNS_TYPE_NS ,
0x0f ,
None ,
None )