--- /dev/null
+#!/usr/bin/python
+import urllib2, socket, urllib, sys
+# configuration variables
+user = 'yourusername'
+password = 'yourpassword'
+domain = 'your.domain.ralfj.de'
+# END of configuration variables
+myip = urllib2.urlopen('https://ns.ralfj.de/checkip').read().strip()
+currip = socket.gethostbyname(domain)
+if myip == currip:
+ # nothing to do
+ sys.exit(0)
+
+# we need to update the IP
+result = urllib2.urlopen('https://ns.ralfj.de/update?user='+urllib.quote(user)+'&password='+urllib.quote(password)+'&domain='+urllib.quote(domain)+'&ip='+urllib.quote(myip)).read().strip()
+if 'good '+myip == result:
+ # nothing to do, all went all right
+ sys.exit(0)
+
+# there was an error :(
+print result
#!/usr/bin/python
import cgi, os, sys, subprocess
-import cgitb
-cgitb.enable()
form = cgi.FieldStorage()
# print headers
# get input
if "user" not in form or "password" not in form or "domain" not in form or "ip" not in form:
- print "Error:"
print "Mandatory argument missing: You must supply all of 'user', 'password', 'domain', 'ip'"
sys.exit()
+ip = form["ip"].value
+domain = form["domain"].value
user = form["user"].value
password = form["password"].value
-domain = form["domain"].value
-ip = form["ip"].value
# run update program
p = subprocess.Popen(["/var/lib/named/dyn-nsupdate", user, password, domain, ip], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdout, stderr) = p.communicate()
-if stdout: raise Exception("Unexpected output from dyn-nsupdate")
+if stdout:
+ print "Unexpected stdout from dyn-nsupdate:"
+ print stdout
+ sys.exit()
# check what it did
if p.returncode == 1:
else:
# all right!
if p.returncode or stderr:
- raise Exception("Unexpected return code or output from dyn-nsupdate")
+ print "Unexpected stderr from dyn-nsupdate:"
+ print stderr
+ sys.exit()
print "good",ip