소스 검색

Mesh install zeronet

Bob Mottram 9 년 전
부모
커밋
1657653079
2개의 변경된 파일73개의 추가작업 그리고 26개의 파일을 삭제
  1. 72
    26
      src/freedombone-image-customise
  2. 1
    0
      src/freedombone-image-mesh

+ 72
- 26
src/freedombone-image-customise 파일 보기

@@ -31,6 +31,7 @@ set -x
31 31
 
32 32
 PROJECT_NAME='freedombone'
33 33
 INSTALL_DIR=/root/build
34
+COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
34 35
 
35 36
 # username created by default within a debian image
36 37
 GENERIC_IMAGE_USERNAME='fbone'
@@ -66,6 +67,9 @@ GENERIC_IMAGE="no"
66 67
 # default SSH port
67 68
 SSH_PORT=2222
68 69
 
70
+# for mesh installs
71
+TRACKER_PORT=6969
72
+
69 73
 # Whether sites are accessible only within a Tor browser
70 74
 ONION_ONLY="no"
71 75
 
@@ -440,7 +444,6 @@ mesh_batman() {
440 444
 mesh_firewall() {
441 445
     TOX_PORT=33445
442 446
     ZERONET_PORT=15441
443
-    TRACKER_PORT=6969
444 447
     FIREWALL_FILENAME=$rootdir/etc/systemd/system/meshfirewall.service
445 448
     MESH_FIREWALL_SCRIPT=/usr/bin/mesh-firewall
446 449
 
@@ -506,8 +509,6 @@ mesh_tox_node() {
506 509
     #  '192.254.75.102,2607:5600:284::2,33445,951C88B7E75C867418ACDB5D273821372BB5BD652740BCDF623A4FA293E75D2F,Tox RELENG,US'
507 510
     #  '144.76.60.215,2a01:4f8:191:64d6::1,33445,04119E835DF3E78BACF0F84235B300546AF8B936F035185E2A8E9E0A67C8924F,sonOfRa,DE'
508 511
     #)
509
-    iptables -A INPUT -p tcp --dport $TOX_PORT -j ACCEPT
510
-    save_firewall_settings
511 512
 
512 513
     chroot "$rootdir" apt-get -y install build-essential libtool autotools-dev
513 514
     chroot "$rootdir" apt-get -y install automake checkinstall check git yasm
@@ -526,6 +527,7 @@ mesh_tox_node() {
526 527
 
527 528
     if [ ! -f $rootdir/usr/local/bin/tox-bootstrapd ]; then
528 529
         echo $"File not found /usr/local/bin/tox-bootstrapd"
530
+        return
529 531
     fi
530 532
 
531 533
     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
@@ -584,32 +586,75 @@ mesh_tox_node() {
584 586
     cp $rootdir/$INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.service $rootdir/etc/systemd/system/
585 587
 
586 588
     chroot "$rootdir" systemctl enable tox-bootstrapd.service
589
+}
587 590
 
588
-    # TODO
591
+function mesh_zeronet {
592
+    ZERONET_REPO='https://github.com/HelloZeroNet/ZeroNet.git'
593
+    ZERONET_COMMIT='675bd462556c541d65e2d95f91f899146a373aad'
589 594
 
590
-    TOX_PUBLIC_KEY=$(cat /var/log/syslog | grep tox | grep "Public Key" | awk -F ' ' '{print $8}' | tail -1)
591
-    if [ ${#TOX_PUBLIC_KEY} -lt 30 ]; then
592
-        echo $'Could not obtain the tox node public key'
593
-        exit 6529
594
-    fi
595
+    chroot "$rootdir" apt-get -y install python python-msgpack python-gevent
596
+    chroot "$rootdir" apt-get -y install python-pip bittornado
597
+    chroot "$rootdir" pip install msgpack-python --upgrade
595 598
 
596
-    # save the public key for later reference
597
-    echo "$TOX_PUBLIC_KEY" > $TOX_BOOTSTRAP_ID_FILE
598
-
599
-    configure_firewall_for_tox
600
-
601
-    if ! grep -q $"Your Tox node public key is" /home/$MY_USERNAME/README; then
602
-        echo '' >> /home/$MY_USERNAME/README
603
-        echo '' >> /home/$MY_USERNAME/README
604
-        echo 'Tox' >> /home/$MY_USERNAME/README
605
-        echo '===' >> /home/$MY_USERNAME/README
606
-        echo $"tox onion domain: ${TOX_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
607
-        echo $"Your Tox node public key is: $TOX_PUBLIC_KEY" >> /home/$MY_USERNAME/README
608
-        echo $'In the Toxic client you can connect to it with:' >> /home/$MY_USERNAME/README
609
-        echo "  /connect $DEFAULT_DOMAIN_NAME.local $TOX_PORT $TOX_PUBLIC_KEY" >> /home/$MY_USERNAME/README
610
-        chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
611
-        chmod 600 /home/$MY_USERNAME/README
599
+    chroot "$rootdir" useradd -d /opt/zeronet/ -s /bin/false zeronet
600
+    git clone $ZERONET_REPO $rootdir/opt/zeronet
601
+    if [ ! -d $rootdir/opt/zeronet ]; then
602
+        echo 'WARNING: Unable to clone zeronet'
603
+        return
604
+    fi
605
+    cd $rootdir/opt/zeronet
606
+    git checkout $ZERONET_COMMIT -b $ZERONET_COMMIT
607
+    echo "ZeroNet commit:$ZERONET_COMMIT" >> $rootdir$COMPLETION_FILE
608
+    chown -R zeronet:zeronet $rootdir/opt/zeronet
609
+
610
+    # Hack to ensure that the file access port is opened
611
+    # This is because zeronet normally relies on an internet site
612
+    # to do this, but on a purely local mesh the internet isn't available
613
+    sed -i 's|fileserver_port = 0|fileserver_port = config.fileserver_port\n            sys.modules["main"].file_server.port_opened = True|g' $rootdir/opt/zeronet/src/Site/Site.py
614
+
615
+    echo '[Unit]' > $rootdir/etc/systemd/system/zeronet.service
616
+    echo 'Description=Zeronet Server' >> $rootdir/etc/systemd/system/zeronet.service
617
+    echo 'After=syslog.target' >> $rootdir/etc/systemd/system/zeronet.service
618
+    echo 'After=network.target' >> $rootdir/etc/systemd/system/zeronet.service
619
+    echo '[Service]' >> $rootdir/etc/systemd/system/zeronet.service
620
+    echo 'Type=simple' >> $rootdir/etc/systemd/system/zeronet.service
621
+    echo 'User=zeronet' >> $rootdir/etc/systemd/system/zeronet.service
622
+    echo 'Group=zeronet' >> $rootdir/etc/systemd/system/zeronet.service
623
+    echo 'WorkingDirectory=/opt/zeronet' >> $rootdir/etc/systemd/system/zeronet.service
624
+    echo "ExecStart=/usr/bin/python zeronet.py --ip_external ${DEFAULT_DOMAIN_NAME}.local --trackers_file /opt/zeronet/bootstrap" >> $rootdir/etc/systemd/system/zeronet.service
625
+    echo '' >> $rootdir/etc/systemd/system/zeronet.service
626
+    echo 'TimeoutSec=300' >> $rootdir/etc/systemd/system/zeronet.service
627
+    echo '' >> $rootdir/etc/systemd/system/zeronet.service
628
+    echo '[Install]' >> $rootdir/etc/systemd/system/zeronet.service
629
+    echo 'WantedBy=multi-user.target' >> $rootdir/etc/systemd/system/zeronet.service
630
+
631
+    echo '[Unit]' > $rootdir/etc/systemd/system/tracker.service
632
+    echo 'Description=Torrent Tracker' >> $rootdir/etc/systemd/system/tracker.service
633
+    echo 'After=syslog.target' >> $rootdir/etc/systemd/system/tracker.service
634
+    echo 'After=network.target' >> $rootdir/etc/systemd/system/tracker.service
635
+    echo '[Service]' >> $rootdir/etc/systemd/system/tracker.service
636
+    echo 'Type=simple' >> $rootdir/etc/systemd/system/tracker.service
637
+    echo 'User=tracker' >> $rootdir/etc/systemd/system/tracker.service
638
+    echo 'Group=tracker' >> $rootdir/etc/systemd/system/tracker.service
639
+    echo 'WorkingDirectory=/opt/tracker' >> $rootdir/etc/systemd/system/tracker.service
640
+    echo "ExecStart=/usr/bin/bttrack --port $TRACKER_PORT --dfile /opt/tracker/dstate --logfile /opt/tracker/tracker.log --nat_check 0 --scrape_allowed full --ipv6_enabled 0" >> $rootdir/etc/systemd/system/tracker.service
641
+    echo '' >> $rootdir/etc/systemd/system/tracker.service
642
+    echo 'TimeoutSec=300' >> $rootdir/etc/systemd/system/tracker.service
643
+    echo '' >> $rootdir/etc/systemd/system/tracker.service
644
+    echo '[Install]' >> $rootdir/etc/systemd/system/tracker.service
645
+    echo 'WantedBy=multi-user.target' >> $rootdir/etc/systemd/system/tracker.service
646
+
647
+    chroot "$rootdir" useradd -d /opt/tracker/ -s /bin/false tracker
648
+    if [ ! -d $rootdir/opt/tracker ]; then
649
+        mkdir $rootdir/opt/tracker
612 650
     fi
651
+    chown -R tracker:tracker $rootdir/opt/tracker
652
+
653
+    # publish regularly
654
+    echo "* *     * * *   root    zeronetavahi > /dev/null" >> $rootdir/etc/crontab
655
+
656
+    chroot "$rootdir" systemctl enable tracker.service
657
+    chroot "$rootdir" systemctl enable zeronet.service
613 658
 }
614 659
 
615 660
 initialise_mesh() {
@@ -619,7 +664,8 @@ initialise_mesh() {
619 664
     mesh_firewall
620 665
     mesh_avahi
621 666
     mesh_batman
622
-    #mesh_tox_node
667
+    mesh_tox_node
668
+    mesh_zeronet
623 669
 
624 670
     MESH_SERVICE='mesh-setup.service'
625 671
     MESH_SETUP_DAEMON=$rootdir/etc/systemd/system/$MESH_SERVICE

+ 1
- 0
src/freedombone-image-mesh 파일 보기

@@ -37,6 +37,7 @@ function change_avahi_name {
37 37
     decarray=( 1 2 3 4 5 6 7 8 9 0 )
38 38
     PEER_ID=${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}${decarray[$RANDOM%10]}
39 39
     sed -i "s|#host-name=.*|host-name=P$PEER_ID|g" /etc/avahi/avahi-daemon.conf
40
+    sed -i "s|host-name=.*|host-name=P$PEER_ID|g" /etc/avahi/avahi-daemon.conf
40 41
     echo "New avahi name for this peer is P$PEER_ID"
41 42
     toilet "mesh-$PEER_ID"
42 43
 }