Quellcode durchsuchen

Separate command to change dynamic dns settings

Bob Mottram vor 6 Jahren
Ursprung
Commit
97b25053bf
3 geänderte Dateien mit 207 neuen und 159 gelöschten Zeilen
  1. 1
    154
      src/freedombone-config
  2. 7
    5
      src/freedombone-controlpanel
  3. 199
    0
      src/freedombone-ddns

+ 1
- 154
src/freedombone-config Datei anzeigen

@@ -320,159 +320,6 @@ function choose_default_domain_name {
320 320
     save_configuration_values
321 321
 }
322 322
 
323
-function dynamic_dns_setup {
324
-    W=(1 freedns.afraid.org
325
-       2 dyn.com
326
-       3 zoneedit.com
327
-       4 no-ip.com
328
-       5 easydns.com
329
-       6 dnsomatic.com
330
-       7 dns.he.net
331
-       8 tunnelbroker.net
332
-       9 sitelutions.com
333
-       10 dnsexit.com
334
-       11 changeip.com
335
-       12 zerigo.com
336
-       13 dhis.org
337
-       14 nsupdate.info
338
-       15 loopia.com
339
-       16 namecheap.com
340
-       17 ovh.com
341
-       18 dtdns.com
342
-       19 giradns.com
343
-       20 duiadns.net
344
-       21 ddnss.de
345
-       22 dynv6.com
346
-       23 ipv4.dynv6.com
347
-       24 spdyn.de
348
-       25 freemyip.com
349
-       26 cloudxns.net)
350
-
351
-    # shellcheck disable=SC2068
352
-    selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3)
353
-
354
-    if [ ! "$selection" ]; then
355
-        if [ -f /etc/systemd/system/inadyn.service ]; then
356
-            systemctl stop inadyn
357
-            systemctl disable inadyn
358
-        fi
359
-        return
360
-    fi
361
-
362
-    case $selection in
363
-        1) DDNS_PROVIDER="default@freedns.afraid.org";;
364
-        2) DDNS_PROVIDER="default@www.dyn.com";;
365
-        3) DDNS_PROVIDER="default@www.zoneedit.com";;
366
-        4) DDNS_PROVIDER="default@www.no-ip.com";;
367
-        5) DDNS_PROVIDER="default@www.easydns.com";;
368
-        6) DDNS_PROVIDER="default@www.dnsomatic.com";;
369
-        7) DDNS_PROVIDER="default@dns.he.net";;
370
-        8) DDNS_PROVIDER="default@www.tunnelbroker.net";;
371
-        9) DDNS_PROVIDER="default@www.sitelutions.com";;
372
-        10) DDNS_PROVIDER="default@www.dnsexit.com";;
373
-        11) DDNS_PROVIDER="default@www.changeip.com";;
374
-        12) DDNS_PROVIDER="default@www.zerigo.com";;
375
-        13) DDNS_PROVIDER="default@www.dhis.org";;
376
-        14) DDNS_PROVIDER="default@nsupdate.info";;
377
-        15) DDNS_PROVIDER="default@www.loopia.com";;
378
-        16) DDNS_PROVIDER="default@www.namecheap.com";;
379
-        17) DDNS_PROVIDER="default@www.ovh.com";;
380
-        18) DDNS_PROVIDER="default@www.dtdns.com";;
381
-        19) DDNS_PROVIDER="default@giradns.com";;
382
-        20) DDNS_PROVIDER="default@www.duiadns.net";;
383
-        21) DDNS_PROVIDER="default@ddnss.de";;
384
-        22) DDNS_PROVIDER="default@dynv6.com";;
385
-        23) DDNS_PROVIDER="default@ipv4.dynv6.com";;
386
-        24) DDNS_PROVIDER="default@spdyn.de";;
387
-        25) DDNS_PROVIDER="default@freemyip.com";;
388
-        26) DDNS_PROVIDER="default@www.cloudxns.net";;
389
-    esac
390
-    save_configuration_values
391
-
392
-    valid_ddns_username=
393
-    valid_ddns_password=
394
-    if [[ "$DDNS_PROVIDER" == "none" ]]; then
395
-        if [ -f /etc/systemd/system/inadyn.service ]; then
396
-            systemctl stop inadyn
397
-            systemctl disable inadyn
398
-        fi
399
-    else
400
-        while [ ! $valid_ddns_username ]
401
-        do
402
-            data=$(mktemp 2>/dev/null)
403
-            dialog --backtitle $"Freedombone Configuration" \
404
-                   --inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> "$data"
405
-            sel=$?
406
-            case $sel in
407
-                0)  possible_username=$(cat "$data")
408
-                    if [ "$possible_username" ]; then
409
-                        if [ ${#possible_username} -gt 1 ]; then
410
-                            valid_ddns_username=$(cat "$data")
411
-                            # shellcheck disable=SC2034
412
-                            DDNS_USERNAME="$valid_ddns_username"
413
-                            rm -f "$data"
414
-                            break;
415
-                        fi
416
-                    fi
417
-                    ;;
418
-                1) rm -f "$data"
419
-                   exit 1;;
420
-                255) rm -f "$data"
421
-                     exit 1;;
422
-            esac
423
-            rm -f "$data"
424
-        done
425
-        save_configuration_values
426
-
427
-        while [ ! $valid_ddns_password ]
428
-        do
429
-            data=$(mktemp 2>/dev/null)
430
-            dialog --backtitle $"Freedombone Configuration" \
431
-                   --clear \
432
-                   --insecure \
433
-                   --passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> "$data"
434
-            sel=$?
435
-            case $sel in
436
-                0)  possible_password=$(cat "$data")
437
-                    if [ "$possible_password" ]; then
438
-                        if [ ${#possible_password} -gt 1 ]; then
439
-                            valid_ddns_password=$(cat "$data")
440
-                            DDNS_PASSWORD=$valid_ddns_password
441
-                            break;
442
-                        fi
443
-                    fi
444
-                    ;;
445
-                1) rm -f "$data"
446
-                   exit 1;;
447
-                255) rm -f "$data"
448
-                     exit 1;;
449
-            esac
450
-            rm -f "$data"
451
-            if [ ${#DDNS_PASSWORD} -lt "$MINIMUM_PASSWORD_LENGTH" ]; then
452
-                dialog --title $"Password quality check" --msgbox $"The password given was too short. It must be at least $MINIMUM_PASSWORD_LENGTH characters. You may need to change your password on the dynamic DNS provider's web site." 10 40
453
-                DDNS_PASSWORD=""
454
-            fi
455
-        done
456
-        save_configuration_values
457
-    fi
458
-}
459
-
460
-function choose_dynamic_dns {
461
-    DDNS_PROVIDER="none"
462
-
463
-    if [[ "$SYSTEM_TYPE" != "mesh"* && "$ONION_ONLY" == "no" ]]; then
464
-        dialog --title $"Dynamic DNS" \
465
-               --backtitle $"Freedombone Configuration" \
466
-               --yesno $"\\nConfigure a dynamic DNS service?\\n\\nIf it is already handled by your internet router then select 'no'." 10 50
467
-        sel=$?
468
-        case $sel in
469
-            0) dynamic_dns_setup;;
470
-            255) exit 1;;
471
-        esac
472
-    fi
473
-    save_configuration_values
474
-}
475
-
476 323
 function choose_debian_repo {
477 324
     if [[ "$MINIMAL_INSTALL" == "no" ]]; then
478 325
 
@@ -1100,7 +947,7 @@ function interactive_config {
1100 947
     choose_rng
1101 948
     choose_debian_repo
1102 949
     "${PROJECT_NAME}-wifi" --networksinteractive "$WIFI_NETWORKS_FILE"
1103
-    choose_dynamic_dns
950
+    "${PROJECT_NAME}-ddns"
1104 951
     choose_default_domain_name
1105 952
     choose_email_address
1106 953
     interactive_key_recovery

+ 7
- 5
src/freedombone-controlpanel Datei anzeigen

@@ -1981,11 +1981,12 @@ function menu_top_level {
1981 1981
            13 $"Add Clacks"
1982 1982
            14 $"Check for updates"
1983 1983
            15 $"Performance Benchmarks"
1984
-           16 $"Power off the system"
1985
-           17 $"Restart the system")
1984
+           16 $"Change Dynamic DNS settings"
1985
+           17 $"Power off the system"
1986
+           18 $"Restart the system")
1986 1987
 
1987 1988
         # shellcheck disable=SC2068
1988
-        selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Administrator Control Panel" --menu $"Choose an operation, or ESC to exit:" 24 60 24 "${W[@]}" 3>&2 2>&1 1>&3)
1989
+        selection=$(dialog --backtitle $"Freedombone Administrator Control Panel" --title $"Administrator Control Panel" --menu $"Choose an operation, or ESC to exit:" 25 60 25 "${W[@]}" 3>&2 2>&1 1>&3)
1989 1990
 
1990 1991
         if [ ! "$selection" ]; then
1991 1992
             break
@@ -2012,8 +2013,9 @@ function menu_top_level {
2012 2013
             13) add_clacks;;
2013 2014
             14) check_for_updates;;
