]> git.ipfire.org Git - oddments/ddns.git/blobdiff - src/ddns/__init__.py
Add all-inkl.com as new provider.
[oddments/ddns.git] / src / ddns / __init__.py
index 2fb5e021e969f56ed4570b4ca4fc78ad6a90ebda..5ed463651e01a56519786ea1be558246083efb0e 100644 (file)
@@ -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,17 +156,28 @@ class DDNSCore(object):
                        if not entry in self.entries:
                                self.entries.append(entry)
 
-       def updateall(self, force=False):
+       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, force=force)
+                       self._update(entry, **kwargs)
 
-       def update(self, entry, force=False):
+       def _update(self, entry, force=False):
                try:
                        entry(force=force)
 
@@ -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 })