summaryrefslogtreecommitdiff
path: root/packages/ddclient/patches/z2_dyndns2-ipv4-ipv6.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ddclient/patches/z2_dyndns2-ipv4-ipv6.patch')
-rw-r--r--packages/ddclient/patches/z2_dyndns2-ipv4-ipv6.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/packages/ddclient/patches/z2_dyndns2-ipv4-ipv6.patch b/packages/ddclient/patches/z2_dyndns2-ipv4-ipv6.patch
new file mode 100644
index 00000000..f43fa8e7
--- /dev/null
+++ b/packages/ddclient/patches/z2_dyndns2-ipv4-ipv6.patch
@@ -0,0 +1,114 @@
+From fa6c95f5110455b6e1ad80d1147086619ddbf7df Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Thomas=20du=20Bo=C3=BFs?= <thomas@duboys.info>
+Date: Fri, 27 Jan 2023 17:58:26 +0100
+Subject: [PATCH 1/2] Update dyndns2 client to use new IPv4/IPv6 logic
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Thomas du Boÿs <thomas@duboys.info>
+
+Ref: ddclient/ddclient#502
+---
+ ddclient.in | 32 ++++++++++++++++++++++----------
+ 1 file changed, 22 insertions(+), 10 deletions(-)
+
+diff --git a/ddclient.in b/ddclient.in
+index eff10fb4..744d63ed 100755
+--- a/ddclient.in
++++ b/ddclient.in
+@@ -4069,10 +4069,13 @@ sub nic_dyndns2_update {
+ my @hosts = @{$groups{$sig}};
+ my $hosts = join(',', @hosts);
+ my $h = $hosts[0];
+- my $ip = $config{$h}{'wantip'};
+- delete $config{$_}{'wantip'} foreach @hosts;
++ my $ipv4 = $config{$h}{'wantipv4'};
++ my $ipv6 = $config{$h}{'wantipv6'};
++ delete $config{$_}{'wantipv4'} foreach @hosts;
++ delete $config{$_}{'wantipv6'} foreach @hosts;
+
+- info("setting IP address to %s for %s", $ip, $hosts);
++ info("setting IPv4 address to %s for %s", $ipv4, $hosts) if $ipv4;
++ info("setting IPv6 address to %s for %s", $ipv6, $hosts) if $ipv6;
+ verbose("UPDATE:", "updating %s", $hosts);
+
+ ## Select the DynDNS system to update
+@@ -4091,7 +4094,11 @@ sub nic_dyndns2_update {
+
+ $url .= "&hostname=$hosts";
+ $url .= "&myip=";
+- $url .= $ip if $ip;
++ $url .= $ipv4 if $ipv4;
++ if ($ipv6) {
++ $url .= "," if $ipv4;
++ $url .= $ipv6;
++ }
+
+ ## some args are not valid for a custom domain.
+ $url .= "&wildcard=ON" if ynu($config{$h}{'wildcard'}, 1, 0, 0);
+@@ -4114,7 +4121,6 @@ sub nic_dyndns2_update {
+
+ my @reply = split /\n/, $reply;
+ my $state = 'header';
+- my $returnedip = $ip;
+
+ foreach my $line (@reply) {
+ if ($state eq 'header') {
+@@ -4128,22 +4134,28 @@ sub nic_dyndns2_update {
+
+ # 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);
++ my ($status, $returnedips) = split / /, lc $line;
+ my $h = shift @hosts;
+
+ $config{$h}{'status'} = $status;
++ $config{$h}{'status-ipv4'} = $status if $ipv4;
++ $config{$h}{'status-ipv6'} = $status if $ipv6;
+ if ($status eq 'good') {
+- $config{$h}{'ip'} = $ip;
++ $config{$h}{'ipv4'} = $ipv4 if $ipv4;
++ $config{$h}{'ipv6'} = $ipv6 if $ipv6;
+ $config{$h}{'mtime'} = $now;
+- success("updating %s: %s: IP address set to %s", $h, $status, $ip);
++ success("updating %s: %s: IPv4 address set to %s", $h, $status, $ipv4) if $ipv4;
++ success("updating %s: %s: IPv6 address set to %s", $h, $status, $ipv6) if $ipv6;
+
+ } elsif (exists $errors{$status}) {
+ if ($status eq 'nochg') {
+ warning("updating %s: %s: %s", $h, $status, $errors{$status});
+- $config{$h}{'ip'} = $ip;
++ $config{$h}{'ipv4'} = $ipv4 if $ipv4;
++ $config{$h}{'ipv6'} = $ipv6 if $ipv6;
+ $config{$h}{'mtime'} = $now;
+ $config{$h}{'status'} = 'good';
++ $config{$h}{'status-ipv4'} = 'good' if $ipv4;
++ $config{$h}{'status-ipv6'} = 'good' if $ipv6;
+
+ } else {
+ failed("updating %s: %s: %s", $h, $status, $errors{$status});
+
+From cca4291360ce31aff1ab0d877d2622c11510c1f3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Thomas=20du=20Bo=C3=BFs?= <thomas@duboys.info>
+Date: Sat, 28 Jan 2023 10:46:43 +0100
+Subject: [PATCH 2/2] fix ipv4 address on message log when address already set
+
+---
+ ddclient.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ddclient.in b/ddclient.in
+index 744d63ed..a5e9c68c 100755
+--- a/ddclient.in
++++ b/ddclient.in
+@@ -3820,7 +3820,7 @@ sub nic_updateable {
+ success("%s: skipped: IP address was already set to %s.", $host, $ip);
+ }
+ if ($usev4 ne 'disabled') {
+- success("%s: skipped: IPv4 address was already set to %s.", $host, $ipv6);
++ success("%s: skipped: IPv4 address was already set to %s.", $host, $ipv4);
+ }
+ if ($usev6 ne 'disabled') {
+ success("%s: skipped: IPv6 address was already set to %s.", $host, $ipv6);