Przeglądaj źródła

Batman init script

Bob Mottram 10 lat temu
rodzic
commit
73d2ce5ee7
1 zmienionych plików z 157 dodań i 2 usunięć
  1. 157
    2
      src/freedombone

+ 157
- 2
src/freedombone Wyświetl plik

@@ -1608,7 +1608,7 @@ function install_atheros_wifi {
1608 1608
   fi
1609 1609
   # have drivers already been installed ?
1610 1610
   if [ -f /lib/firmware/htc_9271.fw ]; then
1611
-	  return
1611
+      return
1612 1612
   fi
1613 1613
   apt-get -y install build-essential cmake git m4 texinfo
1614 1614
   if [ ! -d $INSTALL_DIR ]; then
@@ -1703,7 +1703,7 @@ function mesh_batman_bridge {
1703 1703
 
1704 1704
   apt-get -y install iproute bridge-utils libnetfilter-conntrack3 batctl
1705 1705
   apt-get -y install python-dev libevent-dev ebtables python-pip git
1706
-  apt-get -y install wireless-tools
1706
+  apt-get -y install wireless-tools rfkill
1707 1707
 
1708 1708
   #install_vpn_tunnel
1709 1709
 
@@ -1726,6 +1726,161 @@ function mesh_batman_bridge {
1726 1726
       BATMAN_IPV6="$IPV6_NETWORK:$a:$b:$c:$d"
1727 1727
   fi
1728 1728
 
1729
+  echo '#!/bin/sh' > /etc/init.d/batman
1730
+  echo '### BEGIN INIT INFO' >> /etc/init.d/batman
1731
+  echo '# Provides:          mesh-node' >> /etc/init.d/batman
1732
+  echo '# Required-Start:    $local_fs $remote_fs $network' >> /etc/init.d/batman
1733
+  echo '# Required-Stop:     $local_fs $remote_fs' >> /etc/init.d/batman
1734
+  echo '# Default-Start:     2 3 4 5' >> /etc/init.d/batman
1735
+  echo '# Default-Stop:      0 1 6' >> /etc/init.d/batman
1736
+  echo '# Short-Description: Enable batman-adv based mesh node' >> /etc/init.d/batman
1737
+  echo '# Description:       Configure the first wifi network card found as a' >> /etc/init.d/batman
1738
+  echo '#                    batman-adv mesh node.' >> /etc/init.d/batman
1739
+  echo '### END INIT INFO' >> /etc/init.d/batman
1740
+  echo '#' >> /etc/init.d/batman
1741
+  echo '# Based on http://www.open-mesh.org/projects/batman-adv/wiki/Quick-start-guide' >> /etc/init.d/batman
1742
+  echo '# and http://freifunk.in-kiel.de/wiki/Eigenen_Rechner_in_das_Freifunk-Netz' >> /etc/init.d/batman
1743
+  echo '#' >> /etc/init.d/batman
1744
+  echo '# Set up bat0 network interface on Linux to join the mesh network in' >> /etc/init.d/batman
1745
+  echo '# Oslo, Norway by default.  The mesh setup can be adjusted by creating' >> /etc/init.d/batman
1746
+  echo '# /etc/default/batctl.' >> /etc/init.d/batman
1747
+  echo '' >> /etc/init.d/batman
1748
+  echo '# Exit on first error' >> /etc/init.d/batman
1749
+  echo '#set -e' >> /etc/init.d/batman
1750
+  echo '' >> /etc/init.d/batman
1751
+  echo '# Mesh definition' >> /etc/init.d/batman
1752
+  echo "ESSID=mesh" >> /etc/init.d/batman
1753
+  echo "CELLID=02:BA:00:00:03:01" >> /etc/init.d/batman
1754
+  echo 'CHANNEL=2' >> /etc/init.d/batman
1755
+  echo 'FREQUENCY=2437' >> /etc/init.d/batman
1756
+  echo '' >> /etc/init.d/batman
1757
+  echo '# Ethernet bridge definition (bridged do bat0)' >> /etc/init.d/batman
1758
+  echo 'BRIDGE=br-mesh' >> /etc/init.d/batman
1759
+  echo 'EIFACE=wlan0' >> /etc/init.d/batman
1760
+  echo '' >> /etc/init.d/batman
1761
+  echo 'if [ -e /etc/default/batctl ] ; then' >> /etc/init.d/batman
1762
+  echo '    . /etc/default/batctl' >> /etc/init.d/batman
1763
+  echo 'fi' >> /etc/init.d/batman
1764
+  echo '' >> /etc/init.d/batman
1765
+  echo 'install_dependencies() {' >> /etc/init.d/batman
1766
+  echo '    echo "info: installing dependencies"' >> /etc/init.d/batman
1767
+  echo '    apt-get update -qq' >> /etc/init.d/batman
1768
+  echo '    DEBIAN_FRONTEND=noninteractive \' >> /etc/init.d/batman
1769
+  echo '        apt-get install -qqy \' >> /etc/init.d/batman
1770
+  echo '        rfkill \' >> /etc/init.d/batman
1771
+  echo '        batctl \' >> /etc/init.d/batman
1772
+  echo '        wireless-tools \' >> /etc/init.d/batman
1773
+  echo '        bridge-utils ' >> /etc/init.d/batman
1774
+  echo '}' >> /etc/init.d/batman
1775
+  echo '' >> /etc/init.d/batman
1776
+  echo 'first_wifi_interface() {' >> /etc/init.d/batman
1777
+  echo '    IFACE=$(ls -d /sys/class/net/*/wireless 2>/dev/null | sort | head -1|cut -d/ -f5)' >> /etc/init.d/batman
1778
+  echo '    if [ -z "$IFACE" ] ;then' >> /etc/init.d/batman
1779
+  echo '        IFACE=$(iwconfig 2>/dev/null | sort | awk "/IEEE 802/ {print $1; exit}")' >> /etc/init.d/batman
1780
+  echo '    fi' >> /etc/init.d/batman
1781
+  echo '    echo $IFACE' >> /etc/init.d/batman
1782
+  echo '}' >> /etc/init.d/batman
1783
+  echo '' >> /etc/init.d/batman
1784
+  echo 'start() {' >> /etc/init.d/batman
1785
+  echo '    if [ -z "$IFACE" ] ; then' >> /etc/init.d/batman
1786
+  echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> /etc/init.d/batman
1787
+  echo '        return' >> /etc/init.d/batman
1788
+  echo '    fi' >> /etc/init.d/batman
1789
+  echo '    echo "info: enabling batman-adv mesh network $ESSID on $IFACE"' >> /etc/init.d/batman
1790
+  echo '    $NETWORKMANAGER stop' >> /etc/init.d/batman
1791
+  echo '    sleep 5' >> /etc/init.d/batman
1792
+  echo '' >> /etc/init.d/batman
1793
+  echo '    # Might have to re-enable wifi' >> /etc/init.d/batman
1794
+  echo '    rfkill unblock $(rfkill list|awk -F: "/phy/ {print $1}") || true' >> /etc/init.d/batman
1795
+  echo '' >> /etc/init.d/batman
1796
+  echo '    ifconfig $IFACE down' >> /etc/init.d/batman
1797
+  echo '    ifconfig $IFACE mtu 1528' >> /etc/init.d/batman
1798
+  echo '    iwconfig $IFACE enc off' >> /etc/init.d/batman
1799
+  echo '    iwconfig $IFACE mode ad-hoc essid $ESSID channel $CHANNEL' >> /etc/init.d/batman
1800
+  echo '    sleep 1' >> /etc/init.d/batman
1801
+  echo '    iwconfig $IFACE ap $CELLID' >> /etc/init.d/batman
1802
+  echo '' >> /etc/init.d/batman
1803
+  echo '    modprobe batman-adv' >> /etc/init.d/batman
1804
+  echo '    batctl if add $IFACE' >> /etc/init.d/batman
1805
+  echo '    ifconfig $IFACE up' >> /etc/init.d/batman
1806
+  echo '    ifconfig bat0 up promisc' >> /etc/init.d/batman
1807
+  echo '' >> /etc/init.d/batman
1808
+  echo '    #Use persistent HWAddr' >> /etc/init.d/batman
1809
+  echo '    ether_new=$(ifconfig eth0 | grep HWaddr | sed -e "s/.*HWaddr //")' >> /etc/init.d/batman
1810
+  echo '    if [ ! -f /var/lib/mesh-node/bat0 ]' >> /etc/init.d/batman
1811
+  echo '    then' >> /etc/init.d/batman
1812
+  echo '        mkdir /var/lib/mesh-node' >> /etc/init.d/batman
1813
+  echo '        echo "${ether_new}" > /var/lib/mesh-node/bat0' >> /etc/init.d/batman
1814
+  echo '    else' >> /etc/init.d/batman
1815
+  echo '        ether=$(cat /var/lib/mesh-node/bat0)' >> /etc/init.d/batman
1816
+  echo '        ifconfig bat0 hw ether ${ether}' >> /etc/init.d/batman
1817
+  echo '    fi' >> /etc/init.d/batman
1818
+  echo '' >> /etc/init.d/batman
1819
+  echo '    if [ "$EIFACE" ] ; then' >> /etc/init.d/batman
1820
+  echo '        ifconfig $EIFACE up promisc' >> /etc/init.d/batman
1821
+  echo '        brctl addbr $BRIDGE' >> /etc/init.d/batman
1822
+  echo '        brctl addif $BRIDGE bat0' >> /etc/init.d/batman
1823
+  echo '        brctl addif $BRIDGE $EIFACE' >> /etc/init.d/batman
1824
+  echo '        ifconfig $BRIDGE up' >> /etc/init.d/batman
1825
+  echo '    fi' >> /etc/init.d/batman
1826
+  echo '}' >> /etc/init.d/batman
1827
+  echo '' >> /etc/init.d/batman
1828
+  echo 'stop() {' >> /etc/init.d/batman
1829
+  echo '    if [ -z "$IFACE" ] ; then' >> /etc/init.d/batman
1830
+  echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> /etc/init.d/batman
1831
+  echo '        return' >> /etc/init.d/batman
1832
+  echo '    fi' >> /etc/init.d/batman
1833
+  echo '    if [ "$EIFACE" ] ; then' >> /etc/init.d/batman
1834
+  echo '        brctl delif $BRIDGE bat0' >> /etc/init.d/batman
1835
+  echo '        brctl delif $BRIDGE $EIFACE' >> /etc/init.d/batman
1836
+  echo '        ifconfig $BRIDGE down || true' >> /etc/init.d/batman
1837
+  echo '        brctl delbr $BRIDGE' >> /etc/init.d/batman
1838
+  echo '        ifconfig $EIFACE down -promisc' >> /etc/init.d/batman
1839
+  echo '    fi' >> /etc/init.d/batman
1840
+  echo '' >> /etc/init.d/batman
1841
+  echo '    ifconfig bat0 down -promisc' >> /etc/init.d/batman
1842
+  echo '' >> /etc/init.d/batman
1843
+  echo '    batctl if del $IFACE' >> /etc/init.d/batman
1844
+  echo '    rmmod batman-adv' >> /etc/init.d/batman
1845
+  echo '    ifconfig $IFACE mtu 1500' >> /etc/init.d/batman
1846
+  echo '    ifconfig $IFACE down' >> /etc/init.d/batman
1847
+  echo '    iwconfig $IFACE mode managed' >> /etc/init.d/batman
1848
+  echo '' >> /etc/init.d/batman
1849
+  echo '    $NETWORKMANAGER restart' >> /etc/init.d/batman
1850
+  echo '}' >> /etc/init.d/batman
1851
+  echo '' >> /etc/init.d/batman
1852
+  echo 'status() {' >> /etc/init.d/batman
1853
+  echo '    batctl o' >> /etc/init.d/batman
1854
+  echo '}' >> /etc/init.d/batman
1855
+  echo '' >> /etc/init.d/batman
1856
+  echo 'IFACE=$(first_wifi_interface)' >> /etc/init.d/batman
1857
+  echo '' >> /etc/init.d/batman
1858
+  echo '# Work even if network-manager isnt installed' >> /etc/init.d/batman
1859
+  echo 'if [ -e /etc/init.d/network-manager ] || [ -e /etc/init/network-manager ] ; then' >> /etc/init.d/batman
1860
+  echo '    NETWORKMANAGER="service network-manager"' >> /etc/init.d/batman
1861
+  echo 'else' >> /etc/init.d/batman
1862
+  echo '    NETWORKMANAGER=true' >> /etc/init.d/batman
1863
+  echo 'fi' >> /etc/init.d/batman
1864
+  echo '' >> /etc/init.d/batman
1865
+  echo 'case "$1" in' >> /etc/init.d/batman
1866
+  echo '    setup)' >> /etc/init.d/batman
1867
+  echo '        install_dependencies' >> /etc/init.d/batman
1868
+  echo '        ;;' >> /etc/init.d/batman
1869
+  echo '    start|stop|status)' >> /etc/init.d/batman
1870
+  echo '        $1' >> /etc/init.d/batman
1871
+  echo '        ;;' >> /etc/init.d/batman
1872
+  echo '    force-reload)' >> /etc/init.d/batman
1873
+  echo '        ;;' >> /etc/init.d/batman
1874
+  echo '    *)' >> /etc/init.d/batman
1875
+  echo '    echo "error: invalid parameter $1"' >> /etc/init.d/batman
1876
+  echo '    echo "usage: $0 {start|stop|status}"' >> /etc/init.d/batman
1877
+  echo '    exit 1' >> /etc/init.d/batman
1878
+  echo '    ;;' >> /etc/init.d/batman
1879
+  echo 'esac' >> /etc/init.d/batman
1880
+  echo 'exit 0' >> /etc/init.d/batman
1881
+  chmod +x /etc/init.d/batman
1882
+  update-rc.d batman defaults
1883
+
1729 1884
   if ! grep -q "# Mesh Networking (B.A.T.M.A.N)" /etc/network/interfaces; then
1730 1885
       echo '' >> /etc/network/interfaces
1731 1886
       echo '# Mesh Networking (B.A.T.M.A.N)' >> /etc/network/interfaces