ddns add provider Feste-IP.NET

Message ID 9cac2a23-4575-4b06-d4d5-dc9c60ca65bb@posteo.de
State Dropped
Headers
Series ddns add provider Feste-IP.NET |

Commit Message

Martin Krieger May 5, 2021, 6:13 p.m. UTC
  
  

Comments

Michael Tremer May 5, 2021, 10:28 p.m. UTC | #1
Hello Martin,

Thank you very much for your submission.

> On 5 May 2021, at 19:13, Martin Krieger <makrie@posteo.de> wrote:
> 
> diff --git a/README b/README
> index b6decb3..fa6ce5e 100644
> --- a/README
> +++ b/README
> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>        easydns.com
>        enom.com
>        entrydns.net
> +       feste-ip.net
>        freedns.afraid.org
>        inwx.com|de|at|ch|es
>        itsdns.de
> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
> index 56e6620..c70423b 100644
> --- a/src/ddns/providers.py
> +++ b/src/ddns/providers.py
> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>                # If we got here, some other update error happened.
>                raise DDNSUpdateError
> 
> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
> +        handle    = "feste-ip.net"
> +        name      = "Feste-IP.Net"
> +        website   = "https//www.feste-ip.net/"

You are missing a “:” in the URL.

> +        protocols = ("ipv4",)

According to this documentation, the provider supports IPv6 as well:

  https://www.feste-ip.net/ddns-service/einrichtung/linux/

> +        # Information about the format of the request is to be found
> +        # https://www.feste-ip.net/ddns-service/allgemeine-informationen/
> +
> +        url = "https://members.feste-ip.net/nic/update"
> 
> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>        handle    = “freedns.afraid.org"
> 

Best,
-Michael
  
Martin Krieger May 6, 2021, 10:21 a.m. UTC | #2
Hello Michael,

by eMail again, because I didn't figure out to use git (commit, 
format-patch & send-email) in the correct way for patch submission. Sorry.

Regards,

Martin Krieger

diff --git a/README b/README
index b6decb3..fa6ce5e 100644
--- a/README
+++ b/README
@@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
         easydns.com
         enom.com
         entrydns.net
+       feste-ip.net
         freedns.afraid.org
         inwx.com|de|at|ch|es
         itsdns.de
diff --git a/src/ddns/providers.py b/src/ddns/providers.py
index 56e6620..c53ff9a 100644
--- a/src/ddns/providers.py
+++ b/src/ddns/providers.py
@@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
                 # If we got here, some other update error happened.
                 raise DDNSUpdateError

+class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
+        handle    = "feste-ip.net"
+        name      = "Feste-IP.Net"
+        website   = "https://www.feste-ip.net/"
+        protocols = ("ipv4","ipv6")
+
+        # Information about the format of the request is to be found
+        # https://www.feste-ip.net/ddns-service/einrichtung/linux/
+
+        url = "https://members.feste-ip.net/nic/update"

  class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
         handle    = "freedns.afraid.org"

Michael Tremer:
> Hello Martin,
> 
> Thank you very much for your submission.
> 
>> On 5 May 2021, at 19:13, Martin Krieger <makrie@posteo.de> wrote:
>>
>> diff --git a/README b/README
>> index b6decb3..fa6ce5e 100644
>> --- a/README
>> +++ b/README
>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>>         easydns.com
>>         enom.com
>>         entrydns.net
>> +       feste-ip.net
>>         freedns.afraid.org
>>         inwx.com|de|at|ch|es
>>         itsdns.de
>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>> index 56e6620..c70423b 100644
>> --- a/src/ddns/providers.py
>> +++ b/src/ddns/providers.py
>> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>                 # If we got here, some other update error happened.
>>                 raise DDNSUpdateError
>>
>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>> +        handle    = "feste-ip.net"
>> +        name      = "Feste-IP.Net"
>> +        website   = "https//www.feste-ip.net/"
> 
> You are missing a “:” in the URL.
> 
>> +        protocols = ("ipv4",)
> 
> According to this documentation, the provider supports IPv6 as well:
> 
>    https://www.feste-ip.net/ddns-service/einrichtung/linux/
> 
>> +        # Information about the format of the request is to be found
>> +        # https://www.feste-ip.net/ddns-service/allgemeine-informationen/
>> +
>> +        url = "https://members.feste-ip.net/nic/update"
>>
>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>         handle    = “freedns.afraid.org"
>>
> 
> Best,
> -Michael
>
  
