]> git.ipfire.org Git - ddns.git/blobdiff - src/ddns/providers.py
Add opendns as new provider.
[ddns.git] / src / ddns / providers.py
index c37e62510b74180f5bbeba8794e7c32fec0f9187..3927808b19cb494b279623e9022ad973295323ac 100644 (file)
@@ -600,6 +600,10 @@ class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
                # Send update to the server.
                response = self.send_request(url, data=data)
 
+               # Get the full response message.
+               output = response.read()
+
+               # Handle success messages.
                if output.startswith("Updated") or "has not changed" in output:
                        return
 
@@ -768,6 +772,30 @@ class DDNSProviderNsupdateINFO(DDNSProtocolDynDNS2, DDNSProvider):
                return data
 
 
+class DDNSProviderOpenDNS(DDNSProtocolDynDNS2, DDNSProvider):
+       handle    = "opendns.com"
+       name      = "OpenDNS"
+       website   = "http://www.opendns.com"
+
+       # Detailed information about the update request and possible
+       # response codes can be obtained from here:
+       # https://support.opendns.com/entries/23891440
+
+       url = "https://updates.opendns.com/nic/update"
+
+       @property
+       def proto(self):
+               return self.get("proto")
+
+       def _prepare_request_data(self):
+               data = {
+                       "hostname" : self.hostname,
+                       "myip"     : self.get_address(self.proto)
+               }
+
+               return data
+
+
 class DDNSProviderOVH(DDNSProtocolDynDNS2, DDNSProvider):
        handle    = "ovh.com"
        name      = "OVH"