Browse Source

Merge branch 'stretch' of https://github.com/bashrc/freedombone

Bob Mottram 6 years ago
parent
commit
8dd130839e

+ 2
- 2
src/freedombone-app-akaunting View File

@@ -110,7 +110,7 @@ function install_interactive_akaunting {
110 110
         while [ ! $AKAUNTING_DETAILS_COMPLETE ]
111 111
         do
112 112
             data=$(mktemp 2>/dev/null)
113
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
113
+            if [[ $DDNS_PROVIDER == *"freedns"* ]]; then
114 114
                 dialog --backtitle $"Freedombone Configuration" \
115 115
                        --title $"Akaunting Configuration" \
116 116
                        --form $"\\nPlease enter your Akaunting details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \
@@ -142,7 +142,7 @@ function install_interactive_akaunting {
142 142
                     AKAUNTING_DOMAIN_NAME=
143 143
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
144 144
                 else
145
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
145
+                    if [[ $DDNS_PROVIDER == *"freedns"* ]]; then
146 146
                         AKAUNTING_CODE=$(sed -n 2p < "$data")
147 147
                         validate_freedns_code "$AKAUNTING_CODE"
148 148
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-gnusocial View File

@@ -112,7 +112,7 @@ function install_interactive_gnusocial {
112 112
         while [ ! $GNUSOCIAL_DETAILS_COMPLETE ]
113 113
         do
114 114
             data=$(mktemp 2>/dev/null)
115
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
115
+            if [[ $DDNS_PROVIDER == *"freedns"* ]]; then
116 116
                 dialog --backtitle $"Freedombone Configuration" \
117 117
                        --title $"GNU Social Configuration" \
118 118
                        --form $"\\nPlease enter your GNU Social details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \
@@ -156,7 +156,7 @@ function install_interactive_gnusocial {
156 156
                     GNUSOCIAL_DOMAIN_NAME=
157 157
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
158 158
                 else
159
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
159
+                    if [[ $DDNS_PROVIDER == *"freedns"* ]]; then
160 160
                         GNUSOCIAL_CODE=$(sed -n 4p < "$data")
161 161
                         validate_freedns_code "$GNUSOCIAL_CODE"
162 162
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-kanboard View File

@@ -91,7 +91,7 @@ function install_interactive_kanboard {
91 91
         while [ ! $KANBOARD_DETAILS_COMPLETE ]
92 92
         do
93 93
             data=$(mktemp 2>/dev/null)
94
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
94
+            if [[ $DDNS_PROVIDER == *"freedns"* ]]; then
95 95
                 dialog --backtitle $"Freedombone Configuration" \
96 96
                        --title $"KanBoard Configuration" \
97 97
                        --form $"\\nPlease enter your KanBoard details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt." 13 55 2 \
@@ -123,7 +123,7 @@ function install_interactive_kanboard {
123 123
                     KANBOARD_DOMAIN_NAME=
124 124
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
125 125
                 else
126
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
126
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
127 127
                         KANBOARD_CODE=$(sed -n 2p < "$data")
128 128
                         validate_freedns_code "$KANBOARD_CODE"
129 129
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-koel View File

@@ -90,7 +90,7 @@ function install_interactive_koel {
90 90
         while [ ! $KOEL_DETAILS_COMPLETE ]
91 91
         do
92 92
             data=$(mktemp 2>/dev/null)
93
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
93
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
94 94
                 dialog --backtitle $"Freedombone Configuration" \
95 95
                        --title $"Koel Configuration" \
96 96
                        --form $"\\nPlease enter your Koel details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 3 \
@@ -122,7 +122,7 @@ function install_interactive_koel {
122 122
                     KOEL_DOMAIN_NAME=
123 123
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
124 124
                 else
125
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
125
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
126 126
                         KOEL_CODE=$(sed -n 2p < "$data")
127 127
                         validate_freedns_code "$KOEL_CODE"
128 128
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-movim View File

@@ -79,7 +79,7 @@ function install_interactive_movim {
79 79
         while [ ! $MOVIM_DETAILS_COMPLETE ]
80 80
         do
81 81
             data=$(mktemp 2>/dev/null)
82
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
82
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
83 83
                 dialog --backtitle $"Freedombone Configuration" \
84 84
                        --title $"Movim Configuration" \
85 85
                        --form $"\\nPlease enter your Movim details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 12 65 2 \
@@ -106,7 +106,7 @@ function install_interactive_movim {
106 106
                     MOVIM_DOMAIN_NAME=
107 107
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
108 108
                 else
109
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
109
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
110 110
                         MOVIM_CODE=$(sed -n 2p < "$data")
111 111
                         validate_freedns_code "$MOVIM_CODE"
112 112
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-nextcloud View File

@@ -90,7 +90,7 @@ function install_interactive_nextcloud {
90 90
         while [ ! $NEXTCLOUD_DETAILS_COMPLETE ]
91 91
         do
92 92
             data=$(mktemp 2>/dev/null)
93
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
93
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
94 94
                 dialog --backtitle $"Freedombone Configuration" \
95 95
                        --title $"NextCloud Configuration" \
96 96
                        --form $"\\nPlease enter your NextCloud details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 13 65 3 \
@@ -119,7 +119,7 @@ function install_interactive_nextcloud {
119 119
                     NEXTCLOUD_DOMAIN_NAME=
120 120
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
121 121
                 else
122
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
122
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
123 123
                         NEXTCLOUD_CODE=$(sed -n 2p < "$data")
124 124
                         validate_freedns_code "$NEXTCLOUD_CODE"
125 125
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-pelican View File

@@ -380,7 +380,7 @@ function install_interactive_pelican {
380 380
         while [ ! $PELICAN_DETAILS_COMPLETE ]
381 381
         do
382 382
             data=$(mktemp 2>/dev/null)
383
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
383
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
384 384
                 dialog --backtitle $"Freedombone Configuration" \
385 385
                        --title $"Pelican Blog Configuration" \
386 386
                        --form $"\\nPlease enter your blog details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \
@@ -412,7 +412,7 @@ function install_interactive_pelican {
412 412
                     PELICAN_DOMAIN_NAME=
413 413
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
414 414
                 else
415
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
415
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
416 416
                         PELICAN_BLOG_CODE=$(sed -n 2p < "$data")
417 417
                         validate_freedns_code "$PELICAN_BLOG_CODE"
418 418
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-pleroma View File

@@ -335,7 +335,7 @@ function install_interactive_pleroma {
335 335
         while [ ! $PLEROMA_DETAILS_COMPLETE ]
336 336
         do
337 337
             data=$(mktemp 2>/dev/null)
338
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
338
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
339 339
                 dialog --backtitle $"Freedombone Configuration" \
340 340
                        --title $"Pleroma Configuration" \
341 341
                        --form $"\\nPlease enter your Pleroma details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \
@@ -379,7 +379,7 @@ function install_interactive_pleroma {
379 379
                     PLEROMA_DOMAIN_NAME=
380 380
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
381 381
                 else
382
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
382
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
383 383
                         PLEROMA_CODE=$(sed -n 4p < "$data")
384 384
                         validate_freedns_code "$PLEROMA_CODE"
385 385
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-postactiv View File

@@ -118,7 +118,7 @@ function install_interactive_postactiv {
118 118
         while [ ! $POSTACTIV_DETAILS_COMPLETE ]
119 119
         do
120 120
             data=$(mktemp 2>/dev/null)
121
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
121
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
122 122
                 dialog --backtitle $"Freedombone Configuration" \
123 123
                        --title $"PostActiv Configuration" \
124 124
                        --form $"\\nPlease enter your PostActiv details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \
@@ -162,7 +162,7 @@ function install_interactive_postactiv {
162 162
                     POSTACTIV_DOMAIN_NAME=
163 163
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
164 164
                 else
165
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
165
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
166 166
                         POSTACTIV_CODE=$(sed -n 4p < "$data")
167 167
                         validate_freedns_code "$POSTACTIV_CODE"
168 168
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-privatebin View File

@@ -89,7 +89,7 @@ function install_interactive_privatebin {
89 89
         while [ ! $PRIVATEBIN_DETAILS_COMPLETE ]
90 90
         do
91 91
             data=$(mktemp 2>/dev/null)
92
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
92
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
93 93
                 dialog --backtitle $"Freedombone Configuration" \
94 94
                        --title $"PrivateBin Configuration" \
95 95
                        --form $"\\nPlease enter your PrivateBin details. The background image URL can be left blank.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 65 2 \
@@ -121,7 +121,7 @@ function install_interactive_privatebin {
121 121
                     PRIVATEBIN_DOMAIN_NAME=
122 122
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
123 123
                 else
124
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
124
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
125 125
                         PRIVATEBIN_CODE=$(sed -n 2p < "$data")
126 126
                         validate_freedns_code "$PRIVATEBIN_CODE"
127 127
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-app-riot View File

@@ -76,7 +76,7 @@ function install_interactive_riot {
76 76
         while [ ! $RIOT_DETAILS_COMPLETE ]
77 77
         do
78 78
             data=$(mktemp 2>/dev/null)
79
-            if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
79
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
80 80
                 dialog --backtitle $"Freedombone Configuration" \
81 81
                        --title $"Riot Web user interface for Matrix" \
82 82
                        --form $"\\nPlease enter your details.\\n\\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 13 65 3 \
@@ -105,7 +105,7 @@ function install_interactive_riot {
105 105
                     RIOT_DOMAIN_NAME=
106 106
                     dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
107 107
                 else
108
-                    if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
108
+                    if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
109 109
                         RIOT_CODE=$(sed -n 2p < "$data")
110 110
                         validate_freedns_code "$RIOT_CODE"
111 111
                         if [ ! "$VALID_CODE" ]; then

+ 2
- 2
src/freedombone-config View File

@@ -184,7 +184,7 @@ function choose_social_instance_domain_name {
184 184
     while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ]
185 185
     do
186 186
         data=$(mktemp 2>/dev/null)
187
-        if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then
187
+        if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
188 188
             dialog --backtitle $"Freedombone Configuration" \
189 189
                    --title $"Instance domain" \
190 190
                    --form $"\\nEnter your instance domain name and its FreeDNS code:" 11 55 3 \
@@ -247,7 +247,7 @@ function choose_default_domain_name {
247 247
         while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ]
248 248
         do
249 249
             data=$(mktemp 2>/dev/null)
250
-            if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then
250
+            if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
251 251
                 dialog --backtitle $"Freedombone Configuration" \
252 252
                        --title $"Your main domain name on FreeDNS" \
253 253
                        --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 13 55 5 \

+ 26
- 26
src/freedombone-ddns View File

@@ -80,32 +80,32 @@ function dynamic_dns_setup {
80 80
     fi
81 81
 
82 82
     case $selection in
83
-        1) DDNS_PROVIDER="default@freedns.afraid.org";;
84
-        2) DDNS_PROVIDER="default@www.dyn.com";;
85
-        3) DDNS_PROVIDER="default@www.zoneedit.com";;
86
-        4) DDNS_PROVIDER="default@www.no-ip.com";;
87
-        5) DDNS_PROVIDER="default@www.easydns.com";;
88
-        6) DDNS_PROVIDER="default@www.dnsomatic.com";;
89
-        7) DDNS_PROVIDER="default@dns.he.net";;
90
-        8) DDNS_PROVIDER="default@www.tunnelbroker.net";;
91
-        9) DDNS_PROVIDER="default@www.sitelutions.com";;
92
-        10) DDNS_PROVIDER="default@www.dnsexit.com";;
93
-        11) DDNS_PROVIDER="default@www.changeip.com";;
94
-        12) DDNS_PROVIDER="default@www.zerigo.com";;
95
-        13) DDNS_PROVIDER="default@www.dhis.org";;
96
-        14) DDNS_PROVIDER="default@nsupdate.info";;
97
-        15) DDNS_PROVIDER="default@www.loopia.com";;
98
-        16) DDNS_PROVIDER="default@www.namecheap.com";;
99
-        17) DDNS_PROVIDER="default@www.ovh.com";;
100
-        18) DDNS_PROVIDER="default@www.dtdns.com";;
101
-        19) DDNS_PROVIDER="default@giradns.com";;
102
-        20) DDNS_PROVIDER="default@www.duiadns.net";;
103
-        21) DDNS_PROVIDER="default@ddnss.de";;
104
-        22) DDNS_PROVIDER="default@dynv6.com";;
105
-        23) DDNS_PROVIDER="default@ipv4.dynv6.com";;
106
-        24) DDNS_PROVIDER="default@spdyn.de";;
107
-        25) DDNS_PROVIDER="default@freemyip.com";;
108
-        26) DDNS_PROVIDER="default@www.cloudxns.net";;
83
+        1) DDNS_PROVIDER="freedns";;
84
+        2) DDNS_PROVIDER="dyn";;
85
+        3) DDNS_PROVIDER="zoneedit.com";;
86
+        4) DDNS_PROVIDER="no-ip.com";;
87
+        5) DDNS_PROVIDER="easydns.com";;
88
+        6) DDNS_PROVIDER="dnsomatic.com";;
89
+        7) DDNS_PROVIDER="dns.he.net";;
90
+        8) DDNS_PROVIDER="tunnelbroker.net";;
91
+        9) DDNS_PROVIDER="sitelutions.com";;
92
+        10) DDNS_PROVIDER="dnsexit.com";;
93
+        11) DDNS_PROVIDER="changeip.com";;
94
+        12) DDNS_PROVIDER="zerigo.com";;
95
+        13) DDNS_PROVIDER="dhis.org";;
96
+        14) DDNS_PROVIDER="nsupdate.info";;
97
+        15) DDNS_PROVIDER="loopia.com";;
98
+        16) DDNS_PROVIDER="namecheap.com";;
99
+        17) DDNS_PROVIDER="ovh.com";;
100
+        18) DDNS_PROVIDER="dtdns.com";;
101
+        19) DDNS_PROVIDER="giradns.com";;
102
+        20) DDNS_PROVIDER="duiadns.net";;
103
+        21) DDNS_PROVIDER="ddnss.de";;
104
+        22) DDNS_PROVIDER="dynv6.com";;
105
+        23) DDNS_PROVIDER="ipv4.dynv6.com";;
106
+        24) DDNS_PROVIDER="spdyn.de";;
107
+        25) DDNS_PROVIDER="freemyip.com";;
108
+        26) DDNS_PROVIDER="cloudxns.net";;
109 109
     esac
