diff --git a/ddclient.conf.in b/ddclient.conf.in index 69ddc47..25120e7 100644 --- a/ddclient.conf.in +++ b/ddclient.conf.in @@ -370,3 +370,12 @@ ssl=yes # use ssl-support. Works with # login=ddns_username, # password=ddns_password # example.com +# +# N.B. the infomaniak protocol is obsolete. Please use dyndns2 instead: +# +# protocol=dyndns2, +# use=web, web=infomaniak.com/ip.php/ +# login=ddns_username, +# password=ddns_password +# redirect=2 +# example.com diff --git a/ddclient.in b/ddclient.in index 5ec090e..3b697d3 100755 --- a/ddclient.in +++ b/ddclient.in @@ -472,6 +472,7 @@ my %variables = ( 'postscript' => setv(T_POSTS, 0, 0, '', undef), 'ssl_ca_dir' => setv(T_FILE, 0, 0, undef, undef), 'ssl_ca_file' => setv(T_FILE, 0, 0, undef, undef), + 'redirect' => setv(T_NUMBER,0, 0, 0, undef) }, 'service-common-defaults' => { 'server' => setv(T_FQDNP, 1, 0, 'members.dyndns.org', undef), @@ -505,7 +506,7 @@ my %variables = ( 'cmd-skip' => setv(T_STRING,0, 0, '', undef), 'cmdv4' => setv(T_PROG, 0, 0, '', undef), 'cmdv6' => setv(T_PROG, 0, 0, '', undef), - + 'ip' => setv(T_IP, 0, 1, undef, undef), #TODO remove from cache? 'ipv4' => setv(T_IPV4, 0, 1, undef, undef), 'ipv6' => setv(T_IPV6, 0, 1, undef, undef), @@ -1095,6 +1096,7 @@ my @opt = ( ["if-skip", "=s", ""], ## deprecated ["test", "!", ""], ## hidden ["geturl", "=s", ""], ## hidden + ["redirect", "=i", "-redirect : enable and follow at most HTTP 30x redirections"], "", nic_examples(), "$program version $version, ", @@ -2590,6 +2592,7 @@ sub geturl { my $use_ssl = 0; my $protocol; my $timeout = opt('timeout'); + my $redirect = opt('redirect'); my @curlopt = (); my @header_lines = (); @@ -2648,6 +2651,12 @@ sub geturl { # Add in the data if any was provided (for POST/PATCH) push(@curlopt, "data=\"".escape_curl_param(${data}).'"') if ($data); + # Handle 30x redirections + if ($redirect) { + push(@curlopt, "location"); + push(@curlopt, "max-redirs=$redirect"); + } + # don't include ${url} as that might expose login credentials $0 = sprintf("%s - Curl system cmd sending to %s", $program, "${protocol}://${server}"); verbose("SENDING:", "Curl system cmd to %s", "${protocol}://${server}"); @@ -4123,7 +4132,7 @@ sub nic_dnsexit2_update { ); my $ipv4 = delete $config{$h}{'wantipv4'}; my $ipv6 = delete $config{$h}{'wantipv6'}; - + # Updates for ipv4 and ipv6 need to be combined in a single API call, create Hash of Arrays for tracking my %total_payload; @@ -7097,7 +7106,7 @@ Additional example to finely control IPv4 or IPv6 : apikey=APIKey secretapikey=SecretAPIKey usev6=ifv6, ifv6=enp1s0, usev4=disabled ipv6.example.com - + EoEXAMPLE } @@ -7574,7 +7583,7 @@ sub nic_regfishde_update { for my $h (@_) { my $ip = delete $config{$h}{'wantip'}; my $ipv6 = delete $config{$h}{'wantip'}; - + info("regfish.de setting IP address to %s for %s", $ip, $h); my $ipv = ($ip eq ($ipv6 // '')) ? '6' : '4'; @@ -7614,7 +7623,7 @@ sub nic_enom_examples { o 'enom' The 'enom' protocol is used by DNS services offered by www.enom.com and their resellers. Configuration variables applicable to the 'enom' protocol are: - protocol=enom ## + protocol=enom ## server=fqdn.of.service ## defaults to dynamic.name-services.com login=domain.name ## base domain name password=domain-password ## the domain password registered with the service @@ -7814,6 +7823,8 @@ sub nic_infomaniak_examples { o 'infomaniak' +**Note** The 'infomaniak' protocol is obsolete [*]. + The 'infomaniak' protocol is used by DNS services offered by www.infomaniak.com. Configuration variables applicable to the 'infomaniak' protocol are: @@ -7830,6 +7841,17 @@ Example ${program}.conf file entries: For more information about how to create a dynamic DNS, see https://faq.infomaniak.com/2357. +[*] Infomaniak DynDNS services (both IP discovery and update) can be used with the standard +'dyndns2' protocol. See . Notice that a minimum number of HTTP +redirections (usally 2) might be needed. + +Example ${program}.conf file entries: + protocol=dyndns2, \\ + use=web, web=infomaniak.com/ip.php/ \\ + login=my-username, \\ + password=my-password \\ + redirect=2 + my.address.com EoEXAMPLE }