]> git.ipfire.org Git - oddments/ddns.git/blobdiff - src/ddns/__init__.py
Don't log debugging output to syslog.
[oddments/ddns.git] / src / ddns / __init__.py
index 65e61d50062b5f56acdf5c1d2980e0ac5bdb6176..d14097dbcb9cf97be66162352765cf73061ab1b6 100644 (file)
@@ -52,7 +52,9 @@ class DDNSCore(object):
        def __init__(self, debug=False):
                # In debug mode, enable debug logging.
                if debug:
-                       logger.setLevel(logging.DEBUG)
+                       rootlogger = logging.getLogger("ddns")
+                       rootlogger.setLevel(logging.DEBUG)
+
                        logger.debug(_("Debugging mode enabled"))
 
                # Initialize the settings array.
@@ -74,17 +76,14 @@ class DDNSCore(object):
                """
                assert issubclass(provider, DDNSProvider)
 
-               provider_handle = provider.INFO.get("handle")
-               assert provider_handle
-
-               assert not self.providers.has_key(provider_handle), \
-                       "Provider '%s' has already been registered" % provider_handle
+               if not all((provider.handle, provider.name, provider.website)):
+                       raise DDNSError(_("Provider is not properly configured"))
 
-               provider_name = provider.INFO.get("name")
-               assert provider_name
+               assert not self.providers.has_key(provider.handle), \
+                       "Provider '%s' has already been registered" % provider.handle
 
-               logger.debug("Registered new provider: %s (%s)" % (provider_name, provider_handle))
-               self.providers[provider_handle] = provider
+               logger.debug("Registered new provider: %s (%s)" % (provider.name, provider.handle))
+               self.providers[provider.handle] = provider
 
        def register_all_providers(self):
                """
@@ -106,6 +105,9 @@ class DDNSCore(object):
                        DDNSProviderRegfish,
                        DDNSProviderSelfhost,
                        DDNSProviderSPDNS,
+                       DDNSProviderStrato,
+                       DDNSProviderTwoDNS,
+                       DDNSProviderUdmedia,
                        DDNSProviderVariomedia,
                        DDNSProviderZoneedit,
                ):
@@ -183,15 +185,16 @@ class DDNSCore(object):
                try:
                        entry(force=force)
 
-               except DDNSUpdateError, e:
+               except DDNSError, e:
                        logger.error(_("Dynamic DNS update for %(hostname)s (%(provider)s) failed:") % \
                                { "hostname" : entry.hostname, "provider" : entry.name })
-                       logger.error("  %s" % e)
+                       logger.error("  %s: %s" % (e.__class__.__name__, e.reason))
+                       if e.message:
+                               logger.error("  %s" % e.message)
 
                except Exception, e:
                        logger.error(_("Dynamic DNS update for %(hostname)s (%(provider)s) throwed an unhandled exception:") % \
-                               { "hostname" : entry.hostname, "provider" : entry.name })
-                       logger.error("  %s" % e)
+                               { "hostname" : entry.hostname, "provider" : entry.name }, exc_info=True)
 
                else:
                        logger.info(_("Dynamic DNS update for %(hostname)s (%(provider)s) successful") % \