Signed-off-by: Dirk Wagner <dirk.wagner(a)ipfire.org>
---
README | 1 +
src/ddns/errors.py | 8 +++++++-
src/ddns/providers.py | 15 ++++++++++++++-
src/ddns/system.py | 4 ++++
4 files changed, 26 insertions(+), 2 deletions(-)
mode change 100644 => 100755 README
mode change 100644 => 100755 src/ddns/errors.py
mode change 100644 => 100755 src/ddns/providers.py
mode change 100644 => 100755 src/ddns/system.py
diff --git a/README b/README
old mode 100644
new mode 100755
index 40f1e7f..5f1911d
--- a/README
+++ b/README
@@ -55,6 +55,7 @@ SUPPORTED PROVIDERS:
dns.lightningwirelabs.comdnsmadeeasy.comdnspark.com
+ do.de
domains.google.com
domopoli.de
dtdns.com
diff --git a/src/ddns/errors.py b/src/ddns/errors.py
old mode 100644
new mode 100755
index 58a5ba9..e5383dc
--- a/src/ddns/errors.py
+++ b/src/ddns/errors.py
@@ -2,7 +2,7 @@
###############################################################################
# #
# ddns - A dynamic DNS client for IPFire #
-# Copyright (C) 2012 IPFire development team #
+# Copyright (C) 2012-2017 IPFire development team #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -160,6 +160,12 @@ class DDNSServiceUnavailableError(DDNSNetworkError):
"""
reason = N_("Service unavailable")
+
+class DDNSTooManyRequests(DDNSError):
+ """
+ Raised when too many requests occured.
+ """
+ reason = N_("Too many requests")
class DDNSUpdateError(DDNSError):
"""
diff --git a/src/ddns/providers.py b/src/ddns/providers.py
old mode 100644
new mode 100755
index 2c30d42..2a74511
--- a/src/ddns/providers.py
+++ b/src/ddns/providers.py
@@ -2,7 +2,7 @@
###############################################################################
# #
# ddns - A dynamic DNS client for IPFire #
-# Copyright (C) 2012 IPFire development team #
+# Copyright (C) 2012-2017 IPFire development team #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -840,7 +840,20 @@ class DDNSProviderDynDNS(DDNSProtocolDynDNS2, DDNSProvider):
url = "https://members.dyndns.org/nic/update"
+
+class DDNSProviderDomainOffensive(DDNSProtocolDynDNS2, DDNSProvider):
+ handle = "do.de"
+ name = "Domain-Offensive"
+ website = "http://dyn.com/dns/"
+ protocols = ("ipv4",)
+
+ # Detailed information about the request and response codes
+ # are available on the providers webpage.
+ # https://www.do.de/wiki/FlexDNS_-_Entwickler
+
+ url = "https://ddns.do.de/"
+
class DDNSProviderDynU(DDNSProtocolDynDNS2, DDNSProvider):
handle = "dynu.com"
name = "Dynu"
diff --git a/src/ddns/system.py b/src/ddns/system.py
old mode 100644
new mode 100755
index c268ba5..67ea553
--- a/src/ddns/system.py
+++ b/src/ddns/system.py
@@ -194,6 +194,10 @@ class DDNSSystem(object):
elif e.code == 404:
raise DDNSNotFound(e.reason)
+ # 429 - Too Many Requests
+ elif e.code == 429:
+ raise DDNSTooManyRequests(e.reason)
+
# 500 - Internal Server Error
elif e.code == 500:
raise DDNSInternalServerError(e.reason)
--
2.1.4