|  | @@ -30,17 +30,21 @@
 | 
	
		
			
			| 30 | 30 |  
 | 
	
		
			
			| 31 | 31 |  VARIANTS='mesh'
 | 
	
		
			
			| 32 | 32 |  
 | 
	
		
			
			|  | 33 | +TAHOELAFS_REPO="https://github.com/tahoe-lafs/tahoe-lafs"
 | 
	
		
			
			|  | 34 | +TAHOELAFS_COMMIT='30b421d48b3d1dae2ef507bf27a1f3816300cd92'
 | 
	
		
			
			|  | 35 | +
 | 
	
		
			
			| 33 | 36 |  TAHOELAFS_PORT=50213
 | 
	
		
			
			| 34 | 37 |  TAHOELAFS_WEB_PORT=3456
 | 
	
		
			
			| 35 | 38 |  TAHOELAFS_STORAGE_SPACE=1G
 | 
	
		
			
			| 36 | 39 |  TAHOELAFS_SHARED_DIR='Shared'
 | 
	
		
			
			|  | 40 | +TAHOE_COMMAND="cd /var/lib/tahoelafs && venv/bin/tahoe"
 | 
	
		
			
			| 37 | 41 |  
 | 
	
		
			
			| 38 | 42 |  function reconfigure_tahoelafs {
 | 
	
		
			
			| 39 | 43 |      for d in /home/*/ ; do
 | 
	
		
			
			| 40 | 44 |          USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
 | 
	
		
			
			| 41 | 45 |          if [[ $USERNAME != "git" && $USERNAME != "mirrors" && $USERNAME != "sync" ]]; then
 | 
	
		
			
			| 42 | 46 |              if [ -d /home/$USERNAME/.tahoe ]; then
 | 
	
		
			
			| 43 |  | -                su -c 'tahoe stop' - $USERNAME
 | 
	
		
			
			|  | 47 | +                su -c "$TAHOE_COMMAND stop" - $USERNAME
 | 
	
		
			
			| 44 | 48 |                  rm -rf /home/$USERNAME/.tahoe
 | 
	
		
			
			| 45 | 49 |              fi
 | 
	
		
			
			| 46 | 50 |  
 | 
	
	
		
			
			|  | @@ -48,7 +52,7 @@ function reconfigure_tahoelafs {
 | 
	
		
			
			| 48 | 52 |                  rm -rf /home/$USERNAME/${TAHOELAFS_SHARED_DIR}
 | 
	
		
			
			| 49 | 53 |              fi
 | 
	
		
			
			| 50 | 54 |  
 | 
	
		
			
			| 51 |  | -            su -c 'tahoe create-node' - $USERNAME
 | 
	
		
			
			|  | 55 | +            su -c "cd $TAHOE_COMMAND create-node" - $USERNAME
 | 
	
		
			
			| 52 | 56 |  
 | 
	
		
			
			| 53 | 57 |              if [ ! -d /home/$USERNAME/.tahoe ]; then
 | 
	
		
			
			| 54 | 58 |                  exit 63722
 | 
	
	
		
			
			|  | @@ -87,12 +91,13 @@ function reconfigure_tahoelafs {
 | 
	
		
			
			| 87 | 91 |              echo '[helper]' >> $TAHOELAFS_CONFIG
 | 
	
		
			
			| 88 | 92 |              echo 'enabled = false' >> $TAHOELAFS_CONFIG
 | 
	
		
			
			| 89 | 93 |              echo '' >> $TAHOELAFS_CONFIG
 | 
	
		
			
			| 90 |  | -            echo '[drop_upload]' >> $TAHOELAFS_CONFIG
 | 
	
		
			
			|  | 94 | +            echo '[magic_folder]' >> $TAHOELAFS_CONFIG
 | 
	
		
			
			| 91 | 95 |              echo 'enabled = true' >> $TAHOELAFS_CONFIG
 | 
	
		
			
			| 92 |  | -            echo "local.directory = ~/${TAHOELAFS_SHARED_DIR}" >> $TAHOELAFS_CONFIG
 | 
	
		
			
			|  | 96 | +            echo "local.directory = /home/${USERNAME}/${TAHOELAFS_SHARED_DIR}" >> $TAHOELAFS_CONFIG
 | 
	
		
			
			| 93 | 97 |              chown $USERNAME:$USERNAME $TAHOELAFS_CONFIG
 | 
	
		
			
			| 94 | 98 |  
 | 
	
		
			
			| 95 |  | -            su -c 'tahoe start' - $USERNAME
 | 
	
		
			
			|  | 99 | +            su -c "$TAHOE_COMMAND start" - $USERNAME
 | 
	
		
			
			|  | 100 | +            su -c "$TAHOE_COMMAND magic-folder create $HOSTNAME" - $USERNAME
 | 
	
		
			
			| 96 | 101 |          fi
 | 
	
		
			
			| 97 | 102 |      done
 | 
	
		
			
			| 98 | 103 |  }
 | 
	
	
		
			
			|  | @@ -131,8 +136,15 @@ function remove_tahoelafs {
 | 
	
		
			
			| 131 | 136 |      function_check save_firewall_settings
 | 
	
		
			
			| 132 | 137 |      save_firewall_settings
 | 
	
		
			
			| 133 | 138 |  
 | 
	
		
			
			| 134 |  | -    pip uninstall tahoe-lafs
 | 
	
		
			
			| 135 |  | -    apt-get -y remove --purge tahoe-lafs
 | 
	
		
			
			|  | 139 | +    for d in /home/*/ ; do
 | 
	
		
			
			|  | 140 | +        USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
 | 
	
		
			
			|  | 141 | +        if [ -f /home/$USERNAME/.tahoe ]; then
 | 
	
		
			
			|  | 142 | +            su -c "$TAHOE_COMMAND stop" - $USERNAME
 | 
	
		
			
			|  | 143 | +            rm -rf /home/$USERNAME/.tahoe
 | 
	
		
			
			|  | 144 | +        fi
 | 
	
		
			
			|  | 145 | +    done
 | 
	
		
			
			|  | 146 | +
 | 
	
		
			
			|  | 147 | +    rm -rf /var/lib/tahoelafs
 | 
	
		
			
			| 136 | 148 |  
 | 
	
		
			
			| 137 | 149 |      sed -i '/install_tahoelafs/d' $COMPLETION_FILE
 | 
	
		
			
			| 138 | 150 |      sed -i '/configure_firewall_for_tahoelafs/d' $COMPLETION_FILE
 | 
	
	
		
			
			|  | @@ -152,6 +164,7 @@ function configure_firewall_for_tahoelafs {
 | 
	
		
			
			| 152 | 164 |  
 | 
	
		
			
			| 153 | 165 |  function tahoelafs_update_script {
 | 
	
		
			
			| 154 | 166 |      update_script_filename=$1
 | 
	
		
			
			|  | 167 | +    update_script_type=$2
 | 
	
		
			
			| 155 | 168 |  
 | 
	
		
			
			| 156 | 169 |      echo '#!/bin/bash' > $update_script_filename
 | 
	
		
			
			| 157 | 170 |      echo 'PEERS_FILE=$(mktemp /tmp/tahoelafs-peers.XXXXXX)' >> $update_script_filename
 | 
	
	
		
			
			|  | @@ -187,23 +200,44 @@ function tahoelafs_update_script {
 | 
	
		
			
			| 187 | 200 |      echo '    if [ -f /home/$USERNAME/.tahoe/tahoe.cfg ]; then' >> $update_script_filename
 | 
	
		
			
			| 188 | 201 |      echo '        if ! grep -q "introducer.furl = ${furl}" /home/$USERNAME/.tahoe/tahoe.cfg; then' >> $update_script_filename
 | 
	
		
			
			| 189 | 202 |      echo '            sed -i "s|introducer.furl =.*|introducer.furl = ${furl}|g" /home/$USERNAME/.tahoe/tahoe.cfg' >> $update_script_filename
 | 
	
		
			
			|  | 203 | +
 | 
	
		
			
			|  | 204 | +    # change the nickname to the same as used by tox
 | 
	
		
			
			|  | 205 | +    if [ $update_script_type ]; then
 | 
	
		
			
			|  | 206 | +        if [[ $update_script_type == "mesh" ]]; then
 | 
	
		
			
			|  | 207 | +            echo '            TOX_USERNAME=$(toxid --showuser)' >> $update_script_filename
 | 
	
		
			
			|  | 208 | +            echo '            sed -i "s|nickname =.*|nickname = ${TOX_USERNAME}|g" /home/$USERNAME/.tahoe/tahoe.cfg' >> $update_script_filename
 | 
	
		
			
			|  | 209 | +        fi
 | 
	
		
			
			|  | 210 | +    fi
 | 
	
		
			
			|  | 211 | +
 | 
	
		
			
			| 190 | 212 |      echo '            chown $USERNAME:$USERNAME /home/$USERNAME/.tahoe/tahoe.cfg' >> $update_script_filename
 | 
	
		
			
			| 191 |  | -    echo '            su -c "tahoe restart" - $USERNAME' >> $update_script_filename
 | 
	
		
			
			|  | 213 | +    echo "            su -c '$TAHOE_COMMAND restart' - \$USERNAME" >> $update_script_filename
 | 
	
		
			
			| 192 | 214 |      echo '        fi' >> $update_script_filename
 | 
	
		
			
			|  | 215 | +
 | 
	
		
			
			| 193 | 216 |      echo '    fi' >> $update_script_filename
 | 
	
		
			
			| 194 | 217 |      echo 'done' >> $update_script_filename
 | 
	
		
			
			| 195 | 218 |      echo '' >> $update_script_filename
 | 
	
		
			
			|  | 219 | +
 | 
	
		
			
			| 196 | 220 |      echo 'exit 0' >> $update_script_filename
 | 
	
		
			
			| 197 | 221 |      chmod +x $update_script_filename
 | 
	
		
			
			| 198 | 222 |  }
 | 
	
		
			
			| 199 | 223 |  
 | 
	
		
			
			| 200 | 224 |  function mesh_install_tahoelafs {
 | 
	
		
			
			| 201 |  | -    chroot "$rootdir" apt-get -y install python-pip tahoe-lafs
 | 
	
		
			
			| 202 |  | -    chroot "$rootdir" pip install tahoe-lafs
 | 
	
		
			
			| 203 |  | -    chroot "$rootdir" su -c 'tahoe create-client' - $MY_USERNAME
 | 
	
		
			
			| 204 |  | -    if [ ! -d $rootdir/home/$MY_USERNAME/.tahoe ]; then
 | 
	
		
			
			| 205 |  | -        exit 63722
 | 
	
		
			
			| 206 |  | -    fi
 | 
	
		
			
			|  | 225 | +    chroot "$rootdir" apt-get -y install build-essential python-pip python-dev
 | 
	
		
			
			|  | 226 | +    chroot "$rootdir" apt-get -y install libffi-dev libssl-dev python-virtualenv
 | 
	
		
			
			|  | 227 | +
 | 
	
		
			
			|  | 228 | +    git clone $TAHOELAFS_REPO $rootdir/var/lib/tahoelafs
 | 
	
		
			
			|  | 229 | +    cd $rootdir/var/lib/tahoelafs
 | 
	
		
			
			|  | 230 | +    git checkout $TAHOELAFS_COMMIT -b $TAHOELAFS_COMMIT
 | 
	
		
			
			|  | 231 | +
 | 
	
		
			
			|  | 232 | +    cat <<EOF > $rootdir/root/install_tahoelafs
 | 
	
		
			
			|  | 233 | +cd /var/lib/tahoelafs
 | 
	
		
			
			|  | 234 | +virtualenv venv
 | 
	
		
			
			|  | 235 | +venv/bin/pip install --editable .
 | 
	
		
			
			|  | 236 | +EOF
 | 
	
		
			
			|  | 237 | +    chroot "$rootdir" chmod +x /root/install_tahoelafs
 | 
	
		
			
			|  | 238 | +    chroot "$rootdir" /root/install_tahoelafs
 | 
	
		
			
			|  | 239 | +    chroot "$rootdir" rm /root/install_tahoelafs
 | 
	
		
			
			|  | 240 | +
 | 
	
		
			
			| 207 | 241 |      tahoelafs_update_script $rootdir/usr/bin/update-tahoelafs
 | 
	
		
			
			| 208 | 242 |  
 | 
	
		
			
			| 209 | 243 |      if ! grep -q "update-tahoelafs" $rootdir/etc/crontab; then
 | 
	
	
		
			
			|  | @@ -221,14 +255,19 @@ function install_tahoelafs {
 | 
	
		
			
			| 221 | 255 |          return
 | 
	
		
			
			| 222 | 256 |      fi
 | 
	
		
			
			| 223 | 257 |  
 | 
	
		
			
			| 224 |  | -    apt-get -y install python-pip tahoe-lafs
 | 
	
		
			
			| 225 |  | -    pip install tahoe-lafs
 | 
	
		
			
			|  | 258 | +    apt-get -y install build-essential python-pip python-dev libffi-dev libssl-dev python-virtualenv
 | 
	
		
			
			|  | 259 | +
 | 
	
		
			
			|  | 260 | +    git_clone $TAHOELAFS_REPO /var/lib/tahoelafs
 | 
	
		
			
			|  | 261 | +    cd /var/lib/tahoelafs
 | 
	
		
			
			|  | 262 | +    git checkout $TAHOELAFS_COMMIT -b $TAHOELAFS_COMMIT
 | 
	
		
			
			|  | 263 | +    virtualenv venv
 | 
	
		
			
			|  | 264 | +    venv/bin/pip install --editable .
 | 
	
		
			
			| 226 | 265 |      configure_firewall_for_tahoelafs
 | 
	
		
			
			| 227 | 266 |      reconfigure_tahoelafs
 | 
	
		
			
			| 228 | 267 |      tahoelafs_update_script /usr/bin/update-tahoelafs
 | 
	
		
			
			| 229 | 268 |  
 | 
	
		
			
			| 230 | 269 |      function_check cron_add_mins
 | 
	
		
			
			| 231 |  | -    cron_add_mins 1 '/usr/bin/update-tahoelafs 2> /dev/null'
 | 
	
		
			
			|  | 270 | +    cron_add_mins 1 "/usr/bin/update-tahoelafs 2> /dev/null"
 | 
	
		
			
			| 232 | 271 |  
 | 
	
		
			
			| 233 | 272 |      echo 'install_tahoelafs' >> $COMPLETION_FILE
 | 
	
		
			
			| 234 | 273 |  }
 |