]> git.ipfire.org Git - oddments/ddns.git/blobdiff - src/ddns/system.py
Show much prettier and more useful error messages.
[oddments/ddns.git] / src / ddns / system.py
index be18d650bab6b4aeec6a82e0397c6a600f8b8ef5..afc5a5fbc0217deb62fb44cf42e78f2e1aeb4dcd 100644 (file)
@@ -61,6 +61,24 @@ class DDNSSystem(object):
 
                return proxy
 
+       def get_local_ipv6_address(self):
+               return # XXX TODO
+
+       def get_local_ipv4_address(self):
+               if self.distro == "ipfire-2":
+                       try:
+                               with open("/var/ipfire/red/local-ipaddress") as f:
+                                       return f.readline()
+
+                       except IOError, e:
+                               # File not found
+                               if e.errno == 2:
+                                       return
+
+                               raise
+
+               return # XXX TODO
+
        def _guess_external_ip_address(self, url, timeout=10):
                """
                        Sends a request to an external web server
@@ -142,7 +160,7 @@ class DDNSSystem(object):
                        resp = urllib2.urlopen(req, timeout=timeout)
 
                        # Log response header.
-                       logger.debug(_("Response header:"))
+                       logger.debug(_("Response header (Status Code %s):") % resp.code)
                        for k, v in resp.info().items():
                                logger.debug("  %s: %s" % (k, v))
 
@@ -213,8 +231,12 @@ class DDNSSystem(object):
                        elif proto == "ipv4":
                                return self.guess_external_ipv4_address()
 
-               # XXX TODO
-               assert False
+               # Get the local IP addresses.
+               else:
+                       if proto == "ipv6":
+                               return self.get_local_ipv6_address()
+                       elif proto == "ipv4":
+                               return self.get_local_ipv4_address()
 
        def resolve(self, hostname, proto=None):
                addresses = []