2014 2015
             15) performance_benchmarks;;
2015
-            16) shut_down_system;;
2016
-            17) restart_system;;
2016
+            16) "${PROJECT_NAME}-ddns";;
2017
+            17) shut_down_system;;
2018
+            18) restart_system;;
2017 2019
         esac
2018 2020
     done
2019 2021
 }

+ 199
- 0
src/freedombone-ddns Datei anzeigen

@@ -0,0 +1,199 @@
1
+#!/bin/bash
2
+#  _____               _           _
3
+# |   __|___ ___ ___ _| |___ _____| |_ ___ ___ ___
4
+# |   __|  _| -_| -_| . | . |     | . | . |   | -_|
5
+# |__|  |_| |___|___|___|___|_|_|_|___|___|_|_|___|
6
+#
7
+#                              Freedom in the Cloud
8
+#
9
+# Change dynamic dns settings
10
+#
11
+# License
12
+# =======
13
+#
14
+# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
15
+#
16
+# This program is free software: you can redistribute it and/or modify
17
+# it under the terms of the GNU Affero General Public License as published by
18
+# the Free Software Foundation, either version 3 of the License, or
19
+# (at your option) any later version.
20
+#
21
+# This program is distributed in the hope that it will be useful,
22
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
23
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
+# GNU Affero General Public License for more details.
25
+#
26
+# You should have received a copy of the GNU Affero General Public License
27
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
28
+
29
+PROJECT_NAME='freedombone'
30
+
31
+export TEXTDOMAIN=${PROJECT_NAME}-ddns
32
+export TEXTDOMAINDIR="/usr/share/locale"
33
+
34
+source "$PROJECT_INSTALL_DIR/${PROJECT_NAME}-vars"
35
+source "/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-config"
36
+
37
+function dynamic_dns_setup {
38
+    DDNS_PROVIDER='none'
39
+
40
+    W=(1 freedns.afraid.org
41
+       2 dyn.com
42
+       3 zoneedit.com
43
+       4 no-ip.com
44
+       5 easydns.com
45
+       6 dnsomatic.com
46
+       7 dns.he.net
47
+       8 tunnelbroker.net
48
+       9 sitelutions.com
49
+       10 dnsexit.com
50
+       11 changeip.com
51
+       12 zerigo.com
52
+       13 dhis.org
53
+       14 nsupdate.info
54
+       15 loopia.com
55
+       16 namecheap.com
56
+       17 ovh.com
57
+       18 dtdns.com
58
+       19 giradns.com
59
+       20 duiadns.net
60
+       21 ddnss.de
61
+       22 dynv6.com
62
+       23 ipv4.dynv6.com
63
+       24 spdyn.de
64
+       25 freemyip.com
65
+       26 cloudxns.net)
66
+
67
+    # shellcheck disable=SC2068
68
+    selection=$(dialog --backtitle $"Freedombone Configuration" --title $"Dynamic DNS" --menu $"Choose Dynamic DNS provider, or ESC for none:" 24 60 32 "${W[@]}" 3>&2 2>&1 1>&3)
69
+
70
+    if [ ! "$selection" ]; then
71
+        if [ -f /etc/systemd/system/inadyn.service ]; then
72
+            systemctl stop inadyn
73
+            systemctl disable inadyn
74
+        fi
75
+        return
76
+    fi
77
+
78
+    case $selection in
79
+        1) DDNS_PROVIDER="default@freedns.afraid.org";;
80
+        2) DDNS_PROVIDER="default@www.dyn.com";;
81
+        3) DDNS_PROVIDER="default@www.zoneedit.com";;
82
+        4) DDNS_PROVIDER="default@www.no-ip.com";;
83
+        5) DDNS_PROVIDER="default@www.easydns.com";;
84
+        6) DDNS_PROVIDER="default@www.dnsomatic.com";;
85
+        7) DDNS_PROVIDER="default@dns.he.net";;
86
+        8) DDNS_PROVIDER="default@www.tunnelbroker.net";;
87
+        9) DDNS_PROVIDER="default@www.sitelutions.com";;
88
+        10) DDNS_PROVIDER="default@www.dnsexit.com";;
89
+        11) DDNS_PROVIDER="default@www.changeip.com";;
90
+        12) DDNS_PROVIDER="default@www.zerigo.com";;
91
+        13) DDNS_PROVIDER="default@www.dhis.org";;
92
+        14) DDNS_PROVIDER="default@nsupdate.info";;
93
+        15) DDNS_PROVIDER="default@www.loopia.com";;
94
+        16) DDNS_PROVIDER="default@www.namecheap.com";;
95
+        17) DDNS_PROVIDER="default@www.ovh.com";;
96
+        18) DDNS_PROVIDER="default@www.dtdns.com";;
97
+        19) DDNS_PROVIDER="default@giradns.com";;
98
+        20) DDNS_PROVIDER="default@www.duiadns.net";;
99
+        21) DDNS_PROVIDER="default@ddnss.de";;
100
+        22) DDNS_PROVIDER="default@dynv6.com";;
101
+        23) DDNS_PROVIDER="default@ipv4.dynv6.com";;
102
+        24) DDNS_PROVIDER="default@spdyn.de";;
103
+        25) DDNS_PROVIDER="default@freemyip.com";;
104
+        26) DDNS_PROVIDER="default@www.cloudxns.net";;
105
+    esac
106
+    save_configuration_values
107
+
108
+    valid_ddns_username=
109
+    valid_ddns_password=
110
+    if [[ "$DDNS_PROVIDER" == "none" ]]; then
111
+        if [ -f /etc/systemd/system/inadyn.service ]; then
112
+            systemctl stop inadyn
113
+            systemctl disable inadyn
114
+        fi
115
+    else
116
+        while [ ! $valid_ddns_username ]
117
+        do
118
+            data=$(mktemp 2>/dev/null)
119
+            dialog --backtitle $"Freedombone Configuration" \
120
+                   --inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> "$data"
121
+            sel=$?
122
+            case $sel in
123
+                0)  possible_username=$(cat "$data")
124
+                    if [ "$possible_username" ]; then
125
+                        if [ ${#possible_username} -gt 1 ]; then
126
+                            valid_ddns_username=$(cat "$data")
127
+                            # shellcheck disable=SC2034
128
+                            DDNS_USERNAME="$valid_ddns_username"
129
+                            rm -f "$data"
130
+                            break;
131
+                        fi
132
+                    fi
133
+                    ;;
134
+                1) rm -f "$data"
135
+                   exit 1;;
136
+                255) rm -f "$data"
137
+                     exit 1;;
138
+            esac
139
+            rm -f "$data"
140
+        done
141
+        save_configuration_values
142
+
143
+        while [ ! $valid_ddns_password ]
144
+        do
145
+            data=$(mktemp 2>/dev/null)
146
+            dialog --backtitle $"Freedombone Configuration" \
147
+                   --clear \
148
+                   --insecure \
149
+                   --passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> "$data"
150
+            sel=$?
151
+            case $sel in
152
+                0)  possible_password=$(cat "$data")
153
+                    if [ "$possible_password" ]; then
154
+                        if [ ${#possible_password} -gt 1 ]; then
155
+                            valid_ddns_password=$(cat "$data")
156
+                            DDNS_PASSWORD=$valid_ddns_password
157
+                            break;
158
+                        fi
159
+                    fi
160
+                    ;;
161
+                1) rm -f "$data"
162
+                   exit 1;;
163
+                255) rm -f "$data"
164
+                     exit 1;;
165
+            esac
166
+            rm -f "$data"
167
+            if [ ${#DDNS_PASSWORD} -lt "$MINIMUM_PASSWORD_LENGTH" ]; then
168
+                dialog --title $"Password quality check" --msgbox $"The password given was too short. It must be at least $MINIMUM_PASSWORD_LENGTH characters. You may need to change your password on the dynamic DNS provider's web site." 10 40
169
+                DDNS_PASSWORD=""
170
+            fi
171
+        done
172
+        save_configuration_values
173
+    fi
174
+}
175
+
176
+function choose_dynamic_dns {
177
+    DDNS_PROVIDER="none"
178
+
179
+    if [[ "$SYSTEM_TYPE" != "mesh"* && "$ONION_ONLY" == "no" ]]; then
180
+        dialog --title $"Dynamic DNS" \
181
+               --backtitle $"Freedombone Configuration" \
182
+               --yesno $"\\nConfigure a dynamic DNS service?\\n\\nIf it is already handled by your internet router then select 'no'." 10 50
183
+        sel=$?
184
+        case $sel in
185
+            0) dynamic_dns_setup;;
186
+            255) exit 1;;
187
+        esac
188
+    fi
189
+    save_configuration_values
190
+}
191
+
192
+if [ ! "$CONFIGURATION_FILE" ]; then
193
+    CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
194
+fi
195
+
196
+read_configuration_values
197
+choose_dynamic_dns
198
+
199
+exit 0