ddns: Add provider Feste-IP.Net Signed-off-by: Martin Krieger <makrie@posteo.de> --- *IPv6 support included based on API description but not tested. *Test system is connected by VDSL with pure IPv4 (No IPv6 or dual stack). *Setup can handle IPv4, IPv6 or

Message ID 20210517141804.5808-1-makrie@posteo.de
State Dropped
Headers
Series ddns: Add provider Feste-IP.Net Signed-off-by: Martin Krieger <makrie@posteo.de> --- *IPv6 support included based on API description but not tested. *Test system is connected by VDSL with pure IPv4 (No IPv6 or dual stack). *Setup can handle IPv4, IPv6 or |

Commit Message

Martin Krieger May 17, 2021, 2:18 p.m. UTC
  ---
 README                |  1 +
 src/ddns/providers.py | 27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+)
  

Comments

Peter Müller May 17, 2021, 7:31 p.m. UTC | #1
Hi,

thank you for providing this.

I regret to inform you that

(a) both this patch and it's precursor violate the syntax of patches applicable to git,
    having parts of the description and various tags mangled into the RFC 5322 / MIME
    "Subject" header.

    You do not need to use "git send-email" as such (personally, I do not use it either,
    because my development environment cannot establish SMTP connections due to firewall
    policies). However, IPFire's development heavily relies on Git, so please figure out
    how to run the most basic commands such as "git commit" and "git format-patch" in
    order to properly submit your patches.

(b) these patches each success each other, however missing appropriate version tags
    (such as [PATCH v2], [PATCH v3], etc.) in the RFC 5322 "Subject" header of their
    mails.

    Since you did not mark the obsoleted patches as being superseded in https://patchwork.ipfire.org/,
    either, this makes it hard to keep track of the latest version of your patch. Eventually,
    we might apply, commend or reject based on the wrong one, because of simply having
    overlooked there is a new, fixed version of it available.

Apart from that, it would be good to see this patch tested with IPv6 and dual-stack scenarios
as well - please see also my remark(s) on this below. If I understood the documentation of
that DDNS provider correctly, you do not really need to supply two IP addresses having distinct
families. Could you at least try executing this snippet with two different IPv4 addresses?

> ---
>  README                |  1 +
>  src/ddns/providers.py | 27 +++++++++++++++++++++++++++
>  2 files changed, 28 insertions(+)
> 
> diff --git a/README b/README
> index b6decb35c338..fa6ce5e598b8 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 56e6620c78ab..009e2c9e337d 100644
> --- a/src/ddns/providers.py
> +++ b/src/ddns/providers.py
> @@ -1179,6 +1179,33 @@ class DDNSProviderEntryDNS(DDNSProvider):
>  		raise DDNSUpdateError
>  
>  
> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
> +        handle    = "feste-ip.net"
> +        name      = "Feste-IP.Net"
> +        website   = "https://www.feste-ip.net/"
> +
> +        # Information about the format of the request is to be found
> +        # https://forum.feste-ip.net/viewtopic.php?f=13&t=469
> +
> +        myips = ("myip","myip2")

Personal comment: Kinda ugly, but given the documentation of that provider, there is no
other choice to do this here...

> +
> +        url = "https://members.feste-ip.net/nic/update/"
> +
> +        def update(self):
> +                data = {
> +                        "hostname" : self.hostname
> +                }
> +
> +                for proto in DDNSProvider.protocols:
> +                        idx = 0
> +                        tmpip = self.get_address(proto)
> +                        if tmpip:
> +                                data[self.myips[idx]] = tmpip
> +                                idx += 1
> +
> +                        self.send_request(data)

What is happening here if $tmpip equals a Boolean False?

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

Thanks, and best regards,
Peter Müller
  
Peter Müller May 18, 2021, 9:39 p.m. UTC | #2
Hi,

thanks for your reply.

