From a3e6ce965ca1d7d887334a5c288777b2e6f9c9f5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 13:30:47 +0100 Subject: [PATCH 01/25] inadyn confile file variable --- src/freedombone-utils-dns | 55 ++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 51bd882f..547c35b7 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -41,6 +41,7 @@ DDNS_PASSWORD= INADYN_REPO="https://github.com/bashrc/inadyn" INADYN_COMMIT='fadbe17f520d337dfb8d69ee4bf1fcaa23fce0d6' +INADYN_CONFIG_FILE=/etc/inadyn.conf # web site used to obtain the external IP address of the system GET_IP_ADDRESS_URL="checkip.two-dns.de" @@ -95,7 +96,7 @@ EXTERNAL_IP_SERVICES=( \ 'http://httpbin.org/ip') function update_inadyn_config { - if [ ! -f /etc/inadyn.conf ]; then + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then return fi @@ -103,43 +104,43 @@ function update_inadyn_config { return fi - if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then # store any previous aliases - grep 'alias ' /etc/inadyn.conf > /tmp/inadyn_aliases + grep 'alias ' "${INADYN_CONFIG_FILE}" > /tmp/inadyn_aliases # remove entry for any previous ddns - sed -i '/system /,$d' /etc/inadyn.conf + sed -i '/system /,$d' "${INADYN_CONFIG_FILE}" # add the new provider { echo ''; echo "system $DDNS_PROVIDER"; echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" if [ "$DDNS_USERNAME" ]; then - echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi if [ "$DDNS_PASSWORD" ]; then - echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi if [ -f /tmp/inadyn_aliases ]; then - cat /tmp/inadyn_aliases >> /etc/inadyn.conf + cat /tmp/inadyn_aliases >> "${INADYN_CONFIG_FILE}" rm /tmp/inadyn_aliases fi else # change username/password for an existing provider if [ "$DDNS_USERNAME" ]; then - if grep -q " username " /etc/inadyn.conf; then - sed -i "s| username .*| username $DDNS_USERNAME|g" /etc/inadyn.conf + if grep -q " username " "${INADYN_CONFIG_FILE}"; then + sed -i "s| username .*| username $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" else - echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi fi if [ "$DDNS_PASSWORD" ]; then - if grep -q " password " /etc/inadyn.conf; then - sed -i "s| password .*| password $DDNS_PASSWORD|g" /etc/inadyn.conf + if grep -q " password " "${INADYN_CONFIG_FILE}"; then + sed -i "s| password .*| password $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" else - echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi fi fi @@ -197,27 +198,27 @@ function add_ddns_domain { if [[ "$DDNS_PROVIDER" == 'none' ]]; then return fi - if [ ! -f /etc/inadyn.conf ]; then - echo $'Unable to find inadyn configuration file /etc/inadyn.conf' + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"' exit 5745 fi - if ! grep -q "$DDNS_PROVIDER" /etc/inadyn.conf; then + if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then { echo ''; echo "system $DDNS_PROVIDER"; echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> /etc/inadyn.conf + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" if [ $DDNS_USERNAME ]; then - echo " username $DDNS_USERNAME" >> /etc/inadyn.conf + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi if [ $DDNS_PASSWORD ]; then - echo " password $DDNS_PASSWORD" >> /etc/inadyn.conf + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi fi - if ! grep -q "$CURRENT_DDNS_DOMAIN" /etc/inadyn.conf; then - echo " alias $CURRENT_DDNS_DOMAIN" >> /etc/inadyn.conf + if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + echo " alias $CURRENT_DDNS_DOMAIN" >> "${INADYN_CONFIG_FILE}" fi - chmod 600 /etc/inadyn.conf + chmod 600 "${INADYN_CONFIG_FILE}" systemctl restart inadyn systemctl daemon-reload } @@ -234,13 +235,13 @@ function remove_ddns_domain { if [[ "$DDNS_PROVIDER" == 'none' ]]; then return fi - if [ ! -f /etc/inadyn.conf ]; then - echo $'Unable to find inadyn configuration file /etc/inadyn.conf' + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"' exit 5745 fi - if grep -q "$CURRENT_DDNS_DOMAIN" /etc/inadyn.conf; then + if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then systemctl stop inadyn - sed -i "/alias $CURRENT_DDNS_DOMAIN/d" /etc/inadyn.conf + sed -i "/alias $CURRENT_DDNS_DOMAIN/d" "${INADYN_CONFIG_FILE}" systemctl start inadyn systemctl daemon-reload fi From ff0ba8b8066c6339e2a06fcd1b4a63a301c6d3c4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:48:20 +0100 Subject: [PATCH 02/25] Move to upgraded version of inadyn --- src/freedombone-app-akaunting | 4 +- src/freedombone-app-gnusocial | 4 +- src/freedombone-app-kanboard | 4 +- src/freedombone-app-koel | 4 +- src/freedombone-app-movim | 4 +- src/freedombone-app-nextcloud | 4 +- src/freedombone-app-pelican | 4 +- src/freedombone-app-pleroma | 4 +- src/freedombone-app-postactiv | 4 +- src/freedombone-app-privatebin | 4 +- src/freedombone-app-riot | 4 +- src/freedombone-config | 4 +- src/freedombone-ddns | 52 ++++++------- src/freedombone-utils-dns | 119 ++++++++++++++++++------------ src/freedombone-utils-interactive | 8 +- src/freedombone-utils-web | 71 ++++++++++++++---- 16 files changed, 181 insertions(+), 117 deletions(-) diff --git a/src/freedombone-app-akaunting b/src/freedombone-app-akaunting index 8d00a591..9963023c 100755 --- a/src/freedombone-app-akaunting +++ b/src/freedombone-app-akaunting @@ -110,7 +110,7 @@ function install_interactive_akaunting { while [ ! $AKAUNTING_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Akaunting Configuration" \ --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 { AKAUNTING_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then AKAUNTING_CODE=$(sed -n 2p < "$data") validate_freedns_code "$AKAUNTING_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial index 640e5343..c6071544 100755 --- a/src/freedombone-app-gnusocial +++ b/src/freedombone-app-gnusocial @@ -112,7 +112,7 @@ function install_interactive_gnusocial { while [ ! $GNUSOCIAL_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"GNU Social Configuration" \ --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 { GNUSOCIAL_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then GNUSOCIAL_CODE=$(sed -n 4p < "$data") validate_freedns_code "$GNUSOCIAL_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-kanboard b/src/freedombone-app-kanboard index 64dbe3ac..3f726626 100755 --- a/src/freedombone-app-kanboard +++ b/src/freedombone-app-kanboard @@ -91,7 +91,7 @@ function install_interactive_kanboard { while [ ! $KANBOARD_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"KanBoard Configuration" \ --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 { KANBOARD_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then KANBOARD_CODE=$(sed -n 2p < "$data") validate_freedns_code "$KANBOARD_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-koel b/src/freedombone-app-koel index fafd6ea4..4f9bd585 100755 --- a/src/freedombone-app-koel +++ b/src/freedombone-app-koel @@ -90,7 +90,7 @@ function install_interactive_koel { while [ ! $KOEL_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Koel Configuration" \ --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 { KOEL_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then KOEL_CODE=$(sed -n 2p < "$data") validate_freedns_code "$KOEL_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-movim b/src/freedombone-app-movim index f4cd0bc7..5a3e1fe8 100755 --- a/src/freedombone-app-movim +++ b/src/freedombone-app-movim @@ -79,7 +79,7 @@ function install_interactive_movim { while [ ! $MOVIM_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Movim Configuration" \ --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 { MOVIM_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then MOVIM_CODE=$(sed -n 2p < "$data") validate_freedns_code "$MOVIM_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-nextcloud b/src/freedombone-app-nextcloud index c8930a23..85845e06 100755 --- a/src/freedombone-app-nextcloud +++ b/src/freedombone-app-nextcloud @@ -90,7 +90,7 @@ function install_interactive_nextcloud { while [ ! $NEXTCLOUD_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"NextCloud Configuration" \ --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 { NEXTCLOUD_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then NEXTCLOUD_CODE=$(sed -n 2p < "$data") validate_freedns_code "$NEXTCLOUD_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-pelican b/src/freedombone-app-pelican index 262ce240..e655e495 100755 --- a/src/freedombone-app-pelican +++ b/src/freedombone-app-pelican @@ -380,7 +380,7 @@ function install_interactive_pelican { while [ ! $PELICAN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Pelican Blog Configuration" \ --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 { PELICAN_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then PELICAN_BLOG_CODE=$(sed -n 2p < "$data") validate_freedns_code "$PELICAN_BLOG_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index ce51922d..86b72a3b 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -335,7 +335,7 @@ function install_interactive_pleroma { while [ ! $PLEROMA_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Pleroma Configuration" \ --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 { PLEROMA_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then PLEROMA_CODE=$(sed -n 4p < "$data") validate_freedns_code "$PLEROMA_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv index 1af2c2af..d81c1f2b 100755 --- a/src/freedombone-app-postactiv +++ b/src/freedombone-app-postactiv @@ -118,7 +118,7 @@ function install_interactive_postactiv { while [ ! $POSTACTIV_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"PostActiv Configuration" \ --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 { POSTACTIV_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then POSTACTIV_CODE=$(sed -n 4p < "$data") validate_freedns_code "$POSTACTIV_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-privatebin b/src/freedombone-app-privatebin index 7450b43c..651542d3 100755 --- a/src/freedombone-app-privatebin +++ b/src/freedombone-app-privatebin @@ -89,7 +89,7 @@ function install_interactive_privatebin { while [ ! $PRIVATEBIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"PrivateBin Configuration" \ --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 { PRIVATEBIN_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then PRIVATEBIN_CODE=$(sed -n 2p < "$data") validate_freedns_code "$PRIVATEBIN_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-app-riot b/src/freedombone-app-riot index 4337430d..015e1156 100755 --- a/src/freedombone-app-riot +++ b/src/freedombone-app-riot @@ -76,7 +76,7 @@ function install_interactive_riot { while [ ! $RIOT_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Riot Web user interface for Matrix" \ --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 { RIOT_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then RIOT_CODE=$(sed -n 2p < "$data") validate_freedns_code "$RIOT_CODE" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-config b/src/freedombone-config index 445aace3..e991bdd7 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -184,7 +184,7 @@ function choose_social_instance_domain_name { while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Instance domain" \ --form $"\\nEnter your instance domain name and its FreeDNS code:" 11 55 3 \ @@ -247,7 +247,7 @@ function choose_default_domain_name { while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title $"Your main domain name on FreeDNS" \ --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 13 55 5 \ diff --git a/src/freedombone-ddns b/src/freedombone-ddns index 0cd6d9f6..89bc26f0 100755 --- a/src/freedombone-ddns +++ b/src/freedombone-ddns @@ -80,32 +80,32 @@ function dynamic_dns_setup { fi case $selection in - 1) DDNS_PROVIDER="default@freedns.afraid.org";; - 2) DDNS_PROVIDER="default@www.dyn.com";; - 3) DDNS_PROVIDER="default@www.zoneedit.com";; - 4) DDNS_PROVIDER="default@www.no-ip.com";; - 5) DDNS_PROVIDER="default@www.easydns.com";; - 6) DDNS_PROVIDER="default@www.dnsomatic.com";; - 7) DDNS_PROVIDER="default@dns.he.net";; - 8) DDNS_PROVIDER="default@www.tunnelbroker.net";; - 9) DDNS_PROVIDER="default@www.sitelutions.com";; - 10) DDNS_PROVIDER="default@www.dnsexit.com";; - 11) DDNS_PROVIDER="default@www.changeip.com";; - 12) DDNS_PROVIDER="default@www.zerigo.com";; - 13) DDNS_PROVIDER="default@www.dhis.org";; - 14) DDNS_PROVIDER="default@nsupdate.info";; - 15) DDNS_PROVIDER="default@www.loopia.com";; - 16) DDNS_PROVIDER="default@www.namecheap.com";; - 17) DDNS_PROVIDER="default@www.ovh.com";; - 18) DDNS_PROVIDER="default@www.dtdns.com";; - 19) DDNS_PROVIDER="default@giradns.com";; - 20) DDNS_PROVIDER="default@www.duiadns.net";; - 21) DDNS_PROVIDER="default@ddnss.de";; - 22) DDNS_PROVIDER="default@dynv6.com";; - 23) DDNS_PROVIDER="default@ipv4.dynv6.com";; - 24) DDNS_PROVIDER="default@spdyn.de";; - 25) DDNS_PROVIDER="default@freemyip.com";; - 26) DDNS_PROVIDER="default@www.cloudxns.net";; + 1) DDNS_PROVIDER="freedns";; + 2) DDNS_PROVIDER="dyn";; + 3) DDNS_PROVIDER="zoneedit.com";; + 4) DDNS_PROVIDER="no-ip.com";; + 5) DDNS_PROVIDER="easydns.com";; + 6) DDNS_PROVIDER="dnsomatic.com";; + 7) DDNS_PROVIDER="dns.he.net";; + 8) DDNS_PROVIDER="tunnelbroker.net";; + 9) DDNS_PROVIDER="sitelutions.com";; + 10) DDNS_PROVIDER="dnsexit.com";; + 11) DDNS_PROVIDER="changeip.com";; + 12) DDNS_PROVIDER="zerigo.com";; + 13) DDNS_PROVIDER="dhis.org";; + 14) DDNS_PROVIDER="nsupdate.info";; + 15) DDNS_PROVIDER="loopia.com";; + 16) DDNS_PROVIDER="namecheap.com";; + 17) DDNS_PROVIDER="ovh.com";; + 18) DDNS_PROVIDER="dtdns.com";; + 19) DDNS_PROVIDER="giradns.com";; + 20) DDNS_PROVIDER="duiadns.net";; + 21) DDNS_PROVIDER="ddnss.de";; + 22) DDNS_PROVIDER="dynv6.com";; + 23) DDNS_PROVIDER="ipv4.dynv6.com";; + 24) DDNS_PROVIDER="spdyn.de";; + 25) DDNS_PROVIDER="freemyip.com";; + 26) DDNS_PROVIDER="cloudxns.net";; esac save_configuration_values diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 547c35b7..95565d78 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -35,12 +35,12 @@ NAMESERVER5='85.25.251.254' NAMESERVER6='2.141.58.13' # parameters used when adding a new domain -DDNS_PROVIDER="default@freedns.afraid.org" +DDNS_PROVIDER="freedns" DDNS_USERNAME= DDNS_PASSWORD= -INADYN_REPO="https://github.com/bashrc/inadyn" -INADYN_COMMIT='fadbe17f520d337dfb8d69ee4bf1fcaa23fce0d6' +INADYN_REPO="https://github.com/troglobit/inadyn" +INADYN_COMMIT='3fe26d2235ddda9047cf33e8ed1453bcc3bbbf19' INADYN_CONFIG_FILE=/etc/inadyn.conf # web site used to obtain the external IP address of the system @@ -105,43 +105,58 @@ function update_inadyn_config { fi if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then - # store any previous aliases - grep 'alias ' "${INADYN_CONFIG_FILE}" > /tmp/inadyn_aliases + if grep -q "{" "${INADYN_CONFIG_FILE}"; then + sed -i "s|provider .*|provider $DDNS_PROVIDER {|g" "${INADYN_CONFIG_FILE}" + sed -i "s|username .*|username = $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" + sed -i "s|password .*|password = $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" + sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" + else + # Old inadyn config file format + # store any previous aliases + grep 'alias ' "${INADYN_CONFIG_FILE}" > /tmp/inadyn_aliases - # remove entry for any previous ddns - sed -i '/system /,$d' "${INADYN_CONFIG_FILE}" + # remove entry for any previous ddns + sed -i '/system /,$d' "${INADYN_CONFIG_FILE}" - # add the new provider - { echo ''; - echo "system $DDNS_PROVIDER"; - echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" - if [ "$DDNS_USERNAME" ]; then - echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" - fi - if [ "$DDNS_PASSWORD" ]; then - echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" - fi - - if [ -f /tmp/inadyn_aliases ]; then - cat /tmp/inadyn_aliases >> "${INADYN_CONFIG_FILE}" - rm /tmp/inadyn_aliases - fi - else - # change username/password for an existing provider - if [ "$DDNS_USERNAME" ]; then - if grep -q " username " "${INADYN_CONFIG_FILE}"; then - sed -i "s| username .*| username $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" - else + # add the new provider + { echo ''; + echo "system $DDNS_PROVIDER"; + echo ' ssl'; + echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" + if [ "$DDNS_USERNAME" ]; then echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" fi - fi - if [ "$DDNS_PASSWORD" ]; then - if grep -q " password " "${INADYN_CONFIG_FILE}"; then - sed -i "s| password .*| password $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" - else + if [ "$DDNS_PASSWORD" ]; then echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" fi + + if [ -f /tmp/inadyn_aliases ]; then + cat /tmp/inadyn_aliases >> "${INADYN_CONFIG_FILE}" + rm /tmp/inadyn_aliases + fi + fi + else + if grep -q "{" "${INADYN_CONFIG_FILE}"; then + sed -i "s|username .*|username = $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" + sed -i "s|password .*|password = $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" + sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" + else + # Old inadyn config file format + # change username/password for an existing provider + if [ "$DDNS_USERNAME" ]; then + if grep -q " username " "${INADYN_CONFIG_FILE}"; then + sed -i "s| username .*| username $DDNS_USERNAME|g" "${INADYN_CONFIG_FILE}" + else + echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" + fi + fi + if [ "$DDNS_PASSWORD" ]; then + if grep -q " password " "${INADYN_CONFIG_FILE}"; then + sed -i "s| password .*| password $DDNS_PASSWORD|g" "${INADYN_CONFIG_FILE}" + else + echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" + fi + fi fi fi @@ -203,24 +218,29 @@ function add_ddns_domain { exit 5745 fi if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then - { echo ''; - echo "system $DDNS_PROVIDER"; - echo ' ssl'; - echo " checkip-url $GET_IP_ADDRESS_URL /"; } >> "${INADYN_CONFIG_FILE}" - if [ $DDNS_USERNAME ]; then - echo " username $DDNS_USERNAME" >> "${INADYN_CONFIG_FILE}" - fi - if [ $DDNS_PASSWORD ]; then - echo " password $DDNS_PASSWORD" >> "${INADYN_CONFIG_FILE}" - fi + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; + echo "provider $DDNS_PROVIDER {"; + echo " ssl = true"; + echo " checkip-ssl = false"; + echo " checkip-server = $GET_IP_ADDRESS_URL"; + echo " username = $DDNS_USERNAME"; + echo " password = $DDNS_PASSWORD"; + echo " hostname = { $CURRENT_DDNS_DOMAIN }"; + echo '}'; } > "${INADYN_CONFIG_FILE}" + else + sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" fi if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - echo " alias $CURRENT_DDNS_DOMAIN" >> "${INADYN_CONFIG_FILE}" + DDNS_HOSTNAMES=$(grep 'hostname ' "${INADYN_CONFIG_FILE}"| awk -F '{' '{print $2}' | sed 's| }||g') + sed -i "s|hostname .*|hostname = {${DDNS_HOSTNAMES}, ${CURRENT_DDNS_DOMAIN} }|g" "${INADYN_CONFIG_FILE}" fi chmod 600 "${INADYN_CONFIG_FILE}" - systemctl restart inadyn + systemctl daemon-reload + systemctl restart inadyn } function remove_ddns_domain { @@ -241,9 +261,12 @@ function remove_ddns_domain { fi if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then systemctl stop inadyn - sed -i "/alias $CURRENT_DDNS_DOMAIN/d" "${INADYN_CONFIG_FILE}" - systemctl start inadyn + sed -i "s|, ${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + sed -i "s|${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + fi systemctl daemon-reload + systemctl start inadyn fi } diff --git a/src/freedombone-utils-interactive b/src/freedombone-utils-interactive index 1692c042..9e5a562f 100755 --- a/src/freedombone-utils-interactive +++ b/src/freedombone-utils-interactive @@ -126,7 +126,7 @@ function interactive_site_details { while [ ! $SITE_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == "freedns" ]]; then dialog --backtitle "$SITE_BACKTITLE" \ --title "$SITE_CONFIG_TITLE" \ --form "$SITE_FORM_TEXT" 14 55 3 \ @@ -155,7 +155,7 @@ function interactive_site_details { SITE_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then SITE_CODE=$(sed -n 2p < "$data") validate_freedns_code "$SITE_CODE" if [ ! "$VALID_CODE" ]; then @@ -193,7 +193,7 @@ function interactive_site_details_with_title { while [ ! $SITE_DETAILS_COMPLETE ] do data=$(mktemp 2>/dev/null) - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + if [[ $DDNS_PROVIDER == *"freedns"* ]]; then dialog --backtitle $"Freedombone Configuration" \ --title "$SITE_BACKTITLE" \ --form "$SITE_FORM_TEXT" 14 55 4 \ @@ -225,7 +225,7 @@ function interactive_site_details_with_title { SITE_DOMAIN_NAME= dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 else - if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + if [[ "$DDNS_PROVIDER" == *"freedns"* ]]; then SITE_CODE=$(sed -n 3p < "$data") validate_freedns_code "${SITE_CODE}" if [ ! "$VALID_CODE" ]; then diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 55799cf7..a36884e0 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -430,6 +430,46 @@ function install_web_server_access_control { fi } +function upgrade_inadyn_config { + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + return + fi + + if grep -q "{" "${INADYN_CONFIG_FILE}"; then + return + fi + + read_config_param DDNS_PROVIDER + read_config_param DDNS_USERNAME + read_config_param DDNS_PASSWORD + + grep "alias " "${INADYN_CONFIG_FILE}" | sed 's| alias ||g' > ~/.inadyn_existing_sites + DDNS_HOSTNAMES= + while read -r host; do + if [ "$DDNS_HOSTNAMES" ]; then + DDNS_HOSTNAMES="$DDNS_HOSTNAMES, $host" + else + DDNS_HOSTNAMES="$host" + fi + done <~/.inadyn_existing_sites + + if [ ! "$DDNS_HOSTNAMES" ]; then + return + fi + + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; + echo "provider $DDNS_PROVIDER {"; + echo " ssl = true"; + echo " checkip-ssl = false"; + echo " checkip-server = $GET_IP_ADDRESS_URL"; + echo " username = $DDNS_USERNAME"; + echo " password = $DDNS_PASSWORD"; + echo " hostname = { $DDNS_HOSTNAMES }"; + echo '}'; } > "${INADYN_CONFIG_FILE}" +} + function install_dynamicdns { if [[ $SYSTEM_TYPE == "mesh"* ]]; then return @@ -458,6 +498,7 @@ function install_dynamicdns { # https version 1.99.8 apt-get -yq install build-essential curl libgnutls28-dev automake1.11 + apt-get -yq install gnutls-dev libconfuse-dev if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" @@ -477,47 +518,47 @@ function install_dynamicdns { git checkout "$INADYN_COMMIT" -b "$INADYN_COMMIT" set_completion_param "inadyn commit" "$INADYN_COMMIT" - #./autogen.sh - if ! ./configure; then + ./autogen.sh + + if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then exit 74890 fi - if ! USE_OPENSSL=1 make; then + if ! make -j5; then exit 74858 fi - if ! make install; then + if ! make install-strip; then exit 3785 fi - # create an unprivileged user - #chmod 600 /etc/shadow - #chmod 600 /etc/gshadow - #useradd -r -s /bin/false debian-inadyn - #chmod 0000 /etc/shadow - #chmod 0000 /etc/gshadow - # create a configuration file { echo 'background'; echo 'verbose 1'; echo 'period 300'; echo 'startup-delay 60'; echo 'cache-dir /run/inadyn'; - echo 'logfile /dev/null'; } > /etc/inadyn.conf - chmod 600 /etc/inadyn.conf + echo 'logfile /dev/null'; } > "${INADYN_CONFIG_FILE}" + chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; echo 'Description=inadyn (DynDNS updater)'; echo 'After=network.target'; echo ''; echo '[Service]'; - echo 'ExecStart=/usr/local/sbin/inadyn --config /etc/inadyn.conf'; + echo "ExecStart=/usr/sbin/inadyn --config ${INADYN_CONFIG_FILE}"; echo 'Restart=always'; echo 'Type=forking'; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service systemctl enable inadyn - systemctl start inadyn systemctl daemon-reload + systemctl start inadyn + + # Remove old version of inadyn + if [ -f /usr/local/sbin/inadyn ]; then + rm /usr/local/sbin/inadyn + upgrade_inadyn_config + fi mark_completed "${FUNCNAME[0]}" } From ead7f41f3e1851cf427195421239b757929d66b3 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:49:43 +0100 Subject: [PATCH 03/25] Upgrade inadyn --- src/freedombone-upgrade | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 19326753..cf027e92 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -95,6 +95,7 @@ if [ -d "$PROJECT_DIR" ]; then fi #rebuild_exim_with_socks + update_inadyn_config torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot From 295601f375ee57d9df14e5a8e4176d370e37dd26 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:53:21 +0100 Subject: [PATCH 04/25] Upgrade inadyn --- src/freedombone-upgrade | 2 +- src/freedombone-utils-web | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index cf027e92..33f73ab4 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -95,7 +95,7 @@ if [ -d "$PROJECT_DIR" ]; then fi #rebuild_exim_with_socks - update_inadyn_config + install_dynamicdns torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index a36884e0..02eb6eea 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -435,6 +435,10 @@ function upgrade_inadyn_config { return fi + if [ ! -f /usr/sbin/inadyn ]; then + return + fi + if grep -q "{" "${INADYN_CONFIG_FILE}"; then return fi From f3e065390878a7aca61d7bc53c52fbf907f27264 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 17:59:59 +0100 Subject: [PATCH 05/25] Installation of inadyn within images --- src/freedombone-image-customise | 22 ++++++++++------------ src/freedombone-utils-web | 11 ++++------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 75ec9e02..062958d2 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1657,6 +1657,7 @@ image_install_inadyn() { mkdir -p "$rootdir/root/build" fi chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev + chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev if [ -d /repos/inadyn ]; then mkdir "$rootdir/root/build/inadyn" @@ -1677,24 +1678,21 @@ image_install_inadyn() { cd "$rootdir/root/build/inadyn" || exit 24682464628 { echo '#!/bin/bash'; echo 'cd ~/build/inadyn'; - echo '#./autogen.sh'; - echo './configure'; - echo 'USE_OPENSSL=1 make'; - echo 'make install'; } > "$rootdir/root/build/build_inadyn.sh" + echo './autogen.sh'; + echo './configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl'; + echo 'make -j5'; + echo 'make install-strip'; } > "$rootdir/root/build/build_inadyn.sh" chmod +x "$rootdir/root/build/build_inadyn.sh" chroot "$rootdir" /root/build/build_inadyn.sh - if [ ! -f "$rootdir/usr/local/sbin/inadyn" ]; then + if [ ! -f "$rootdir/usr/sbin/inadyn" ]; then echo 'Failed to build inadyn' exit 6209356 fi # create a configuration file - { echo 'background'; - echo 'verbose 1'; - echo 'period 300'; - echo 'startup-delay 60'; - echo 'cache-dir /run/inadyn'; - echo 'logfile /dev/null'; } > "$rootdir/etc/inadyn.conf" + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; } > "$rootdir/etc/inadyn.conf" chmod 600 "$rootdir/etc/inadyn.conf" { echo '[Unit]'; @@ -1702,7 +1700,7 @@ image_install_inadyn() { echo 'After=network.target'; echo ''; echo '[Service]'; - echo 'ExecStart=/usr/local/sbin/inadyn --config /etc/inadyn.conf'; + echo 'ExecStart=/usr/sbin/inadyn --config /etc/inadyn.conf'; echo 'Restart=always'; echo 'Type=forking'; echo ''; diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 02eb6eea..edfb9482 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -535,12 +535,9 @@ function install_dynamicdns { fi # create a configuration file - { echo 'background'; - echo 'verbose 1'; - echo 'period 300'; - echo 'startup-delay 60'; - echo 'cache-dir /run/inadyn'; - echo 'logfile /dev/null'; } > "${INADYN_CONFIG_FILE}" + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; } > "${INADYN_CONFIG_FILE}" chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; @@ -554,8 +551,8 @@ function install_dynamicdns { echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service - systemctl enable inadyn systemctl daemon-reload + systemctl enable inadyn systemctl start inadyn # Remove old version of inadyn From 06b428e855239b30338a8be98966e25b892b1c3f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:03:35 +0100 Subject: [PATCH 06/25] Only create inadyn config file if it doesn't exist --- src/freedombone-utils-web | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index edfb9482..49cc2534 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -535,9 +535,11 @@ function install_dynamicdns { fi # create a configuration file - { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; - echo ''; } > "${INADYN_CONFIG_FILE}" + if [ ! -f "${INADYN_CONFIG_FILE}" ]; then + { echo 'period = 300'; + echo 'user-agent = Mozilla/5.0'; + echo ''; } > "${INADYN_CONFIG_FILE}" + fi chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; From 758568200a673e33b787f11dac3185eae46ce4e5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:04:41 +0100 Subject: [PATCH 07/25] Don't add inadyn to completion file --- src/freedombone-utils-web | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 49cc2534..f2e31013 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -491,10 +491,6 @@ function install_dynamicdns { function_check set_repo_commit set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" - if [[ $(is_completed "${FUNCNAME[0]}") == "1" ]]; then - return - fi - # Here we compile from source because the current package # doesn't support https, which could result in passwords # being leaked @@ -562,8 +558,6 @@ function install_dynamicdns { rm /usr/local/sbin/inadyn upgrade_inadyn_config fi - - mark_completed "${FUNCNAME[0]}" } function update_default_search_engine { From 6e80322597601c3ff1c0e77ddafcaffb7267c959 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:15:47 +0100 Subject: [PATCH 08/25] Remove old repo if it exists --- src/freedombone-utils-web | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index f2e31013..b8155c26 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -499,6 +499,13 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev + + if [ -f /usr/local/sbin/inadyn ]; then + if [ -d "$INSTALL_DIR/inadyn" ]; then + rm -rf "$INSTALL_DIR/inadyn" + fi + fi + if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" From a30f751b06f1f1e86f93b75b5c3bcc816f8b1eb4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:23:35 +0100 Subject: [PATCH 09/25] Remove old repo sooner --- src/freedombone-utils-web | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index b8155c26..efaca439 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -487,6 +487,12 @@ function install_dynamicdns { return fi + if [ -f /usr/local/sbin/inadyn ]; then + if [ -d "$INSTALL_DIR/inadyn" ]; then + rm -rf "$INSTALL_DIR/inadyn" + fi + fi + # update to the next commit function_check set_repo_commit set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" @@ -500,12 +506,6 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev - if [ -f /usr/local/sbin/inadyn ]; then - if [ -d "$INSTALL_DIR/inadyn" ]; then - rm -rf "$INSTALL_DIR/inadyn" - fi - fi - if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" From 45e1e83e63bc414e9fb249c14c9fa5d7b3c95c69 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:25:30 +0100 Subject: [PATCH 10/25] Don't sync if upgrading inadyn repo --- src/freedombone-utils-web | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index efaca439..b5d8f8d8 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -491,12 +491,12 @@ function install_dynamicdns { if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" fi + else + # update to the next commit + function_check set_repo_commit + set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" fi - # update to the next commit - function_check set_repo_commit - set_repo_commit "$INSTALL_DIR/inadyn" "inadyn commit" "$INADYN_COMMIT" "$INADYN_REPO" - # Here we compile from source because the current package # doesn't support https, which could result in passwords # being leaked From 4ebdd8479ef6690bfae9254e983b09bcb86627c5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:27:44 +0100 Subject: [PATCH 11/25] Add debug --- src/freedombone-upgrade | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 33f73ab4..83976b3e 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -90,12 +90,15 @@ if [ -d "$PROJECT_DIR" ]; then chmod -R +r /usr/share/${PROJECT_NAME} fi + echo "test0" if ! ${PROJECT_NAME} -c "$CONFIGURATION_FILE"; then exit 453536 fi #rebuild_exim_with_socks + echo "test1" install_dynamicdns + echo "test2" torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot From 1de4feca4594337adc57f5e048c5351364c4a6b6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:29:50 +0100 Subject: [PATCH 12/25] Add debug --- src/freedombone-upgrade | 3 --- src/freedombone-utils-web | 9 +++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/freedombone-upgrade b/src/freedombone-upgrade index 83976b3e..33f73ab4 100755 --- a/src/freedombone-upgrade +++ b/src/freedombone-upgrade @@ -90,15 +90,12 @@ if [ -d "$PROJECT_DIR" ]; then chmod -R +r /usr/share/${PROJECT_NAME} fi - echo "test0" if ! ${PROJECT_NAME} -c "$CONFIGURATION_FILE"; then exit 453536 fi #rebuild_exim_with_socks - echo "test1" install_dynamicdns - echo "test2" torrc_migrate nodejs_upgrade apt-get -yq -t stretch-backports install certbot diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index b5d8f8d8..97bb43ab 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -475,18 +475,23 @@ function upgrade_inadyn_config { } function install_dynamicdns { + echo "************ 1" if [[ $SYSTEM_TYPE == "mesh"* ]]; then return fi + + echo "************ 2" if [[ $ONION_ONLY != "no" ]]; then return fi + echo "************ 3" CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then return fi + echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" @@ -506,6 +511,7 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev + echo "************ 5" if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" @@ -516,17 +522,20 @@ function install_dynamicdns { git_clone "$INADYN_REPO" "$INSTALL_DIR/inadyn" fi fi + echo "************ 6" if [ ! -d "$INSTALL_DIR/inadyn" ]; then echo 'inadyn repo not cloned' echo -n | openssl s_client -showcerts -connect github.com:443 -CApath /etc/ssl/certs exit 6785 fi + echo "************ 7" cd "$INSTALL_DIR/inadyn" || exit 246824684 git checkout "$INADYN_COMMIT" -b "$INADYN_COMMIT" set_completion_param "inadyn commit" "$INADYN_COMMIT" ./autogen.sh + echo "************ 8" if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then exit 74890 fi From 285e7b453b9bfad1c3ba91f822bb36ae6fe7ae1a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:32:19 +0100 Subject: [PATCH 13/25] Add debug --- src/freedombone-utils-web | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 97bb43ab..1e52ce2c 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,8 +485,8 @@ function install_dynamicdns { return fi - echo "************ 3" CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") + echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then return fi From 27a83a928625f2d3c46709e7f0dab1d1c1852389 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:38:11 +0100 Subject: [PATCH 14/25] Remove the inadyn commit from the completion file --- src/freedombone-utils-web | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 1e52ce2c..55831eed 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,6 +485,10 @@ function install_dynamicdns { return fi + if grep -q "INADYN_COMMIT" "$COMPLETION_FILE"; then + sed -i '/INADYN_COMMIT/d' "$COMPLETION_FILE" + fi + CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then From e0ee4dc9f86934d156b7e4dd2597157a4035ade5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:41:07 +0100 Subject: [PATCH 15/25] Configuration file --- src/freedombone-utils-web | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 55831eed..123a87ec 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,8 +485,8 @@ function install_dynamicdns { return fi - if grep -q "INADYN_COMMIT" "$COMPLETION_FILE"; then - sed -i '/INADYN_COMMIT/d' "$COMPLETION_FILE" + if grep -q "INADYN_COMMIT" "$CONFIGURATION_FILE"; then + sed -i '/INADYN_COMMIT/d' "$CONFIGURATION_FILE" fi CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") From 0dbb5c0c6c34dae93964a03e1c57b97b0b757fe5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:48:01 +0100 Subject: [PATCH 16/25] Remove commit if the old inadyn binary is found --- src/freedombone-utils-web | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 123a87ec..6066839f 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -497,6 +497,9 @@ function install_dynamicdns { echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then + if grep -q "inadyn commit" "$COMPLETION_FILE"; then + sed -d '/inadyn commit/d' "$COMPLETION_FILE" + fi if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" fi From 105c2a78e3b7f7c7034581f4a4f120efd95264fa Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:49:19 +0100 Subject: [PATCH 17/25] Remove commit if the old inadyn binary is found --- src/freedombone-utils-web | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 6066839f..1305def8 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -489,6 +489,12 @@ function install_dynamicdns { sed -i '/INADYN_COMMIT/d' "$CONFIGURATION_FILE" fi + if [ -f /usr/local/sbin/inadyn ]; then + if grep -q "inadyn commit" "$COMPLETION_FILE"; then + sed -d '/inadyn commit/d' "$COMPLETION_FILE" + fi + fi + CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then @@ -497,9 +503,6 @@ function install_dynamicdns { echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then - if grep -q "inadyn commit" "$COMPLETION_FILE"; then - sed -d '/inadyn commit/d' "$COMPLETION_FILE" - fi if [ -d "$INSTALL_DIR/inadyn" ]; then rm -rf "$INSTALL_DIR/inadyn" fi From 5e82c6dd5d3b5ca3a6a15ffd51bfb9e4de32fbf4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:51:32 +0100 Subject: [PATCH 18/25] Typo --- src/freedombone-utils-web | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 1305def8..d78bcd91 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -491,7 +491,7 @@ function install_dynamicdns { if [ -f /usr/local/sbin/inadyn ]; then if grep -q "inadyn commit" "$COMPLETION_FILE"; then - sed -d '/inadyn commit/d' "$COMPLETION_FILE" + sed -i '/inadyn commit/d' "$COMPLETION_FILE" fi fi From e6683e0f1c60a7cc62242eba17d5ef16ac8ce12c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 18:56:04 +0100 Subject: [PATCH 19/25] Debug --- src/freedombone-utils-web | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index d78bcd91..11442478 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -493,17 +493,19 @@ function install_dynamicdns { if grep -q "inadyn commit" "$COMPLETION_FILE"; then sed -i '/inadyn commit/d' "$COMPLETION_FILE" fi - fi - - CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") - echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" - if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then - return + else + CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") + echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" + if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then + return + fi fi echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then + echo "********* checking $INSTALL_DIR/inadyn" if [ -d "$INSTALL_DIR/inadyn" ]; then + echo "Removing $INSTALL_DIR/inadyn" rm -rf "$INSTALL_DIR/inadyn" fi else From 838e7328a2b97437aa3876521fe1f3285952a7b4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:01:53 +0100 Subject: [PATCH 20/25] Also remove the inadyn repo from the configuration file --- src/freedombone-utils-web | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 11442478..6bb246c7 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -485,6 +485,9 @@ function install_dynamicdns { return fi + if grep -q "INADYN_REPO" "$CONFIGURATION_FILE"; then + sed -i '/INADYN_REPO/d' "$CONFIGURATION_FILE" + fi if grep -q "INADYN_COMMIT" "$CONFIGURATION_FILE"; then sed -i '/INADYN_COMMIT/d' "$CONFIGURATION_FILE" fi From df312b118e29bf3338ac0ed4a3ef3d2ad488d0a0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:06:13 +0100 Subject: [PATCH 21/25] Also remove old inadyn repo during upgrade --- src/freedombone-utils-web | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 6bb246c7..f3e29853 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -511,6 +511,9 @@ function install_dynamicdns { echo "Removing $INSTALL_DIR/inadyn" rm -rf "$INSTALL_DIR/inadyn" fi + if [ -d /repos/inadyn ]; then + rm -rf /repos/inadyn + fi else # update to the next commit function_check set_repo_commit From 1416af54a598477679e600c986f53ddacf532bc7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:10:46 +0100 Subject: [PATCH 22/25] Change freedns provider name on inadyn upgrade --- src/freedombone-utils-web | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index f3e29853..258f89cc 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -461,6 +461,11 @@ function upgrade_inadyn_config { return fi + if [[ "$DDNS_PROVIDER" == "default@freedns.afraid.org" ]]; then + DDNS_PROVIDER='freedns' + write_config_param DDNS_PROVIDER "$DDNS_PROVIDER" + fi + { echo 'period = 300'; echo 'user-agent = Mozilla/5.0'; echo ''; From cb21669a632fb27266ec053a18619b8b6451124c Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:16:10 +0100 Subject: [PATCH 23/25] Remove debug --- src/freedombone-utils-web | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 258f89cc..a6080184 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -480,12 +480,10 @@ function upgrade_inadyn_config { } function install_dynamicdns { - echo "************ 1" if [[ $SYSTEM_TYPE == "mesh"* ]]; then return fi - echo "************ 2" if [[ $ONION_ONLY != "no" ]]; then return fi @@ -503,17 +501,13 @@ function install_dynamicdns { fi else CURR_INADYN_COMMIT=$(get_completion_param "inadyn commit") - echo "************ 3 $CURR_INADYN_COMMIT $INADYN_COMMIT" if [[ "${CURR_INADYN_COMMIT}" == "${INADYN_COMMIT}" ]]; then return fi fi - echo "************ 4" if [ -f /usr/local/sbin/inadyn ]; then - echo "********* checking $INSTALL_DIR/inadyn" if [ -d "$INSTALL_DIR/inadyn" ]; then - echo "Removing $INSTALL_DIR/inadyn" rm -rf "$INSTALL_DIR/inadyn" fi if [ -d /repos/inadyn ]; then @@ -534,7 +528,6 @@ function install_dynamicdns { apt-get -yq install build-essential curl libgnutls28-dev automake1.11 apt-get -yq install gnutls-dev libconfuse-dev - echo "************ 5" if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then mkdir "$INSTALL_DIR/inadyn" @@ -545,20 +538,17 @@ function install_dynamicdns { git_clone "$INADYN_REPO" "$INSTALL_DIR/inadyn" fi fi - echo "************ 6" if [ ! -d "$INSTALL_DIR/inadyn" ]; then echo 'inadyn repo not cloned' echo -n | openssl s_client -showcerts -connect github.com:443 -CApath /etc/ssl/certs exit 6785 fi - echo "************ 7" cd "$INSTALL_DIR/inadyn" || exit 246824684 git checkout "$INADYN_COMMIT" -b "$INADYN_COMMIT" set_completion_param "inadyn commit" "$INADYN_COMMIT" ./autogen.sh - echo "************ 8" if ! ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-openssl; then exit 74890 fi From 5a2401292975cb8294c3ebe442d67deac0a46184 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 19:28:30 +0100 Subject: [PATCH 24/25] Inadyn systemd daemon --- src/freedombone-image-customise | 16 ++++++++++------ src/freedombone-utils-web | 16 ++++++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 062958d2..21024105 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1657,7 +1657,7 @@ image_install_inadyn() { mkdir -p "$rootdir/root/build" fi chroot "$rootdir" apt-get -yq install build-essential curl libgnutls28-dev automake1.11 libconfuse-dev - chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev + chroot "$rootdir" apt-get -yq install gnutls-dev libconfuse-dev pkg-config if [ -d /repos/inadyn ]; then mkdir "$rootdir/root/build/inadyn" @@ -1696,13 +1696,17 @@ image_install_inadyn() { chmod 600 "$rootdir/etc/inadyn.conf" { echo '[Unit]'; - echo 'Description=inadyn (DynDNS updater)'; - echo 'After=network.target'; + echo 'Description=Internet Dynamic DNS Client'; + echo 'Documentation=man:inadyn'; + echo 'Documentation=man:inadyn.conf'; + echo 'Documentation=https://github.com/troglobit/inadyn'; + echo 'ConditionPathExists=/etc/inadyn.conf'; + echo 'After=network-online.target'; + echo 'Requires=network-online.target'; echo ''; echo '[Service]'; - echo 'ExecStart=/usr/sbin/inadyn --config /etc/inadyn.conf'; - echo 'Restart=always'; - echo 'Type=forking'; + echo 'Type=simple'; + echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > "$rootdir/etc/systemd/system/inadyn.service" diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index a6080184..eed191c3 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -526,7 +526,7 @@ function install_dynamicdns { # https version 1.99.8 apt-get -yq install build-essential curl libgnutls28-dev automake1.11 - apt-get -yq install gnutls-dev libconfuse-dev + apt-get -yq install gnutls-dev libconfuse-dev pkg-config if [ ! -d "$INSTALL_DIR/inadyn" ]; then if [ -d /repos/inadyn ]; then @@ -568,13 +568,17 @@ function install_dynamicdns { chmod 600 "${INADYN_CONFIG_FILE}" { echo '[Unit]'; - echo 'Description=inadyn (DynDNS updater)'; - echo 'After=network.target'; + echo 'Description=Internet Dynamic DNS Client'; + echo 'Documentation=man:inadyn'; + echo 'Documentation=man:inadyn.conf'; + echo 'Documentation=https://github.com/troglobit/inadyn'; + echo 'ConditionPathExists=/etc/inadyn.conf'; + echo 'After=network-online.target'; + echo 'Requires=network-online.target'; echo ''; echo '[Service]'; - echo "ExecStart=/usr/sbin/inadyn --config ${INADYN_CONFIG_FILE}"; - echo 'Restart=always'; - echo 'Type=forking'; + echo 'Type=simple'; + echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service From fe6f27c9d419e6bb1632e7b9af8f4e3169a48677 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 May 2018 21:41:54 +0100 Subject: [PATCH 25/25] Fixing inadyn around using a wildcarded default domain name --- src/freedombone-image-customise | 5 +++-- src/freedombone-utils-dns | 26 +++++++++++--------------- src/freedombone-utils-web | 12 ++++++------ 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 21024105..58630e45 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1691,7 +1691,6 @@ image_install_inadyn() { # create a configuration file { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; } > "$rootdir/etc/inadyn.conf" chmod 600 "$rootdir/etc/inadyn.conf" @@ -1706,7 +1705,9 @@ image_install_inadyn() { echo ''; echo '[Service]'; echo 'Type=simple'; - echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; + echo "ExecStart=/usr/sbin/inadyn -C -n -s --loglevel=err --config ${INADYN_CONFIG_FILE}"; + echo 'Restart=on-failure'; + echo 'RestartSec=10'; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > "$rootdir/etc/systemd/system/inadyn.service" diff --git a/src/freedombone-utils-dns b/src/freedombone-utils-dns index 95565d78..33260b86 100755 --- a/src/freedombone-utils-dns +++ b/src/freedombone-utils-dns @@ -218,19 +218,15 @@ function add_ddns_domain { exit 5745 fi if ! grep -q "$DDNS_PROVIDER" "${INADYN_CONFIG_FILE}"; then + read_config_param DEFAULT_DOMAIN_NAME { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; echo "provider $DDNS_PROVIDER {"; echo " ssl = true"; - echo " checkip-ssl = false"; - echo " checkip-server = $GET_IP_ADDRESS_URL"; echo " username = $DDNS_USERNAME"; echo " password = $DDNS_PASSWORD"; - echo " hostname = { $CURRENT_DDNS_DOMAIN }"; + echo " hostname = $DEFAULT_DOMAIN_NAME"; echo '}'; } > "${INADYN_CONFIG_FILE}" - else - sed -i "s|checkip-server .*|checkip-server = $GET_IP_ADDRESS_URL|g" "${INADYN_CONFIG_FILE}" fi if ! grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then @@ -259,15 +255,15 @@ function remove_ddns_domain { echo $'Unable to find inadyn configuration file "${INADYN_CONFIG_FILE}"' exit 5745 fi - if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - systemctl stop inadyn - sed -i "s|, ${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" - if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then - sed -i "s|${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" - fi - systemctl daemon-reload - systemctl start inadyn - fi + #if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + # systemctl stop inadyn + # sed -i "s|, ${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + # if grep -q "$CURRENT_DDNS_DOMAIN" "${INADYN_CONFIG_FILE}"; then + # sed -i "s|${CURRENT_DDNS_DOMAIN}||g" "${INADYN_CONFIG_FILE}" + # fi + # systemctl daemon-reload + # systemctl start inadyn + #fi } function configure_dns { diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index eed191c3..d4a45a87 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -446,6 +446,7 @@ function upgrade_inadyn_config { read_config_param DDNS_PROVIDER read_config_param DDNS_USERNAME read_config_param DDNS_PASSWORD + read_config_param DEFAULT_DOMAIN_NAME grep "alias " "${INADYN_CONFIG_FILE}" | sed 's| alias ||g' > ~/.inadyn_existing_sites DDNS_HOSTNAMES= @@ -467,15 +468,13 @@ function upgrade_inadyn_config { fi { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; echo "provider $DDNS_PROVIDER {"; echo " ssl = true"; - echo " checkip-ssl = false"; - echo " checkip-server = $GET_IP_ADDRESS_URL"; echo " username = $DDNS_USERNAME"; echo " password = $DDNS_PASSWORD"; - echo " hostname = { $DDNS_HOSTNAMES }"; + echo ' wildcard = true'; + echo " hostname = $DEFAULT_DOMAIN_NAME"; echo '}'; } > "${INADYN_CONFIG_FILE}" } @@ -562,7 +561,6 @@ function install_dynamicdns { # create a configuration file if [ ! -f "${INADYN_CONFIG_FILE}" ]; then { echo 'period = 300'; - echo 'user-agent = Mozilla/5.0'; echo ''; } > "${INADYN_CONFIG_FILE}" fi chmod 600 "${INADYN_CONFIG_FILE}" @@ -578,7 +576,9 @@ function install_dynamicdns { echo ''; echo '[Service]'; echo 'Type=simple'; - echo "ExecStart=/usr/sbin/inadyn -n -s --config ${INADYN_CONFIG_FILE}"; + echo "ExecStart=/usr/sbin/inadyn -C -n -s --loglevel=err --config ${INADYN_CONFIG_FILE}"; + echo 'Restart=on-failure'; + echo 'RestartSec=10'; echo ''; echo '[Install]'; echo 'WantedBy=multi-user.target'; } > /etc/systemd/system/inadyn.service