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:
2004-01-23 21:28:50 +00:00
parent de0e8d27d6
commit 8f63edec6e

View File

@@ -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)