Add new provider INWX (https://www.inwx.com)

Message ID 20190918192528.6366-1-ipfire@starkstromkonsument.de
State Superseded
Headers
Series Add new provider INWX (https://www.inwx.com) |

Commit Message

Alexander Koch Sept. 18, 2019, 7:25 p.m. UTC
  This includes:

- inwx.com
- inwx.de
- inwx.at
- inwx.ch
- inwx.es

Signed-off-by: Alexander Koch <ipfire@starkstromkonsument.de>
---
 README                |  1 +
 configure.ac          |  2 +-
 src/ddns/providers.py | 15 ++++++++++++++-
 3 files changed, 16 insertions(+), 2 deletions(-)
  

Comments

Michael Tremer Sept. 19, 2019, 12:57 p.m. UTC | #1
Hi,

Thank you for sending this patch, but I am afraid I have a little bit of a problem here…

> On 18 Sep 2019, at 15:25, Alexander Koch <ipfire@starkstromkonsument.de> wrote:
> 
> This includes:
> 
> - inwx.com
> - inwx.de
> - inwx.at
> - inwx.ch
> - inwx.es
> 
> Signed-off-by: Alexander Koch <ipfire@starkstromkonsument.de>
> ---
> README                |  1 +
> configure.ac          |  2 +-
> src/ddns/providers.py | 15 ++++++++++++++-
> 3 files changed, 16 insertions(+), 2 deletions(-)
> 
> diff --git a/README b/README
> index b0601a0..0f2798e 100644
> --- a/README
> +++ b/README
> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
> 	enom.com
> 	entrydns.net
> 	freedns.afraid.org
> +	inwx.com|de|at|ch|es
> 	itsdns.de
> 	joker.com
> 	loopia.se
> diff --git a/configure.ac b/configure.ac
> index 008950d..14bccc0 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -21,7 +21,7 @@
> AC_PREREQ([2.64])
> 
> AC_INIT([ddns],
> -	[011],
> +	[012],
> 	[info@ipfire.org],
> 	[ddns],
> 	[http://git.ipfire.org/?p=oddments/ddns.git;a=summary])

You don’t need to increment the version number. That will be done by the maintainer when ever it is decided to have a new release.

> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
> index 4ffd8bf..12116e3 100644
> --- a/src/ddns/providers.py
> +++ b/src/ddns/providers.py
> @@ -1003,7 +1003,7 @@ class DDNSProviderDynsNet(DDNSProvider):
> 			raise DDNSInternalServerError
> 
> 		# If we got here, some other update error happened.
> -		raise DDNSUpdateError(_("Server response: %s") % output) 
> +		raise DDNSUpdateError(_("Server response: %s") % output)
> 

Whitespace changes like this should not be included in this patch. This could be an extra patch.

> class DDNSProviderEnomCom(DDNSResponseParserXML, DDNSProvider):
> @@ -1129,6 +1129,19 @@ class DDNSProviderFreeDNSAfraidOrg(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"
> +
> +

My problem with this provider is that the documentation is not publicly accessible. Therefore this is not maintainable for everyone who does not have an account there. Creating an account with every single ISP is of course not an option either.

I would be interested to hear what Stefan and others think about this.

Best,
-Michael

> class DDNSProviderItsdns(DDNSProtocolDynDNS2, DDNSProvider):
> 		handle    = "itsdns.de"
> 		name      = "it's DNS"
> -- 
> 2.17.1
> 
> _______________________________________________
> ddns mailing list
> ddns@lists.ipfire.org
> https://lists.ipfire.org/mailman/listinfo/ddns
  
Alexander Koch Sept. 20, 2019, 11:20 a.m. UTC | #2
Hi,

-------- Original Message --------
From: Michael Tremer [mailto:michael.tremer@ipfire.org]
Sent: Thursday, 19 September 2019, 14:57 CEST
To: Alexander Koch <ipfire@starkstromkonsument.de>
Cc: ddns@lists.ipfire.org
Subject: [PATCH] Add new provider INWX (https://www.inwx.com)

> Hi,
> 
> Thank you for sending this patch, but I am afraid I have a little bit of a problem here…
> 
>> On 18 Sep 2019, at 15:25, Alexander Koch <ipfire@starkstromkonsument.de> wrote:
>>
>> This includes:
>>
>> - inwx.com
>> - inwx.de
>> - inwx.at
>> - inwx.ch
>> - inwx.es
>>
>> Signed-off-by: Alexander Koch <ipfire@starkstromkonsument.de>
>> ---
>> README                |  1 +
>> configure.ac          |  2 +-
>> src/ddns/providers.py | 15 ++++++++++++++-
>> 3 files changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/README b/README
>> index b0601a0..0f2798e 100644
>> --- a/README
>> +++ b/README
>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>> 	enom.com
>> 	entrydns.net
>> 	freedns.afraid.org
>> +	inwx.com|de|at|ch|es
>> 	itsdns.de
>> 	joker.com
>> 	loopia.se
>> diff --git a/configure.ac b/configure.ac
>> index 008950d..14bccc0 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -21,7 +21,7 @@
>> AC_PREREQ([2.64])
>>
>> AC_INIT([ddns],
>> -	[011],
>> +	[012],
>> 	[info@ipfire.org],
>> 	[ddns],
>> 	[http://git.ipfire.org/?p=oddments/ddns.git;a=summary])
> 
> You don’t need to increment the version number. That will be done by the maintainer when ever it is decided to have a new release.
> 

Ok.

>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>> index 4ffd8bf..12116e3 100644
>> --- a/src/ddns/providers.py
>> +++ b/src/ddns/providers.py
>> @@ -1003,7 +1003,7 @@ class DDNSProviderDynsNet(DDNSProvider):
>> 			raise DDNSInternalServerError
>>
>> 		# If we got here, some other update error happened.
>> -		raise DDNSUpdateError(_("Server response: %s") % output)
>> +		raise DDNSUpdateError(_("Server response: %s") % output)
>>
> 
> Whitespace changes like this should not be included in this patch. This could be an extra patch.
> 

Ok. My text editor corrected this automatically. I didn't think about it any further...

>> class DDNSProviderEnomCom(DDNSResponseParserXML, DDNSProvider):
>> @@ -1129,6 +1129,19 @@ class DDNSProviderFreeDNSAfraidOrg(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"
>> +
>> +
> 
> My problem with this provider is that the documentation is not publicly accessible. Therefore this is not maintainable for everyone who does not have an account there. Creating an account with every single ISP is of course not an option either.
> 
> I would be interested to hear what Stefan and others think about this.
> 
> Best,
> -Michael
> 

I get your point. I did some research in their KB - without login - but couldn't find an alternative place providing the infos. They use the dyndns2-protocol without any modifications. The only information they provide at the given URL (with login) is the Update-URL: https://dyndns.inwx.com/nic/update?myip=<ipaddr>&myipv6=<ip6addr> I doubt they will ever change this, unless they move to another protocol ... this would then be reported as a bug by a user who has a login and is able to provide further information though.

I've got an alternative idea to solve this. As they (and some other of the already implemented providers) are using the dyndns2-protocoll without any modifications, why not add a specific handle "DynDNS2 misc" to the service-dropdown (or an additional dropdown for the protocol) and a textfield for the Update-URL on the Web UI and create a unified handle for all dyndns2-providers in providers.py. The Update-URL for the dydns2-service can easily be provided by the user. This would simplify the maintenance of ddns on one side and provide support for more dyndns2-services without any effort on the other side. A similar approach could be used for other existent/future standardized dyndns-service-protocolls.

Please let me know what you think about it. I offer to work on a patch for the "DynDNS2 misc"-service if you like the idea.

>> class DDNSProviderItsdns(DDNSProtocolDynDNS2, DDNSProvider):
>> 		handle    = "itsdns.de"
>> 		name      = "it's DNS"
>> -- 
>> 2.17.1
>>
>> _______________________________________________
>> ddns mailing list
>> ddns@lists.ipfire.org
>> https://lists.ipfire.org/mailman/listinfo/ddns
> 

Regards, Alex
  
Michael Tremer Sept. 23, 2019, 10:27 p.m. UTC | #3
Hi,

> On 20 Sep 2019, at 12:20, Alexander Koch <ipfire@starkstromkonsument.de> wrote:
> 
> Hi,
> 
> -------- Original Message --------
> From: Michael Tremer [mailto:michael.tremer@ipfire.org]
> Sent: Thursday, 19 September 2019, 14:57 CEST
> To: Alexander Koch <ipfire@starkstromkonsument.de>
> Cc: ddns@lists.ipfire.org
> Subject: [PATCH] Add new provider INWX (https://www.inwx.com)
> 
>> Hi,
>> Thank you for sending this patch, but I am afraid I have a little bit of a problem here…
>>> On 18 Sep 2019, at 15:25, Alexander Koch <ipfire@starkstromkonsument.de> wrote:
>>> 
>>> This includes:
>>> 
>>> - inwx.com
>>> - inwx.de
>>> - inwx.at
>>> - inwx.ch
>>> - inwx.es
>>> 
>>> Signed-off-by: Alexander Koch <ipfire@starkstromkonsument.de>
>>> ---
>>> README                |  1 +
>>> configure.ac          |  2 +-
>>> src/ddns/providers.py | 15 ++++++++++++++-
>>> 3 files changed, 16 insertions(+), 2 deletions(-)
>>> 
>>> diff --git a/README b/README
>>> index b0601a0..0f2798e 100644
>>> --- a/README
>>> +++ b/README
>>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>>> 	enom.com
>>> 	entrydns.net
>>> 	freedns.afraid.org
>>> +	inwx.com|de|at|ch|es
>>> 	itsdns.de
>>> 	joker.com
>>> 	loopia.se
>>> diff --git a/configure.ac b/configure.ac
>>> index 008950d..14bccc0 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -21,7 +21,7 @@
>>> AC_PREREQ([2.64])
>>> 
>>> AC_INIT([ddns],
>>> -	[011],
>>> +	[012],
>>> 	[info@ipfire.org],
>>> 	[ddns],
>>> 	[http://git.ipfire.org/?p=oddments/ddns.git;a=summary])
>> You don’t need to increment the version number. That will be done by the maintainer when ever it is decided to have a new release.
> 
> Ok.
> 
>>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>>> index 4ffd8bf..12116e3 100644
>>> --- a/src/ddns/providers.py
>>> +++ b/src/ddns/providers.py
>>> @@ -1003,7 +1003,7 @@ class DDNSProviderDynsNet(DDNSProvider):
>>> 			raise DDNSInternalServerError
>>> 
>>> 		# If we got here, some other update error happened.
>>> -		raise DDNSUpdateError(_("Server response: %s") % output)
>>> +		raise DDNSUpdateError(_("Server response: %s") % output)
>>> 
>> Whitespace changes like this should not be included in this patch. This could be an extra patch.
> 
> Ok. My text editor corrected this automatically. I didn't think about it any further...
> 
>>> class DDNSProviderEnomCom(DDNSResponseParserXML, DDNSProvider):
>>> @@ -1129,6 +1129,19 @@ class DDNSProviderFreeDNSAfraidOrg(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"
>>> +
>>> +
>> My problem with this provider is that the documentation is not publicly accessible. Therefore this is not maintainable for everyone who does not have an account there. Creating an account with every single ISP is of course not an option either.
>> I would be interested to hear what Stefan and others think about this.
>> Best,
>> -Michael
> 
> I get your point. I did some research in their KB - without login - but couldn't find an alternative place providing the infos. They use the dyndns2-protocol without any modifications. The only information they provide at the given URL (with login) is the Update-URL: https://dyndns.inwx.com/nic/update?myip=<ipaddr>&myipv6=<ip6addr> I doubt they will ever change this, unless they move to another protocol ... this would then be reported as a bug by a user who has a login and is able to provide further information though.

Stefan told me today that we have others were the documentation is not publicly available. Although I do not understand this - why make this so complicated for people who are implementing your API? - I guess we have to accept this then for the same reasons we accepted the other ones for.

Acked-by: Michael Tremer <michael.tremer@ipfire.org>

> I've got an alternative idea to solve this. As they (and some other of the already implemented providers) are using the dyndns2-protocoll without any modifications, why not add a specific handle "DynDNS2 misc" to the service-dropdown (or an additional dropdown for the protocol) and a textfield for the Update-URL on the Web UI and create a unified handle for all dyndns2-providers in providers.py. The Update-URL for the dydns2-service can easily be provided by the user. This would simplify the maintenance of ddns on one side and provide support for more dyndns2-services without any effort on the other side. A similar approach could be used for other existent/future standardized dyndns-service-protocolls.
> 
> Please let me know what you think about it. I offer to work on a patch for the "DynDNS2 misc"-service if you like the idea.

This however is not a good idea. It defies one of the most important points of building ddns in the first place:

We wanted to be able to make changes to every provider, because sometimes things change. Some providers have asked us to make changes to the behaviour of ddns and we were able to do that and roll out the changes immediately across all IPFire systems. That won’t be possible with the generic service.

We neither have the UI, and it is not at all a problem to add a provider that is 100% compatible with DynDNS. It is literally 5 lines of code. That approach allows us a lot of flexibility for very little work.

-Michael

> 
>>> class DDNSProviderItsdns(DDNSProtocolDynDNS2, DDNSProvider):
>>> 		handle    = "itsdns.de"
>>> 		name      = "it's DNS"
>>> -- 
>>> 2.17.1
>>> 
>>> _______________________________________________
>>> ddns mailing list
>>> ddns@lists.ipfire.org
>>> https://lists.ipfire.org/mailman/listinfo/ddns
> 
> Regards, Alex
  

Patch

diff --git a/README b/README
index b0601a0..0f2798e 100644
--- a/README
+++ b/README
@@ -68,6 +68,7 @@  SUPPORTED PROVIDERS:
 	enom.com
 	entrydns.net
 	freedns.afraid.org
+	inwx.com|de|at|ch|es
 	itsdns.de
 	joker.com
 	loopia.se
diff --git a/configure.ac b/configure.ac
index 008950d..14bccc0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,7 +21,7 @@ 
 AC_PREREQ([2.64])
 
 AC_INIT([ddns],
-	[011],
+	[012],
 	[info@ipfire.org],
 	[ddns],
 	[http://git.ipfire.org/?p=oddments/ddns.git;a=summary])
diff --git a/src/ddns/providers.py b/src/ddns/providers.py
index 4ffd8bf..12116e3 100644
--- a/src/ddns/providers.py
+++ b/src/ddns/providers.py
@@ -1003,7 +1003,7 @@  class DDNSProviderDynsNet(DDNSProvider):
 			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):
@@ -1129,6 +1129,19 @@  class DDNSProviderFreeDNSAfraidOrg(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"