From 8409f45ab8353295880f819e2cdb1b417f646163 Mon Sep 17 00:00:00 2001 From: Nelson Araujo Date: Thu, 15 Jan 2015 13:36:31 -0800 Subject: [PATCH] Add support for Google Domains provider. --- README.md | 1 + ddclient | 97 +++++++++++++++++++++++++++++++++++++--- sample-etc_ddclient.conf | 8 ++++ 3 files changed, 101 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d2fad98..edd0dc7 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Dynamic DNS services currently supported include: dtdns - See http://www.dtdns.com/ for details nsupdate - See nsupdate(1) and ddns-confgen(8) for details CloudFlare - See https://www.cloudflare.com/ for details + Google - See http://www.google.com/domains for details DDclient now supports many of cable/dsl broadband routers. diff --git a/ddclient b/ddclient index 8c2d527..bb9e942 100755 --- a/ddclient +++ b/ddclient @@ -448,6 +448,9 @@ my %variables = ( 'mx' => setv(T_OFQDN, 0, 1, 1, '', undef), 'backupmx' => setv(T_BOOL, 0, 1, 1, 0, undef), }, + 'googledomains-common-defaults' => { + 'server' => setv(T_FQDNP, 1, 0, 1, 'domains.google.com', undef), + }, ); my %services = ( 'dyndns1' => { @@ -610,6 +613,14 @@ my %services = ( { 'server' => setv(T_FQDNP, 1, 0, 1, 'www.cloudflare.com', undef) }, { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0),}, $variables{'cloudflare-common-defaults'}, + }, + 'googledomains' => { + 'updateable' => undef, + 'update' => \&nic_googledomains_update, + 'examples' => \&nic_googledomains_examples, + 'variables' => merge( + { 'min-interval' => setv(T_DELAY, 0, 0, 1, interval('5m'), 0),}, + $variables{'googledomains-common-defaults'}, $variables{'service-common-defaults'}, ), }, @@ -1870,21 +1881,21 @@ sub geturl { $server =~ s%/.*%%; $url = "/" unless $url =~ m%/%; $url =~ s%^[^/]*/%%; - + debug("server = $server"); opt('fw') && debug("opt(fw = ",opt('fw'),")"); - $globals{'fw'} && debug("glo fw = $globals{'fw'}"); + $globals{'fw'} && debug("glo fw = $globals{'fw'}"); #if ( $globals{'ssl'} and $server ne $globals{'fw'} ) { ## always omit SSL for connections to local router if ( $force_ssl || ($globals{'ssl'} and (caller(1))[3] ne 'main::get_ip') ) { $use_ssl = 1; $default_port = 443; - load_ssl_support; + load_ssl_support; } else { $use_ssl = 0; $default_port = 80; } - + ## determine peer and port to use. $peer = $proxy || $server; $peer =~ s%/.*%%; @@ -1892,7 +1903,7 @@ sub geturl { $port =~ s%^.*:%%; $port = $default_port unless $port =~ /^\d+$/; $peer =~ s%:.*$%%; - + my $to = sprintf "%s%s", $server, $proxy ? " via proxy $peer:$port" : ""; verbose("CONNECT:", "%s", $to); @@ -3803,6 +3814,82 @@ sub nic_dtdns_update { } } } +###################################################################### + +###################################################################### +## nic_googledomains_examples +## +## written by Nelson Araujo +## +###################################################################### +sub nic_googledomains_examples { + return <