]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
ddns: Add latest patches.
authorStefan Schantl <stefan.schantl@ipfire.org>
Mon, 5 Jan 2015 22:13:47 +0000 (23:13 +0100)
committerStefan Schantl <stefan.schantl@ipfire.org>
Mon, 5 Jan 2015 22:13:47 +0000 (23:13 +0100)
Add patches to fix an authentication problem against spdns.org and
to add changeip as new provider.

lfs/ddns
src/patches/ddns/ddns-005-Add-changeip-com.patch [new file with mode: 0644]
src/patches/ddns/ddns-005-SPDNS-fix-auth.patch [new file with mode: 0644]

index 0fa4b5c0c41069dd6e6d375c9f7b1f9907aec025..6efc418c54bb8fc787e1d5c99344b44a9ffaf9f6 100644 (file)
--- a/lfs/ddns
+++ b/lfs/ddns
@@ -71,6 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
 
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ddns/ddns-005-Add-changeip-com.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch
+
        cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh
        cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire
        cd $(DIR_APP) && make $(MAKETUNING)
diff --git a/src/patches/ddns/ddns-005-Add-changeip-com.patch b/src/patches/ddns/ddns-005-Add-changeip-com.patch
new file mode 100644 (file)
index 0000000..15bcd46
--- /dev/null
@@ -0,0 +1,85 @@
+commit 78046ffe2187d91c61d6c2f910249b8a5be71b08
+Author: Stefan Schantl <stefan.schantl@ipfire.org>
+Date:   Wed Oct 22 21:39:09 2014 +0200
+
+    Add changeip.com as new provider.
+    
+    Fixes #10639.
+
+diff --git a/README b/README
+index 5944102..6a06f4b 100644
+--- a/README
++++ b/README
+@@ -49,6 +49,7 @@ INSTALLATION:
+ SUPPORTED PROVIDERS:
+       all-inkl.com
++      changeip.com
+       dhs.org
+       dns.lightningwirelabs.com
+       dnspark.com
+diff --git a/ddns.conf.sample b/ddns.conf.sample
+index d3ac53f..0048a46 100644
+--- a/ddns.conf.sample
++++ b/ddns.conf.sample
+@@ -30,6 +30,11 @@
+ # secret = XYZ
+ # ttl = 60
++# [test.changeip.com]
++# provider = changeip.com
++# username = user
++# password = pass
++
+ # [test.dhs.org]
+ # provider = dhs.org
+ # username = user
+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"
diff --git a/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch b/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch
new file mode 100644 (file)
index 0000000..1d91baa
--- /dev/null
@@ -0,0 +1,23 @@
+commit 25f39b4e437627bd1a49393280271d59ad28b86e
+Author: Stefan Schantl <stefan.schantl@ipfire.org>
+Date:   Mon Jan 5 21:37:55 2015 +0100
+
+    spdns.de: Fix authentication.
+    
+    There was a simple copy and paste issue which prevents a
+    correct authentication with username and password against the
+    providers API.
+
+diff --git a/src/ddns/providers.py b/src/ddns/providers.py
+index 587d5ff..bcfb088 100644
+--- a/src/ddns/providers.py
++++ b/src/ddns/providers.py
+@@ -1271,7 +1271,7 @@ class DDNSProviderSPDNS(DDNSProtocolDynDNS2, DDNSProvider):
+       @property
+       def password(self):
+-              return self.get("username") or self.token
++              return self.get("password") or self.token
+ class DDNSProviderStrato(DDNSProtocolDynDNS2, DDNSProvider):