Browse Source

Only install a tahoelafs introducer

Bob Mottram 8 years ago
parent
commit
686181d3f4
1 changed files with 53 additions and 163 deletions
  1. 53
    163
      src/freedombone-app-tahoelafs

+ 53
- 163
src/freedombone-app-tahoelafs View File

8
 #
8
 #
9
 #                    Freedom in the Cloud
9
 #                    Freedom in the Cloud
10
 #
10
 #
11
-# Distributed storage
11
+# Distributed storage system introducer
12
+# http://tahoe-lafs.readthedocs.io/en/latest/anonymity-configuration.html
12
 #
13
 #
13
 # License
14
 # License
14
 # =======
15
 # =======
37
 TAHOELAFS_COMMIT='bb782b0331a60de438136a593bba18338d8d866b'
38
 TAHOELAFS_COMMIT='bb782b0331a60de438136a593bba18338d8d866b'
38
 
39
 
39
 TAHOELAFS_PORT=50213
40
 TAHOELAFS_PORT=50213
40
-TAHOELAFS_WEB_PORT=3456
41
-
42
-# The amount of reserved space for applications other than tahoelafs
43
-TAHOELAFS_STORAGE_SPACE=3G
41
+TAHOELAFS_ONION_PORT=8096
44
 
42
 
45
 TAHOELAFS_SHARED_DIR='Shared'
43
 TAHOELAFS_SHARED_DIR='Shared'
46
 TAHOE_COMMAND="cd /var/lib/tahoelafs && venv/bin/tahoe"
44
 TAHOE_COMMAND="cd /var/lib/tahoelafs && venv/bin/tahoe"
47
 
45
 
48
-tahoelafs_variables=(TAHOELAFS_REPO
49
-                     TAHOELAFS_COMMIT
46
+tahoelafs_variables=(ONION_ONLY
47
+                     TAHOELAFS_REPO
50
                      TAHOELAFS_PORT)
48
                      TAHOELAFS_PORT)
51
 
49
 
50
+function tahoelafs_setup_config {
51
+    config_file=$1
52
+
53
+    if ! grep -q "[node]" $config_file; then
54
+        echo '' >> $config_file
55
+        echo '[node]' >> $config_file
56
+    fi
57
+
58
+    if ! grep -q "[connections]" $config_file; then
59
+        echo '' >> $config_file
60
+        echo '[connections]' >> $config_file
61
+    fi
62
+
63
+    if ! grep -q "reveal-IP-address" $config_file; then
64
+        sed -i '/[node]/a reveal-IP-address = False' $config_file
65
+    else
66
+        sed -i 's|reveal-IP-address.*|reveal-IP-address = False|g' >> $config_file
67
+    fi
68
+
69
+    if ! grep -q "tcp =" $config_file; then
70
+        sed -i '/[connections]/a tcp = tor' $config_file
71
+    else
72
+        sed -i 's|tcp =.*|tcp = tor|g' >> $config_file
73
+    fi
74
+
75
+    if ! grep -q "tub.location =" $config_file; then
76
+        sed -i '/[node]/a tub.location = disabled' >> $config_file
77
+    fi
78
+    if ! grep -q "tub.port =" $config_file; then
79
+        sed -i "/[node]/a tub.port = tcp:${TAHOELAFS_ONION_PORT}:interface=127.0.0.1" >> $config_file
80
+    fi
81
+    sed -i "s|tub.port.*|tub.port = tcp:${TAHOELAFS_ONION_PORT}:interface=127.0.0.1|g" >> $config_file
82
+    sed -i "s|tub.location.*|tub.location = tor:${TAHOELAFS_ONION_HOSTNAME}:${TAHOELAFS_PORT}|g" >> $config_file
83
+
84
+    sed -i "s|nickname =.*|nickname = $HOSTNAME|g" $config_file
85
+
86
+    if ! grep -q "[storage]" $config_file; then
87
+        echo '' >> $config_file
88
+        echo '[storage]' >> $config_file
89
+        echo 'enabled = false' >> $config_file
90
+    fi
91
+}
92
+
52
 function install_interactive_tahoelafs {
93
 function install_interactive_tahoelafs {
53
     echo -n ''
94
     echo -n ''
54
     APP_INSTALLED=1
95
     APP_INSTALLED=1
55
 }
96
 }