Michael Tremer May 6, 2021, 3:08 p.m. UTC | #3
Hello Martin,

> On 6 May 2021, at 11:21, Martin Krieger <makrie@posteo.de> wrote:
> 
> Hello Michael,
> 
> by eMail again, because I didn't figure out to use git (commit, format-patch & send-email) in the correct way for patch submission. Sorry.
> 
> Regards,
> 
> Martin Krieger
> 
> diff --git a/README b/README
> index b6decb3..fa6ce5e 100644
> --- a/README
> +++ b/README
> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>        easydns.com
>        enom.com
>        entrydns.net
> +       feste-ip.net
>        freedns.afraid.org
>        inwx.com|de|at|ch|es
>        itsdns.de
> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
> index 56e6620..c53ff9a 100644
> --- a/src/ddns/providers.py
> +++ b/src/ddns/providers.py
> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>                # If we got here, some other update error happened.
>                raise DDNSUpdateError
> 
> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
> +        handle    = "feste-ip.net"
> +        name      = "Feste-IP.Net"
> +        website   = "https://www.feste-ip.net/"
> +        protocols = ("ipv4","ipv6")

According to the documentation, the request has to be sent to a different host for IPv6. Just adding it to the list probably won’t work because this provider has implemented a different way to use the DynDNS API.

> +        # Information about the format of the request is to be found
> +        # https://www.feste-ip.net/ddns-service/einrichtung/linux/
> +
> +        url = "https://members.feste-ip.net/nic/update"
> 
> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>        handle    = "freedns.afraid.org"
> 
> Michael Tremer:
>> Hello Martin,
>> Thank you very much for your submission.
>>> On 5 May 2021, at 19:13, Martin Krieger <makrie@posteo.de> wrote:
>>> 
>>> diff --git a/README b/README
>>> index b6decb3..fa6ce5e 100644
>>> --- a/README
>>> +++ b/README
>>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>>>        easydns.com
>>>        enom.com
>>>        entrydns.net
>>> +       feste-ip.net
>>>        freedns.afraid.org
>>>        inwx.com|de|at|ch|es
>>>        itsdns.de
>>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>>> index 56e6620..c70423b 100644
>>> --- a/src/ddns/providers.py
>>> +++ b/src/ddns/providers.py
>>> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>>                # If we got here, some other update error happened.
>>>                raise DDNSUpdateError
>>> 
>>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>>> +        handle    = "feste-ip.net"
>>> +        name      = "Feste-IP.Net"
>>> +        website   = "https//www.feste-ip.net/"
>> You are missing a “:” in the URL.
>>> +        protocols = ("ipv4",)
>> According to this documentation, the provider supports IPv6 as well:
>>   https://www.feste-ip.net/ddns-service/einrichtung/linux/
>>> +        # Information about the format of the request is to be found
>>> +        # https://www.feste-ip.net/ddns-service/allgemeine-informationen/
>>> +
>>> +        url = "https://members.feste-ip.net/nic/update"
>>> 
>>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>>        handle    = “freedns.afraid.org"
>>> 
>> Best,
>> -Michael
>
  
Martin Krieger May 8, 2021, 12:20 p.m. UTC | #4
Hello Michael,

unfortunately my actual Python knowledge is very basic. I found no 
solution to implement ipv6 in addition to ipv4. Also IPFire is based on 
ipv4 and will be there in future as far as I understood.

I adapted providers.py to force FesteIP.Net to use ipv4 according to the 
information on the homepage.

A test showed no issue:

ddns -d update --force ipfire.feste-ip.net

Running on distribution: ipfire-2
Loading configuration file /var/ipfire/ddns/ddns.conf
Updating ipfire.feste-ip.net forced
Sending request (GET): 
https://v4.members.feste-ip.net/nic/update/?hostname=ipfire.feste-ip.net&myip=5.63.50.246
Request header:
   Authorization: Basic MjA2MDA0Ol84UnN2bjZidDk=
   User-agent: IPFireDDNSUpdater/013
   Pragma: no-cache
