X-Git-Url: http://git.ipfire.org/?p=oddments%2Fddns.git;a=blobdiff_plain;f=src%2Fddns%2Fproviders.py;h=587d5fff24fe9025b6bb4e7bc0f5ff192ecb23bd;hp=1e88995962d8343288a582084d3012833f6ee355;hb=78046ffe2187d91c61d6c2f910249b8a5be71b08;hpb=2b38e64f4a45201839e8494f34510c4c0de6fc5b diff --git a/src/ddns/providers.py b/src/ddns/providers.py index 1e88995..587d5ff 100644 --- a/src/ddns/providers.py +++ b/src/ddns/providers.py @@ -539,6 +539,44 @@ class DDNSProviderBindNsupdate(DDNSProvider): return "\n".join(scriptlet) +class DDNSProviderChangeIP(DDNSProvider): + handle = "changeip.com" + name = "ChangeIP.com" + website = "https://changeip.com" + protocols = ("ipv4",) + + # Detailed information about the update api can be found here. + # http://www.changeip.com/accounts/knowledgebase.php?action=displayarticle&id=34 + + url = "https://nic.changeip.com/nic/update" + can_remove_records = False + + def update_protocol(self, proto): + data = { + "hostname" : self.hostname, + "myip" : self.get_address(proto), + } + + # Send update to the server. + try: + response = self.send_request(self.url, username=self.username, password=self.password, + data=data) + + # Handle error codes. + except urllib2.HTTPError, e: + if e.code == 422: + raise DDNSRequestError(_("Domain not found.")) + + raise + + # Handle success message. + if response.code == 200: + return + + # If we got here, some other update error happened. + raise DDNSUpdateError(_("Server response: %s") % output) + + class DDNSProviderDHS(DDNSProvider): handle = "dhs.org" name = "DHS International"