added dynamic dns script (for everydns.net)
[xo.git] / dyn
blob5f03fab1c091ec713c296a04e0f6d204a3db1788
1 #!/usr/bin/python
2 # dynamic dns updater for everydns.net
3 # takes domain to update as an argument
5 import sys
6 import os
7 import netrc
8 import urllib
10 tmpfile = '.ip'
12 def extip():
13 url = 'http://ip.cutup.org'
14 return urllib.urlopen(url).read()
16 def everydns(domain):
17 host = 'dyn.everydns.net'
18 page = 'index.php?ver=0.1&domain='
19 try:
20 (user, acct, passwd) = netrc.netrc().authenticators(host)
21 except:
22 return "auth not found in netrc"
23 url = 'http://%s:%s@%s/%s%s' % (user, passwd, host, page, domain)
24 try:
25 response = urllib.urlopen(url).read()
26 except:
27 response = "error updating IP"
28 return response
30 def main():
31 if len(sys.argv) != 1:
32 return
33 oldip = 0
34 try:
35 currip = extip()
36 except:
37 return
38 if os.path.exists(tmpfile):
39 f = open(tmpfile, 'r')
40 oldip = f.readline().rstrip(os.linesep)
41 f.close()
42 if oldip == currip:
43 return
44 response = everydns(sys.argv[1])
45 f = open(tmpfile, 'w')
46 f.write(currip + '\n')
47 f.writelines(response)
48 f.close()
50 if "__main__" == __name__:
51 main()