Response header (Status Code 200):
   Date: Sat, 08 May 2021 12:01:04 GMT
   Content-Type: text/plain
   Connection: close
   Accept-Ranges: none
   Server: Feste-IP.net Server
   Strict-Transport-Security: max-age=15768000
Dynamic DNS update for ipfire.feste-ip.net (Feste-IP.Net) successful
Logging successful update for ipfire.feste-ip.net
Opening database /var/lib/ddns.db

So, from my point of view the patch should do the job.

Regards,

Martin Krieger

diff --git a/README b/README
index b6decb3..fa6ce5e 100644
--- a/README
+++ b/README
@@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
         easydns.com
         enom.com
         entrydns.net
+       feste-ip.net
         freedns.afraid.org
         inwx.com|de|at|ch|es
         itsdns.de
diff --git a/src/ddns/providers.py b/src/ddns/providers.py
index 56e6620..8348ed1 100644
--- a/src/ddns/providers.py
+++ b/src/ddns/providers.py
@@ -1178,6 +1178,17 @@ class DDNSProviderEntryDNS(DDNSProvider):
                 # If we got here, some other update error happened.
                 raise DDNSUpdateError

+class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
+        handle    = "feste-ip.net"
+        name      = "Feste-IP.Net"
+        website   = "https://www.feste-ip.net/"
+        protocols = ("ipv4",)
+
+        # Information about the format of the request is to be found
+        # https://www.feste-ip.net/ddns-service/einrichtung/linux/
+        # https://www.feste-ip.net/ddns-service/einrichtung/ipv4-ipv6/
+
+        url = "https://v4.members.feste-ip.net/nic/update"

  class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
         handle    = "freedns.afraid.org"

Michael Tremer:
> Hello Martin,
> 
>> On 6 May 2021, at 11:21, Martin Krieger <makrie@posteo.de> wrote:
>>
>> Hello Michael,
>>
>> by eMail again, because I didn't figure out to use git (commit, format-patch & send-email) in the correct way for patch submission. Sorry.
>>
>> Regards,
>>
>> Martin Krieger
>>
>> diff --git a/README b/README
>> index b6decb3..fa6ce5e 100644
>> --- a/README
>> +++ b/README
>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>>         easydns.com
>>         enom.com
>>         entrydns.net
>> +       feste-ip.net
>>         freedns.afraid.org
>>         inwx.com|de|at|ch|es
>>         itsdns.de
>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>> index 56e6620..c53ff9a 100644
>> --- a/src/ddns/providers.py
>> +++ b/src/ddns/providers.py
>> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>                 # If we got here, some other update error happened.
>>                 raise DDNSUpdateError
>>
>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>> +        handle    = "feste-ip.net"
>> +        name      = "Feste-IP.Net"
>> +        website   = "https://www.feste-ip.net/"
>> +        protocols = ("ipv4","ipv6")
> 
> According to the documentation, the request has to be sent to a different host for IPv6. Just adding it to the list probably won’t work because this provider has implemented a different way to use the DynDNS API.
> 
>> +        # Information about the format of the request is to be found
>> +        # https://www.feste-ip.net/ddns-service/einrichtung/linux/
>> +
>> +        url = "https://members.feste-ip.net/nic/update"
>>
>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>         handle    = "freedns.afraid.org"
>>
>> Michael Tremer:
>>> Hello Martin,
>>> Thank you very much for your submission.
>>>> On 5 May 2021, at 19:13, Martin Krieger <makrie@posteo.de> wrote:
>>>>
>>>> diff --git a/README b/README
>>>> index b6decb3..fa6ce5e 100644
>>>> --- a/README
>>>> +++ b/README
>>>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>>>>         easydns.com
>>>>         enom.com
>>>>         entrydns.net
>>>> +       feste-ip.net
>>>>         freedns.afraid.org
>>>>         inwx.com|de|at|ch|es
>>>>         itsdns.de
>>>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>>>> index 56e6620..c70423b 100644
>>>> --- a/src/ddns/providers.py
>>>> +++ b/src/ddns/providers.py
>>>> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>>>                 # If we got here, some other update error happened.
>>>>                 raise DDNSUpdateError
>>>>
>>>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>>>> +        handle    = "feste-ip.net"
>>>> +        name      = "Feste-IP.Net"
>>>> +        website   = "https//www.feste-ip.net/"
>>> You are missing a “:” in the URL.
>>>> +        protocols = ("ipv4",)
>>> According to this documentation, the provider supports IPv6 as well:
>>>    https://www.feste-ip.net/ddns-service/einrichtung/linux/
>>>> +        # Information about the format of the request is to be found
>>>> +        # https://www.feste-ip.net/ddns-service/allgemeine-informationen/
>>>> +
>>>> +        url = "https://members.feste-ip.net/nic/update"
>>>>
>>>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>>>         handle    = “freedns.afraid.org"
>>>>
>>> Best,
>>> -Michael
>>
>
  
