|
@@ -33,477 +33,13 @@ PROJECT_NAME='freedombone'
|
33
|
33
|
export TEXTDOMAIN=${PROJECT_NAME}-meshweb
|
34
|
34
|
export TEXTDOMAINDIR="/usr/share/locale"
|
35
|
35
|
|
36
|
|
-# client or server installations sounds odd for a mesh, but this
|
37
|
|
-# indicates whether this is a dedicated mesh peer ("yes") or
|
38
|
|
-# a 'client' such as a laptop or desktop machine with
|
39
|
|
-# the freedombone-client script installed
|
40
|
|
-SERVER_INSTALLATION="no"
|
41
|
|
-
|
42
|
|
-PEERS_FILE=/tmp/meshwebstart
|
43
|
|
-
|
44
|
|
-ZERONET_REPO='https://github.com/HelloZeroNet/ZeroNet.git'
|
45
|
|
-ZERONET_COMMIT='675bd462556c541d65e2d95f91f899146a373aad'
|
46
|
|
-ZERONET_BLOG_REPO='https://github.com/HelloZeroNet/ZeroBlog'
|
47
|
|
-ZERONET_BLOG_COMMIT='bbb0d6c36465fed2e6df71f1aab45fcc9c6ad609'
|
48
|
|
-ZERONET_MAIL_REPO='https://github.com/HelloZeroNet/ZeroMail'
|
49
|
|
-ZERONET_MAIL_COMMIT='955af09d643c72b02e4983d71eca5c0c93a6c131'
|
50
|
|
-ZERONET_FORUM_REPO='https://github.com/HelloZeroNet/ZeroTalk'
|
51
|
|
-ZERONET_FORUM_COMMIT='e2d2c9cb1cfbfef91b244935efb5c14c2ad95faa'
|
52
|
|
-ZERONET_URL=http://127.0.0.1:43110
|
53
|
|
-ZERONET_PORT=15441
|
54
|
|
-TRACKER_PORT=6969
|
55
|
|
-MY_USERNAME=$USER
|
56
|
|
-ZERONET_DIR=/home/$MY_USERNAME/zeronet
|
57
|
|
-UPDATED="no"
|
58
|
|
-ZERONET_DEFAULT_BLOG_TAGLINE=$"Blogging on the Mesh"
|
59
|
|
-ZERONET_DEFAULT_FORUM_TAGLINE=$"A decentralized discussion group"
|
60
|
|
-ZERONET_DEFAULT_MAIL_TAGLINE=$"Mail for the Mesh"
|
61
|
|
-
|
62
|
|
-IPFS_PORT=4001
|
63
|
|
-
|
64
|
36
|
MESH_INSTALL_DIR=/var/lib
|
65
|
|
-
|
66
|
|
-function install_ipfs {
|
67
|
|
- if [ ! -f /home/$MY_USERNAME/go/bin/ipfs ]; then
|
68
|
|
- if [ ! -d /usr/local/go ]; then
|
69
|
|
- sudo apt-get -y install golang
|
70
|
|
- fi
|
71
|
|
- sudo apt-get -y install libpam0g-dev fuse
|
72
|
|
- if ! grep -q "GOROOT" /home/$MY_USERNAME/.bashrc; then
|
73
|
|
- if [ -d /usr/local/go ]; then
|
74
|
|
- echo "export GOROOT=/usr/local/go" >> /home/$MY_USERNAME/.bashrc
|
75
|
|
- fi
|
76
|
|
- fi
|
77
|
|
- if ! grep -q "GOPATH/bin" /home/$MY_USERNAME/.bashrc; then
|
78
|
|
- echo "export GOPATH=/home/$MY_USERNAME/go" >> /home/$MY_USERNAME/.bashrc
|
79
|
|
- echo 'export PATH="$GOPATH/bin:$PATH:";' >> /home/$MY_USERNAME/.bashrc
|
80
|
|
- chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.bashrc
|
81
|
|
- fi
|
82
|
|
- if [ ! -d /home/$MY_USERNAME/go ]; then
|
83
|
|
- mkdir /home/$MY_USERNAME/go
|
84
|
|
- fi
|
85
|
|
- . /home/$MY_USERNAME/.bashrc
|
86
|
|
- go get -u github.com/ipfs/go-ipfs/cmd/ipfs
|
87
|
|
- if [ ! "$?" = "0" ]; then
|
88
|
|
- exit 8242
|
89
|
|
- fi
|
90
|
|
- fi
|
91
|
|
-
|
92
|
|
- if [ ! -d /home/$MY_USERNAME/.ipfs ]; then
|
93
|
|
- ipfs init -b 4096
|
94
|
|
- if [ ! -d /home/$MY_USERNAME/.ipfs ]; then
|
95
|
|
- echo $"IPFS could not be initialised"
|
96
|
|
- exit 7358
|
97
|
|
- fi
|
98
|
|
-
|
99
|
|
- # directories to mount to
|
100
|
|
- if [ ! -d /ipfs ]; then
|
101
|
|
- sudo mkdir /ipfs
|
102
|
|
- sudo mkdir /ipns
|
103
|
|
- sudo chown $MY_USERNAME:$MY_USERNAME /ipfs
|
104
|
|
- sudo chown $MY_USERNAME:$MY_USERNAME /ipns
|
105
|
|
- fi
|
106
|
|
-
|
107
|
|
- if [ -f /etc/fuse.conf ]; then
|
108
|
|
- sudo chown $MY_USERNAME:$MY_USERNAME /etc/fuse.conf
|
109
|
|
- fi
|
110
|
|
- if [ -f /dev/fuse ]; then
|
111
|
|
- sudo chown $MY_USERNAME:$MY_USERNAME /dev/fuse
|
112
|
|
- fi
|
113
|
|
- fi
|
114
|
|
-
|
115
|
|
- IPFS_PEER_ID=$(ipfs id | grep '\"ID\":' | awk -F '\"' '{print $4}')
|
116
|
|
- if [ ${#IPFS_PEER_ID} -lt 10 ]; then
|
117
|
|
- echo $'Invalid IPFS peer ID'
|
118
|
|
- echo "$IPFS_PEER_ID"
|
119
|
|
- exit 74782
|
120
|
|
- fi
|
121
|
|
-
|
122
|
|
- # Add an avahi service
|
123
|
|
- echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/ipfs.service
|
124
|
|
- echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/ipfs.service
|
125
|
|
- echo '<service-group>' >> /tmp/ipfs.service
|
126
|
|
- echo ' <name replace-wildcards="yes">%h IPFS</name>' >> /tmp/ipfs.service
|
127
|
|
- echo ' <service>' >> /tmp/ipfs.service
|
128
|
|
- echo ' <type>_ipfs._tcp</type>' >> /tmp/ipfs.service
|
129
|
|
- echo " <port>$IPFS_PORT</port>" >> /tmp/ipfs.service
|
130
|
|
- echo " <txt-record>$IPFS_PEER_ID</txt-record>" >> /tmp/ipfs.service
|
131
|
|
- echo ' </service>' >> /tmp/ipfs.service
|
132
|
|
- echo '</service-group>' >> /tmp/ipfs.service
|
133
|
|
- sudo cp /tmp/ipfs.service /etc/avahi/services/ipfs.service
|
134
|
|
-}
|
135
|
|
-
|
136
|
|
-function install_zeronet_blog {
|
137
|
|
- if [ ! -f /home/$MY_USERNAME/README ]; then
|
138
|
|
- touch /home/$MY_USERNAME/README
|
139
|
|
- fi
|
140
|
|
-
|
141
|
|
- if grep -q "ZeroNet Blog address" /home/$MY_USERNAME/README; then
|
142
|
|
- return
|
143
|
|
- fi
|
144
|
|
-
|
145
|
|
- if [ ! -d /etc/avahi ]; then
|
146
|
|
- echo $'Avahi is not installed'
|
147
|
|
- exit 736
|
148
|
|
- fi
|
149
|
|
-
|
150
|
|
- ZERONET_DEFAULT_BLOG_TITLE=$"${MY_USERNAME}'s Blog"
|
151
|
|
-
|
152
|
|
- cd $ZERONET_DIR
|
153
|
|
- python zeronet.py --batch siteCreate 2> $ZERONET_DIR/blog.txt
|
154
|
|
- if [ ! -f $ZERONET_DIR/blog.txt ]; then
|
155
|
|
- echo $'Unable to create blog'
|
156
|
|
- exit 479
|
157
|
|
- fi
|
158
|
|
- blog_address=$(cat blog.txt | grep "Site address" | awk -F ':' '{print $2}')
|
159
|
|
- blog_private_key=$(cat blog.txt | grep "Site private key" | awk -F ':' '{print $2}')
|
160
|
|
- ZERONET_BLOG_ADDRESS=${blog_address//[[:blank:]]/}
|
161
|
|
- ZERONET_BLOG_PRIVATE_KEY=${blog_private_key//[[:blank:]]/}
|
162
|
|
-
|
163
|
|
- if [ ${#ZERONET_BLOG_ADDRESS} -lt 20 ]; then
|
164
|
|
- echo $"Address: $ZERONET_BLOG_ADDRESS"
|
165
|
|
- echo $"Public key: $ZERONET_BLOG_PRIVATE_KEY"
|
166
|
|
- echo $'Unable to create zeronet blog address'
|
167
|
|
- exit 7358
|
168
|
|
- fi
|
169
|
|
-
|
170
|
|
- if [ ${#ZERONET_BLOG_PRIVATE_KEY} -lt 20 ]; then
|
171
|
|
- echo $"Address: $ZERONET_BLOG_ADDRESS"
|
172
|
|
- echo $"Public key: $ZERONET_BLOG_PRIVATE_KEY"
|
173
|
|
- echo $'Unable to create zeronet blog private key'
|
174
|
|
- exit 1639
|
175
|
|
- fi
|
176
|
|
-
|
177
|
|
- if [ ! -d "$ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS" ]; then
|
178
|
|
- echo $"Unable to find site directory: $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS"
|
179
|
|
- exit 7638
|
180
|
|
- fi
|
181
|
|
-
|
182
|
|
- git clone $ZERONET_BLOG_REPO ZeroBlog
|
183
|
|
- if [ ! -d $ZERONET_DIR/ZeroBlog ]; then
|
184
|
|
- echo $'ZeroBlog repo could not be cloned'
|
185
|
|
- exit 6739
|
186
|
|
- fi
|
187
|
|
- cd $MESH_INSTALL_DIR/zeronet/ZeroBlog
|
188
|
|
- git checkout $ZERONET_BLOG_COMMIT -b $ZERONET_BLOG_COMMIT
|
189
|
|
-
|
190
|
|
- echo $"Blog address: $ZERONET_BLOG_ADDRESS"
|
191
|
|
- echo $"Blog private key: $ZERONET_BLOG_PRIVATE_KEY"
|
192
|
|
- cp -r $ZERONET_DIR/ZeroBlog/* $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS
|
193
|
|
- if [ ! -d $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/data ]; then
|
194
|
|
- mkdir $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/data
|
195
|
|
- fi
|
196
|
|
- cp $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/data-default/data.json $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/data
|
197
|
|
- sed -i "s/MyZeroBlog/$ZERONET_DEFAULT_BLOG_TITLE/g" $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/data/data.json
|
198
|
|
- sed -i "s/My ZeroBlog./$ZERONET_DEFAULT_BLOG_TAGLINE/g" $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/data/data.json
|
199
|
|
- sed -i "s/ZeroBlog Demo/$ZERONET_DEFAULT_BLOG_TITLE/g" $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/index.html
|
200
|
|
- sed -i "s|<h3 class=\"description\">.*|<h3 class="description">$ZERONET_DEFAULT_BLOG_TAGLINE</h3>|g" $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/index.html
|
201
|
|
- sed -i "s/Blogging platform Demo/Blogging platform/g" $ZERONET_DIR/data/$ZERONET_BLOG_ADDRESS/content.json
|
202
|
|
- python zeronet.py siteSign $ZERONET_BLOG_ADDRESS $ZERONET_BLOG_PRIVATE_KEY
|
203
|
|
-
|
204
|
|
- # Add an avahi service
|
205
|
|
- echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-blog.service
|
206
|
|
- echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-blog.service
|
207
|
|
- echo '<service-group>' >> /tmp/zeronet-blog.service
|
208
|
|
- echo ' <name replace-wildcards="yes">%h ZeroNet Blog</name>' >> /tmp/zeronet-blog.service
|
209
|
|
- echo ' <service>' >> /tmp/zeronet-blog.service
|
210
|
|
- echo ' <type>_zeronet._udp</type>' >> /tmp/zeronet-blog.service
|
211
|
|
- echo " <port>$ZERONET_PORT</port>" >> /tmp/zeronet-blog.service
|
212
|
|
- echo " <txt-record>$ZERONET_URL/$ZERONET_BLOG_ADDRESS</txt-record>" >> /tmp/zeronet-blog.service
|
213
|
|
- echo ' </service>' >> /tmp/zeronet-blog.service
|
214
|
|
- echo '</service-group>' >> /tmp/zeronet-blog.service
|
215
|
|
- sudo cp /tmp/zeronet-blog.service /etc/avahi/services/zeronet-blog.service
|
216
|
|
-
|
217
|
|
- if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
|
218
|
|
- mkdir -p /home/$MY_USERNAME/.config/zeronet
|
219
|
|
- chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
|
220
|
|
- fi
|
221
|
|
- echo "$ZERONET_URL/$ZERONET_BLOG_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/myblog
|
222
|
|
-
|
223
|
|
- if ! grep -q "ZeroNet Blog address" /home/$MY_USERNAME/README; then
|
224
|
|
- echo '' >> /home/$MY_USERNAME/README
|
225
|
|
- echo $"ZeroNet Blog address: $ZERONET_BLOG_ADDRESS" >> /home/$MY_USERNAME/README
|
226
|
|
- echo $"ZeroNet Blog private key: $ZERONET_BLOG_PRIVATE_KEY" >> /home/$MY_USERNAME/README
|
227
|
|
- fi
|
228
|
|
-
|
229
|
|
- echo $'Zeronet blog installed'
|
230
|
|
-}
|
231
|
|
-
|
232
|
|
-function install_zeronet_mail {
|
233
|
|
- if [ ! -f /home/$MY_USERNAME/README ]; then
|
234
|
|
- touch /home/$MY_USERNAME/README
|
235
|
|
- fi
|
236
|
|
-
|
237
|
|
- if grep -q "ZeroNet Mail address" /home/$MY_USERNAME/README; then
|
238
|
|
- return
|
239
|
|
- fi
|
240
|
|
-
|
241
|
|
- if [ ! -d /etc/avahi ]; then
|
242
|
|
- echo $'Avahi is not installed'
|
243
|
|
- exit 736
|
244
|
|
- fi
|
245
|
|
-
|
246
|
|
- ZERONET_DEFAULT_MAIL_TITLE=$"${MY_USERNAME}'s Mail"
|
247
|
|
-
|
248
|
|
- cd $MESH_INSTALL_DIR/zeronet
|
249
|
|
- python zeronet.py --batch siteCreate 2> $MESH_INSTALL_DIR/zeronet/mail.txt
|
250
|
|
- if [ ! -f $MESH_INSTALL_DIR/zeronet/mail.txt ]; then
|
251
|
|
- echo 'Unable to create mail'
|
252
|
|
- exit 479
|
253
|
|
- fi
|
254
|
|
- mail_address=$(cat mail.txt | grep "Site address" | awk -F ':' '{print $2}')
|
255
|
|
- mail_private_key=$(cat mail.txt | grep "Site private key" | awk -F ':' '{print $2}')
|
256
|
|
- ZERONET_MAIL_ADDRESS=${mail_address//[[:blank:]]/}
|
257
|
|
- ZERONET_MAIL_PRIVATE_KEY=${mail_private_key//[[:blank:]]/}
|
258
|
|
-
|
259
|
|
- if [ ${#ZERONET_MAIL_ADDRESS} -lt 20 ]; then
|
260
|
|
- echo $"Address: $ZERONET_MAIL_ADDRESS"
|
261
|
|
- echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
|
262
|
|
- echo $'Unable to create zeronet mail address'
|
263
|
|
- exit 7358
|
264
|
|
- fi
|
265
|
|
-
|
266
|
|
- if [ ${#ZERONET_MAIL_PRIVATE_KEY} -lt 20 ]; then
|
267
|
|
- echo $"Address: $ZERONET_MAIL_ADDRESS"
|
268
|
|
- echo $"Public key: $ZERONET_MAIL_PRIVATE_KEY"
|
269
|
|
- echo $'Unable to create zeronet mail private key'
|
270
|
|
- exit 1639
|
271
|
|
- fi
|
272
|
|
-
|
273
|
|
- if [ ! -d "$MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS" ]; then
|
274
|
|
- echo $"Unable to find site directory: $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS"
|
275
|
|
- exit 7638
|
276
|
|
- fi
|
277
|
|
-
|
278
|
|
- git clone $ZERONET_MAIL_REPO ZeroMail
|
279
|
|
- if [ ! -d $MESH_INSTALL_DIR/zeronet/ZeroMail ]; then
|
280
|
|
- echo $'ZeroMail repo could not be cloned'
|
281
|
|
- exit 6739
|
282
|
|
- fi
|
283
|
|
- cd $MESH_INSTALL_DIR/zeronet/ZeroMail
|
284
|
|
- git checkout $ZERONET_MAIL_COMMIT -b $ZERONET_MAIL_COMMIT
|
285
|
|
-
|
286
|
|
- echo $"ZeroNet Mail address: $ZERONET_MAIL_ADDRESS"
|
287
|
|
- echo $"ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY"
|
288
|
|
- cp -r $MESH_INSTALL_DIR/zeronet/ZeroMail/* $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS
|
289
|
|
-
|
290
|
|
- if [ ! -d $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/data ]; then
|
291
|
|
- mkdir $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/data
|
292
|
|
- fi
|
293
|
|
- cp $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/data-default/data.json $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/data
|
294
|
|
- sed -i "s/MyZeroMail/$ZERONET_DEFAULT_MAIL_TITLE/g" $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
|
295
|
|
- sed -i "s/My ZeroMail./$ZERONET_DEFAULT_MAIL_TAGLINE/g" $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/data/data.json
|
296
|
|
- sed -i "s/ZeroMail Demo/$ZERONET_DEFAULT_MAIL_TITLE/g" $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
|
297
|
|
- sed -i "s|<h3 class=\"description\">.*|<h3 class=\"description\">$ZERONET_DEFAULT_MAIL_TAGLINE</h3>|g" $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/index.html
|
298
|
|
- sed -i "s/Mailging platform Demo/Mailging platform/g" $MESH_INSTALL_DIR/zeronet/data/$ZERONET_MAIL_ADDRESS/content.json
|
299
|
|
- python zeronet.py siteSign $ZERONET_MAIL_ADDRESS $ZERONET_MAIL_PRIVATE_KEY
|
300
|
|
-
|
301
|
|
- # Add an avahi service
|
302
|
|
- echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-mail.service
|
303
|
|
- echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-mail.service
|
304
|
|
- echo '<service-group>' >> /tmp/zeronet-mail.service
|
305
|
|
- echo ' <name replace-wildcards="yes">%h ZeroNet Mail</name>' >> /tmp/zeronet-mail.service
|
306
|
|
- echo ' <service>' >> /tmp/zeronet-mail.service
|
307
|
|
- echo ' <type>_zeronet._udp</type>' >> /tmp/zeronet-mail.service
|
308
|
|
- echo " <port>$ZERONET_PORT</port>" >> /tmp/zeronet-mail.service
|
309
|
|
- echo " <txt-record>$ZERONET_URL/$ZERONET_MAIL_ADDRESS</txt-record>" >> /tmp/zeronet-mail.service
|
310
|
|
- echo ' </service>' >> /tmp/zeronet-mail.service
|
311
|
|
- echo '</service-group>' >> /tmp/zeronet-mail.service
|
312
|
|
- cp /tmp/zeronet-mail.service /etc/avahi/services/zeronet-mail.service
|
313
|
|
-
|
314
|
|
- if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
|
315
|
|
- mkdir -p /home/$MY_USERNAME/.config/zeronet
|
316
|
|
- chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
|
317
|
|
- fi
|
318
|
|
- echo "$ZERONET_URL/$ZERONET_MAIL_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/mymail
|
319
|
|
-
|
320
|
|
- if ! grep -q "ZeroNet Mail address" /home/$MY_USERNAME/README; then
|
321
|
|
- echo '' >> /home/$MY_USERNAME/README
|
322
|
|
- echo "ZeroNet Mail address: $ZERONET_MAIL_ADDRESS" >> /home/$MY_USERNAME/README
|
323
|
|
- echo "ZeroNet Mail private key: $ZERONET_MAIL_PRIVATE_KEY" >> /home/$MY_USERNAME/README
|
324
|
|
- fi
|
325
|
|
-
|
326
|
|
- echo $'Zeronet mail installed'
|
327
|
|
-}
|
328
|
|
-
|
329
|
|
-function install_zeronet_forum {
|
330
|
|
- if [ ! -f /home/$MY_USERNAME/README ]; then
|
331
|
|
- touch /home/$MY_USERNAME/README
|
332
|
|
- fi
|
333
|
|
-
|
334
|
|
- if grep -q "ZeroNet Forum address" /home/$MY_USERNAME/README; then
|
335
|
|
- return
|
336
|
|
- fi
|
337
|
|
-
|
338
|
|
- if [ ! -d /etc/avahi ]; then
|
339
|
|
- echo $'Avahi is not installed'
|
340
|
|
- exit 736
|
341
|
|
- fi
|
342
|
|
-
|
343
|
|
- ZERONET_DEFAULT_FORUM_TITLE="${MY_USERNAME}'s Forum"
|
344
|
|
-
|
345
|
|
- cd $ZERONET_DIR
|
346
|
|
- python zeronet.py --batch siteCreate 2> $ZERONET_DIR/forum.txt
|
347
|
|
- if [ ! -f $ZERONET_DIR/forum.txt ]; then
|
348
|
|
- echo $'Unable to create forum'
|
349
|
|
- exit 479
|
350
|
|
- fi
|
351
|
|
- forum_address=$(cat forum.txt | grep "Site address" | awk -F ':' '{print $2}')
|
352
|
|
- forum_private_key=$(cat forum.txt | grep "Site private key" | awk -F ':' '{print $2}')
|
353
|
|
- ZERONET_FORUM_ADDRESS=${forum_address//[[:blank:]]/}
|
354
|
|
- ZERONET_FORUM_PRIVATE_KEY=${forum_private_key//[[:blank:]]/}
|
355
|
|
-
|
356
|
|
- if [ ${#ZERONET_FORUM_ADDRESS} -lt 20 ]; then
|
357
|
|
- echo $"Address: $ZERONET_FORUM_ADDRESS"
|
358
|
|
- echo $"Public key: $ZERONET_FORUM_PRIVATE_KEY"
|
359
|
|
- echo $'Unable to create zeronet forum address'
|
360
|
|
- exit 76352
|
361
|
|
- fi
|
362
|
|
-
|
363
|
|
- if [ ${#ZERONET_FORUM_PRIVATE_KEY} -lt 20 ]; then
|
364
|
|
- echo $"Address: $ZERONET_FORUM_ADDRESS"
|
365
|
|
- echo $"Public key: $ZERONET_FORUM_PRIVATE_KEY"
|
366
|
|
- echo $'Unable to create zeronet forum private key'
|
367
|
|
- exit 87356
|
368
|
|
- fi
|
369
|
|
-
|
370
|
|
- if [ ! -d "$ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS" ]; then
|
371
|
|
- echo $"Unable to find site directory: $ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS"
|
372
|
|
- exit 7638
|
373
|
|
- fi
|
374
|
|
-
|
375
|
|
- git clone $ZERONET_FORUM_REPO ZeroTalk
|
376
|
|
- if [ ! -d $ZERONET_DIR/ZeroTalk ]; then
|
377
|
|
- echo $'ZeroTalk repo could not be cloned'
|
378
|
|
- exit 6739
|
379
|
|
- fi
|
380
|
|
- cd $MESH_INSTALL_DIR/zeronet/ZeroTalk
|
381
|
|
- git checkout $ZERONET_FORUM_COMMIT -b $ZERONET_FORUM_COMMIT
|
382
|
|
-
|
383
|
|
- echo $"Forum address: $ZERONET_FORUM_ADDRESS"
|
384
|
|
- echo $"Forum private key: $ZERONET_FORUM_PRIVATE_KEY"
|
385
|
|
- cp -r $ZERONET_DIR/ZeroTalk/* $ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS
|
386
|
|
- sed -i "s/ZeroBoard/$ZERONET_DEFAULT_FORUM_TITLE/g" $ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS/index.html
|
387
|
|
- sed -i "s/ZeroTalk/$ZERONET_DEFAULT_FORUM_TITLE/g" $ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS/index.html
|
388
|
|
- sed -i "s|Demo for dynamic, decentralized content publishing.|$ZERONET_DEFAULT_FORUM_TAGLINE|g" $ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS/index.html
|
389
|
|
- sed -i 's/Messaging Board Demo/Messaging Board/g' $ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS/content.json
|
390
|
|
- sed -i "s/ZeroBoard/$ZERONET_DEFAULT_FORUM_TITLE/g" $ZERONET_DIR/data/$ZERONET_FORUM_ADDRESS/content.json
|
391
|
|
- python zeronet.py siteSign $ZERONET_FORUM_ADDRESS $ZERONET_FORUM_PRIVATE_KEY
|
392
|
|
- python zeronet.py siteSign $ZERONET_FORUM_ADDRESS $ZERONET_FORUM_PRIVATE_KEY --inner_path data/users/content.json
|
393
|
|
-
|
394
|
|
- # Add an avahi service
|
395
|
|
- echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-forum.service
|
396
|
|
- echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-forum.service
|
397
|
|
- echo '<service-group>' >> /tmp/zeronet-forum.service
|
398
|
|
- echo ' <name replace-wildcards="yes">%h ZeroNet Forum</name>' >> /tmp/zeronet-forum.service
|
399
|
|
- echo ' <service>' >> /tmp/zeronet-forum.service
|
400
|
|
- echo ' <type>_zeronet._udp</type>' >> /tmp/zeronet-forum.service
|
401
|
|
- echo " <port>$ZERONET_PORT</port>" >> /tmp/zeronet-forum.service
|
402
|
|
- echo " <txt-record>$ZERONET_URL/$ZERONET_FORUM_ADDRESS</txt-record>" >> /tmp/zeronet-forum.service
|
403
|
|
- echo ' </service>' >> /tmp/zeronet-forum.service
|
404
|
|
- echo '</service-group>' >> /tmp/zeronet-forum.service
|
405
|
|
- sudo cp /tmp/zeronet-forum.service /etc/avahi/services/zeronet-forum.service
|
406
|
|
-
|
407
|
|
- if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
|
408
|
|
- mkdir -p /home/$MY_USERNAME/.config/zeronet
|
409
|
|
- chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
|
410
|
|
- fi
|
411
|
|
- echo "$ZERONET_URL/$ZERONET_FORUM_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/myforum
|
412
|
|
-
|
413
|
|
- if ! grep -q "ZeroNet Forum address" /home/$MY_USERNAME/README; then
|
414
|
|
- echo '' >> /home/$MY_USERNAME/README
|
415
|
|
- echo $"ZeroNet Forum address: $ZERONET_FORUM_ADDRESS" >> /home/$MY_USERNAME/README
|
416
|
|
- echo $"ZeroNet Forum private key: $ZERONET_FORUM_PRIVATE_KEY" >> /home/$MY_USERNAME/README
|
417
|
|
- fi
|
418
|
|
-
|
419
|
|
- echo $'Zeronet forum installed'
|
420
|
|
-}
|
421
|
|
-
|
422
|
|
-function install_web_server {
|
423
|
|
- if [ -d /etc/nginx ]; then
|
424
|
|
- return
|
425
|
|
- fi
|
426
|
|
-
|
427
|
|
- if [[ $UPDATED == "no" ]]; then
|
428
|
|
- sudo apt-get update
|
429
|
|
- UPDATED="yes"
|
430
|
|
- fi
|
431
|
|
-
|
432
|
|
- sudo apt-get -y remove --purge apache2
|
433
|
|
- if [ -d /etc/apache2 ]; then
|
434
|
|
- sudo rm -rf /etc/apache2
|
435
|
|
- fi
|
436
|
|
- # install nginx
|
437
|
|
- sudo apt-get -y install nginx
|
438
|
|
-
|
439
|
|
- if [ ! -d /etc/nginx ]; then
|
440
|
|
- echo $'Unable to install web server'
|
441
|
|
- exit 51
|
442
|
|
- fi
|
443
|
|
-}
|
444
|
|
-
|
445
|
|
-function install_zeronet {
|
446
|
|
- if [ -d $ZERONET_DIR ]; then
|
447
|
|
- return
|
448
|
|
- fi
|
449
|
|
-
|
450
|
|
- if [[ $UPDATED == "no" ]]; then
|
451
|
|
- sudo apt-get update
|
452
|
|
- UPDATED="yes"
|
453
|
|
- fi
|
454
|
|
-
|
455
|
|
- sudo apt-get -y install python python-msgpack python-gevent
|
456
|
|
- sudo apt-get -y install python-pip bittornado
|
457
|
|
- sudo pip install msgpack-python --upgrade
|
458
|
|
-
|
459
|
|
- git clone $ZERONET_REPO $ZERONET_DIR
|
460
|
|
- if [ ! -d $ZERONET_DIR ]; then
|
461
|
|
- exit 56823
|
462
|
|
- fi
|
463
|
|
- cd $ZERONET_DIR
|
464
|
|
- git checkout $ZERONET_COMMIT -b $ZERONET_COMMIT
|
465
|
|
- #cd $ZERONET_DIR
|
466
|
|
- #git checkout bashrc/bootstrap-file
|
467
|
|
- # Hack to ensure that the file access port is opened
|
468
|
|
- # This is because zeronet normally relies on an internet site
|
469
|
|
- # to do this, but on a purely local mesh the internet isn't available
|
470
|
|
- sed -i 's|fileserver_port = 0|fileserver_port = config.fileserver_port\n sys.modules["main"].file_server.port_opened = True|g' $ZERONET_DIR/src/Site/Site.py
|
471
|
|
-}
|
472
|
|
-
|
473
|
|
-if [[ "$1" == "stop" ]]; then
|
474
|
|
- sudo batman stop
|
475
|
|
- exit 0
|
476
|
|
-fi
|
477
|
|
-
|
478
|
|
-if [ -f /var/lib/batman ]; then
|
479
|
|
- SERVER_INSTALLATION="yes"
|
480
|
|
-fi
|
481
|
|
-
|
482
|
|
-if [[ $SERVER_INSTALLATION == "no" ]]; then
|
483
|
|
- if [ ! -f /usr/bin/batman ]; then
|
484
|
|
- ${PROJECT_NAME}-client
|
485
|
|
- fi
|
486
|
|
-fi
|
|
37
|
+PEERS_FILE=/tmp/meshwebstart
|
487
|
38
|
|
488
|
39
|
if [ -d $MESH_INSTALL_DIR/zeronet ]; then
|
489
|
40
|
ZERONET_DIR=$MESH_INSTALL_DIR/zeronet
|
490
|
41
|
fi
|
491
|
42
|
|
492
|
|
-if [[ $SERVER_INSTALLATION == "no" ]]; then
|
493
|
|
- if [ ! -f /tmp/meshtype ]; then
|
494
|
|
- install_web_server
|
495
|
|
- install_zeronet
|
496
|
|
- install_zeronet_blog
|
497
|
|
- install_zeronet_mail
|
498
|
|
- install_zeronet_forum
|
499
|
|
- #install_ipfs
|
500
|
|
- sudo batman start
|
501
|
|
- if [ ! "$?" = "0" ]; then
|
502
|
|
- exit 2
|
503
|
|
- fi
|
504
|
|
- fi
|
505
|
|
-fi
|
506
|
|
-
|
507
|
43
|
avahi-browse -atl | awk -F ' ' '{print $4}' | sort -u > $PEERS_FILE
|
508
|
44
|
|
509
|
45
|
if [ ! -f $PEERS_FILE ]; then
|
|
@@ -511,56 +47,21 @@ if [ ! -f $PEERS_FILE ]; then
|
511
|
47
|
exit 0
|
512
|
48
|
fi
|
513
|
49
|
|
|
50
|
+# count the peers
|
514
|
51
|
ctr=0
|
515
|
52
|
while IFS='' read -r line || [[ -n "$line" ]]; do
|
516
|
53
|
ctr=$((ctr + 1))
|
517
|
54
|
done < "$PEERS_FILE"
|
518
|
|
-
|
519
|
55
|
rm $PEERS_FILE
|
520
|
56
|
|
|
57
|
+# enough peers
|
521
|
58
|
if [ ${ctr} -lt "1" ]; then
|
522
|
59
|
echo $'No peers were found'
|
523
|
60
|
exit 0
|
524
|
61
|
fi
|
525
|
62
|
|
526
|
|
-if [ ! -d $ZERONET_DIR ]; then
|
527
|
|
- echo $'zeronet was not installed'
|
528
|
|
- exit 63
|
529
|
|
-fi
|
530
|
|
-cd $ZERONET_DIR
|
531
|
|
-
|
532
|
|
-
|
533
|
|
-existing_bttrack=$(ps aux | grep bttrack | wc -l)
|
534
|
|
-if [ $existing_bttrack -lt "2" ]; then
|
535
|
|
- if [ ! -d ~/.bttrack ]; then
|
536
|
|
- mkdir ~/.bttrack
|
537
|
|
- fi
|
538
|
|
- bttrack --port ${TRACKER_PORT} --dfile ~/.bttrack/dstate --logfile ~/.bttrack/tracker.log --nat_check 0 --scrape_allowed full --ipv6_enabled 0 &
|
539
|
|
-fi
|
540
|
|
-
|
541
|
|
-existing_ipfs=$(ps aux | grep ipfs | wc -l)
|
542
|
|
-if [ $existing_ipfs -lt "2" ]; then
|
543
|
|
- sudo umount /ipfs
|
544
|
|
- sudo umount /ipns
|
545
|
|
- ipfs daemon --mount &
|
546
|
|
-fi
|
547
|
|
-
|
548
|
63
|
ZERONET_INDEX=/home/$MY_USERNAME/mesh.html
|
549
|
64
|
|
550
|
|
-cp /etc/crontab /tmp/crontab
|
551
|
|
-if ! grep -q "zeronetavahi" /tmp/crontab; then
|
552
|
|
- echo "* * * * * $MY_USERNAME cd /home/$MY_USERNAME; zeronetavahi > /dev/null" >> /tmp/crontab
|
553
|
|
-fi
|
554
|
|
-sudo cp /tmp/crontab /etc/crontab
|
555
|
|
-
|
556
|
|
-sleep 8
|
557
|
|
-zeronetavahi
|
558
|
|
-
|
559
|
|
-existing_zeronet=$(ps aux | grep zeronet | wc -l)
|
560
|
|
-if [ $existing_zeronet -lt "2" ]; then
|
561
|
|
- python zeronet.py --ip_external $(hostname).local --trackers_file $ZERONET_DIR/bootstrap &
|
562
|
|
-fi
|
563
|
|
-
|
564
|
65
|
if which firefox > /dev/null; then
|
565
|
66
|
firefox $ZERONET_INDEX
|
566
|
67
|
elif which iceweasel > /dev/null; then
|