diff --git a/README.md b/README.md index 952a7d8..aa05b74 100644 --- a/README.md +++ b/README.md @@ -30,29 +30,31 @@ Dynamic DNS services currently supported include: 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 -DDclient now supports many of cable/dsl broadband routers. +DDclient now supports many of cable/dsl broadband routers. -Comments, suggestions and requests: use the forums on +Comments, suggestions and requests: use the forums on http://sourceforge.net/projects/ddclient/ -The code was originally written by Paul Burry and is now hosted and maintained +The code was originally written by Paul Burry and is now hosted and maintained through sourceforge.net. Please check out http://ddclient.sf.net ------------------------------------------------------------------------------- -REQUIREMENTS: +## REQUIREMENTS: - one or more accounts from one of the dynamic DNS services - Perl 5.014 or later - (you need the IO::Socket::SSL perl library for ssl-support, - JSON::PP perl library for JSON support and - IO::Socket:INET6 perl library for ipv6-support) + - `Data::Validate::IP` perl library + - `IO::Socket::SSL` perl library for ssl-support + - `JSON::PP` perl library for JSON support + - `IO::Socket:INET6` perl library for ipv6-support - Linux or probably any common Unix system ------------------------------------------------------------------------------- -INSTALLATION: +## INSTALLATION: cp ddclient /usr/sbin/ mkdir /etc/ddclient @@ -61,6 +63,13 @@ INSTALLATION: vi /etc/ddclient/ddclient.conf -- and change hostnames, logins, and passwords appropriately + ## For those using systemd: + cp sample-etc_systemd.service /etc/systemd/system/ddclient.service + ## enable automatic startup when booting + systemctl enable ddclient.service + ## start the first time by hand + systemctl start ddclient.service + ## For those using Redhat style rc files and using daemon-mode: cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient ## enable automatic startup when booting @@ -73,17 +82,19 @@ INSTALLATION: cp sample-etc_rc.d_init.d_ddclient.alpine /etc/init.d/ddclient ## enable automatic startup when booting rc-update add ddclient - ## make sure you have perl installed + ## make sure you have perl installed apk add perl ## start the first time by hand rc-service ddclient start - + ## For those using Ubuntu style rc files and using daemon-mode: cp sample-etc_rc.d_init.d_ddclient.ubuntu /etc/init.d/ddclient ## enable automatic startup when booting update-rc.d ddclient defaults - ## make sure you have perl installed - apt-get install perl + ## make sure you have perl and the required modules installed + apt-get install perl libdata-validate-ip-perl + ## if you plan to use cloudflare or feedns you need the perl json module + apt-get install libjson-any-perl ## start the first time by hand service ddclient start @@ -91,7 +102,7 @@ INSTALLATION: ## as described below. ------------------------------------------------------------------------------- -TROUBLESHOOTING: +## TROUBLESHOOTING: 1. enable debugging and verbose messages. ``$ ddclient -daemon=0 -debug -verbose -noquiet`` @@ -111,10 +122,10 @@ TROUBLESHOOTING: ``fw=url-to-your-router``'s-status-page ``fw-skip=any-string-preceding-your-IP-address`` - ddclient does something like this to provide builtin support for + ddclient does something like this to provide builtin support for common routers. For example, the Linksys routers could have been added with: - + fw=192.168.1.1/Status.htm fw-skip=WAN.*?IP Address @@ -136,7 +147,7 @@ TROUBLESHOOTING: while some others accept anything. ------------------------------------------------------------------------------- -USING DDCLIENT WITH ppp +## USING DDCLIENT WITH ppp If you are using a ppp connection, you can easily update your DynDNS entry with each connection, with: @@ -148,7 +159,7 @@ Alternatively, you may just configure ddclient to operate as a daemon and monitor your ppp interface. ------------------------------------------------------------------------------- -USING DDCLIENT WITH cron +## USING DDCLIENT WITH cron If you have not configured ddclient to use daemon-mode, you'll need to configure cron to force an update once a month so that the dns entry will @@ -159,7 +170,7 @@ not become stale. vi /etc/cron.d/ddclient ------------------------------------------------------------------------------- -USING DDCLIENT WITH dhcpcd-1.3.17 +## USING DDCLIENT WITH dhcpcd-1.3.17 If you are using dhcpcd-1.3.17 or thereabouts, you can easily update your DynDNS entry automatically every time your lease is obtained @@ -173,19 +184,19 @@ In my case, it is named dhcpcd-eth0.exe and contains the lines: #!/bin/sh PATH=/usr/sbin:/root/bin:${PATH} logger -t dhcpcd IP address changed to $1 - ddclient -proxy fasthttp.sympatico.ca -wildcard -ip $1 | logger -t ddclient + ddclient -proxy fasthttp.sympatico.ca -wildcard -ip $1 | logger -t ddclient exit 0 Other DHCP clients may have another method of calling out to programs -for updating DNS entries. +for updating DNS entries. Alternatively, you may just configure ddclient to operate as a daemon and monitor your ethernet interface. ------------------------------------------------------------------------------- -USING DDCLIENT WITH dhclient +## USING DDCLIENT WITH dhclient -If you are using the ISC DHCP client (dhclient), you can update +If you are using the ISC DHCP client (dhclient), you can update your DynDNS entry automatically every time your lease is obtained or renewed by creating an executable file named: /etc/dhclient-exit-hooks diff --git a/README.ssl b/README.ssl index 27b9f5b..3aa579b 100644 --- a/README.ssl +++ b/README.ssl @@ -10,3 +10,4 @@ ssl support is tested on folowing dynamic dns providers: - dyndns.com - freemyip.com - DNS Made Easy +- dondominio.com diff --git a/ddclient b/ddclient index a1c4912..38a38a3 100755 --- a/ddclient +++ b/ddclient @@ -489,6 +489,9 @@ my %variables = ( 'dnsmadeeasy-common-defaults' => { 'server' => setv(T_FQDNP, 1, 0, 1, 'cp.dnsmadeeasy.com', undef), 'script' => setv(T_STRING, 1, 1, 1, '/servlet/updateip', undef), + }, + 'dondominio-common-defaults' => { + 'server' => setv(T_FQDNP, 1, 0, 1, 'dondns.dondominio.com', undef), }, ); my %services = ( @@ -711,11 +714,20 @@ my %services = ( $variables{'service-common-defaults'}, ), }, + 'dondominio' => { + 'updateable' => undef, + 'update' => \&nic_dondominio_update, + 'examples' => \&nic_dondominio_examples, + 'variables' => merge( + $variables{'dondominio-common-defaults'}, + $variables{'service-common-defaults'}, + ), + }, ); $variables{'merged'} = merge($variables{'global-defaults'}, - $variables{'service-common-defaults'}, - $variables{'dyndns-common-defaults'}, - map { $services{$_}{'variables'} } keys %services, + $variables{'service-common-defaults'}, + $variables{'dyndns-common-defaults'}, + map { $services{$_}{'variables'} } keys %services, ); my @opt = ( @@ -4825,6 +4837,80 @@ sub nic_woima_update { } } +###################################################################### +## nic_dondominio_examples +###################################################################### +sub nic_dondominio_examples { + return < 'Record successfully updated!', ); + ## update each configured host + ## should improve to update in one pass foreach my $h (@_) { my $ip = delete $config{$h}{'wantip'}; info("Setting IP address to %s for %s", $ip, $h); @@ -4912,7 +5000,6 @@ sub nic_dnsmadeeasy_update { } } - ###################################################################### # vim: ai ts=4 sw=4 tw=78 : diff --git a/sample-etc_systemd.service b/sample-etc_systemd.service new file mode 100644 index 0000000..c6418a4 --- /dev/null +++ b/sample-etc_systemd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Dynamic DNS Update Client +After=network.target + +[Service] +Type=forking +PIDFile=/var/run/ddclient.pid +ExecStart=/usr/sbin/ddclient + +[Install] +WantedBy=multi-user.target diff --git a/sample-get-ip-from-fritzbox b/sample-get-ip-from-fritzbox index 87b986e..c17e775 100755 --- a/sample-get-ip-from-fritzbox +++ b/sample-get-ip-from-fritzbox @@ -15,6 +15,6 @@ curl -s -H 'Content-Type: text/xml; charset="utf-8"' \ -H 'SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress' \ - --data-binary '' \ - http://169.254.1.1:49000/upnp/control/WANCommonIFC1 | \ - sed -n -e 's#^.*\(.*\).*$#\1#p' + -d ' ' \ + 'http://fritz.box:49000/igdupnp/control/WANIPConn1' | \ + grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'