-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathddclient_install.bash
121 lines (96 loc) · 2.2 KB
/
ddclient_install.bash
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
#!/bin/bash
set -e
# This script is based off of the README found here:
# https://github.com/ddclient/ddclient
main()
{
case "$1" in
"-u")
uninstall;;
"-p")
purge;;
"-v")
if [ -n "$2" ]; then
VERSION="$2"
else
echo "Provide the version number"
exit
fi
install;;
*)
install;;
esac
}
install()
{
# Hack for "sudo -v" in docker container
sudo -v
: "${VERSION:="3.9.1"}"
if [ "$VERSION" == "3.9.0" ]; then
SHA256="9c4ae902742e8a37790d3cc8fad4e5b0f38154c76bba3643f4423d8f96829e3b"
else
SHA256="e4969e15cc491fc52bdcd649d4c2b0e4b1bf0c9f9dba23471c634871acc52470"
fi
FOLDER="ddclient-$VERSION"
ARCHIVE="v$VERSION.tar.gz"
TEMP_DIR=$(mktemp -d)
echo "Installing dependencies ..."
sudo apt-get -qq install perl libdata-validate-ip-perl
# Download and install binary
cd "$TEMP_DIR"
echo "Downloading ddclient version $VERSION ..."
wget -q --show-progress "https://github.com/ddclient/ddclient/archive/v$VERSION.tar.gz"
DL_SHA=$(sha256sum "$TEMP_DIR/$ARCHIVE" | awk '{ print $1 }')
if [ ! "$DL_SHA" == "$SHA256" ]; then
echo "Downloaded archive does not match provided checksum"
exit 1
fi
tar -xzf "$ARCHIVE"
# Patch
if [ "$VERSION" == "3.9.0" ]; then
patch_file
fi
sudo cp "$FOLDER/ddclient" /usr/sbin/
sudo mkdir -p /etc/ddclient
sudo mkdir -p /var/cache/ddclient
# Setup service
sudo cp "$FOLDER/sample-etc_rc.d_init.d_ddclient.ubuntu" /etc/init.d/ddclient
sudo update-rc.d ddclient defaults
sudo service ddclient start
# Cleanup
rm -rf "$FOLDER"
rm -rf "$ARCHIVE"
echo "Installation complete"
}
uninstall()
{
sudo -v
echo "Uninstalling ddclient ..."
# Remove service
sudo service ddclient stop || true
sudo rm -f /etc/init.d/ddclient
sudo systemctl daemon-reload
sudo systemctl reset-failed
# Uninstall
sudo rm -f /usr/sbin/ddclient
echo "ddclient uninstalled"
}
purge()
{
uninstall
# Remove configs
sudo rm -rf /etc/ddclient
sudo rm -rf /var/cache/ddclient
echo "ddclient configs purged"
}
patch_file()
{
cd "$FOLDER"
echo "Patching ..."
# Download patch
wget -q "https://raw.githubusercontent.com/icolwell/install_scripts/master/ddclient-3.9.0.patch"
sudo apt-get -qq install patch
patch < ddclient-3.9.0.patch
cd ..
}
main "$@"