mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-28 11:43:25 +02:00
ddns: Add latest patches.
Add patches to fix an authentication problem against spdns.org and to add changeip as new provider.
This commit is contained in:
3
lfs/ddns
3
lfs/ddns
@@ -71,6 +71,9 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
|||||||
@$(PREBUILD)
|
@$(PREBUILD)
|
||||||
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
|
@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) && [ -x "configure" ] || sh ./autogen.sh
|
||||||
cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire
|
cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/var/ipfire
|
||||||
cd $(DIR_APP) && make $(MAKETUNING)
|
cd $(DIR_APP) && make $(MAKETUNING)
|
||||||
|
|||||||
85
src/patches/ddns/ddns-005-Add-changeip-com.patch
Normal file
85
src/patches/ddns/ddns-005-Add-changeip-com.patch
Normal file
@@ -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"
|
||||||
23
src/patches/ddns/ddns-005-SPDNS-fix-auth.patch
Normal file
23
src/patches/ddns/ddns-005-SPDNS-fix-auth.patch
Normal file
@@ -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):
|
||||||
Reference in New Issue
Block a user