From 14cea7fdef0fef53cf6f47105228d49b56cc4320 Mon Sep 17 00:00:00 2001 From: Reuben Thomas Date: Mon, 10 Jul 2023 15:08:39 +0300 Subject: [PATCH 1/2] Remove defunct dnsexit protocol --- ChangeLog.md | 3 +- README.md | 1 - ddclient.in | 126 --------------------------------------------------- 3 files changed, 2 insertions(+), 128 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 0fc79635..533e7d05 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -11,6 +11,7 @@ repository history](https://github.com/ddclient/ddclient/commits/master). * ddclient no longer ships any example files for init systems that use `/etc/init.d`. This was done because those files where effectively unmaintained, untested by the developers and only updated by downstream distros. If you where relying on those files, please copy them into your packaging. + * The defunct `dnsexit` protocol is removed (replaced by `dnsexit2`). ### New features @@ -18,7 +19,7 @@ repository history](https://github.com/ddclient/ddclient/commits/master). * Added support for domeneshop.no * Added support for Enom * Added support for Mythic Beasts Dynamic DNS - * Added support for DNSExit API v2 + * Added support for DNSExit API v2 (replaces old DNSExit). * Added support for njal.la * Added support for Porkbun * Added support for IPv6 to the EasyDNS and DuckDNS provider diff --git a/README.md b/README.md index 45f8d418..10c4821a 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,6 @@ Dynamic DNS services currently supported include: ClouDNS - See https://www.cloudns.net dinahosting - See https://dinahosting.com Gandi - See https://gandi.net - dnsexit - See https://dnsexit.com/ for details dnsexit2 - See https://dnsexit.com/dns/dns-api/ for details 1984.is - See https://www.1984.is/product/freedns/ for details Njal.la - See https://njal.la/docs/ddns/ diff --git a/ddclient.in b/ddclient.in index a31b9143..41b62c48 100755 --- a/ddclient.in +++ b/ddclient.in @@ -530,12 +530,6 @@ my %variables = ( 'server' => setv(T_FQDNP, 1, 0, 'dynamicdns.key-systems.net', undef), 'login' => setv(T_LOGIN, 0, 0, 0, 'unused', undef), }, - 'dnsexit-common-defaults' => { - 'ssl' => setv(T_BOOL, 0, 0, 1, undef), - 'server' => setv(T_FQDNP, 1, 0, 'update.dnsexit.com', undef), - 'script' => setv(T_STRING, 0, 1, '/RemoteUpdate.sv', undef), - 'min-error-interval' => setv(T_DELAY, 0, 0, interval('8m'), 0), - }, 'dnsexit2-common-defaults' => { 'ssl' => setv(T_BOOL, 0, 0, 1, undef), 'server' => setv(T_FQDNP, 1, 0, 'api.dnsexit.com', undef), @@ -945,15 +939,6 @@ my %services = ( $variables{'service-common-defaults'}, ), }, - 'dnsexit' => { - 'updateable' => undef, - 'update' => \&nic_dnsexit_update, - 'examples' => \&nic_dnsexit_examples, - 'variables' => merge( - $variables{'dnsexit-common-defaults'}, - $variables{'service-common-defaults'}, - ), - }, 'dnsexit2' => { 'updateable' => undef, 'update' => \&nic_dnsexit2_update, @@ -4019,117 +4004,6 @@ sub nic_dyndns2_update { } } -###################################################################### -## nic_dnsexit_examples -###################################################################### -sub nic_dnsexit_examples { - return <<"EoEXAMPLE"; -o 'dnsexit' - -The 'dnsexit' protocol is the protocol used by the dynamic hostname services -of the 'DnsExit' dns services. This is currently used by the free -dynamic DNS service offered by www.dnsexit.com. - -Configuration variables applicable to the 'dnsexit' protocol are: - ssl=no ## turn off ssl - protocol=dnsexit ## - server=update.dnsexit.com ## defaults to update.dnsexit.com - use=web ## defaults to web - web=update.dnsexit.com ## defaults to update.dnsexit.com - script=/RemoteUpdate.sv ## defaults to /RemoteUpdate.sv - login=service-userid ## userid registered with the service - password=service-password ## password registered with the service - fully.qualified.host ## the host registered with the service. - -Example ${program}.conf file entries: - ## single host update - protocol=dnsexit \\ - login=service-userid \\ - password=service-password \\ - fully.qualified.host - -EoEXAMPLE -} -###################################################################### -## nic_dnsexit_update -## -## written by Gonzalo Pérez de Olaguer Córdoba -## -## based on https://www.dnsexit.com/Direct.sv?cmd=ipClients -## fetches this URL to update: -## https://update.dnsexit.com/RemoteUpdate.sv?login=yourlogin&password=yourpassword& -## host=yourhost.yourdomain.com&myip=xxx.xx.xx.xxx -## -###################################################################### -sub nic_dnsexit_update { - debug("\nnic_dnsexit_update -------------------"); - - my %status = ( - '0' => [ 'good', 'Success' ], - '1' => [ 'nochg', 'IP is the same as the IP on the system' ], - '2' => [ 'badauth', 'Invalid password' ], - '3' => [ 'badauth', 'User not found' ], - '4' => [ 'nochg', 'IP not changed. To save our system resources, please don\'t post updates unless the IP got changed.' ], - '10' => [ 'error', 'Hostname is not specified' ], - '11' => [ 'nohost', 'fail to find the domain' ], - '13' => [ 'error', 'parameter validation error' ], - ); - - ## update each configured host - foreach my $h (@_) { - my $ip = delete $config{$h}{'wantip'}; - info("setting IP address to %s for %s", $ip, $h); - verbose("UPDATE:","updating %s", $h); - - # Set the URL that we're going to update - my $url; - $url = "https://$config{$h}{'server'}$config{$h}{'script'}"; - $url .= "?login=$config{$h}{'login'}"; - $url .= "&password=$config{$h}{'password'}"; - $url .= "&host=$h"; - $url .= "&myip="; - $url .= $ip if $ip; - - # Try to get URL - my $reply = geturl( - proxy => opt('proxy'), - url => $url - ); - - # No response, declare as failed - if (!defined($reply) || !$reply) { - failed("updating %s: Could not connect to %s.", $h, $config{$h}{'server'}); - last; - } - last if !header_ok($h, $reply); - - # Response found - if ($reply =~ /(\d+)=(.+)/) { - my ($statuscode, $statusmsg) = ($1, $2); - if (exists $status{$statuscode}) { - my ($status, $message) = @{ $status{$statuscode} }; - if ($status =~ m'^(good|nochg)$') { - $config{$h}{'ip'} = $ip; - $config{$h}{'mtime'} = $now; - } - $config{$h}{'status'} = $status; - if ($status eq 'good') { - success("updating %s: good: IP address set to %s", $h, $ip); - } else { - warning("updating %s: %s: %s", $h, $status, $message); - } - } else { - $config{$h}{'status'} = 'failed'; - failed("updating %s: failed: unrecognized status code (%s)", $h, $statuscode); - } - } else { - $config{$h}{'status'} = 'failed'; - warning("SENT: %s", $url) unless opt('verbose'); - warning("REPLIED: %s", $reply); - failed("updating %s: unrecognized reply.", $h); - } - } -} ###################################################################### ## nic_dnsexit2_examples ###################################################################### From 2199ecbafa0938ac233dfb583ba214476a7a3e31 Mon Sep 17 00:00:00 2001 From: Reuben Thomas Date: Mon, 10 Jul 2023 18:23:25 +0300 Subject: [PATCH 2/2] README.md: update and prettify list of dyn DNS providers --- README.md | 88 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 10c4821a..2823d8b1 100644 --- a/README.md +++ b/README.md @@ -7,53 +7,57 @@ This is a friendly fork/continuation of https://github.com/ddclient/ddclient ## Alternatives -You might also want to consider using one of the following, if they support your dynamic DNS provider(s): or . +You might also want to consider using one of the following, if they support +your dynamic DNS provider(s): or +. ## Supported services Dynamic DNS services currently supported include: - DynDNS.com - See http://www.dyndns.com for details on obtaining a free account. - Zoneedit - See http://www.zoneedit.com for details. - EasyDNS - See http://www.easydns.com for details. - NameCheap - See http://www.namecheap.com for details - DslReports - See http://www.dslreports.com for details - Sitelutions - See http://www.sitelutions.com for details - Loopia - See http://www.loopia.se for details - Noip - See http://www.noip.com/ for details - Freedns - See http://freedns.afraid.org/ for details - ChangeIP - See http://www.changeip.com/ for details - nsupdate - See nsupdate(1) and ddns-confgen(8) for details - CloudFlare - See https://www.cloudflare.com/ for details - GoDaddy - See https://www.godaddy.com/ for details - Google - See http://www.google.com/domains for details - Duckdns - See https://duckdns.org/ for details - Freemyip - See https://freemyip.com for details - woima.fi - See https://woima.fi/ for details - Yandex - See https://domain.yandex.com/ for details - DNS Made Easy - See https://dnsmadeeasy.com/ for details - DonDominio - See https://www.dondominio.com for details - NearlyFreeSpeech.net - See https://www.nearlyfreespeech.net/services/dns for details - OVH - See https://www.ovh.com for details - Porkbun - See https://porkbun.com/ - ClouDNS - See https://www.cloudns.net - dinahosting - See https://dinahosting.com - Gandi - See https://gandi.net - dnsexit2 - See https://dnsexit.com/dns/dns-api/ for details - 1984.is - See https://www.1984.is/product/freedns/ for details - Njal.la - See https://njal.la/docs/ddns/ - regfish.de - See https://www.regfish.de/domains/dyndns/ for details - domenehsop - See https://api.domeneshop.no/docs/#tag/ddns/paths/~1dyndns~1update/get - Mythic Beasts - See https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns for details - Enom - See https://www.enom.com for details - Infomaniak - See https://faq.infomaniak.com/2376 for details - -`ddclient` now supports many cable and DSL broadband routers. - -Comments, suggestions and requests: use the issues on https://github.com/ddclient/ddclient/issues/new - -The code was originally written by Paul Burry and is now hosted and maintained -through github.com. Please check out http://ddclient.net +* [1984.is](https://www.1984.is/product/freedns) +* [ChangeIP](https://www.changeip.com) +* [CloudFlare](https://www.cloudflare.com) +* [ClouDNS](https://www.cloudns.net) +* [dinahosting](https://dinahosting.com) +* [DonDominio](https://www.dondominio.com) +* [DNS Made Easy](https://dnsmadeeasy.com) +* [DNSExit](https://dnsexit.com/dns/dns-api) +* [domenehsop](https://api.domeneshop.no/docs/#tag/ddns/paths/~1dyndns~1update/get) +* [DslReports](https://www.dslreports.com) +* [Duck DNS](https://duckdns.org) +* [DynDNS.com](https://account.dyn.com) +* [EasyDNS](https://www.easydns.com ) +* [Enom](https://www.enom.com) +* [Freedns](https://freedns.afraid.org) +* [Freemyip](https://freemyip.com) +* [Gandi](https://gandi.net) +* [GoDaddy](https://www.godaddy.com) +* [Google](https://domains.google) +* [Infomaniak](https://faq.infomaniak.com/2376) +* [Loopia](https://www.loopia.se) +* [Mythic Beasts](https://www.mythic-beasts.com/support/api/dnsv2/dynamic-dns) +* [NameCheap](https://www.namecheap.com) +* [NearlyFreeSpeech.net](https://www.nearlyfreespeech.net/services/dns) +* [Njalla](https://njal.la/docs/ddns) +* [Noip](https://www.noip.com) +* nsupdate - see nsupdate(1) and ddns-confgen(8) +* [OVH](https://www.ovhcloud.com) +* [Porkbun](https://porkbun.com) +* [regfish.de](https://www.regfish.de/domains/dyndns) +* [Sitelutions](https://www.sitelutions.com) +* [woima.fi](https://woima.fi) +* [Yandex](https://dns.yandex.com) +* [Zoneedit](https://www.zoneedit.com) + +`ddclient` supports finding your IP address from many cable and DSL +broadband routers. + +Comments, suggestions and requests: please file an issue at +https://github.com/ddclient/ddclient/issues/new + +The code was originally written by Paul Burry and is now hosted and +maintained through github.com. Please check out https://ddclient.net ## REQUIREMENTS