Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove defunct dnsexit protocol #7

Merged
merged 2 commits into from
Jul 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ 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

* Added support for domaindiscount24.com
* 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
Expand Down
89 changes: 46 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,54 +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): <https://github.com/troglobit/inadyn> or <https://github.com/lopsided98/dnsupdate>.
You might also want to consider using one of the following, if they support
your dynamic DNS provider(s): <https://github.com/troglobit/inadyn> or
<https://github.com/lopsided98/dnsupdate>.

## 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
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/
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

Expand Down
126 changes: 0 additions & 126 deletions ddclient.in
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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 <salo@gpoc.es>
##
## 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
######################################################################
Expand Down