# Setup the logger.
def setup_logging():
rootlogger = logging.getLogger("ddns")
- rootlogger.setLevel(logging.DEBUG)
+ rootlogger.setLevel(logging.INFO)
# Setup a logger that logs to syslog.
- #handler = logging.handlers.SysLogHandler(address="/dev/log")
+ handler = logging.handlers.SysLogHandler(address="/dev/log",
+ facility=logging.handlers.SysLogHandler.LOG_DAEMON
+ )
+ handler.setLevel(logging.INFO)
+ rootlogger.addHandler(handler)
handler = logging.StreamHandler()
rootlogger.addHandler(handler)
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)
+ for handler in rootlogger.handlers:
+ handler.setLevel(logging.DEBUG)
+
+ logger.debug(_("Debugging mode enabled"))
# Initialize the settings array.
self.settings = {}
"""
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):
"""
Simply registers all providers.
"""
for provider in (
+ DDNSProviderAllInkl,
DDNSProviderDHS,
DDNSProviderDNSpark,
+ DDNSProviderDtDNS,
+ DDNSProviderDynDNS,
+ DDNSProviderDynU,
+ DDNSProviderEasyDNS,
+ DDNSProviderFreeDNSAfraidOrg,
+ DDNSProviderNamecheap,
DDNSProviderNOIP,
DDNSProviderLightningWireLabs,
+ DDNSProviderOVH,
+ DDNSProviderRegfish,
DDNSProviderSelfhost,
+ DDNSProviderSPDNS,
+ DDNSProviderStrato,
+ DDNSProviderTwoDNS,
+ DDNSProviderUdmedia,
+ DDNSProviderVariomedia,
+ DDNSProviderZoneedit,
):
self.register_provider(provider)
return sorted(self.providers.keys())
def load_configuration(self, filename):
+ logger.debug(_("Loading configuration file %s") % filename)
+
configs = ConfigParser.SafeConfigParser()
configs.read([filename,])
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)
- logger.info(_("Dynamic DNS update for %(hostname)s (%(provider)s) successful") % \
- { "hostname" : entry.hostname, "provider" : entry.name })
+ else:
+ logger.info(_("Dynamic DNS update for %(hostname)s (%(provider)s) successful") % \
+ { "hostname" : entry.hostname, "provider" : entry.name })