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 |
Return-Path: <development-bounces@lists.ipfire.org> Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4FkLqM3FT7z3wbk for <patchwork@web04.haj.ipfire.org>; Mon, 17 May 2021 14:19:27 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail02.haj.ipfire.org", Issuer "R3" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4FkLqK6B37zmr; Mon, 17 May 2021 14:19:25 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4FkLqJ1t3Jz2xVT; Mon, 17 May 2021 14:19:24 +0000 (UTC) Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) client-signature ECDSA (P-384)) (Client CN "mail01.haj.ipfire.org", Issuer "R3" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4FkLqG5l8pz2xLq for <development@lists.ipfire.org>; Mon, 17 May 2021 14:19:22 +0000 (UTC) Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) by mail01.ipfire.org (Postfix) with ESMTPS id 4FkLqF3kF1zmr for <development@lists.ipfire.org>; Mon, 17 May 2021 14:19:21 +0000 (UTC) Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 7826C240027 for <development@lists.ipfire.org>; Mon, 17 May 2021 16:19:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.de; s=2017; t=1621261159; bh=IdMc87JzoMri0sltswfOJ4l2qHgeveBXu9AZ7n72ciw=; h=From:To:Cc:Subject:Date:From; b=KvKvw0fSv1l5o95lFxev6PgWT02TNW7XEZ0r9nB/6aUunAdY1lyXMkjZgWT2NXdbt BEZ930reA4+Dzdf9CKC789Rk3tf87Xv0WDSqch/rdpl8NsR0RxeY6aLtl6qcLdzsMQ /vCMD/45d4ucSvr6rmexneQwmsUz+EYL2gVooWKo1e3WQvdhlQFwp9l/KcIYXDtkug NVzKwxa2wbPPeSWFyTQdxHEoiHiBCpnVn0gXZ4gxbmJK4phsrRwK2cagaggQroeQgp PNbT1mhmx/OtFS4yln012lJpID9CUmqK17arBkW5/HuJ4eWiL+5wkSQUBsBmqT2D4A T56Nk45NpFUgg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4FkLqB6Bbcz6tmG; Mon, 17 May 2021 16:19:18 +0200 (CEST) From: Martin Krieger <makrie@posteo.de> To: development@lists.ipfire.org Subject: [PATCH] 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 dual stack updates Date: Mon, 17 May 2021 14:18:04 +0000 Message-Id: <20210517141804.5808-1-makrie@posteo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.ipfire.org; s=202003rsa; t=1621261161; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding:dkim-signature; bh=IvMgk4NlW4McXWblHN2snoiNXDkWmREtHEV7pRFnvZI=; b=Bumg4Ib4fkwuqcWma9JTvYdtA4xQJjKPCfIYyRRnh2d96fyRI6fpDNFOtRDlAgm9iOwgWh mxEZBQU6d1wvqnQfDQoQjhNkKFFMxOWv45+/5b/lAJd5+oL8544a5yWwq3C1zTnf84I6M1 ttg1hnaa9eqN3Pk9FkEmuxWvqqd4HjepFdpqXS2dFNMkhegGTzXirKsdekGhHGI8rLJyW7 ET+Wi+5OXbt3ptMlmVKNFmTuGzDCTQdojbClOc8b2o0+RWsG1vru+maQTv81OoMF0Zg5vz sv3KX50yz4UyMSZPRXUOBj/LkHwdL8MUVDvp+vY2UQm7AoMEUjw1UqimY9hn1g== ARC-Seal: i=1; s=202003rsa; d=lists.ipfire.org; t=1621261161; a=rsa-sha256; cv=none; b=exSiQDiiOsEO0qHIVeDN70w8m3jsRqoxQNWiEGns1M0MRKQN2K0XVHnBTSgpjyFCh0zbnj o1qt/ewhOkXGj66cEHIThJ93nTWogjC+wrdCB9nkyoahnTIDkl9y7ZpfYjfFOaMRcdYitr rF8jakcCKz49uhasw8p/MA//gp3SdVUJ93x0q9uHQMt6IyijQBJMh6QA8jvqVafnI+r8Fo F4KnNANg6TdCB4fy5XlzzSODa/dpzWYpFGHEF0lSS0dupKt3vL232auN24xjS9858CeKUf G978Muykp6wzrQwMtOp/fN+EFfOL2OgNbzmXprzd4SgnntqKCRzy+9gVNk/mQA== ARC-Authentication-Results: i=1; mail01.ipfire.org; dkim=pass header.d=posteo.de header.s=2017 header.b=KvKvw0fS; spf=pass (mail01.ipfire.org: domain of makrie@posteo.de designates 185.67.36.65 as permitted sender) smtp.mailfrom=makrie@posteo.de X-Spamd-Result: default: False [0.11 / 11.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; IP_REPUTATION_HAM(-1.29)[asn: 8495(-0.37), country: DE(-0.01), ip: 185.67.36.65(-0.92)]; RWL_MAILSPIKE_GOOD(0.00)[185.67.36.65:from]; R_SPF_ALLOW(-0.20)[+ip4:185.67.36.0/23]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_DKIM_ARC_DNSWL_MED(-0.50)[]; ARC_SIGNED(0.00)[lists.ipfire.org:s=202003rsa:i=1]; LONG_SUBJ(2.11)[281]; RCVD_COUNT_THREE(0.00)[3]; MX_GOOD(-0.01)[]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[posteo.de,none]; DKIM_TRACE(0.00)[posteo.de:+]; RCVD_IN_DNSWL_MED(-0.20)[185.67.36.65:from]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:8495, ipnet:185.67.36.0/23, country:DE]; BAYES_HAM(-3.00)[99.99%]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[posteo.de:s=2017]; FROM_HAS_DN(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[development@lists.ipfire.org]; DWL_DNSWL_LOW(-1.00)[posteo.de:dkim]; TO_MATCH_ENVRCPT_SOME(0.00)[]; MID_CONTAINS_FROM(1.00)[]; RCVD_TLS_ALL(0.00)[] X-Rspamd-Queue-Id: 4FkLqF3kF1zmr Authentication-Results: mail01.ipfire.org; dkim=pass header.d=posteo.de header.s=2017 header.b=KvKvw0fS; dmarc=pass (policy=none) header.from=posteo.de; spf=pass (mail01.ipfire.org: domain of makrie@posteo.de designates 185.67.36.65 as permitted sender) smtp.mailfrom=makrie@posteo.de X-Rspamd-Server: mail01.haj.ipfire.org X-BeenThere: development@lists.ipfire.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: IPFire development talk <development.lists.ipfire.org> List-Unsubscribe: <https://lists.ipfire.org/mailman/options/development>, <mailto:development-request@lists.ipfire.org?subject=unsubscribe> List-Archive: <http://lists.ipfire.org/pipermail/development/> List-Post: <mailto:development@lists.ipfire.org> List-Help: <mailto:development-request@lists.ipfire.org?subject=help> List-Subscribe: <https://lists.ipfire.org/mailman/listinfo/development>, <mailto:development-request@lists.ipfire.org?subject=subscribe> Errors-To: development-bounces@lists.ipfire.org Sender: "Development" <development-bounces@lists.ipfire.org> |
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
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
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 >
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 >>
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"