First, please do not forget to keep the mailing list CC'ed. For transparency reasons, we have a policy here
stating to keep public conversations public (please refer to https://wiki.ipfire.org/devel/contact for details).

Second, your patches _did_ made it into patchwork. They can be found in the "ipfire" section - for your convenience,
here is a list of all active patches submitted by you patchwork currently knows about:
https://patchwork.ipfire.org/project/ipfire/list/?submitter=93

Once having logged in, you can mark patches as being "superseded", so they won't appear as being active anymore.

Third, I have seen your updated patch and will comment on it separately the other day.

Thanks, and best regards,
Peter Müller


> Hello Peter,
> 
> thanks for your reply. Sorry for confusion about the patch. I tried to fullfill the requirements, but due to my low experience on the git process it went accidantely wrong.
> 
> I will improve & resubmit my patch according to your comments.
> 
> What ist the right way to mark patches as obsolete or remove them? My patches doesn‘t seem to enter https://patchwork.ipfire.org.
> 
> Regards,
> 
> Martin Krieger
> 
> Von meinem iPad gesendet
> 
>> Am 17.05.2021 um 21:31 schrieb Peter Müller <peter.mueller@ipfire.org>:
>> Hi,
>>
>> thank you for providing this.
>>
>> I regret to inform you that
>>
>> (a) both this patch and it's precursor violate the syntax of patches applicable to git,
>>    having parts of the description and various tags mangled into the RFC 5322 / MIME
>>    "Subject" header.
>>
>>    You do not need to use "git send-email" as such (personally, I do not use it either,
>>    because my development environment cannot establish SMTP connections due to firewall
>>    policies). However, IPFire's development heavily relies on Git, so please figure out
>>    how to run the most basic commands such as "git commit" and "git format-patch" in
>>    order to properly submit your patches.
>>
>> (b) these patches each success each other, however missing appropriate version tags
>>    (such as [PATCH v2], [PATCH v3], etc.) in the RFC 5322 "Subject" header of their
>>    mails.
>>
>>    Since you did not mark the obsoleted patches as being superseded in https://patchwork.ipfire.org/,
>>    either, this makes it hard to keep track of the latest version of your patch. Eventually,
>>    we might apply, commend or reject based on the wrong one, because of simply having
>>    overlooked there is a new, fixed version of it available.
>>
>> Apart from that, it would be good to see this patch tested with IPv6 and dual-stack scenarios
>> as well - please see also my remark(s) on this below. If I understood the documentation of
>> that DDNS provider correctly, you do not really need to supply two IP addresses having distinct
>> families. Could you at least try executing this snippet with two different IPv4 addresses?
>>
>>> ---
>>> README                |  1 +
>>> src/ddns/providers.py | 27 +++++++++++++++++++++++++++
>>> 2 files changed, 28 insertions(+)
>>>
>>> diff --git a/README b/README
>>> index b6decb35c338..fa6ce5e598b8 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 56e6620c78ab..009e2c9e337d 100644
>>> --- a/src/ddns/providers.py
>>> +++ b/src/ddns/providers.py
>>> @@ -1179,6 +1179,33 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>>        raise DDNSUpdateError
>>>
>>>
>>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>>> +        handle    = "feste-ip.net"
>>> +        name      = "Feste-IP.Net"
>>> +        website   = "https://www.feste-ip.net/"
>>> +
>>> +        # Information about the format of the request is to be found
>>> +        # https://forum.feste-ip.net/viewtopic.php?f=13&t=469
>>> +
>>> +        myips = ("myip","myip2")
>>
>> Personal comment: Kinda ugly, but given the documentation of that provider, there is no
>> other choice to do this here...
>>
>>> +
>>> +        url = "https://members.feste-ip.net/nic/update/"
>>> +
>>> +        def update(self):
>>> +                data = {
>>> +                        "hostname" : self.hostname
>>> +                }
>>> +
>>> +                for proto in DDNSProvider.protocols:
>>> +                        idx = 0
>>> +                        tmpip = self.get_address(proto)
>>> +                        if tmpip:
>>> +                                data[self.myips[idx]] = tmpip
>>> +                                idx += 1
>>> +
>>> +                        self.send_request(data)
>>
>> What is happening here if $tmpip equals a Boolean False?
>>
>>> +
>>> +
>>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>>    handle    = "freedns.afraid.org"
>>>    name      = "freedns.afraid.org"
>>
>> Thanks, and best regards,
>> Peter Müller
>
  
Martin Krieger May 19, 2021, 1:44 p.m. UTC | #3
Hello Peter,

I marked the obsolete patches as "superseded".

Regards,

Martin Krieger

Peter Müller:
> Hi,
> 
> thanks for your reply.
> 
> First, please do not forget to keep the mailing list CC'ed. For transparency reasons, we have a policy here
> stating to keep public conversations public (please refer to https://wiki.ipfire.org/devel/contact for details).
> 
> Second, your patches _did_ made it into patchwork. They can be found in 
the "ipfire" section - for your convenience,
> here is a list of all active patches submitted by you patchwork currently knows about:
> https://patchwork.ipfire.org/project/ipfire/list/?submitter=93
> 
> Once having logged in, you can mark patches as being "superseded", so they won't appear as being active anymore.
> 
> Third, I have seen your updated patch and will comment on it separately 
the other day.
> 
> Thanks, and best regards,
> Peter Müller
> 
> 
>> Hello Peter,
>>
>> thanks for your reply. Sorry for confusion about the patch. I tried to 
fullfill the requirements, but due to my low experience on the git process it went accidantely wrong.
>>
>> I will improve & resubmit my patch according to your comments.
>>
>> What ist the right way to mark patches as obsolete or remove them? My patches doesn‘t seem to enter https://patchwork.ipfire.org.
>>
>> Regards,
>>
>> Martin Krieger
>>
>> Von meinem iPad gesendet
>>
>>> Am 17.05.2021 um 21:31 schrieb Peter Müller <peter.mueller@ipfire.org>:
>>> Hi,
>>>
>>> thank you for providing this.
>>>
>>> I regret to inform you that
>>>
>>> (a) both this patch and it's precursor violate the syntax of patches applicable to git,
>>>     having parts of the description and various tags mangled into the 
RFC 5322 / MIME
>>>     "Subject" header.
>>>
>>>     You do not need to use "git send-email" as such (personally, I do 
not use it either,
>>>     because my development environment cannot establish SMTP connections due to firewall
>>>     policies). However, IPFire's development heavily relies on Git, so please figure out
>>>     how to run the most basic commands such as "git commit" and "git format-patch" in
>>>     order to properly submit your patches.
>>>
>>> (b) these patches each success each other, however missing appropriate version tags
>>>     (such as [PATCH v2], [PATCH v3], etc.) in the RFC 5322 "Subject" header of their
>>>     mails.
>>>
>>>     Since you did not mark the obsoleted patches as being superseded in https://patchwork.ipfire.org/,
>>>     either, this makes it hard to keep track of the latest version of 
your patch. Eventually,
>>>     we might apply, commend or reject based on the wrong one, because 
of simply having
>>>     overlooked there is a new, fixed version of it available.
>>>
>>> Apart from that, it would be good to see this patch tested with IPv6 and dual-stack scenarios
>>> as well - please see also my remark(s) on this below. If I understood 
the documentation of
>>> that DDNS provider correctly, you do not really need to supply two IP 
addresses having distinct
>>> families. Could you at least try executing this snippet with two different IPv4 addresses?
>>>
>>>> ---
>>>> README                |  1 +
>>>> src/ddns/providers.py | 27 +++++++++++++++++++++++++++
>>>> 2 files changed, 28 insertions(+)
>>>>
>>>> diff --git a/README b/README
>>>> index b6decb35c338..fa6ce5e598b8 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 56e6620c78ab..009e2c9e337d 100644
>>>> --- a/src/ddns/providers.py
>>>> +++ b/src/ddns/providers.py
>>>> @@ -1179,6 +1179,33 @@ class DDNSProviderEntryDNS(DDNSProvider):
>>>>         raise DDNSUpdateError
>>>>
>>>>
>>>> +class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
>>>> +        handle    = "feste-ip.net"
>>>> +        name      = "Feste-IP.Net"
>>>> +        website   = "https://www.feste-ip.net/"
>>>> +
>>>> +        # Information about the format of the request is to be found
>>>> +        # https://forum.feste-ip.net/viewtopic.php?f=13&t=469
>>>> +
>>>> +        myips = ("myip","myip2")
>>>
>>> Personal comment: Kinda ugly, but given the documentation of that provider, there is no
>>> other choice to do this here...
>>>
>>>> +
>>>> +        url = "https://members.feste-ip.net/nic/update/"
>>>> +
>>>> +        def update(self):
>>>> +                data = {
>>>> +                        "hostname" : self.hostname
>>>> +                }
>>>> +
>>>> +                for proto in DDNSProvider.protocols:
>>>> +                        idx = 0
>>>> +                        tmpip = self.get_address(proto)
>>>> +                        if tmpip:
>>>> +                                data[self.myips[idx]] = tmpip
>>>> +                                idx += 1
>>>> +
>>>> +                        self.send_request(data)
>>>
>>> What is happening here if $tmpip equals a Boolean False?
>>>
>>>> +
>>>> +
>>>> class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
>>>>     handle    = "freedns.afraid.org"
>>>>     name      = "freedns.afraid.org"
>>>
>>> Thanks, and best regards,
>>> Peter Müller
>>
  

Patch

diff --git a/README b/README
index b6decb35c338..fa6ce5e598b8 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 56e6620c78ab..009e2c9e337d 100644
--- a/src/ddns/providers.py
+++ b/src/ddns/providers.py
@@ -1179,6 +1179,33 @@  class DDNSProviderEntryDNS(DDNSProvider):
 		raise DDNSUpdateError
 
 
+class DDNSProviderFesteIPNet(DDNSProtocolDynDNS2, DDNSProvider):
+        handle    = "feste-ip.net"
+        name      = "Feste-IP.Net"
+        website   = "https://www.feste-ip.net/"
+
+        # Information about the format of the request is to be found
+        # https://forum.feste-ip.net/viewtopic.php?f=13&t=469
+
+        myips = ("myip","myip2")
+
+        url = "https://members.feste-ip.net/nic/update/"
+
+        def update(self):
+                data = {
+                        "hostname" : self.hostname
+                }
+
+                for proto in DDNSProvider.protocols:
+                        idx = 0
+                        tmpip = self.get_address(proto)
+                        if tmpip:
+                                data[self.myips[idx]] = tmpip
+                                idx += 1
+
+                        self.send_request(data)
+
+
 class DDNSProviderFreeDNSAfraidOrg(DDNSProvider):
 	handle    = "freedns.afraid.org"
 	name      = "freedns.afraid.org"