Added option for nameserver
Fixed typo in get_ipaddress() Fixed minor bug in --showcfg Response codes from nameserver are reported directly to the user
This commit is contained in:
24
dnsupdate.py
24
dnsupdate.py
@@ -21,7 +21,7 @@ def get_ipaddress():
|
|||||||
# this host connects from
|
# this host connects from
|
||||||
import re
|
import re
|
||||||
import urllib
|
import urllib
|
||||||
remote = opener = urllib.FancyURLopener({})
|
opener = urllib.FancyURLopener({})
|
||||||
try:
|
try:
|
||||||
f = opener.open(msg['ipurl'])
|
f = opener.open(msg['ipurl'])
|
||||||
page = f.read()
|
page = f.read()
|
||||||
@@ -59,6 +59,9 @@ def getparams(msg):
|
|||||||
parser.add_option("-n", "--hostname",
|
parser.add_option("-n", "--hostname",
|
||||||
type="string",
|
type="string",
|
||||||
help="Hostname of local machine")
|
help="Hostname of local machine")
|
||||||
|
parser.add_option("--nameserver",
|
||||||
|
type="string",
|
||||||
|
help="Nameserver to send queries to")
|
||||||
parser.add_option("-q", "--quiet",
|
parser.add_option("-q", "--quiet",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Quit mode")
|
help="Quit mode")
|
||||||
@@ -66,7 +69,7 @@ def getparams(msg):
|
|||||||
type="string",
|
type="string",
|
||||||
help="TSIG key")
|
help="TSIG key")
|
||||||
parser.add_option("--showcfg",
|
parser.add_option("--showcfg",
|
||||||
type="string",
|
action="store_true",
|
||||||
help="Display config file data")
|
help="Display config file data")
|
||||||
parser.add_option("-u", "--ipurl",
|
parser.add_option("-u", "--ipurl",
|
||||||
type="string",
|
type="string",
|
||||||
@@ -92,6 +95,7 @@ def getparams(msg):
|
|||||||
'hostname',
|
'hostname',
|
||||||
'keyname',
|
'keyname',
|
||||||
'keysecret',
|
'keysecret',
|
||||||
|
'nameserver',
|
||||||
'quiet',
|
'quiet',
|
||||||
'showcfg',
|
'showcfg',
|
||||||
'ttl',
|
'ttl',
|
||||||
@@ -138,12 +142,10 @@ def readcfg(msg, show=""):
|
|||||||
if line.find("#", 0, 1) == 0 or not line:
|
if line.find("#", 0, 1) == 0 or not line:
|
||||||
continue
|
continue
|
||||||
(key, value) = line.split('\t', 1)
|
(key, value) = line.split('\t', 1)
|
||||||
|
|
||||||
if show:
|
if show:
|
||||||
print "%s: %s" % (key.strip(), value.strip())
|
print "%s: %s" % (key.strip(), value.strip())
|
||||||
|
|
||||||
if not value.strip().lower() == "false":
|
if not value.strip().lower() == "false":
|
||||||
msg[key] = value.strip()
|
msg[key.strip()] = value.strip()
|
||||||
|
|
||||||
cfgfile.close()
|
cfgfile.close()
|
||||||
return msg
|
return msg
|
||||||
@@ -177,7 +179,7 @@ def update(msg):
|
|||||||
# doit, servername
|
# doit, servername
|
||||||
import socket # Import socket so we can catch exceptions
|
import socket # Import socket so we can catch exceptions
|
||||||
try:
|
try:
|
||||||
response = dns.query.tcp(update, '217.78.32.198')
|
response = dns.query.tcp(update, msg['nameserver'])
|
||||||
except socket.error:
|
except socket.error:
|
||||||
msg['error'].append("An error occurred in the server communication.")
|
msg['error'].append("An error occurred in the server communication.")
|
||||||
return
|
return
|
||||||
@@ -192,10 +194,12 @@ def update(msg):
|
|||||||
print "Host '%s.%s' has been deleted" % (msg['hostname'], msg['domain'])
|
print "Host '%s.%s' has been deleted" % (msg['hostname'], msg['domain'])
|
||||||
else:
|
else:
|
||||||
print "Host '%s.%s' has been added with ip address %s" % (msg['hostname'], msg['domain'], msg['ipaddress'])
|
print "Host '%s.%s' has been added with ip address %s" % (msg['hostname'], msg['domain'], msg['ipaddress'])
|
||||||
elif response.rcode() == 5:
|
|
||||||
msg['error'].append("The server refused to accept the update")
|
|
||||||
else:
|
else:
|
||||||
msg['error'].append("Update refused, the server returned:\n%s" % response)
|
msg['error'].append("Update denied, server responded %s" % dns.rcode.to_text(response.rcode()))
|
||||||
|
## elif response.rcode() == 5:
|
||||||
|
## msg['error'].append("The server refused to accept the update")
|
||||||
|
## else:
|
||||||
|
## msg['error'].append("Update refused, the server returned:\n%s" % response)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -203,7 +207,7 @@ def validate(msg):
|
|||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
# Verify all required data is present and sanity check incoming data
|
# Verify all required data is present and sanity check incoming data
|
||||||
req_vals = ['domain', 'hostname', 'ipaddress', 'keyname', 'keysecret', 'ttl']
|
req_vals = ['domain', 'hostname', 'ipaddress', 'keyname', 'keysecret', 'nameserver', 'ttl']
|
||||||
for value in req_vals:
|
for value in req_vals:
|
||||||
if not msg.has_key(value):
|
if not msg.has_key(value):
|
||||||
msg['error'].append('Missing "%s" parameter' % value)
|
msg['error'].append('Missing "%s" parameter' % value)
|
||||||
|
|||||||
Reference in New Issue
Block a user