-
Notifications
You must be signed in to change notification settings - Fork 3
/
zt.sh
314 lines (277 loc) · 14 KB
/
zt.sh
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
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
#!/bin/bash
<<ENDOFSIGSTART=
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
ENDOFSIGSTART=
export PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
#
# ZeroTier install script
#
# All this script does is determine your OS and/or distribution and then add the correct
# repository or download the correct package and install it. It then starts the service
# and prints your device's ZeroTier address.
#
# Base URL for download.zerotier.com tree; see https://github.com/zerotier/download.zerotier.com if you want to mirror.
# Some things want http, some https, so we must specify both. Must include trailing /
ZT_BASE_URL_HTTPS='https://download.zerotier.com/'
ZT_BASE_URL_HTTP='http://download.zerotier.com/'
echo
echo '*** ZeroTier One Quick Install for Unix-like Systems'
echo
echo '*** Tested distributions and architectures:'
echo '*** MacOS (10.7+) on x86_64 (just installs ZeroTier One.pkg)'
echo '*** Debian (7+) on x86_64, x86, arm, and arm64'
echo '*** RedHat/CentOS (6+) on x86_64 and x86'
echo '*** Fedora (16+) on x86_64 and x86'
echo '*** SuSE (12+) on x86_64 and x86'
echo '*** Mint (18+) on x86_64, x86, arm, and arm64'
echo
echo '*** Please report problems to [email protected] and we will try to fix.'
echo
SUDO=
if [ "$UID" != "0" ]; then
if [ -e /usr/bin/sudo -o -e /bin/sudo ]; then
SUDO=sudo
else
echo '*** This quick installer script requires root privileges.'
exit 0
fi
fi
# Detect MacOS and install .pkg file there
if [ -e /usr/bin/uname ]; then
if [ "`/usr/bin/uname -s`" = "Darwin" ]; then
echo '*** Detected MacOS / Darwin, downloading and installing Mac .pkg...'
$SUDO rm -f "/tmp/ZeroTier One.pkg"
curl -s ${ZT_BASE_URL_HTTPS}dist/ZeroTier%20One.pkg >"/tmp/ZeroTier One.pkg"
$SUDO installer -pkg "/tmp/ZeroTier One.pkg" -target /
echo
echo '*** Waiting for identity generation...'
while [ ! -f "/Library/Application Support/ZeroTier/One/identity.secret" ]; do
sleep 1
done
echo
echo "*** Success! You are connected to port `cat '/Library/Application Support/ZeroTier/One/identity.public' | cut -d : -f 1` of Earth's planetary smart switch."
echo
exit 0
fi
fi
# Detect already-installed on Linux
if [ -f /usr/sbin/zerotier-one ]; then
echo '*** ZeroTier One appears to already be installed.'
exit 0
fi
rm -f /tmp/zt-gpg-key
echo '-----BEGIN PGP PUBLIC KEY BLOCK-----' >/tmp/zt-gpg-key
cat >>/tmp/zt-gpg-key << END_OF_KEY
Comment: GPGTools - https://gpgtools.org
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
=JgAv
END_OF_KEY
echo '-----END PGP PUBLIC KEY BLOCK-----' >>/tmp/zt-gpg-key
echo '*** Detecting Linux Distribution'
echo
if [ -f /etc/debian_version ]; then
dvers=`cat /etc/debian_version | cut -d '.' -f 1 | cut -d '/' -f 1`
$SUDO rm -f /tmp/zt-sources-list
if [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F trusty`" ]; then
echo '*** Found Ubuntu "trusty", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/trusty trusty main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F wily`" ]; then
echo '*** Found Ubuntu "wily", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/wily wily main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F xenial`" ]; then
echo '*** Found Ubuntu "xenial", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/xenial xenial main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F zesty`" ]; then
echo '*** Found Ubuntu "zesty", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/zesty zesty main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F precise`" ]; then
echo '*** Found Ubuntu "precise", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/precise precise main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F artful`" ]; then
echo '*** Found Ubuntu "artful", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/artful artful main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F cosmic`" ]; then
echo '*** Found Ubuntu "cosmic", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/bionic bionic main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F kali-rolling`" ]; then
echo '*** Found Kali Rolling, creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/bionic bionic main" >/tmp/zt-sources-list
elif [ -f /etc/lsb-release -a -n "`cat /etc/lsb-release 2>/dev/null | grep -F yakkety`" ]; then
echo '*** Found Ubuntu "yakkety", creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/yakkety yakkety main" >/tmp/zt-sources-list
elif [ "$dvers" = "6" -o "$dvers" = "squeeze" ]; then
echo '*** Found Debian "squeeze" (or similar), creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/squeeze squeeze main" >/tmp/zt-sources-list
elif [ "$dvers" = "7" -o "$dvers" = "wheezy" ]; then
echo '*** Found Debian "wheezy" (or similar), creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/wheezy wheezy main" >/tmp/zt-sources-list
elif [ "$dvers" = "8" -o "$dvers" = "jessie" ]; then
echo '*** Found Debian "jessie" (or similar), creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/jessie jessie main" >/tmp/zt-sources-list
elif [ "$dvers" = "9" -o "$dvers" = "stretch" ]; then
echo '*** Found Debian "stretch" (or similar), creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/stretch stretch main" >/tmp/zt-sources-list
elif [ "$dvers" = "10" -o "$dvers" = "11" -o "$dvers" = "sid" -o "$dvers" = "buster" ]; then
echo '*** Found Debian "buster", or "sid" (or similar), creating /etc/apt/sources.list.d/zerotier.list'
echo "deb ${ZT_BASE_URL_HTTP}debian/buster buster main" >/tmp/zt-sources-list
else
echo "*** FAILED: unrecognized or ancient distribution: $dvers"
exit 1
fi
$SUDO mv -f /tmp/zt-sources-list /etc/apt/sources.list.d/zerotier.list
$SUDO chown 0 /etc/apt/sources.list.d/zerotier.list
$SUDO chgrp 0 /etc/apt/sources.list.d/zerotier.list
$SUDO apt-key add /tmp/zt-gpg-key
echo
echo '*** Installing zerotier-one package...'
# Pre-1.1.6 Debian package did not properly enumerate its files, causing
# problems when we try to replace it. So just delete them to force.
if [ -d /var/lib/zerotier-one ]; then
$SUDO rm -f /etc/init.d/zerotier-one /etc/systemd/system/multi-user.target.wants/zerotier-one.service /var/lib/zerotier-one/zerotier-one /usr/local/bin/zerotier-cli /usr/bin/zerotier-cli /usr/local/bin/zero
fi
cat /dev/null | $SUDO apt-get update
cat /dev/null | $SUDO apt-get install -y zerotier-one
elif [ -f /etc/SuSE-release -o -f /etc/suse-release -o -f /etc/SUSE-brand -o -f /etc/SuSE-brand -o -f /etc/suse-brand ]; then
echo '*** Found SuSE, adding zypper YUM repo...'
cat /dev/null | $SUDO zypper addrepo -t YUM -g ${ZT_BASE_URL_HTTP}redhat/el/7 zerotier
cat /dev/null | $SUDO rpm --import /tmp/zt-gpg-key
echo
echo '*** Installing zeortier-one package...'
cat /dev/null | $SUDO zypper install -y zerotier-one
elif [ -d /etc/yum.repos.d ]; then
baseurl="${ZT_BASE_URL_HTTP}redhat/el/7"
if [ -n "`cat /etc/redhat-release 2>/dev/null | grep -i fedora`" ]; then
echo "*** Found Fedora, creating /etc/yum.repos.d/zerotier.repo"
baseurl="${ZT_BASE_URL_HTTP}redhat/fc/22"
elif [ -n "`cat /etc/redhat-release 2>/dev/null | grep -i centos`" -o -n "`cat /etc/redhat-release 2>/dev/null | grep -i enterprise`" ]; then
echo "*** Found RHEL/CentOS, creating /etc/yum.repos.d/zerotier.repo"
baseurl="${ZT_BASE_URL_HTTP}redhat/el/\$releasever"
elif [ -n "`cat /etc/system-release 2>/dev/null | grep -i amazon`" ]; then
echo "*** Found Amazon (CentOS/RHEL based), creating /etc/yum.repos.d/zerotier.repo"
if [ -n "`cat /etc/system-release 2>/dev/null | grep -F 'Amazon Linux 2'`" ]; then
baseurl="${ZT_BASE_URL_HTTP}redhat/el/7"
else
baseurl="${ZT_BASE_URL_HTTP}redhat/amzn1/2016.03"
fi
else
echo "*** Found unknown yum-based repo, using el/7, creating /etc/yum.repos.d/zerotier.repo"
fi
$SUDO rpm --import /tmp/zt-gpg-key
$SUDO rm -f /tmp/zerotier.repo
echo '[zerotier]' >/tmp/zerotier.repo
echo 'name=ZeroTier, Inc. RPM Release Repository' >>/tmp/zerotier.repo
echo "baseurl=$baseurl" >>/tmp/zerotier.repo
echo 'enabled=1' >>/tmp/zerotier.repo
echo 'gpgcheck=1' >>/tmp/zerotier.repo
$SUDO mv -f /tmp/zerotier.repo /etc/yum.repos.d/zerotier.repo
$SUDO chown 0 /etc/yum.repos.d/zerotier.repo
$SUDO chgrp 0 /etc/yum.repos.d/zerotier.repo
echo
echo '*** Installing zerotier-one package...'
if [ -e /usr/bin/dnf ]; then
cat /dev/null | $SUDO dnf install -y zerotier-one
else
cat /dev/null | $SUDO yum install -y zerotier-one
fi
fi
$SUDO rm -f /tmp/zt-gpg-key
if [ ! -e /usr/sbin/zerotier-one ]; then
echo
echo '*** Package installation failed! Unfortunately there may not be a package'
echo '*** for your architecture or distribution. For the source go to:'
echo '*** https://github.com/zerotier/ZeroTierOne'
echo
exit 1
fi
echo
echo '*** Enabling and starting zerotier-one service...'
if [ -e /usr/bin/systemctl -o -e /usr/sbin/systemctl -o -e /sbin/systemctl -o -e /bin/systemctl ]; then
$SUDO systemctl enable zerotier-one
$SUDO systemctl start zerotier-one
if [ "$?" != "0" ]; then
echo
echo '*** Package installed but cannot start service! You may be in a Docker'
echo '*** container or using a non-standard init service.'
echo
exit 1
fi
else
if [ -e /sbin/update-rc.d -o -e /usr/sbin/update-rc.d -o -e /bin/update-rc.d -o -e /usr/bin/update-rc.d ]; then
$SUDO update-rc.d zerotier-one defaults
else
$SUDO chkconfig zerotier-one on
fi
$SUDO /etc/init.d/zerotier-one start
fi
echo
echo '*** Waiting for identity generation...'
while [ ! -f /var/lib/zerotier-one/identity.secret ]; do
sleep 1
done
echo
echo "*** Success! You are ZeroTier address [ `cat /var/lib/zerotier-one/identity.public | cut -d : -f 1` ]."
echo
exit 0
-----BEGIN PGP SIGNATURE-----
iQJJBAEBCAAzFiEEdKXpxFjhpDHx2lenFlcZiCPlKmEFAluqWHkVHGNvbnRhY3RA
emVyb3RpZXIuY29tAAoJEBZXGYgj5SphXH0QAIYbK1aCNlkRyeHLiwCcU87o/2kf
YbzjhlmDogl/0/SVRNm6eNGsauF7puDsZFoYQRrd76vq5YQy6DmoXqMlOOikLLFJ
ffweV8Jv0sfmvXH/xTiu3VOUvprPjmILIIDBRVjFteu/M+Rdt23YDTz+xd36mzMD
C5JQW47yWdy/VNT7ChpuEsNtSbPyBNZIQlP1tNqeK9/YeUhruj+64DFy0LWJ9p2G
CY5U8IRpNo56UwGrGwaDZqTsx7m9kmtQTNJOu5yKAu3XUM7PLFkOukxZXFXG2NUQ
/5NHxE7FGKjEuBkTymqETnd6U7thCwOl1fnVkga01ekQ5MxbYgyFePsHThi+3v5o
CJqL1L3hzrEo6VhpHi/W5Cj4OaIltSW4cJFW/E0Tm3mA7gI8dSGHrifFxQ0MAZ1w
hFLtn0i1haLtTmkFxu9ZAYIQMaOxqgDrRLDSCrLP9ClMOu+q4QHfrSH9AfT9jh4C
kLr1F/aK3wQn+GvQ+caqii2J2Iz4Vvvf+2j9DSWjWPWmOKoItReF/JtaaXVOhcNQ
UZAf6ICLTOAj+HNoy8rrw4Htc17dz00Di61YTwB7kbDuA5yq3aBM4ZeohBzGuOpu
teekqWn3njwuCHOmYxPg7F60jAScVBMChLQ6nR6mnIKzw8iEE6Y9ceEEXNJws+3c
+zS2p9ptHSW0PY7l
=bV5f
-----END PGP SIGNATURE-----