110 110
     save_configuration_values
111 111
 

+ 19
- 16
src/freedombone-image-customise View File

@@ -1661,6 +1661,7 @@ image_install_inadyn() {
1661 1661
         mkdir -p "$rootdir/root/build"
1662 1662
     fi
1663 1663
     chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev
1664
+    chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config
1664 1665
 
1665 1666
     if [ -d /repos/inadyn ]; then
1666 1667
         mkdir "$rootdir/root/build/inadyn"
@@ -1681,34 +1682,36 @@ image_install_inadyn() {
1681 1682
     cd "$rootdir/root/build/inadyn" || exit 24682464628
1682 1683
     { echo '#!/bin/bash';
1683 1684
       echo 'cd ~/build/inadyn';
1684
-      echo '#./autogen.sh';
1685
-      echo './configure';
1686
-      echo 'USE_OPENSSL=1 make';
1687
-      echo 'make install'; } > "$rootdir/root/build/build_inadyn.sh"
1685
+      echo './autogen.sh';
1686
+      echo './configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl';
1687
+      echo 'make -j5';
1688
+      echo 'make install-strip'; } > "$rootdir/root/build/build_inadyn.sh"
1688 1689
     chmod +x "$rootdir/root/build/build_inadyn.sh"
1689 1690
     chroot "$rootdir" /root/build/build_inadyn.sh
1690
-    if [ ! -f "$rootdir/usr/local/sbin/inadyn" ]; then
1691
+    if [ ! -f "$rootdir/usr/sbin/inadyn" ]; then
1691 1692
         echo 'Failed to build inadyn'
1692 1693
         exit 6209356
1693 1694
     fi
1694 1695
 
1695 1696
     # create a configuration file
1696
-    { echo 'background';
1697
-      echo 'verbose        1';
1698
-      echo 'period         300';
1699
-      echo 'startup-delay  60';
1700
-      echo 'cache-dir      /run/inadyn';
1701
-      echo 'logfile        /dev/null'; } > "$rootdir/etc/inadyn.conf"
1697
+    { echo 'period          = 300';
1698
+      echo ''; } > "$rootdir/etc/inadyn.conf"
1702 1699
     chmod 600 "$rootdir/etc/inadyn.conf"
1703 1700
 
1704 1701
     { echo '[Unit]';
1705
-      echo 'Description=inadyn (DynDNS updater)';
1706
-      echo 'After=network.target';
1702
+      echo 'Description=Internet Dynamic DNS Client';
1703
+      echo 'Documentation=man:inadyn';
1704
+      echo 'Documentation=man:inadyn.conf';
1705
+      echo 'Documentation=https://github.com/troglobit/inadyn';
1706
+      echo 'ConditionPathExists=/etc/inadyn.conf';
1707
+      echo 'After=network-online.target';
1708
+      echo 'Requires=network-online.target';
1707 1709
       echo '';
1708 1710
       echo '[Service]';
1709
-      echo 'ExecStart=/usr/local/sbin/inadyn --config /etc/inadyn.conf';
1710
-      echo 'Restart=always';
1711
-      echo 'Type=forking';
1711
+      echo 'Type=simple';
1712
+      echo "ExecStart=/usr/sbin/inadyn -C -n -s --loglevel=err --config ${INADYN_CONFIG_FILE}";
1713
+      echo 'Restart=on-failure';
1714
+      echo 'RestartSec=10';
1712 1715
       echo '';
1713 1716
       echo '[Install]';
1714 1717
       echo 'WantedBy=multi-user.target'; } > "$rootdir/etc/systemd/system/inadyn.service"

+ 1
- 0
src/freedombone-upgrade View File

@@ -95,6 +95,7 @@ if [ -d "$PROJECT_DIR" ]; then
95 95
         fi
96 96
 
97 97
         #rebuild_exim_with_socks
98
+        install_dynamicdns
98 99
         torrc_migrate
99 100
         nodejs_upgrade
100 101
         apt-get -yq -t stretch-backports install certbot

+ 82
- 62
src/freedombone-utils-dns View File

@@ -35,12 +35,13 @@ NAMESERVER5='85.25.251.254'
35 35
 NAMESERVER6='2.141.58.13'
36 36
 
37 37
 # parameters used when adding a new domain
38
-DDNS_PROVIDER="default@freedns.afraid.org"
38
+DDNS_PROVIDER="freedns"
39 39
 DDNS_USERNAME=
40 40
 DDNS_PASSWORD=
41 41
 
42
-INADYN_REPO="https://github.com/bashrc/inadyn"
43
-INADYN_COMMIT='fadbe17f520d337dfb8d69ee4bf1fcaa23fce0d6'
42
+INADYN_REPO="https://github.com/troglobit/inadyn"
43
+INADYN_COMMIT='3fe26d2235ddda9047cf33e8ed1453bcc3bbbf19'
44
+INADYN_CONFIG_FILE=/etc/inadyn.conf
44 45
 
45 46
 # web site used to obtain the external IP address of the system
46 47
 GET_IP_ADDRESS_URL="checkip.two-dns.de"
@@ -95,7 +96,7 @@ EXTERNAL_IP_SERVICES=( \
95 96
         'http://httpbin.org/ip')
96 97
 
97 98
 function update_inadyn_config {
98
-    if [ ! -f /etc/inadyn.conf ]; then
99
+    if [ ! -f "${INADYN_CONFIG_FILE}" ]; then
99 100
         return
100 101
     fi
101 102
 
@@ -103,43 +104,58 @@ function update_inadyn_config {
103 104
         return
104 105
     fi
105 106
 
106
-    if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then
107
-        # store any previous aliases
108
-        grep 'alias ' /etc/inadyn.conf > /tmp/inadyn_aliases
109
-
110
-        # remove entry for any previous ddns
111
-        sed -i '/system /,$d' /etc/inadyn.conf
112
-
113
-        # add the new provider
114
-        { echo '';
115
-          echo "system $DDNS_PROVIDER";
116
-          echo '  ssl';
117
-          echo "  checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf
118
-        if [ "$DDNS_USERNAME" ]; then
119
-            echo "  username $DDNS_USERNAME" >> /etc/inadyn.conf
120
-        fi
121
-        if [ "$DDNS_PASSWORD" ]; then
122
-            echo "  password $DDNS_PASSWORD" >> /etc/inadyn.conf
123
-        fi
107
+    if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then
108
+        if grep -q "{" "${INADYN_CONFIG_FILE}"; then
109
+            sed -i "s|provider .*|provider $DDNS_PROVIDER {|g" "${INADYN_CONFIG_FILE}"
110
+            sed -i "s|username .*|username       = $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}"
111
+            sed -i "s|password .*|password       = $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}"
112
+            sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}"
113
+        else
114
+            # Old inadyn config file format
115
+            # store any previous aliases
116
+            grep 'alias ' "${INADYN_CONFIG_FILE}" > /tmp/inadyn_aliases
117
+
118
+            # remove entry for any previous ddns
119
+            sed -i '/system /,$d' "${INADYN_CONFIG_FILE}"
120
+
121
+            # add the new provider
122
+            { echo '';
123
+              echo "system $DDNS_PROVIDER";
124
+              echo '  ssl';
125
+              echo "  checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}"
126
+            if [ "$DDNS_USERNAME" ]; then
127
+                echo "  username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}"
128
+            fi
129
+            if [ "$DDNS_PASSWORD" ]; then
130
+                echo "  password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}"
131
+            fi
124 132
 
125
-        if [ -f /tmp/inadyn_aliases ]; then
126
-            cat /tmp/inadyn_aliases >> /etc/inadyn.conf
127
-            rm /tmp/inadyn_aliases
133
+            if [ -f /tmp/inadyn_aliases ]; then
134
+                cat /tmp/inadyn_aliases >> "${INADYN_CONFIG_FILE}"
135
+                rm /tmp/inadyn_aliases
136
+            fi
128 137
         fi
129 138
     else
130
-        # change username/password for an existing provider
131
-        if [ "$DDNS_USERNAME" ]; then
132
-            if grep -q "  username " /etc/inadyn.conf; then
133
-                sed -i "s|  username .*|  username $DDNS_USERNAME|g" /etc/inadyn.conf
134
-            else
135
-                echo "  username $DDNS_USERNAME" >> /etc/inadyn.conf
139
+        if grep -q "{" "${INADYN_CONFIG_FILE}"; then
140
+            sed -i "s|username .*|username       = $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}"
141
+            sed -i "s|password .*|password       = $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}"
142
+            sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}"
143
+        else
144
+            # Old inadyn config file format
145
+            # change username/password for an existing provider
146
+            if [ "$DDNS_USERNAME" ]; then
147
+                if grep -q "  username " "${INADYN_CONFIG_FILE}"; then
148
+                    sed -i "s|  username .*|  username $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}"
149
+                else
150
+                    echo "  username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}"
151
+                fi
136 152
             fi
137
-        fi
138
-        if [ "$DDNS_PASSWORD" ]; then
139
-            if grep -q "  password " /etc/inadyn.conf; then
140
-                sed -i "s|  password .*|  password $DDNS_PASSWORD|g" /etc/inadyn.conf
141
-            else
142
-                echo "  password $DDNS_PASSWORD" >> /etc/inadyn.conf
153
+            if [ "$DDNS_PASSWORD" ]; then
154
+                if grep -q "  password " "${INADYN_CONFIG_FILE}"; then
155
+                    sed -i "s|  password .*|  password $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}"
156
+                else
157
+                    echo "  password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}"
158
+                fi
143 159
             fi
144 160
         fi
145 161
     fi
@@ -197,29 +213,30 @@ function add_ddns_domain {
197 213
     if [[ "$DDNS_PROVIDER" == 'none' ]]; then
198 214
         return
199 215
     fi
200
-    if [ ! -f /etc/inadyn.conf ]; then
201
-        echo $'Unable to find inadyn configuration file /etc/inadyn.conf'
216
+    if [ ! -f "${INADYN_CONFIG_FILE}" ]; then
217
+        echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"'
202 218
         exit 5745
203 219
     fi
204
-    if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then
205
-        { echo '';
206
-          echo "system $DDNS_PROVIDER";
207
-          echo '  ssl';
208
-          echo "  checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf
209
-        if [ $DDNS_USERNAME ]; then
210
-            echo "  username $DDNS_USERNAME" >> /etc/inadyn.conf
211
-        fi
212
-        if [ $DDNS_PASSWORD ]; then
213
-            echo "  password $DDNS_PASSWORD" >> /etc/inadyn.conf
214
-        fi
220
+    if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then
221
+        read_config_param DEFAULT_DOMAIN_NAME
222
+        { echo 'period          = 300';
223
+          echo '';
224
+          echo "provider $DDNS_PROVIDER {";
225
+          echo "    ssl            = true";
226
+          echo "    username       = $DDNS_USERNAME";
227
+          echo "    password       = $DDNS_PASSWORD";
228
+          echo "    hostname       = $DEFAULT_DOMAIN_NAME";
229
+          echo '}'; } > "${INADYN_CONFIG_FILE}"
215 230
     fi
216 231
 
217
-    if ! grep -q "$CURRENT_DDNS_DOMAIN" /etc/inadyn.conf; then
218
-        echo "  alias $CURRENT_DDNS_DOMAIN" >> /etc/inadyn.conf
232
+    if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then
233
+        DDNS_HOSTNAMES=$(grep 'hostname ' "${INADYN_CONFIG_FILE}"| awk -F '{' '{print $2}' | sed 's| }||g')
234
+        sed -i "s|hostname .*|hostname       = {${DDNS_HOSTNAMES}, ${CURRENT_DDNS_DOMAIN} }|g" "${INADYN_CONFIG_FILE}"
219 235
     fi
220
-    chmod 600 /etc/inadyn.conf
221
-    systemctl restart inadyn
236
+    chmod 600 "${INADYN_CONFIG_FILE}"
237
+
222 238
     systemctl daemon-reload
239
+    systemctl restart inadyn
223 240
 }
224 241
 
225 242
 function remove_ddns_domain {
@@ -234,16 +251,19 @@ function remove_ddns_domain {
234 251
     if [[ "$DDNS_PROVIDER" == 'none' ]]; then
235 252
         return
236 253
     fi
237
-    if [ ! -f /etc/inadyn.conf ]; then
238
-        echo $'Unable to find inadyn configuration file /etc/inadyn.conf'
254
+    if [ ! -f "${INADYN_CONFIG_FILE}" ]; then
255
+        echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"'
239 256
         exit 5745
240 257
     fi
241
-    if grep -q "$CURRENT_DDNS_DOMAIN" /etc/inadyn.conf; then
242
-        systemctl stop inadyn
243
-        sed -i "/alias $CURRENT_DDNS_DOMAIN/d" /etc/inadyn.conf
244
-        systemctl start inadyn
245
-        systemctl daemon-reload
246
-    fi
258
+    #if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then
259
+    #    systemctl stop inadyn
260
+    #    sed -i "s|, ${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}"
261
+    #    if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then
262
+    #        sed -i "s|${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}"
263
+    #    fi
264
+    #    systemctl daemon-reload
265
+    #    systemctl start inadyn
266
+    #fi
247 267
 }
248 268
 
249 269
 function configure_dns {

+ 4
- 4
src/freedombone-utils-interactive View File

@@ -126,7 +126,7 @@ function interactive_site_details {
126 126
     while [ ! $SITE_DETAILS_COMPLETE ]
127 127
     do
128 128
         data=$(mktemp 2>/dev/null)
129
-        if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
129
+        if [[ $DDNS_PROVIDER == "freedns" ]]; then
130 130
             dialog --backtitle "$SITE_BACKTITLE" \
131 131
                    --title "$SITE_CONFIG_TITLE" \
132 132
                    --form "$SITE_FORM_TEXT" 14 55 3 \
@@ -155,7 +155,7 @@ function interactive_site_details {
155 155
                 SITE_DOMAIN_NAME=
156 156
                 dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
157 157
             else
158
-                if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then
158
+                if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
159 159
                     SITE_CODE=$(sed -n 2p < "$data")
160 160
                     validate_freedns_code "$SITE_CODE"
161 161
                     if [ ! "$VALID_CODE" ]; then
@@ -193,7 +193,7 @@ function interactive_site_details_with_title {
193 193
     while [ ! $SITE_DETAILS_COMPLETE ]
194 194
     do
195 195
         data=$(mktemp 2>/dev/null)
196
-        if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
196
+        if [[ $DDNS_PROVIDER == *"freedns"* ]]; then
197 197
                 dialog --backtitle $"Freedombone Configuration" \
198 198
                        --title "$SITE_BACKTITLE" \
199 199
                        --form "$SITE_FORM_TEXT" 14 55 4 \
@@ -225,7 +225,7 @@ function interactive_site_details_with_title {
225 225
                 SITE_DOMAIN_NAME=
226 226
                 dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
227 227
             else
228
-                if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then
228
+                if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then
229 229
                     SITE_CODE=$(sed -n 3p < "$data")
230 230
                     validate_freedns_code "${SITE_CODE}"
231 231
                     if [ ! "$VALID_CODE" ]; then

+ 104
- 33
src/freedombone-utils-web View File

@@ -430,25 +430,92 @@ function install_web_server_access_control {
430 430
     fi
431 431
 }
432 432
 
433
+function upgrade_inadyn_config {
434
+    if [ ! -f "${INADYN_CONFIG_FILE}" ]; then
435
+        return
436
+    fi
437
+
438
+    if [ ! -f /usr/sbin/inadyn ]; then
439
+        return
440
+    fi
441
+
442
+    if grep -q "{" "${INADYN_CONFIG_FILE}"; then
443
+        return
444
+    fi
445
+
446
+    read_config_param DDNS_PROVIDER
447
+    read_config_param DDNS_USERNAME
448
+    read_config_param DDNS_PASSWORD
449
+    read_config_param DEFAULT_DOMAIN_NAME
450
+
451
+    grep "alias " "${INADYN_CONFIG_FILE}" | sed 's| alias ||g' > ~/.inadyn_existing_sites
452
+    DDNS_HOSTNAMES=
453
+    while read -r host; do
454
+        if [ "$DDNS_HOSTNAMES" ]; then
455
+            DDNS_HOSTNAMES="$DDNS_HOSTNAMES, $host"
456
+        else
457
+            DDNS_HOSTNAMES="$host"
458
+        fi
459
+    done <~/.inadyn_existing_sites
460
+
461
+    if [ ! "$DDNS_HOSTNAMES" ]; then
462
+        return
463
+    fi
464
+
465
+    if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then
466
+        DDNS_PROVIDER='freedns'
467
+        write_config_param DDNS_PROVIDER "$DDNS_PROVIDER"
468
+    fi
469
+
470
+    { echo 'period          = 300';
471
+      echo '';
472
+      echo "provider $DDNS_PROVIDER {";
473
+      echo "    ssl            = true";
474
+      echo "    username       = $DDNS_USERNAME";
475
+      echo "    password       = $DDNS_PASSWORD";
476
+      echo '    wildcard       = true';
477
+      echo "    hostname       = $DEFAULT_DOMAIN_NAME";
478
+      echo '}'; } > "${INADYN_CONFIG_FILE}"
479
+}
480
+
433 481
 function install_dynamicdns {
434 482
     if [[ $SYSTEM_TYPE == "mesh"* ]]; then
435 483
         return
436 484
     fi
485
+
437 486
     if [[ $ONION_ONLY != "no" ]]; then
438 487
         return
439 488
     fi
440 489
 
441
-    CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit")
442
-    if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then
443
-        return
490
+    if grep -q "INADYN_REPO" "$CONFIGURATION_FILE"; then
491
+        sed -i '/INADYN_REPO/d' "$CONFIGURATION_FILE"
492
+    fi
493
+    if grep -q "INADYN_COMMIT" "$CONFIGURATION_FILE"; then
494
+        sed -i '/INADYN_COMMIT/d' "$CONFIGURATION_FILE"
444 495
     fi
445 496
 
446
-    # update to the next commit
447
-    function_check set_repo_commit
448
-    set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO"
497
+    if [ -f /usr/local/sbin/inadyn ]; then
498
+        if grep -q "inadyn commit" "$COMPLETION_FILE"; then
499
+            sed -i '/inadyn commit/d' "$COMPLETION_FILE"
500
+        fi
501
+    else
502
+        CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit")
503
+        if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then
504
+            return
505
+        fi
506
+    fi
449 507
 
450
-    if [[ $(is_completed "${FUNCNAME[0]}") == "1" ]]; then
451
-        return
508
+    if [ -f /usr/local/sbin/inadyn ]; then
509
+        if [ -d "$INSTALL_DIR/inadyn" ]; then
510
+            rm -rf "$INSTALL_DIR/inadyn"
511
+        fi
512
+        if [ -d /repos/inadyn ]; then
513
+            rm -rf /repos/inadyn
514
+        fi
515
+    else
516
+        # update to the next commit
517
+        function_check set_repo_commit
518
+        set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO"
452 519
     fi
453 520
 
454 521
     # Here we compile from source because the current package
@@ -458,6 +525,8 @@ function install_dynamicdns {
458 525
     # https version 1.99.8
459 526
 
460 527
     apt-get -yq install build-essential curl libgnutls28-dev automake1.11
528
+    apt-get -yq install gnutls-dev libconfuse-dev pkg-config
529
+
461 530
     if [ ! -d "$INSTALL_DIR/inadyn" ]; then
462 531
         if [ -d /repos/inadyn ]; then
463 532
             mkdir "$INSTALL_DIR/inadyn"
@@ -477,49 +546,51 @@ function install_dynamicdns {
477 546
     git checkout "$INADYN_COMMIT" -b "$INADYN_COMMIT"
478 547
     set_completion_param "inadyn commit" "$INADYN_COMMIT"
479 548
 
480
-    #./autogen.sh
481
-    if ! ./configure; then
549
+    ./autogen.sh
550
+
551
+    if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then
482 552
         exit 74890
483 553
     fi
484
-    if ! USE_OPENSSL=1 make; then
554
+    if ! make -j5; then
485 555
         exit 74858
486 556
     fi
487
-    if ! make install; then
557
+    if ! make install-strip; then
488 558
         exit 3785
489 559
     fi
490 560
 
491
-    # create an unprivileged user
492
-    #chmod 600 /etc/shadow
493
-    #chmod 600 /etc/gshadow
494
-    #useradd -r -s /bin/false debian-inadyn
495
-    #chmod 0000 /etc/shadow
496
-    #chmod 0000 /etc/gshadow
497
-
498 561
     # create a configuration file
499
-    { echo 'background';
500
-      echo 'verbose        1';
501
-      echo 'period         300';
502
-      echo 'startup-delay  60';
503
-      echo 'cache-dir      /run/inadyn';
504
-      echo 'logfile        /dev/null'; } > /etc/inadyn.conf
505
-    chmod 600 /etc/inadyn.conf
562
+    if [ ! -f "${INADYN_CONFIG_FILE}" ]; then
563
+        { echo 'period          = 300';
564
+          echo ''; } > "${INADYN_CONFIG_FILE}"
565
+    fi
566
+    chmod 600 "${INADYN_CONFIG_FILE}"
506 567
 
507 568
     { echo '[Unit]';
508
-      echo 'Description=inadyn (DynDNS updater)';
509
-      echo 'After=network.target';
569
+      echo 'Description=Internet Dynamic DNS Client';
570
+      echo 'Documentation=man:inadyn';
571
+      echo 'Documentation=man:inadyn.conf';
572
+      echo 'Documentation=https://github.com/troglobit/inadyn';
573
+      echo 'ConditionPathExists=/etc/inadyn.conf';
574
+      echo 'After=network-online.target';
575
+      echo 'Requires=network-online.target';
510 576
       echo '';
511 577
       echo '[Service]';
512
-      echo 'ExecStart=/usr/local/sbin/inadyn --config /etc/inadyn.conf';
513
-      echo 'Restart=always';
514
-      echo 'Type=forking';
578
+      echo 'Type=simple';
579
+      echo "ExecStart=/usr/sbin/inadyn -C -n -s --loglevel=err --config ${INADYN_CONFIG_FILE}";
580
+      echo 'Restart=on-failure';
581
+      echo 'RestartSec=10';
515 582
       echo '';
516 583
       echo '[Install]';
517 584
       echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service
585
+    systemctl daemon-reload
518 586
     systemctl enable inadyn
519 587
     systemctl start inadyn
520
-    systemctl daemon-reload
521 588
 
522
-    mark_completed "${FUNCNAME[0]}"
589
+    # Remove old version of inadyn
590
+    if [ -f /usr/local/sbin/inadyn ]; then
591
+        rm /usr/local/sbin/inadyn
592
+        upgrade_inadyn_config
593
+    fi
523 594
 }
524 595
 
525 596
 function update_default_search_engine {