diff --git a/ChangeLog.md b/ChangeLog.md index 92a5474..89d14c1 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -46,6 +46,8 @@ repository history](https://github.com/ddclient/ddclient/commits/master). * `easydns`: The default value for `min-interval` was increased from 5m to 10m to match easyDNS documentation. [#713](https://github.com/ddclient/ddclient/pull/713) + * `woima`: The dyn.woima.fi service appears to be defunct so support was + removed. [#716](https://github.com/ddclient/ddclient/pull/716) ### New features @@ -76,9 +78,9 @@ repository history](https://github.com/ddclient/ddclient/commits/master). address changes. [#654](https://github.com/ddclient/ddclient/pull/654) * `he.net`: Added support for updating Hurricane Electric records. [#682](https://github.com/ddclient/ddclient/pull/682) - * `dyndns2`, `domeneshop`, `dnsmadeeasy`, `keysystems`, `woima`: The `server` - option can now include `http://` or `https://` to control the use of TLS. - If omitted, the value of the `ssl` option is used to determine the scheme. + * `dyndns2`, `domeneshop`, `dnsmadeeasy`, `keysystems`: The `server` option + can now include `http://` or `https://` to control the use of TLS. If + omitted, the value of the `ssl` option is used to determine the scheme. [#703](https://github.com/ddclient/ddclient/pull/703) * `ddns.fm`: New `protocol` option for updating [DDNS.FM](https://ddns.fm/) records. [#695](https://github.com/ddclient/ddclient/pull/695) diff --git a/README.md b/README.md index 07357b9..3fd99f4 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,6 @@ Dynamic DNS services currently supported include: * [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) diff --git a/ddclient.in b/ddclient.in index 7302783..4851712 100755 --- a/ddclient.in +++ b/ddclient.in @@ -1064,26 +1064,6 @@ our %protocols = ( 'min-interval' => setv(T_DELAY, 0, 0, interval('5m'), interval('5m')), }, }, - 'woima' => { - 'force_update' => undef, - 'update' => \&nic_woima_update, - 'examples' => \&nic_woima_examples, - 'variables' => { - %{$variables{'protocol-common-defaults'}}, - 'backupmx' => setv(T_BOOL, 0, 1, 0, undef), - 'custom' => setv(T_BOOL, 0, 1, 0, undef), - 'mx' => setv(T_OFQDN, 0, 1, undef, undef), - 'script' => setv(T_STRING, 0, 1, '/nic/update', undef), - # As of 2024-07-13, dyn.woima.fi does not have a valid TLS certificate so the `http:` - # scheme is explicitly specified here. Once a proper certificate is deployed, or if - # the user overrides certificate validation, the user can manually set the `server` - # option and either change http: to https: or omit the scheme (in which case ddclient - # will use the value of the `ssl` option to determine the scheme). - 'server' => setv(T_FQDNP, 0, 0, 'http://dyn.woima.fi', undef), - 'static' => setv(T_BOOL, 0, 1, 0, undef), - 'wildcard' => setv(T_BOOL, 0, 1, 0, undef), - }, - }, 'yandex' => { 'force_update' => undef, 'update' => \&nic_yandex_update, @@ -6888,177 +6868,6 @@ sub nic_ddnsfm_update { } } -###################################################################### -## nic_woima_examples -###################################################################### -sub nic_woima_examples { - return <<"EoEXAMPLE"; -o 'woima' - -The 'woima' protocol is used by the free -dynamic DNS service offered by woima.fi. -It offers also nameservers for own domains for free. -Dynamic DNS service for own domains is not free. - -Configuration variables applicable to the 'woima' protocol are: - protocol=woima ## - server=fqdn.of.service ## defaults to dyn.woima.fi - script=/path/to/script ## defaults to /nic/update - backupmx=no|yes ## indicates that this host is the primary MX for the domain. - static=no|yes ## indicates that this host has a static IP address. - custom=no|yes ## indicates that this host is a 'custom' top-level domain name. - mx=any.host.domain ## a host MX'ing for this host definition. - wildcard=no|yes ## add a DNS wildcard CNAME record that points to - login=service-login ## login name and password registered with the service - password=service-password ## - fully.qualified.host ## the host registered with the service. - -Example ${program}.conf file entries: - ## single host update - protocol=woima, \\ - login=my-dyndns.org-login, \\ - password=my-dyndns.org-password \\ - myhost.dyndns.org - - ## multiple host update with wildcard'ing mx, and backupmx - protocol=woima, \\ - login=my-dyndns.org-login, \\ - password=my-dyndns.org-password, \\ - mx=a.host.willing.to.mx.for.me,backupmx=yes,wildcard=yes \\ - myhost.dyndns.org,my2ndhost.dyndns.org - - ## multiple host update to the custom DNS service - protocol=woima, \\ - login=my-dyndns.org-login, \\ - password=my-dyndns.org-password \\ - my-toplevel-domain.com,my-other-domain.com -EoEXAMPLE -} -###################################################################### -## nic_woima_update -###################################################################### -sub nic_woima_update { - debug("\nnic_woima_update -------------------"); - - my %errors = ( - 'badauth' => 'Bad authorization (username or password)', - 'badsys' => 'The system parameter given was not valid', - - 'notfqdn' => 'A Fully-Qualified Domain Name was not provided', - 'nohost' => 'The hostname specified does not exist in the database', - '!yours' => 'The hostname specified exists, but not under the username currently being used', - '!donator' => 'The offline setting was set, when the user is not a donator', - '!active' => 'The hostname specified is in a Custom DNS domain which has not yet been activated.', - 'abuse', => 'The hostname specified is blocked for abuse; you should receive an email notification ' . - 'which provides an unblock request link. More info can be found on ' . - 'https://www.dyndns.com/support/abuse.html', - - 'numhost' => 'System error: Too many or too few hosts found. Contact support@dyndns.org', - 'dnserr' => 'System error: DNS error encountered. Contact support@dyndns.org', - - 'nochg' => 'No update required; unnecessary attempts to change to the current address are considered abusive', - ); - - for my $h (@_) { - my $ip = $config{$h}{'wantip'}; - delete $config{$h}{'wantip'}; - - info("setting IP address to %s for %s", $ip, $h); - verbose("UPDATE:", "updating %s", $h); - my $url = "$config{$h}{'server'}$config{$h}{'script'}?system="; - if ($config{$h}{'custom'}) { - warning("updating %s: 'custom' and 'static' may not be used together. ('static' ignored)", $h) - if $config{$h}{'static'}; - $url .= 'custom'; - - } elsif ($config{$h}{'static'}) { - $url .= 'statdns'; - - } else { - $url .= 'dyndns'; - } - - $url .= "&hostname=$h"; - $url .= "&myip="; - $url .= $ip if $ip; - - ## some args are not valid for a custom domain. - $url .= "&wildcard=ON" if ynu($config{$h}{'wildcard'}, 1, 0, 0); - if ($config{$h}{'mx'}) { - $url .= "&mx=$config{$h}{'mx'}"; - $url .= "&backmx=" . ynu($config{$h}{'backupmx'}, 'YES', 'NO'); - } - - my $reply = geturl( - proxy => opt('proxy'), - url => $url, - login => $config{$h}{'login'}, - password => $config{$h}{'password'}, - ); - if (!defined($reply) || !$reply) { - failed("updating %s: Could not connect to %s.", $h, $config{$h}{'server'}); - next; - } - next if !header_ok($h, $reply); - - my @reply = split /\n/, $reply; - my $state = 'header'; - my $returnedip = $ip; - - for my $line (@reply) { - if ($state eq 'header') { - $state = 'body'; - - } elsif ($state eq 'body') { - $state = 'results' if $line eq ''; - - } elsif ($state =~ /^results/) { - $state = 'results2'; - - # bug #10: some dyndns providers does not return the IP so - # we can't use the returned IP - my ($status, $returnedip) = split / /, lc $line; - $ip = $returnedip if (not $ip); - - $config{$h}{'status'} = $status; - if ($status eq 'good') { - $config{$h}{'ip'} = $ip; - $config{$h}{'mtime'} = $now; - success("updating %s: %s: IP address set to %s", $h, $status, $ip); - - } elsif (exists $errors{$status}) { - if ($status eq 'nochg') { - warning("updating %s: %s: %s", $h, $status, $errors{$status}); - $config{$h}{'ip'} = $ip; - $config{$h}{'mtime'} = $now; - $config{$h}{'status'} = 'good'; - - } else { - failed("updating %s: %s: %s", $h, $status, $errors{$status}); - } - - } elsif ($status =~ /w(\d+)(.)/) { - my ($wait, $units) = ($1, lc $2); - my ($sec, $scale) = ($wait, 1); - - ($scale, $units) = (1, 'seconds') if $units eq 's'; - ($scale, $units) = (60, 'minutes') if $units eq 'm'; - ($scale, $units) = (60*60, 'hours') if $units eq 'h'; - - $sec = $wait * $scale; - $config{$h}{'wtime'} = $now + $sec; - warning("updating %s: %s: wait %s %s before further updates", $h, $status, $wait, $units); - - } else { - failed("updating %s: unexpected status (%s)", $h, $line); - } - } - } - failed("updating %s: Could not connect to %s.", $h, $config{$h}{'server'}) - if $state ne 'results2'; - } -} - ###################################################################### ## nic_dondominio_examples ######################################################################