#!/usr/bin/python import os import httplib import sys KEY_FILE = os.path.expanduser('~/.freedns.key') KEY = open(KEY_FILE).read().strip() UPDATE_HOST = 'freedns.afraid.org' UPDATE_PATH = '/dynamic/update.php?' + KEY def update_response(): conn = httplib.HTTPSConnection(UPDATE_HOST) conn.request('GET', UPDATE_PATH) return conn.getresponse() if __name__ == '__main__': if '-?' in sys.argv or '-h' in sys.argv or '--help' in sys.argv: print 'USAGE: %s [-d] [-v]' % os.path.basename(__file__) print ' -d: additional debug output' print ' -q: quiet mode (do not print results)' sys.exit(0) r = update_response() if r.status != 200: print 'ERROR:', r.status, r.reason sys.exit(1) content = r.read().strip() debug = '-d' in sys.argv quiet = '-q' in sys.argv if debug: print 'DEBUG:', r.status, r.reason print 'DEBUG:', content if content.startswith('Updated'): # Response is known. IP was updated. if not quiet: ### need to extract the IP print 'IP updated; now:', content sys.exit(0) if content.startswith('ERROR: Address ') \ and content.endswith(' has not changed.'): # Response is known. IP was not updated. if not quiet: print 'IP unchanged; still:', content[15:-17] sys.exit(0) # Unknown response. print 'WARNING: unknown response: (IP may have been updated)' print '----' print content print '----' sys.exit(1)