raise DDNSInternalServerError(_("DNS error encountered"))
elif output == "badagent":
raise DDNSBlockedError
+ elif output == "badip":
+ raise DDNSBlockedError
# If we got here, some other update error happened.
raise DDNSUpdateError(_("Server response: %s") % output)
url = "https://www.duckdns.org/nic/update"
+class DDNSProviderDyFi(DDNSProtocolDynDNS2, DDNSProvider):
+ handle = "dy.fi"
+ name = "dy.fi"
+ website = "https://www.dy.fi/"
+ protocols = ("ipv4",)
+
+ # Information about the format of the request is to be found
+ # https://www.dy.fi/page/clients?lang=en
+ # https://www.dy.fi/page/specification?lang=en
+
+ url = "http://www.dy.fi/nic/update"
+
+ # Please only send automatic updates when your IP address changes,
+ # or once per 5 to 6 days to refresh the address mapping (they will
+ # expire if not refreshed within 7 days).
+ holdoff_days = 6
+
+
class DDNSProviderDynDNS(DDNSProtocolDynDNS2, DDNSProvider):
handle = "dyndns.org"
name = "Dyn"
url = "https://ddns.do.de/"
+class DDNSProviderDynUp(DDNSProvider):
+ handle = "dynup.de"
+ name = "DynUp.DE"
+ website = "http://dynup.de/"
+ protocols = ("ipv4",)
+
+ # Information about the format of the HTTPS request is to be found
+ # https://dyndnsfree.de/user/hilfe.php
+
+ url = "https://dynup.de/dyn.php"
+ can_remove_records = False
+
+ def update_protocol(self, proto):
+ data = {
+ "username" : self.username,
+ "password" : self.password,
+ "hostname" : self.hostname,
+ "print" : '1',
+ }
+
+ # Send update to the server.
+ response = self.send_request(self.url, data=data)
+
+ # Get the full response message.
+ output = response.read()
+
+ # Remove all leading and trailing whitespace.
+ output = output.strip()
+
+ # Handle success messages.
+ if output.startswith("I:OK") :
+ return
+
+ # If we got here, some other update error happened.
+ raise DDNSUpdateError
+
+
class DDNSProviderDynU(DDNSProtocolDynDNS2, DDNSProvider):
handle = "dynu.com"
raise DDNSInternalServerError
# If we got here, some other update error happened.
- raise DDNSUpdateError(_("Server response: %s") % output)
+ raise DDNSUpdateError(_("Server response: %s") % output)
class DDNSProviderEnomCom(DDNSResponseParserXML, DDNSProvider):
raise DDNSUpdateError
+class DDNSProviderItsdns(DDNSProtocolDynDNS2, DDNSProvider):
+ handle = "inwx.com"
+ name = "INWX"
+ website = "https://www.inwx.com"
+ protocols = ("ipv6", "ipv4")
+
+ # Information about the format of the HTTP request is to be found
+ # here: https://www.inwx.com/en/nameserver2/dyndns (requires login)
+ # Notice: The URL is the same for: inwx.com|de|at|ch|es
+
+ url = "https://dyndns.inwx.com/nic/update"
+
+
+class DDNSProviderItsdns(DDNSProtocolDynDNS2, DDNSProvider):
+ handle = "itsdns.de"
+ name = "it's DNS"
+ website = "http://www.itsdns.de/"
+ protocols = ("ipv6", "ipv4")
+
+ # Information about the format of the HTTP request is to be found
+ # here: https://www.itsdns.de/dynupdatehelp.htm
+
+ url = "https://www.itsdns.de/update.php"
+
+
class DDNSProviderJoker(DDNSProtocolDynDNS2, DDNSProvider):
handle = "joker.com"
name = "Joker.com Dynamic DNS"