]> git.ipfire.org Git - oddments/ddns.git/commitdiff
Merge remote-tracking branch 'stevee/nsupdate.info'
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 9 Jul 2014 18:58:15 +0000 (18:58 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 9 Jul 2014 18:58:15 +0000 (18:58 +0000)
README
ddns.conf.sample
src/ddns/providers.py

diff --git a/README b/README
index 6179325736daf0a40105a8589f98eeaf55e1db21..6002c1912ea25a2acfb3a0b15407e3a1bf6096b4 100644 (file)
--- a/README
+++ b/README
@@ -60,6 +60,7 @@ SUPPORTED PROVIDERS:
        freedns.afraid.org
        namecheap.com
        no-ip.com
+       nsupdate.info
        ovh.com
        regfish.com
        selfhost.de
index 88cfaedfa6daf9e5f07e522339cfa3284c65da64..cc7f25b5fb168f6a65b08d47eae426cb0a8d5115 100644 (file)
 # username = user
 # password = pass
 
+# [test.nsupdate.info]
+# provider = nsupdate.info
+# secret = secret
+# proto = ipv4 OR ipv6
+
 # [test.ovh.com]
 # provider = ovh.com
 # username = user
index 4467651fbbed3511a6e7f4cf186e5b00a4400d0b..c37e62510b74180f5bbeba8794e7c32fec0f9187 100644 (file)
@@ -726,6 +726,48 @@ class DDNSProviderNOIP(DDNSProtocolDynDNS2, DDNSProvider):
                return data
 
 
+class DDNSProviderNsupdateINFO(DDNSProtocolDynDNS2, DDNSProvider):
+       handle    = "nsupdate.info"
+       name      = "nsupdate.info"
+       website   = "http://www.nsupdate.info/"
+       protocols = ("ipv6", "ipv4",)
+
+       # Information about the format of the HTTP request can be found
+       # after login on the provider user intrface and here:
+       # http://nsupdateinfo.readthedocs.org/en/latest/user.html
+
+       # Nsupdate.info uses the hostname as user part for the HTTP basic auth,
+       # and for the password a so called secret.
+       @property
+       def username(self):
+               return self.get("hostname")
+
+       @property
+       def password(self):
+               return self.get("secret")
+
+       @property
+       def proto(self):
+               return self.get("proto")
+
+       @property
+       def url(self):
+               # The update URL is different by the used protocol.
+               if self.proto == "ipv4":
+                       return "https://ipv4.nsupdate.info/nic/update"
+               elif self.proto == "ipv6":
+                       return "https://ipv6.nsupdate.info/nic/update"
+               else:
+                       raise DDNSUpdateError(_("Invalid protocol has been given"))
+
+       def _prepare_request_data(self):
+               data = {
+                       "myip" : self.get_address(self.proto),
+               }
+
+               return data
+
+
 class DDNSProviderOVH(DDNSProtocolDynDNS2, DDNSProvider):
        handle    = "ovh.com"
        name      = "OVH"