From: Stefan Schantl Date: Wed, 9 Jul 2014 18:56:11 +0000 (+0200) Subject: Add nsupdate.info as new provider. X-Git-Tag: 002~2^2 X-Git-Url: http://git.ipfire.org/?p=oddments%2Fddns.git;a=commitdiff_plain;h=31c95e4b7390cd9fec1ff91ffbe8adb3d3378a66;ds=sidebyside Add nsupdate.info as new provider. --- diff --git a/README b/README index 48c3549..c071b79 100644 --- a/README +++ b/README @@ -59,6 +59,7 @@ SUPPORTED PROVIDERS: freedns.afraid.org namecheap.com no-ip.com + nsupdate.info ovh.com regfish.com selfhost.de diff --git a/ddns.conf.sample b/ddns.conf.sample index 3dd54c9..ecd4eae 100644 --- a/ddns.conf.sample +++ b/ddns.conf.sample @@ -72,6 +72,11 @@ # username = user # password = pass +# [test.nsupdate.info] +# provider = nsupdate.info +# secret = secret +# proto = ipv4 OR ipv6 + # [test.ovh.com] # provider = ovh.com # username = user diff --git a/src/ddns/providers.py b/src/ddns/providers.py index bc16c4c..0c735fc 100644 --- a/src/ddns/providers.py +++ b/src/ddns/providers.py @@ -675,6 +675,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"