|
@@ -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
|