From 635a44bfad1fffad2d648d898a0e513172dc2f3b Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Mon, 5 Jan 2015 23:13:47 +0100 Subject: [PATCH] ddns: Add latest patches. Add patches to fix an authentication problem against spdns.org and to add changeip as new provider. --- lfs/ddns | 3 + .../ddns/ddns-005-Add-changeip-com.patch | 85 +++++++++++++++++++ .../ddns/ddns-005-SPDNS-fix-auth.patch | 23 +++++ 3 files changed, 111 insertions(+) create mode 100644 src/patches/ddns/ddns-005-Add-changeip-com.patch create mode 100644 src/patches/ddns/ddns-005-SPDNS-fix-auth.patch diff --git a/lfs/ddns b/lfs/ddns index 0fa4b5c0c..6efc418c5 100644 --- 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 index 000000000..15bcd468f --- /dev/null +++ b/src/patches/ddns/ddns-005-Add-changeip-com.patch @@ -0,0 +1,85 @@ +commit 78046ffe2187d91c61d6c2f910249b8a5be71b08 +Author: Stefan Schantl +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 index 000000000..1d91baa59 --- /dev/null +++ b/src/patches/ddns/ddns-005-SPDNS-fix-auth.patch @@ -0,0 +1,23 @@ +commit 25f39b4e437627bd1a49393280271d59ad28b86e +Author: Stefan Schantl +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): -- 2.39.2