|
@@ -374,6 +374,10 @@ CJDNS_IPV6=
|
374
|
374
|
CJDNS_PASSWORD=
|
375
|
375
|
CJDNS_PORT=
|
376
|
376
|
|
|
377
|
+# B.A.T.M.A.N settings
|
|
378
|
+ENABLE_BATMAN="no"
|
|
379
|
+BATMAN_IP='10.47.254.254'
|
|
380
|
+
|
377
|
381
|
function show_help {
|
378
|
382
|
echo ''
|
379
|
383
|
echo 'freedombone -c [configuration file]'
|
|
@@ -617,6 +621,11 @@ else
|
617
|
621
|
shift
|
618
|
622
|
ENABLE_CJDNS="yes"
|
619
|
623
|
;;
|
|
624
|
+ # Enable B.A.T.M.A.N
|
|
625
|
+ --batman)
|
|
626
|
+ shift
|
|
627
|
+ ENABLE_BATMAN="yes"
|
|
628
|
+ ;;
|
620
|
629
|
# VoIP server password
|
621
|
630
|
--vpass)
|
622
|
631
|
shift
|
|
@@ -796,6 +805,12 @@ function read_configuration {
|
796
|
805
|
if grep -q "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE; then
|
797
|
806
|
LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
798
|
807
|
fi
|
|
808
|
+ if grep -q "ENABLE_BATMAN" $CONFIGURATION_FILE; then
|
|
809
|
+ ENABLE_BATMAN=$(grep "ENABLE_BATMAN" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
|
810
|
+ fi
|
|
811
|
+ if grep -q "BATMAN_IP" $CONFIGURATION_FILE; then
|
|
812
|
+ BATMAN_IP=$(grep "BATMAN_IP" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
|
813
|
+ fi
|
799
|
814
|
if grep -q "ENABLE_CJDNS" $CONFIGURATION_FILE; then
|
800
|
815
|
ENABLE_CJDNS=$(grep "ENABLE_CJDNS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
801
|
816
|
fi
|
|
@@ -1495,6 +1510,76 @@ function mesh_cjdns_tools {
|
1495
|
1510
|
echo 'mesh_cjdns_tools' >> $COMPLETION_FILE
|
1496
|
1511
|
}
|
1497
|
1512
|
|
|
1513
|
+function mesh_batman {
|
|
1514
|
+ # https://sudoroom.org/wiki/Mesh/Relay_setup
|
|
1515
|
+ # also see http://www.netlore.co.uk/airmesh/
|
|
1516
|
+ if grep -Fxq "mesh_batman" $COMPLETION_FILE; then
|
|
1517
|
+ return
|
|
1518
|
+ fi
|
|
1519
|
+ if [[ $ENABLE_BATMAN != "yes" ]]; then
|
|
1520
|
+ return
|
|
1521
|
+ fi
|
|
1522
|
+
|
|
1523
|
+ modprobe batman-adv
|
|
1524
|
+ [ $? -ne 0 ] && echo "B.A.T.M.A.N module not available" && exit 76482
|
|
1525
|
+ if ! grep -q "batman_adv" /etc/modules; then
|
|
1526
|
+ echo 'batman_adv' >> /etc/modules
|
|
1527
|
+ fi
|
|
1528
|
+
|
|
1529
|
+ modprobe l2tp_core
|
|
1530
|
+ [ $? -ne 0 ] && echo "l2tp_core module not available" && exit 7358
|
|
1531
|
+ if ! grep -q "l2tp_core" /etc/modules; then
|
|
1532
|
+ echo 'l2tp_core' >> /etc/modules
|
|
1533
|
+ fi
|
|
1534
|
+
|
|
1535
|
+ modprobe l2tp_eth
|
|
1536
|
+ [ $? -ne 0 ] && echo "l2tp_eth module not available" && exit 8735
|
|
1537
|
+ if ! grep -q "l2tp_eth" /etc/modules; then
|
|
1538
|
+ echo 'l2tp_eth' >> /etc/modules
|
|
1539
|
+ fi
|
|
1540
|
+
|
|
1541
|
+ modprobe l2tp_netlink
|
|
1542
|
+ [ $? -ne 0 ] && echo "l2tp_netlink module not available" && exit 87367
|
|
1543
|
+ if ! grep -q "l2tp_netlink" /etc/modules; then
|
|
1544
|
+ echo 'l2tp_netlink' >> /etc/modules
|
|
1545
|
+ fi
|
|
1546
|
+
|
|
1547
|
+ if ! grep -q "Mesh Networking (B.A.T.M.A.N)" /etc/network/interfaces; then
|
|
1548
|
+ echo '' >> /etc/network/interfaces
|
|
1549
|
+ echo '# Mesh Networking (B.A.T.M.A.N)' >> /etc/network/interfaces
|
|
1550
|
+ echo 'iface bat0 inet static' >> /etc/network/interfaces
|
|
1551
|
+ echo " address $BATMAN_IP" >> /etc/network/interfaces
|
|
1552
|
+ echo ' netmask 255.0.0.0' >> /etc/network/interfaces
|
|
1553
|
+ fi
|
|
1554
|
+
|
|
1555
|
+ apt-get -y install iproute bridge-utils libnetfilter-conntrack3 python-dev libevent-dev ebtables python-pip git
|
|
1556
|
+
|
|
1557
|
+ cd $BUILD_PATH
|
|
1558
|
+ git clone https://github.com/wlanslovenija/tunneldigger.git /opt/tunneldigger
|
|
1559
|
+ chown root:root -R /opt/tunneldigger
|
|
1560
|
+ cd /opt/tunneldigger/broker
|
|
1561
|
+ pip install -r requirements.txt
|
|
1562
|
+
|
|
1563
|
+ EXTERNAL_IP=$(TODO)
|
|
1564
|
+ sed -i 's|address=.*|address=$EXTERNAL_IP|g' l2tp_broker.cfg
|
|
1565
|
+ sed -i 's|interface=.*|interface=eth0|g' l2tp_broker.cfg
|
|
1566
|
+ sed -i 's|session.up=.*|session.up=/opt/tunneldigger/broker/scripts/up_hook.sh|g' l2tp_broker.cfg
|
|
1567
|
+
|
|
1568
|
+ cd /opt/tunneldigger/broker/scripts
|
|
1569
|
+ echo '#!/bin/sh' > /opt/tunneldigger/broker/scripts/up_hook.sh
|
|
1570
|
+ echo 'INTERFACE="$3"' >> /opt/tunneldigger/broker/scripts/up_hook.sh
|
|
1571
|
+ echo 'ifconfig $INTERFACE up' >> /opt/tunneldigger/broker/scripts/up_hook.sh
|
|
1572
|
+ echo 'batctl if add $INTERFACE' >> /opt/tunneldigger/broker/scripts/up_hook.sh
|
|
1573
|
+ echo 'if [ `cat /sys/class/net/bat0/operstate` != "up" ]; then' >> /opt/tunneldigger/broker/scripts/up_hook.sh
|
|
1574
|
+ echo " ifconfig bat0 $BATMAN_IP netmask 255.0.0.0 up" >> /opt/tunneldigger/broker/scripts/up_hook.sh
|
|
1575
|
+ echo 'fi' >> /opt/tunneldigger/broker/scripts/up_hook.sh
|
|
1576
|
+ chmod 755 up_hook.sh
|
|
1577
|
+
|
|
1578
|
+ # TODO make a systemd service to run ./l2tp_broker.py l2tp_broker.cfg
|
|
1579
|
+
|
|
1580
|
+ echo 'mesh_batman' >> $COMPLETION_FILE
|
|
1581
|
+}
|
|
1582
|
+
|
1498
|
1583
|
function remove_instructions_from_motd {
|
1499
|
1584
|
sed -i '/## /d' /etc/motd
|
1500
|
1585
|
}
|