X-Git-Url: http://git.ipfire.org/?p=oddments%2Fddns.git;a=blobdiff_plain;f=src%2Fddns%2F__init__.py;h=5ed463651e01a56519786ea1be558246083efb0e;hp=673ba27684d38da4dd62ba6d608f2aab3be866b7;hb=3b16fdb1433f64122fb3cde2e86e9acf18df430f;hpb=39301272d21797e2ce427b5afecc9b086a22ff4b diff --git a/src/ddns/__init__.py b/src/ddns/__init__.py index 673ba27..5ed4636 100644 --- a/src/ddns/__init__.py +++ b/src/ddns/__init__.py @@ -34,10 +34,14 @@ from .system import DDNSSystem # 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) @@ -49,6 +53,7 @@ class DDNSCore(object): # In debug mode, enable debug logging. if debug: logger.setLevel(logging.DEBUG) + logger.debug(_("Debugging mode enabled")) # Initialize the settings array. self.settings = {} @@ -86,15 +91,33 @@ class DDNSCore(object): Simply registers all providers. """ for provider in ( + DDNSProviderAllInkl, DDNSProviderDHS, DDNSProviderDNSpark, + DDNSProviderDtDNS, + DDNSProviderDynDNS, + DDNSProviderDynU, + DDNSProviderEasyDNS, + DDNSProviderFreeDNSAfraidOrg, DDNSProviderNOIP, DDNSProviderLightningWireLabs, + DDNSProviderOVH, + DDNSProviderRegfish, DDNSProviderSelfhost, + DDNSProviderSPDNS, + DDNSProviderVariomedia, ): self.register_provider(provider) + def get_provider_names(self): + """ + Returns a list of names of all registered providers. + """ + return sorted(self.providers.keys()) + def load_configuration(self, filename): + logger.debug(_("Loading configuration file %s") % filename) + configs = ConfigParser.SafeConfigParser() configs.read([filename,]) @@ -133,19 +156,30 @@ class DDNSCore(object): if not entry in self.entries: self.entries.append(entry) - def updateall(self): + def updateone(self, hostname, **kwargs): + for entry in self.entries: + if not entry.hostname == hostname: + continue + + return self._update(entry, **kwargs) + + raise DDNSHostNotFoundError(hostname) + + def updateall(self, **kwargs): + """ + Update all configured entries. + """ # If there are no entries, there is nothing to do. if not self.entries: logger.debug(_("Found no entries in the configuration file. Exiting.")) return - # Update them all. for entry in self.entries: - self.update(entry) + self._update(entry, **kwargs) - def update(self, entry): + def _update(self, entry, force=False): try: - entry() + entry(force=force) except DDNSUpdateError, e: logger.error(_("Dynamic DNS update for %(hostname)s (%(provider)s) failed:") % \ @@ -157,5 +191,6 @@ class DDNSCore(object): { "hostname" : entry.hostname, "provider" : entry.name }) logger.error(" %s" % e) - 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 })