56
 
97
 
57
-function reconfigure_tahoelafs {
58
-    for d in /home/*/ ; do
59
-        USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
60
-        if [[ $(is_valid_user "$USERNAME") == "1" ]]; then
61
-            if [ -d /home/$USERNAME/.tahoe ]; then
62
-                su -c "$TAHOE_COMMAND stop" - $USERNAME
63
-                rm -rf /home/$USERNAME/.tahoe
64
-            fi
65
-
66
-            if [ -d /home/$USERNAME/${TAHOELAFS_SHARED_DIR} ]; then
67
-                rm -rf /home/$USERNAME/${TAHOELAFS_SHARED_DIR}
68
-            fi
69
-
70
-            su -c "cd $TAHOE_COMMAND create-node" - $USERNAME
71
-
72
-            if [ ! -d /home/$USERNAME/.tahoe ]; then
73
-                exit 63722
74
-            fi
75
-
76
-            # create a shared directory
77
-            if [ ! -d /home/$USERNAME/${TAHOELAFS_SHARED_DIR} ]; then
78
-                mkdir /home/$USERNAME/${TAHOELAFS_SHARED_DIR}
79
-                chown -R $USERNAME:$USERNAME /home/$USERNAME/${TAHOELAFS_SHARED_DIR}
80
-            fi
81
-
82
-            TAHOELAFS_CONFIG=/home/$USERNAME/.tahoe/tahoe.cfg
83
-            echo '[node]' > $TAHOELAFS_CONFIG
84
-            echo "nickname = $USERNAME" >> $TAHOELAFS_CONFIG
85
-            echo "web.port = tcp:$TAHOELAFS_WEB_PORT:interface=127.0.0.1" >> $TAHOELAFS_CONFIG
86
-            echo 'web.static = public_html' >> $TAHOELAFS_CONFIG
87
-            echo "tub.port = tcp:$TAHOELAFS_PORT" >> $TAHOELAFS_CONFIG
88
-            echo "tub.location = tcp:$HOSTNAME:$TAHOELAFS_PORT" >> $TAHOELAFS_CONFIG
89
-            echo 'timeout.keepalive = 240' >> $TAHOELAFS_CONFIG
90
-            echo 'timeout.disconnect = 1800' >> $TAHOELAFS_CONFIG
91
-            echo '' >> $TAHOELAFS_CONFIG
92
-            echo '[client]' >> $TAHOELAFS_CONFIG
93
-            echo 'introducer.furl = None' >> $TAHOELAFS_CONFIG
94
-            echo '#helper.furl =' >> $TAHOELAFS_CONFIG
95
-            echo '' >> $TAHOELAFS_CONFIG
96
-            echo 'shares.needed = 1' >> $TAHOELAFS_CONFIG
97
-            echo 'shares.happy = 1' >> $TAHOELAFS_CONFIG
98
-            echo 'shares.total = 1' >> $TAHOELAFS_CONFIG
99
-            echo '' >> $TAHOELAFS_CONFIG
100
-            echo '[storage]' >> $TAHOELAFS_CONFIG
101
-            echo 'enabled = true' >> $TAHOELAFS_CONFIG
102
-            echo "reserved_space = $TAHOELAFS_STORAGE_SPACE" >> $TAHOELAFS_CONFIG
103
-            echo '#expire.enabled = true' >> $TAHOELAFS_CONFIG
104
-            echo '#expire.mode =' >> $TAHOELAFS_CONFIG
105
-            echo '' >> $TAHOELAFS_CONFIG
106
-            echo '[helper]' >> $TAHOELAFS_CONFIG
107
-            echo 'enabled = false' >> $TAHOELAFS_CONFIG
108
-            echo '' >> $TAHOELAFS_CONFIG
109
-            echo '[magic_folder]' >> $TAHOELAFS_CONFIG
110
-            echo 'enabled = true' >> $TAHOELAFS_CONFIG
111
-            echo "local.directory = /home/${USERNAME}/${TAHOELAFS_SHARED_DIR}" >> $TAHOELAFS_CONFIG
112
-            chown $USERNAME:$USERNAME $TAHOELAFS_CONFIG
113
-
114
-            su -c "$TAHOE_COMMAND start" - $USERNAME
115
-            su -c "$TAHOE_COMMAND magic-folder create $HOSTNAME" - $USERNAME
116
-        fi
117
-    done
118
-}
119
-
120
 function upgrade_tahoelafs {
98
 function upgrade_tahoelafs {
121
     systemctl stop tahoelafs
99
     systemctl stop tahoelafs
122
     function_check set_repo_commit
100
     function_check set_repo_commit
187
 
165
 
188
 function remove_tahoelafs {
166
 function remove_tahoelafs {
189
     firewall_remove ${TAHOELAFS_PORT}
167
     firewall_remove ${TAHOELAFS_PORT}
190
-
191
-    for d in /home/*/ ; do
192
-        USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
193
-        if [ -f /home/$USERNAME/.tahoe ]; then
194
-            su -c "$TAHOE_COMMAND stop" - $USERNAME
195
-            rm -rf /home/$USERNAME/.tahoe
196
-        fi
197
-    done
198
-
199
     rm -rf /var/lib/tahoelafs
168
     rm -rf /var/lib/tahoelafs
200
-
201
     remove_completion_param install_tahoelafs
169
     remove_completion_param install_tahoelafs
202
     remove_completion_param configure_firewall_for_tahoelafs
170
     remove_completion_param configure_firewall_for_tahoelafs
171
+    function_check remove_onion_service
172
+    remove_onion_service tahoelafs ${TAHOELAFS_ONION_PORT}
173
+    deluser tahoelafs
203
 }
