summaryrefslogtreecommitdiff
path: root/packages/ddclient/patches/z2_dyndns2-ipv4-ipv6.patch
blob: f43fa8e79e42685500f0229bea16702ab8b2511f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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);