update-client: exit 1 in case of failure; make the server we talk to configurable
[dyn-nsupdate.git] / update
1 #!/usr/bin/python
2 import cgi, os, sys, subprocess
3 form = cgi.FieldStorage()
4
5 # print headers
6 print "Content-Type: text/plain"
7 print ""
8
9 # get input
10 if "user" not in form or "password" not in form or "domain" not in form or "ip" not in form:
11     print "Mandatory argument missing: You must supply all of 'user', 'password', 'domain', 'ip'"
12     sys.exit()
13
14 ip = form["ip"].value
15 domain = form["domain"].value
16 user = form["user"].value
17 password = form["password"].value
18
19 # run update program
20 p = subprocess.Popen(["/var/lib/named/dyn-nsupdate", user, password, domain, ip], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
21 (stdout, stderr) = p.communicate()
22 if stdout:
23         print "Unexpected stdout from dyn-nsupdate:"
24         print stdout
25         sys.exit()
26
27 # check what it did
28 if p.returncode == 1:
29         # error :/
30         print "There was an error while updating the DNS:"
31         print stderr
32 else:
33         # all right!
34         if p.returncode or stderr:
35                 print "Unexpected stderr from dyn-nsupdate:"
36                 print stderr
37                 sys.exit()
38         print "good",ip