Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ddclient-configuration.sh « network - github.com/nextcloud/vm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 08d28af9d0b0581370f1d93e59d7e8598e6da1e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/bin/bash

# T&M Hansson IT AB © - 2020, https://www.hanssonit.se/

# shellcheck disable=2034,2059
true
SCRIPT_NAME="Setup DDclient"
# shellcheck source=lib.sh
. <(curl -sL https://raw.githubusercontent.com/nextcloud/vm/master/lib.sh)

# Check for errors + debug code and abort if something isn't right
# 1 = ON
# 0 = OFF
DEBUG=0
debug_mode

# Check if root
root_check

choice=$(whiptail --title "$TITLE" --menu "This script lets you setup DynDNS by using the ddclient application.\nYou have to setup an account before you can start.\n\nPlease choose your DynDNS-Provider.\n\nIf your DDNS provider isn't already supported, please open a new issue here:\n$ISSUES" "$WT_HEIGHT" "$WT_WIDTH" 4 \
"Cloudflare" "(cloudflare.com)" \
"Strato" "(strato.de)" 3>&1 1>&2 2>&3)

case "$choice" in
    "Cloudflare")
        PROVIDER="Cloudflare"
        INSTRUCTIONS="Register an email address for your domain and get an Cloudflare API-key"
        GUIDE="https://www.techandme.se/setup-multiple-accounts-with-ddclient-and-cloudflare/"
        PROTOCOL="cloudflare"
        SERVER="www.cloudflare.com"
        USE_SSL="yes"
    ;;
    "Strato")
        PROVIDER="Strato"
        INSTRUCTIONS="activate DynDNS for your Domain"
        GUIDE="https://www.strato.de/faq/domains/so-einfach-richten-sie-dyndns-fuer-ihre-domains-ein/"
        PROTOCOL="dyndns2"
        SERVER="dyndns.strato.com"
        USE_SSL="yes"
    ;;
    "")
        msg_box "You haven't selected any option. Exiting!"
        exit 1
    ;;
    *)
    ;;
esac

# Instructions
msg_box "Before you can continue, you have to access $PROVIDER and $INSTRUCTIONS.\nHere is a guide:\n$GUIDE"

# Ask if everything is prepared
if ! yesno_box_yes "Are you ready to continue?"
then
    exit
fi

# Enter your Hostname
while :
do
    HOSTNAME=$(input_box "Please enter the Host that you want to configure DDNS for.\nE.g. 'example.com'")
    if ! yesno_box_yes "Is this correct? $HOSTNAME"
    then
        msg_box "OK, please try again."
    else
        if [ -z "$HOSTNAME" ]
        then
            msg_box "Please don't leave the inputbox empty."
        else
            break
        fi
    fi
done

# Enter your login
while :
do
    LOGIN=$(input_box "Please enter the login for your DDNS provider.\nIt will be most likely the domain or registered email address depending on your DDNS Provider.\nE.g. 'example.com' or 'mail@example.com'\nIf you are not sure, please refer to the documentation of your DDNS provider.")
    if ! yesno_box_yes "Is this correct? $LOGIN"
    then
        msg_box "OK, please try again."
    else
        if [ -z "$LOGIN" ]
        then
            msg_box "Please don't leave the inputbox empty."
        else
            break
        fi
    fi
done

# Enter your password
while :
do
    PASSWORD=$(input_box "Please enter the password or api-key that you've got for DynDNS from your DDNS provider.\nIf you are not sure, please refer to the documentation of your DDNS provider.")
    if ! yesno_box_yes "Is this correct? $PASSWORD"
    then
        msg_box "OK, please try again."
    else
        if [ -z "$PASSWORD" ]
        then
            msg_box "Please don't leave the inputbox empty."
        else
            break
        fi
    fi
done

# Get results and store in a variable:
RESULT="You will see now a list of all entered information. Please check that everything seems correct.\n\n"
RESULT+="Provider=$PROVIDER\n"
RESULT+="Host=$HOSTNAME\n"
RESULT+="login=$LOGIN\n"
RESULT+="password=$PASSWORD\n"

# Present what we gathered, if everything okay, write to file
msg_box "$RESULT"
if ! yesno_box_yes "Do you want to proceed?"
then
    exit
fi

clear

# needed for cloudflare to work
if [ "$PROVIDER" = "Cloudflare" ]
then
    install_if_not libjson-any-perl
fi

# Install ddclient
if ! is_this_installed ddclient
then
    print_text_in_color "$ICyan" "Installing ddclient..."
    # This creates a ddclient service, creates a /etc/default/ddclient file and a /etc/ddclient.conf file
    DEBIAN_FRONTEND=noninteractive apt install ddclient -y
fi

if [ ! -f /etc/ddclient.conf ]
then
    msg_box "The default ddclient.conf doesn't seem to exist.\nPlease report this to\n$ISSUES."
    exit 1
fi

# Write information to ddclient.conf
cat << DDCLIENT_CONF > "/etc/ddclient.conf"
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf

# Default system settings
use=if, if=ens32
use=web, web=https://ipv4bot.whatismyipaddress.com

# DDNS-service specific setting
# Provider=$PROVIDER
protocol=$PROTOCOL
server=$SERVER
ssl=$USE_SSL

# user specific setting
login=$LOGIN
password=$PASSWORD

# Hostname follows:
zone=$HOSTNAME
$HOSTNAME
DDCLIENT_CONF

# Test connection
msg_box "Everything is setup by now and we will check the connection."
ddclient -verbose

# Inform user 
any_key "Please check the logs above and make sure that everything looks good. If not, just run this script again.
If you are certain, that you entered all things correctly and it didn't work, please report this to\n$ISSUES"
print_text_in_color "$ICyan" "exiting..."
exit