From: Michael Tremer Date: Sat, 14 Jun 2014 22:43:47 +0000 (+0000) Subject: Merge remote-tracking branch 'stevee/fixes' X-Git-Tag: 001~47 X-Git-Url: http://git.ipfire.org/?p=ddns.git;a=commitdiff_plain;h=7593902436303df16e822a60147173be63859acc;hp=-c Merge remote-tracking branch 'stevee/fixes' --- 7593902436303df16e822a60147173be63859acc diff --combined src/ddns/providers.py index 545e731,0768395..8a5185f --- a/src/ddns/providers.py +++ b/src/ddns/providers.py @@@ -173,11 -173,6 +173,6 @@@ class DDNSProviderDHS(DDNSProvider) url = "http://members.dhs.org/nic/hosts" def update(self): - url = self.url % { - "username" : self.username, - "password" : self.password, - } - data = { "domain" : self.hostname, "ip" : self.get_address("ipv4"), @@@ -187,7 -182,7 +182,7 @@@ } # Send update to the server. - response = self.send_request(url, username=self.username, password=self.password, + response = self.send_request(self.url, username=self.username, password=self.password, data=data) # Handle success messages. @@@ -215,18 -210,13 +210,13 @@@ class DDNSProviderDNSpark(DDNSProvider) url = "https://control.dnspark.com/api/dynamic/update.php" def update(self): - url = self.url % { - "username" : self.username, - "password" : self.password, - } - data = { "domain" : self.hostname, "ip" : self.get_address("ipv4"), } # Send update to the server. - response = self.send_request(url, username=self.username, password=self.password, + response = self.send_request(self.url, username=self.username, password=self.password, data=data) # Get the full response message. @@@ -312,54 -302,6 +302,54 @@@ class DDNSProviderDtDNS(DDNSProvider) raise DDNSUpdateError +class DDNSProviderDynDNS(DDNSProvider): + INFO = { + "handle" : "dyndns.org", + "name" : "Dyn", + "website" : "http://dyn.com/dns/", + "protocols" : ["ipv4",] + } + + # Information about the format of the request is to be found + # http://http://dyn.com/support/developers/api/perform-update/ + # http://dyn.com/support/developers/api/return-codes/ + url = "https://members.dyndns.org/nic/update" + + def update(self): + data = { + "hostname" : self.hostname, + "myip" : self.get_address("ipv4"), + } + + # Send update to the server. + response = self.send_request(self.url, username=self.username, password=self.password, + data=data) + + # Get the full response message. + output = response.read() + + # Handle success messages. + if output.startswith("good") or output.startswith("nochg"): + return + + # Handle error codes. + if output == "badauth": + raise DDNSAuthenticationError + elif output == "aduse": + raise DDNSAbuseError + elif output == "notfqdn": + raise DDNSRequestError(_("No valid FQDN was given.")) + elif output == "nohost": + raise DDNSRequestError(_("Specified host does not exist.")) + elif output == "911": + raise DDNSInternalServerError + elif output == "dnserr": + raise DDNSInternalServerError(_("DNS error encountered.")) + + # If we got here, some other update error happened. + raise DDNSUpdateError + + class DDNSProviderLightningWireLabs(DDNSProvider): INFO = { "handle" : "dns.lightningwirelabs.com",