Quellcode durchsuchen

Merge branch 'stretch' of https://github.com/bashrc/freedombone

Bob Mottram vor 7 Jahren
Ursprung
Commit
4e77ed90b4

+ 45
- 3
src/freedombone-image-customise Datei anzeigen

@@ -125,6 +125,9 @@ ENABLE_ZERONET=
125 125
 
126 126
 MESH_TEXT_EDITOR='pluma'
127 127
 
128
+BABEL_REPO="https://github.com/jech/babeld"
129
+BABEL_COMMIT='d9390d1fee337c464e67255bbbd879d975e126e2'
130
+
128 131
 OLSR2_REPO="https://github.com/OLSR/OONF"
129 132
 OLSR2_COMMIT='81033251c4ee1c5699bfee9d2985112c6266ab0a'
130 133
 
@@ -671,6 +674,42 @@ mesh_shutdown_script() {
671 674
     chroot "$rootdir" systemctl enable meshshutdown
672 675
 }
673 676
 
677
+install_babel() {
678
+    git clone $BABEL_REPO $rootdir/etc/babel
679
+
680
+    cat <<EOF > $rootdir/usr/bin/install_babel
681
+#!/bin/bash
682
+cd /etc/babel
683
+git checkout $BABEL_COMMIT -b $BABEL_COMMIT
684
+cd /etc/babel
685
+make
686
+make install
687
+EOF
688
+    chroot "$rootdir" chmod +x /usr/bin/install_babel
689
+    chroot "$rootdir" /usr/bin/install_babel
690
+
691
+    if [ ! -f $rootdir/usr/local/bin/babeld ]; then
692
+        echo $'Unable to build Babel'
693
+        exit 52382524
694
+    fi
695
+
696
+    rm $rootdir/usr/bin/install_babel
697
+
698
+    echo '[Unit]' > $rootdir/etc/systemd/system/babel.service
699
+    echo 'Description=Babel mesh routing protocol' >> $rootdir/etc/systemd/system/babel.service
700
+    echo 'Requires=network.target' >> $rootdir/etc/systemd/system/babel.service
701
+    echo 'After=network.target' >> $rootdir/etc/systemd/system/babel.service
702
+    echo '' >> $rootdir/etc/systemd/system/babel.service
703
+    echo '[Service]' >> $rootdir/etc/systemd/system/babel.service
704
+    echo 'User=root' >> $rootdir/etc/systemd/system/babel.service
705
+    echo 'Group=root' >> $rootdir/etc/systemd/system/babel.service
706
+    echo 'ExecStart=/usr/local/bin/babeld wlan0' >> $rootdir/etc/systemd/system/babel.service
707
+    echo 'Restart=on-failure' >> $rootdir/etc/systemd/system/babel.service
708
+    echo '' >> $rootdir/etc/systemd/system/babel.service
709
+    echo '[Install]' >> $rootdir/etc/systemd/system/babel.service
710
+    echo 'WantedBy=multi-user.target' >> $rootdir/etc/systemd/system/babel.service
711
+}
712
+
674 713
 install_olsr2() {
675 714
     chroot "$rootdir" apt-get -yq install cmake libnl-3-dev
676 715
 
@@ -896,6 +935,7 @@ initialise_mesh() {
896 935
     install_bmx6
897 936
     install_bmx7
898 937
     install_olsr2
938
+    install_babel
899 939
     mesh_shutdown_script
900 940
     install_vpn
901 941
     install_tomb
@@ -919,6 +959,11 @@ initialise_mesh() {
919 959
         install_zeronet
920 960
     fi
921 961
 
962
+    # ssh server not available on mesh peers
963
+    if [ -f $rootdir/etc/avahi/services/ssh.service ]; then
964
+        rm $rootdir/etc/avahi/services/ssh.service
965
+    fi
966
+
922 967
     MESH_SERVICE='mesh-setup.service'
923 968
     MESH_SETUP_DAEMON=$rootdir/etc/systemd/system/$MESH_SERVICE
924 969
 
@@ -1489,9 +1534,6 @@ else
1489 1534
         if [ -f /home/$MY_USERNAME/Desktop/tox.desktop ]; then
1490 1535
             rm /home/$MY_USERNAME/Desktop/tox.desktop
1491 1536
         fi
1492
-        if [ -f /home/$MY_USERNAME/Desktop/routing.desktop ]; then
1493
-            rm /home/$MY_USERNAME/Desktop/routing.desktop
1494
-        fi
1495 1537
         pkill qtox
1496 1538
     fi
1497 1539
 

+ 33
- 0
src/freedombone-image-mesh Datei anzeigen

@@ -810,6 +810,35 @@ function show_desktop_icons {
810 810
     #echo 'Terminal=false' >> /home/$MY_USERNAME/Desktop/audio.desktop
811 811
     #echo 'Categories=Application;' >> /home/$MY_USERNAME/Desktop/audio.desktop
812 812
 
813
+    echo '[Desktop Entry]' > /home/$MY_USERNAME/Desktop/routing.desktop
814
+    echo 'Type=Application' >> /home/$MY_USERNAME/Desktop/routing.desktop
815
+    echo 'Name=Routing Protocol' >> /home/$MY_USERNAME/Desktop/routing.desktop
816
+    echo 'Name[el]=Πρωτόκολλο δρομολόγησης' >> /home/$MY_USERNAME/Desktop/routing.desktop
817
+    echo 'Name[ar]=بروتوكول التوجيه' >> /home/$MY_USERNAME/Desktop/routing.desktop
818
+    echo "Name[ca]=Protocol d'enrutament" >> /home/$MY_USERNAME/Desktop/routing.desktop
819
+    echo 'Name[hi]=रूटिंग प्रोटोकॉल' >> /home/$MY_USERNAME/Desktop/routing.desktop
820
+    echo 'Name[fr]=Protocole de routage' >> /home/$MY_USERNAME/Desktop/routing.desktop
821
+    echo 'Name[de]=Routingprotokoll' >> /home/$MY_USERNAME/Desktop/routing.desktop
822
+    echo 'Name[es]=Protocolo de enrutamiento' >> /home/$MY_USERNAME/Desktop/routing.desktop
823
+    echo 'Name[it]=Protocollo di routing' >> /home/$MY_USERNAME/Desktop/routing.desktop
824
+    echo 'Name[ru]=Протокол маршрутизации' >> /home/$MY_USERNAME/Desktop/routing.desktop
825
+    echo 'Name[zh]=路由协议' >> /home/$MY_USERNAME/Desktop/routing.desktop
826
+    echo 'Comment=Select the mesh routing protocol' >> /home/$MY_USERNAME/Desktop/routing.desktop
827
+    echo 'Comment[el]=Επιλέξτε το πρωτόκολλο δρομολόγησης πλέγματος' >> /home/$MY_USERNAME/Desktop/routing.desktop
828
+    echo 'Comment[ar]=حدد بروتوكول توجيه الشبكة' >> /home/$MY_USERNAME/Desktop/routing.desktop
829
+    echo "Comment[ca]=Seleccioneu el protocol d'enrutament de malles" >> /home/$MY_USERNAME/Desktop/routing.desktop
830
+    echo 'Comment[hi]=जाल रूटिंग प्रोटोकॉल का चयन करें' >> /home/$MY_USERNAME/Desktop/routing.desktop
831
+    echo 'Comment[fr]=Sélectionnez le protocole de routage de maillage' >> /home/$MY_USERNAME/Desktop/routing.desktop
832
+    echo 'Comment[de]=Wählen Sie das Mesh-Routing-Protokoll' >> /home/$MY_USERNAME/Desktop/routing.desktop
833
+    echo 'Comment[es]=Seleccione el protocolo de enrutamiento de malla' >> /home/$MY_USERNAME/Desktop/routing.desktop
834
+    echo "Comment[it]=Seleziona il protocollo di instradamento della mesh" >> /home/$MY_USERNAME/Desktop/routing.desktop
835
+    echo 'Comment[ru]=Выберите протокол маршрутизации сетки' >> /home/$MY_USERNAME/Desktop/routing.desktop
836
+    echo 'Comment[zh]=选择网状路由协议' >> /home/$MY_USERNAME/Desktop/routing.desktop
837
+    echo "Exec=mate-terminal -e \"/usr/local/bin/${PROJECT_NAME}-mesh-routing\"" >> /home/$MY_USERNAME/Desktop/routing.desktop
838
+    echo 'Icon=/usr/share/$PROJECT_NAME/avatars/icon_routing.png' >> /home/$MY_USERNAME/Desktop/routing.desktop
839
+    echo 'Terminal=false' >> /home/$MY_USERNAME/Desktop/routing.desktop
840
+    echo 'Categories=Application' >> /home/$MY_USERNAME/Desktop/routing.desktop
841
+
813 842
     # set permissions
814 843
     chmod +x /home/$MY_USERNAME/Desktop/*.desktop
815 844
     chown ${MY_USERNAME}:${MY_USERNAME} /home/$MY_USERNAME/Desktop/*
@@ -1427,6 +1456,10 @@ if [ -f $MESH_INSTALL_SETUP ]; then
1427 1456
     systemctl disable olsr2
1428 1457
     echo $'OLSR2 disabled' >> $INSTALL_LOG
1429 1458
 
1459
+    systemctl stop babel
1460
+    systemctl disable babel
1461
+    echo $'Babel disabled' >> $INSTALL_LOG
1462
+
1430 1463
     #tomb slam all
1431 1464
     tmp_ram_disk 100
1432 1465
     enable_predictable_device_names

+ 16
- 0
src/freedombone-mesh-batman Datei anzeigen

@@ -73,9 +73,11 @@ function stop {
73 73
     systemctl stop bmx6
74 74
     systemctl stop bmx7
75 75
     systemctl stop olsr2
76
+    systemctl stop babel
76 77
     systemctl disable bmx6
77 78
     systemctl disable bmx7
78 79
     systemctl disable olsr2
80
+    systemctl disable babel
79 81
     systemctl stop dnsmasq
80 82
     systemctl disable dnsmasq
81 83
 
@@ -210,6 +212,7 @@ function start {
210 212
     sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx6 dev=${IFACE}|g" /etc/systemd/system/bmx6.service
211 213
     sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx7 dev=${IFACE}|g" /etc/systemd/system/bmx7.service
212 214
     sed -i "s|ExecStart=.*|ExecStart=/usr/local/sbin/olsrd2_static ${IFACE}|g" /etc/systemd/system/olsr2.service
215
+    sed -i "s|ExecStart=.*|ExecStart=/usr/local/bin/babeld ${IFACE}|g" /etc/systemd/system/babel.service
213 216
     systemctl daemon-reload
214 217
 
215 218
     add_wifi_interface $IFACE $WIFI_SSID ad-hoc $CHANNEL
@@ -234,6 +237,7 @@ function start {
234 237
             sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx6 dev=${IFACE} dev=${EIFACE}|g" /etc/systemd/system/bmx6.service
235 238
             sed -i "s|ExecStart=.*|ExecStart=/usr/sbin/bmx7 dev=${IFACE} dev=${EIFACE}|g" /etc/systemd/system/bmx7.service
236 239
             sed -i "s|ExecStart=.*|ExecStart=/usr/local/sbin/olsrd2_static ${IFACE} ${EIFACE}|g" /etc/systemd/system/olsr2.service
240
+            sed -i "s|ExecStart=.*|ExecStart=/usr/local/bin/babeld ${IFACE} ${EIFACE}|g" /etc/systemd/system/babel.service
237 241
             systemctl daemon-reload
238 242
         else
239 243
             echo $"$EIFACE is not connected"
@@ -270,11 +274,23 @@ function start {
270 274
     fi
271 275
 
272 276
     if grep -q "olsr" $MESH_DEFAULT_PROTOCOL; then
277
+        IFACE=$(cat /etc/systemd/system/olsr2.service | grep ExecStart | awk -F ' ' '{print $2}')
278
+        mesh_generate_ipv6_address $IFACE
279
+
273 280
         systemctl enable olsr2
274 281
         systemctl restart olsr2
275 282
         sed -i 's|<type>.*|<type>_olsr2._tcp</type>|g' /etc/avahi/services/routing.service
276 283
     fi
277 284
 
285
+    if grep -q "babel" $MESH_DEFAULT_PROTOCOL; then
286
+        IFACE=$(cat /etc/systemd/system/babel.service | grep ExecStart | awk -F ' ' '{print $2}')
287
+        mesh_generate_ipv6_address $IFACE
288
+
289
+        systemctl enable babel
290
+        systemctl restart babel
291
+        sed -i 's|<type>.*|<type>_babel._tcp</type>|g' /etc/avahi/services/routing.service
292
+    fi
293
+
278 294
     systemctl restart avahi-daemon
279 295
 
280 296
     verify

+ 4
- 0
src/freedombone-mesh-install Datei anzeigen

@@ -233,6 +233,10 @@ function mesh_firewall {
233 233
     echo 'ip6tables -A INPUT -p udp --dport 269 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
234 234
     echo 'iptables -A INPUT -p tcp --dport 138 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
235 235
     echo 'ip6tables -A INPUT -p tcp --dport 138 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
236
+
237
+    echo '# Babel' >> $MESH_FIREWALL_SCRIPT
238
+    echo 'iptables -A INPUT -p udp --dport 6696 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
239
+    echo 'ip6tables -A INPUT -p udp --dport 6696 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
236 240
     chmod +x $MESH_FIREWALL_SCRIPT
237 241
 
238 242
     echo '[Unit]' > $FIREWALL_FILENAME

+ 33
- 1
src/freedombone-mesh-routing Datei anzeigen

@@ -34,10 +34,24 @@ export TEXTDOMAINDIR="/usr/share/locale"
34 34
 source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-wifi
35 35
 source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-mesh
36 36
 
37
+clear
38
+echo ''
39
+echo $'Scanning for BMX6 protocol...'
37 40
 bmx6_peers=$(avahi-browse -at | grep routing | grep bmx6 | wc -l)
41
+
42
+clear
43
+echo ''
44
+echo $'Scanning for OLSR2 protocol...'
38 45
 olsr2_peers=$(avahi-browse -at | grep routing | grep olsr2 | wc -l)
39 46
 
40
-data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"OLSR2 ($olsr2_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150)
47
+clear
48
+echo ''
49
+echo $'Scanning for Babel protocol...'
50
+babel_peers=$(avahi-browse -at | grep routing | grep babel | wc -l)
51
+
52
+clear
53
+
54
+data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"OLSR2 ($olsr2_peers)" 3 $"Babel ($babel_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150)
41 55
 
42 56
 sel=$?
43 57
 case $sel in
@@ -63,6 +77,8 @@ case $data in
63 77
         sudo systemctl disable bmx7
64 78
         sudo systemctl stop olsr2
65 79
         sudo systemctl disable olsr2
80
+        sudo systemctl stop babel
81
+        sudo systemctl disable babel
66 82
         sudo systemctl enable bmx6
67 83
         sudo systemctl start bmx6
68 84
         ;;
@@ -71,9 +87,25 @@ case $data in
71 87
         sudo systemctl disable bmx7
72 88
         sudo systemctl stop bmx6
73 89
         sudo systemctl disable bmx6
90
+        sudo systemctl stop babel
91
+        sudo systemctl disable babel
92
+        IFACE=$(cat /etc/systemd/system/olsr2.service | grep ExecStart | awk -F ' ' '{print $2}')
93
+        mesh_generate_ipv6_address $IFACE
74 94
         sudo systemctl enable olsr2
75 95
         sudo systemctl start olsr2
76 96
         ;;
97
+    3)  sudo /tmp/change_routing 'babel'
98
+        sudo systemctl stop bmx7
99
+        sudo systemctl disable bmx7
100
+        sudo systemctl stop bmx6
101
+        sudo systemctl disable bmx6
102
+        sudo systemctl stop olsr2
103
+        sudo systemctl disable olsr2
104
+        IFACE=$(cat /etc/systemd/system/babel.service | grep ExecStart | awk -F ' ' '{print $2}')
105
+        mesh_generate_ipv6_address $IFACE
106
+        sudo systemctl enable babel
107
+        sudo systemctl start babel
108
+        ;;
77 109
 esac
78 110
 
79 111
 rm /tmp/change_routing

+ 34
- 1
src/freedombone-utils-mesh Datei anzeigen

@@ -32,6 +32,28 @@
32 32
 MESH_CURRENT_PROTOCOL=/root/.mesh_protocol
33 33
 MESH_DEFAULT_PROTOCOL=/root/.mesh_protocol_default
34 34
 
35
+function mesh_generate_ipv6_address {
36
+    network=fd66:66:66
37
+
38
+    if [ $1 ]; then
39
+        search_ipv6=$(ifconfig $1 | grep $network)
40
+        if [ $search_ipv6 ]; then
41
+            result=$(ifconfig $1 | grep $network | awk -F ' ' '{print $2}')
42
+            ip -6 addr add ${result}/128 dev $1
43
+            return
44
+        fi
45
+    fi
46
+
47
+    ipv6_array=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )
48
+    a=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}
49
+    b=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}
50
+    c=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}
51
+    d=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}
52
+    e=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}
53
+    result=$network:$a:$b:$c:$d:$e
54
+    ip -6 addr add ${result}/128 dev $1
55
+}
56
+
35 57
 function mesh_protocol_init {
36 58
     if [[ $1 == "start" ]]; then
37 59
         # install avahi
@@ -198,6 +220,9 @@ function enable_mesh_firewall {
198 220
     # OLSR2/MANET
199 221
     iptables -A INPUT -p udp --dport 269 -j ACCEPT
200 222
     iptables -A INPUT -p tcp --dport 138 -j ACCEPT
223
+    # Babel
224
+    iptables -A INPUT -p udp --dport 6696 -j ACCEPT
225
+    ip6tables -A INPUT -p udp --dport 6696 -j ACCEPT
201 226
 
202 227
 
203 228
     ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
@@ -231,6 +256,9 @@ function enable_mesh_firewall {
231 256
     # OLSR2/MANET
232 257
     ip6tables -A INPUT -p udp --dport 269 -j ACCEPT
233 258
     ip6tables -A INPUT -p tcp --dport 138 -j ACCEPT
259
+    # Babel
260
+    iptables -A INPUT -p udp --dport 6696 -j ACCEPT
261
+    ip6tables -A INPUT -p udp --dport 6696 -j ACCEPT
234 262
 
235 263
 
236 264
     # vpn over the internet
@@ -282,6 +310,9 @@ function disable_mesh_firewall {
282 310
     # OLSR2/MANET
283 311
     iptables -D INPUT -p udp --dport 269 -j ACCEPT
284 312
     iptables -D INPUT -p tcp --dport 138 -j ACCEPT
313
+    # Babel
314
+    iptables -D INPUT -p udp --dport 6696 -j ACCEPT
315
+    ip6tables -D INPUT -p udp --dport 6696 -j ACCEPT
285 316
 
286 317
 
287 318
     ip6tables -D INPUT -p tcp --dport $TRACKER_PORT -j ACCEPT
@@ -314,7 +345,9 @@ function disable_mesh_firewall {
314 345
     # OLSR2/MANET
315 346
     ip6tables -D INPUT -p udp --dport 269 -j ACCEPT
316 347
     ip6tables -D INPUT -p tcp --dport 138 -j ACCEPT
317
-
348
+    # Babel
349
+    iptables -D INPUT -p udp --dport 6696 -j ACCEPT
350
+    ip6tables -D INPUT -p udp --dport 6696 -j ACCEPT
318 351
 
319 352
     # vpn over the internet
320 353
     iptables -D INPUT -p tcp --dport 653 -j ACCEPT