174
 }
204
 
175
 
205
 function configure_firewall_for_tahoelafs {
176
 function configure_firewall_for_tahoelafs {
210
     mark_completed $FUNCNAME
181
     mark_completed $FUNCNAME
211
 }
182
 }
212
 
183
 
213
-function tahoelafs_update_script {
214
-    update_script_filename=$1
215
-
216
-    echo '#!/bin/bash' > $update_script_filename
217
-    echo 'TOX_USERNAME=$(toxid --showuser)' >> $update_script_filename
218
-    echo 'PEERS_FILE=$(mktemp /tmp/tahoelafs-peers.XXXXXX)' >> $update_script_filename
219
-    echo -n 'avahi-browse -atl | grep "Workstation" | ' >> $update_script_filename
220
-    echo -n "awk -F ' ' '{print \$4}' " >> $update_script_filename
221
-    echo '| sort -u > $PEERS_FILE' >> $update_script_filename
222
-    echo 'if [ ! "$?" = "0" ]; then' >> $update_script_filename
223
-    echo '    exit 1' >> $update_script_filename
224
-    echo 'fi' >> $update_script_filename
225
-    echo '' >> $update_script_filename
226
-    echo 'if [ ! -f $PEERS_FILE ]; then' >> $update_script_filename
227
-    echo '    exit 0' >> $update_script_filename
228
-    echo 'fi' >> $update_script_filename
229
-    echo '' >> $update_script_filename
230
-    echo 'furl=""' >> $update_script_filename
231
-    echo 'while IFS="" read -r line || [[ -n "$line" ]]; do' >> $update_script_filename
232
-    echo '    if [[ $furl != "" ]]; then' >> $update_script_filename
233
-    echo -n '        furl="$furl,$line:' >> $update_script_filename
234
-    echo -n "$TAHOELAFS_PORT" >> $update_script_filename
235
-    echo '"' >> $update_script_filename
236
-    echo '    else' >> $update_script_filename
237
-    echo -n '        furl="$line:' >> $update_script_filename
238
-    echo -n "$TAHOELAFS_PORT" >> $update_script_filename
239
-    echo '"' >> $update_script_filename
240
-    echo '    fi' >> $update_script_filename
241
-    echo 'done < "$PEERS_FILE"' >> $update_script_filename
242
-    echo '' >> $update_script_filename
243
-    echo 'rm $PEERS_FILE' >> $update_script_filename
244
-    echo '' >> $update_script_filename
245
-    echo 'for d in /home/*/ ; do' >> $update_script_filename
246
-    echo -n '    USERNAME=$(echo "$d" | ' >> $update_script_filename
247
-    echo "awk -F '/' '{print \$3}')'" >> $update_script_filename
248
-    echo '    if [ -f /home/$USERNAME/.tahoe/tahoe.cfg ]; then' >> $update_script_filename
249
-    echo '        if ! grep -q "introducer.furl = ${furl}" /home/$USERNAME/.tahoe/tahoe.cfg; then' >> $update_script_filename
250
-    echo '            sed -i "s|introducer.furl =.*|introducer.furl = ${furl}|g" /home/$USERNAME/.tahoe/tahoe.cfg' >> $update_script_filename
251
-    echo '            sed -i "s|nickname =.*|nickname = ${TOX_USERNAME}|g" /home/$USERNAME/.tahoe/tahoe.cfg' >> $update_script_filename
252
-    echo '            chown $USERNAME:$USERNAME /home/$USERNAME/.tahoe/tahoe.cfg' >> $update_script_filename
253
-    echo "            su -c '$TAHOE_COMMAND restart' - \$USERNAME" >> $update_script_filename
254
-    echo '        fi' >> $update_script_filename
255
-    echo '    fi' >> $update_script_filename
256
-    echo 'done' >> $update_script_filename
257
-    echo '' >> $update_script_filename
258
-
259
-    echo 'exit 0' >> $update_script_filename
260
-    chmod +x $update_script_filename
261
-}
262
-
263
-function mesh_install_tahoelafs {
264
-    chroot "$rootdir" apt-get -yq install build-essential python-pip python-dev
265
-    chroot "$rootdir" apt-get -yq install libffi-dev libssl-dev python-virtualenv
266
-
267
-    git clone $TAHOELAFS_REPO $rootdir/var/lib/tahoelafs
268
-    cd $rootdir/var/lib/tahoelafs
269
-    git checkout $TAHOELAFS_COMMIT -b $TAHOELAFS_COMMIT
270
-
271
-    cat <<EOF > $rootdir/root/install_tahoelafs
272
-cd /var/lib/tahoelafs
273
-virtualenv venv
274
-venv/bin/pip install --editable .
275
-EOF
276
-    chroot "$rootdir" chmod +x /root/install_tahoelafs
277
-    chroot "$rootdir" /root/install_tahoelafs
278
-    chroot "$rootdir" rm /root/install_tahoelafs
279
-
280
-    tahoelafs_update_script $rootdir/usr/bin/update-tahoelafs
281
-
282
-    if ! grep -q "update-tahoelafs" $rootdir/etc/crontab; then
283
-        echo "*/1            * *   *   *   root /usr/bin/update-tahoelafs 2> /dev/null" >> $rootdir/etc/crontab
284
-    fi
285
-}
286
-
287
 function install_tahoelafs {
184
 function install_tahoelafs {
288
     if [ $INSTALLING_MESH ]; then
185
     if [ $INSTALLING_MESH ]; then
289
-        mesh_install_tahoelafs
290
         return
186
         return
291
     fi
187
     fi
292
 
188
 
319
         exit 62831
215
         exit 62831
320
     fi
216
     fi
321
 
217
 
322
-    sed -i "s|nickname =.*|nickname = $HOSTNAME|g" $TAHOELAFS_CONFIG
323
-
324
-    if ! grep -q "[storage]" $TAHOELAFS_CONFIG; then
325
-        echo '' >> $TAHOELAFS_CONFIG
326
-        echo '[storage]' >> $TAHOELAFS_CONFIG
327
-        echo 'enabled = true' >> $TAHOELAFS_CONFIG
328
-        echo "reserved_space = $TAHOELAFS_STORAGE_SPACE" >> $TAHOELAFS_CONFIG
329
-    fi
218
+    TAHOELAFS_ONION_HOSTNAME=$(add_onion_service tahoelafs ${TAHOELAFS_PORT} ${TAHOELAFS_ONION_PORT})
219
+    tahoelafs_setup_config $TAHOELAFS_CONFIG
330
 
220
 
331
     chown -R tahoelafs:tahoelafs /home/tahoelafs
221
     chown -R tahoelafs:tahoelafs /home/tahoelafs
332
 
222