Michael Tremer May 11, 2021, 9:44 a.m. UTC | #5
Hello Martin,

> On 8 May 2021, at 13:20, Martin Krieger <makrie@posteo.de> wrote:
> 
> Hello Michael,
> 
> unfortunately my actual Python knowledge is very basic. I found no solution to implement ipv6 in addition to ipv4. Also IPFire is based on ipv4 and will be there in future as far as I understood.

Currently IPFire 2 only supports IPv4, but that is not mean to stay for forever and ddns is used elsewhere, too.

> I adapted providers.py to force FesteIP.Net to use ipv4 according to the information on the homepage.

I do not think that it is a good idea to implement half a provider. Could you maybe contact them and ask them to integrate their custom API into ddns?

-Michael

> 
> A test showed no issue:
> 
> ddns -d update --force ipfire.feste-ip.net
> 
> Running on distribution: ipfire-2
> Loading configuration file /var/ipfire/ddns/ddns.conf
> Updating ipfire.feste-ip.net forced
> Sending request (GET): https://v4.members.feste-ip.net/nic/update/?hostname=ipfire.feste-ip.net&myip=5.63.50.246
> Request header:
>  Authorization: Basic MjA2MDA0Ol84UnN2bjZidDk=
>  User-agent: IPFireDDNSUpdater/013
>  Pragma: no-cache
> Response header (Status Code 200):
>  Date: Sat, 08 May 2021 12:01:04 GMT
>  Content-Type: text/plain
>  Connection: close
>  Accept-Ranges: none
>  Server: Feste-IP.net Server
>  Strict-Transport-Security: max-age=15768000
> Dynamic DNS update for ipfire.feste-ip.net (Feste-IP.Net) successful
> Logging successful update for ipfire.feste-ip.net
> Opening database /var/lib/ddns.db
> 
> So, from my point of view the patch should do the job.
> 
> Regards,
> 
> Martin Krieger
> 
> diff --git a/README b/README
> index b6decb3..fa6ce5e 100644
> --- a/README
> +++ b/README
> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>        easydns.com
>        enom.com
>        entrydns.net
> +       feste-ip.net
>        freedns.afraid.org
>        inwx.com|de|at|ch|es
>        itsdns.de
> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
> index 56e6620..8348ed1 100644
> --- a/src/ddns/providers.py
> +++ b/src/ddns/providers.py
> @@ -1178,6 +1178,17 @@ class DDNSProviderEntryDNS(DDNSProvider):
>                # If we got here, some other update error happened.
>                raise DDNSUpdateError
> 
> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
> +        handle    = "feste-ip.net"
> +        name      = "Feste-IP.Net"
> +        website   = "https://www.feste-ip.net/"
> +        protocols = ("ipv4",)
> +
> +        # Information about the format of the request is to be found
> +        # https://www.feste-ip.net/ddns-service/einrichtung/linux/
> +        # https://www.feste-ip.net/ddns-service/einrichtung/ipv4-ipv6/
> +
> +        url = "https://v4.members.feste-ip.net/nic/update"
> 
> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>        handle    = "freedns.afraid.org"
> 
> Michael Tremer:
>> Hello Martin,
>>> On 6 May 2021, at 11:21, Martin Krieger <makrie@posteo.de> wrote:
>>> 
>>> Hello Michael,
>>> 
>>> by eMail again, because I didn't figure out to use git (commit, format-patch & send-email) in the correct way for patch submission. Sorry.
>>> 
>>> Regards,
>>> 
>>> Martin Krieger
>>> 
>>> diff --git a/README b/README
>>> index b6decb3..fa6ce5e 100644
>>> --- a/README
>>> +++ b/README
>>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>>>        easydns.com
>>>        enom.com
>>>        entrydns.net
>>> +       feste-ip.net
>>>        freedns.afraid.org
>>>        inwx.com|de|at|ch|es
>>>        itsdns.de
>>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>>> index 56e6620..c53ff9a 100644
>>> --- a/src/ddns/providers.py
>>> +++ b/src/ddns/providers.py
>>> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>>                # If we got here, some other update error happened.
>>>                raise DDNSUpdateError
>>> 
>>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>>> +        handle    = "feste-ip.net"
>>> +        name      = "Feste-IP.Net"
>>> +        website   = "https://www.feste-ip.net/"
>>> +        protocols = ("ipv4","ipv6")
>> According to the documentation, the request has to be sent to a different host for IPv6. Just adding it to the list probably won’t work because this provider has implemented a different way to use the DynDNS API.
>>> +        # Information about the format of the request is to be found
>>> +        # https://www.feste-ip.net/ddns-service/einrichtung/linux/
>>> +
>>> +        url = "https://members.feste-ip.net/nic/update"
>>> 
>>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>>        handle    = "freedns.afraid.org"
>>> 
>>> Michael Tremer:
>>>> Hello Martin,
>>>> Thank you very much for your submission.
>>>>> On 5 May 2021, at 19:13, Martin Krieger <makrie@posteo.de> wrote:
>>>>> 
>>>>> diff --git a/README b/README
>>>>> index b6decb3..fa6ce5e 100644
>>>>> --- a/README
>>>>> +++ b/README
>>>>> @@ -68,6 +68,7 @@ SUPPORTED PROVIDERS:
>>>>>        easydns.com
>>>>>        enom.com
>>>>>        entrydns.net
>>>>> +       feste-ip.net
>>>>>        freedns.afraid.org
>>>>>        inwx.com|de|at|ch|es
>>>>>        itsdns.de
>>>>> diff --git a/src/ddns/providers.py b/src/ddns/providers.py
>>>>> index 56e6620..c70423b 100644
>>>>> --- a/src/ddns/providers.py
>>>>> +++ b/src/ddns/providers.py
>>>>> @@ -1178,6 +1178,16 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>>>>                # If we got here, some other update error happened.
>>>>>                raise DDNSUpdateError
>>>>> 
>>>>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>>>>> +        handle    = "feste-ip.net"
>>>>> +        name      = "Feste-IP.Net"
>>>>> +        website   = "https//www.feste-ip.net/"
>>>> You are missing a “:” in the URL.
>>>>> +        protocols = ("ipv4",)
>>>> According to this documentation, the provider supports IPv6 as well:
>>>>   https://www.feste-ip.net/ddns-service/einrichtung/linux/
>>>>> +        # Information about the format of the request is to be found
>>>>> +        # https://www.feste-ip.net/ddns-service/allgemeine-informationen/
>>>>> +
>>>>> +        url = "https://members.feste-ip.net/nic/update"
>>>>> 
>>>>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>>>>        handle    = “freedns.afraid.org"
>>>>> 
>>>> Best,
>>>> -Michael
>>> 
>
  

Patch

diff --git a/README b/README
index b6decb3..fa6ce5e 100644
--- a/README
+++ b/README
@@ -68,6 +68,7 @@  SUPPORTED PROVIDERS:
         easydns.com
         enom.com
         entrydns.net
+       feste-ip.net
         freedns.afraid.org
         inwx.com|de|at|ch|es
         itsdns.de
diff --git a/src/ddns/providers.py b/src/ddns/providers.py
index 56e6620..c70423b 100644
--- a/src/ddns/providers.py
+++ b/src/ddns/providers.py
@@ -1178,6 +1178,16 @@  class DDNSProviderEntryDNS(DDNSProvider):
                 # If we got here, some other update error happened.
                 raise DDNSUpdateError

+class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
+        handle    = "feste-ip.net"
+        name      = "Feste-IP.Net"
+        website   = "https//www.feste-ip.net/"
+        protocols = ("ipv4",)
+
+        # Information about the format of the request is to be found
+        # https://www.feste-ip.net/ddns-service/allgemeine-informationen/
+
+        url = "https://members.feste-ip.net/nic/update"

  class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
         handle    = "freedns.afraid.org"