Bladeren bron

Beginning of mesh toxcore

Bob Mottram 9 jaren geleden
bovenliggende
commit
7bc0e8db17
1 gewijzigde bestanden met toevoegingen van 105 en 0 verwijderingen
  1. 105
    0
      src/freedombone-image-customise

+ 105
- 0
src/freedombone-image-customise Bestand weergeven

@@ -30,6 +30,7 @@ set -e
30 30
 set -x
31 31
 
32 32
 PROJECT_NAME='freedombone'
33
+INSTALL_DIR=/root/build
33 34
 
34 35
 # username created by default within a debian image
35 36
 GENERIC_IMAGE_USERNAME='fbone'
@@ -434,6 +435,110 @@ function mesh_batman {
434 435
     chroot "$rootdir" systemctl enable batman
435 436
 }
436 437
 
438
+function mesh_tox_node {
439
+    chroot "$rootdir" apt-get -y install build-essential libtool autotools-dev
440
+    chroot "$rootdir" apt-get -y install automake checkinstall check git yasm
441
+    chroot "$rootdir" apt-get -y install libsodium13 libsodium-dev libcap2-bin
442
+    chroot "$rootdir" apt-get -y install libconfig9 libconfig-dev
443
+
444
+    git clone $TOX_REPO $rootdir/$INSTALL_DIR/toxcore
445
+    chroot "$rootdir" cd $INSTALL_DIR/toxcore
446
+    chroot "$rootdir" git checkout $TOX_COMMIT -b $TOX_COMMIT
447
+
448
+    chroot "$rootdir" autoreconf -i
449
+    chroot "$rootdir" ./configure --enable-daemon
450
+    chroot "$rootdir" make
451
+    chroot "$rootdir" make install
452
+    chroot "$rootdir" cp /usr/local/lib/libtoxcore* /usr/lib/
453
+
454
+    if [ ! -f $rootdir/usr/local/bin/tox-bootstrapd ]; then
455
+        echo $"File not found /usr/local/bin/tox-bootstrapd"
456
+    fi
457
+
458
+    chroot "$rootdir" useradd --home-dir /var/lib/tox-bootstrapd --create-home --system --shell /sbin/nologin --comment $"Account to run Tox's DHT bootstrap daemon" --user-group tox-bootstrapd
459
+    chroot "$rootdir" chmod 700 /var/lib/tox-bootstrapd
460
+    if [ ! -f $rootdir/$INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf ]; then
461
+        echo $"File not found $INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf"
462
+    fi
463
+    # remove Maildir
464
+    if [ -d $rootdir/var/lib/tox-bootstrapd/Maildir ]; then
465
+        rm -rf $rootdir/var/lib/tox-bootstrapd/Maildir
466
+    fi
467
+
468
+    # create configuration file
469
+    echo "port = $TOX_PORT" > $rootdir/etc/tox-bootstrapd.conf
470
+    echo 'keys_file_path = "/var/lib/tox-bootstrapd/keys"' >> $rootdir/etc/tox-bootstrapd.conf
471
+    echo 'pid_file_path = "/var/run/tox-bootstrapd/tox-bootstrapd.pid"' >> $rootdir/etc/tox-bootstrapd.conf
472
+    echo 'enable_ipv6 = true' >> $rootdir/etc/tox-bootstrapd.conf
473
+    echo 'enable_ipv4_fallback = true' >> $rootdir/etc/tox-bootstrapd.conf
474
+    echo 'enable_lan_discovery = true' >> $rootdir/etc/tox-bootstrapd.conf
475
+    echo 'enable_tcp_relay = true' >> $rootdir/etc/tox-bootstrapd.conf
476
+    echo "tcp_relay_ports = [443, 3389, $TOX_PORT]" >> $rootdir/etc/tox-bootstrapd.conf
477
+    echo 'enable_motd = true' >> $rootdir/etc/tox-bootstrapd.conf
478
+    echo 'motd = "tox-bootstrapd"' >> $rootdir/etc/tox-bootstrapd.conf
479
+
480
+    if [ $TOX_NODES ]; then
481
+        echo 'bootstrap_nodes = (' >> $rootdir/etc/tox-bootstrapd.conf
482
+        toxcount=0
483
+        while [ "x${TOX_NODES[toxcount]}" != "x" ]
484
+        do
485
+            toxval_ipv4=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $1}')
486
+            toxval_ipv6=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $2}')
487
+            toxval_port=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $3}')
488
+            toxval_pubkey=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $4}')
489
+            toxval_maintainer=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $5}')
490
+            echo "{ // $toxval_maintainer" >> $rootdir/etc/tox-bootstrapd.conf
491
+            if [[ $toxval_ipv6 != 'NONE' ]]; then
492
+                echo "  address = \"$toxval_ipv6\"" >> $rootdir/etc/tox-bootstrapd.conf
493
+            else
494
+                echo "  address = \"$toxval_ipv4\"" >> $rootdir/etc/tox-bootstrapd.conf
495
+            fi
496
+            echo "  port = $toxval_port" >> $rootdir/etc/tox-bootstrapd.conf
497
+            echo "  public_key = \"$toxval_pubkey\"" >> $rootdir/etc/tox-bootstrapd.conf
498
+            toxcount=$(( $toxcount + 1 ))
499
+            if [ "x${TOX_NODES[toxcount]}" != "x" ]; then
500
+                echo "}," >> $rootdir/etc/tox-bootstrapd.conf
501
+            else
502
+                echo "}" >> $rootdir/etc/tox-bootstrapd.conf
503
+            fi
504
+        done
505
+        echo ')' >> $rootdir/etc/tox-bootstrapd.conf
506
+    fi
507
+
508
+    if [ ! -f $rootdir/$INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.service ]; then
509
+        echo $"File not found $INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.service"
510
+    fi
511
+    cp $rootdir/$INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.service $rootdir/etc/systemd/system/
512
+
513
+    chroot "$rootdir" systemctl enable tox-bootstrapd.service
514
+
515
+    # TODO
516
+
517
+    TOX_PUBLIC_KEY=$(cat /var/log/syslog | grep tox | grep "Public Key" | awk -F ' ' '{print $8}' | tail -1)
518
+    if [ ${#TOX_PUBLIC_KEY} -lt 30 ]; then
519
+        echo $'Could not obtain the tox node public key'
520
+        exit 6529
521
+    fi
522
+
523
+    # save the public key for later reference
524
+    echo "$TOX_PUBLIC_KEY" > $TOX_BOOTSTRAP_ID_FILE
525
+
526
+    configure_firewall_for_tox
527
+
528
+    if ! grep -q $"Your Tox node public key is" /home/$MY_USERNAME/README; then
529
+        echo '' >> /home/$MY_USERNAME/README
530
+        echo '' >> /home/$MY_USERNAME/README
531
+        echo 'Tox' >> /home/$MY_USERNAME/README
532
+        echo '===' >> /home/$MY_USERNAME/README
533
+        echo $"tox onion domain: ${TOX_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
534
+        echo $"Your Tox node public key is: $TOX_PUBLIC_KEY" >> /home/$MY_USERNAME/README
535
+        echo $'In the Toxic client you can connect to it with:' >> /home/$MY_USERNAME/README
536
+        echo "  /connect $DEFAULT_DOMAIN_NAME.local $TOX_PORT $TOX_PUBLIC_KEY" >> /home/$MY_USERNAME/README
537
+        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
538
+        chmod 600 /home/$MY_USERNAME/README
539
+    fi
540
+}
541
+
437 542
 initialise_mesh() {
438 543
     if [[ $VARIANT != "mesh" ]]; then
439 544
         return