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
|
||||
import re
|
||||
import urllib
|
||||
remote = opener = urllib.FancyURLopener({})
|
||||
opener = urllib.FancyURLopener({})
|
||||
try:
|
||||
f = opener.open(msg['ipurl'])
|
||||
page = f.read()
|
||||
@@ -59,6 +59,9 @@ def getparams(msg):
|
||||
parser.add_option("-n", "--hostname",
|
||||
type="string",
|
||||
help="Hostname of local machine")
|
||||
parser.add_option("--nameserver",
|
||||
type="string",
|
||||
help="Nameserver to send queries to")
|
||||
parser.add_option("-q", "--quiet",
|
||||
action="store_true",
|
||||
help="Quit mode")
|
||||
@@ -66,7 +69,7 @@ def getparams(msg):
|
||||
type="string",
|
||||
help="TSIG key")
|
||||
parser.add_option("--showcfg",
|
||||
type="string",
|
||||
action="store_true",
|
||||
help="Display config file data")
|
||||
parser.add_option("-u", "--ipurl",
|
||||
type="string",
|
||||
@@ -92,6 +95,7 @@ def getparams(msg):
|
||||
'hostname',
|
||||
'keyname',
|
||||
'keysecret',
|
||||
'nameserver',
|
||||
'quiet',
|
||||
'showcfg',
|
||||
'ttl',
|
||||
@@ -138,12 +142,10 @@ def readcfg(msg, show=""):
|
||||
if line.find("#", 0, 1) == 0 or not line:
|
||||
continue
|
||||
(key, value) = line.split('\t', 1)
|
||||
|
||||
if show:
|
||||
print "%s: %s" % (key.strip(), value.strip())
|
||||
|
||||
if not value.strip().lower() == "false":
|
||||
msg[key] = value.strip()
|
||||
msg[key.strip()] = value.strip()
|
||||
|
||||
cfgfile.close()
|
||||
return msg
|
||||
@@ -177,7 +179,7 @@ def update(msg):
|
||||
# doit, servername
|
||||
import socket # Import socket so we can catch exceptions
|
||||
try:
|
||||
response = dns.query.tcp(update, '217.78.32.198')
|
||||
response = dns.query.tcp(update, msg['nameserver'])
|
||||
except socket.error:
|
||||
msg['error'].append("An error occurred in the server communication.")
|
||||
return
|
||||
@@ -192,10 +194,12 @@ def update(msg):
|
||||
print "Host '%s.%s' has been deleted" % (msg['hostname'], msg['domain'])
|
||||
else:
|
||||
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:
|
||||
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 string
|
||||
# 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:
|
||||
if not msg.has_key(value):
|
||||
msg['error'].append('Missing "%s" parameter' % value)
|
||||
|
||||
Reference in New Issue
Block a user