| 
				
			 | 
			
			
				@@ -0,0 +1,918 @@ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				1
			 | 
			
			
				+#!/bin/bash 
			 | 
		
	
		
			
			| 
				
			 | 
			
				2
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				+# .---.                  .              . 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+# |                      |              | 
			 | 
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				+# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-. 
			 | 
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				+# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				7
			 | 
			
			
				+# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+#                    Freedom in the Cloud 
			 | 
		
	
		
			
			| 
				
			 | 
			
				10
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
			 | 
			
				11
			 | 
			
			
				+# Installs mesh applications. This avoids duplicated functions 
			 | 
		
	
		
			
			| 
				
			 | 
			
				12
			 | 
			
			
				+# within freedombone and freedombone-image-customize and also 
			 | 
		
	
		
			
			| 
				
			 | 
			
				13
			 | 
			
			
				+# for client installs 
			 | 
		
	
		
			
			| 
				
			 | 
			
				14
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				+# License 
			 | 
		
	
		
			
			| 
				
			 | 
			
				16
			 | 
			
			
				+# ======= 
			 | 
		
	
		
			
			| 
				
			 | 
			
				17
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
			 | 
			
				18
			 | 
			
			
				+# This program is free software: you can redistribute it and/or modify 
			 | 
		
	
		
			
			| 
				
			 | 
			
				19
			 | 
			
			
				+# it under the terms of the GNU Affero General Public License as published by 
			 | 
		
	
		
			
			| 
				
			 | 
			
				20
			 | 
			
			
				+# the Free Software Foundation, either version 3 of the License, or 
			 | 
		
	
		
			
			| 
				
			 | 
			
				21
			 | 
			
			
				+# (at your option) any later version. 
			 | 
		
	
		
			
			| 
				
			 | 
			
				22
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
			 | 
			
				23
			 | 
			
			
				+# This program is distributed in the hope that it will be useful, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				24
			 | 
			
			
				+# but WITHOUT ANY WARRANTY; without even the implied warranty of 
			 | 
		
	
		
			
			| 
				
			 | 
			
				25
			 | 
			
			
				+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
			 | 
		
	
		
			
			| 
				
			 | 
			
				26
			 | 
			
			
				+# GNU Affero General Public License for more details. 
			 | 
		
	
		
			
			| 
				
			 | 
			
				27
			 | 
			
			
				+# 
			 | 
		
	
		
			
			| 
				
			 | 
			
				28
			 | 
			
			
				+# You should have received a copy of the GNU Affero General Public License 
			 | 
		
	
		
			
			| 
				
			 | 
			
				29
			 | 
			
			
				+# along with this program.  If not, see <http://www.gnu.org/licenses/>. 
			 | 
		
	
		
			
			| 
				
			 | 
			
				30
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				31
			 | 
			
			
				+PROJECT_NAME='freedombone' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				32
			 | 
			
			
				+INSTALL_DIR=/root/build 
			 | 
		
	
		
			
			| 
				
			 | 
			
				33
			 | 
			
			
				+COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt 
			 | 
		
	
		
			
			| 
				
			 | 
			
				34
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				35
			 | 
			
			
				+export TEXTDOMAIN=${PROJECT_NAME}-mesh-install 
			 | 
		
	
		
			
			| 
				
			 | 
			
				36
			 | 
			
			
				+export TEXTDOMAINDIR="/usr/share/locale" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				37
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				38
			 | 
			
			
				+# for mesh installs 
			 | 
		
	
		
			
			| 
				
			 | 
			
				39
			 | 
			
			
				+TRACKER_PORT=6969 
			 | 
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				41
			 | 
			
			
				+ZERONET_PORT=15441 
			 | 
		
	
		
			
			| 
				
			 | 
			
				42
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				43
			 | 
			
			
				+WIFI_CHANNEL=2 
			 | 
		
	
		
			
			| 
				
			 | 
			
				44
			 | 
			
			
				+WIFI_INTERFACE='wlan0' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				45
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				46
			 | 
			
			
				+# B.A.T.M.A.N settings 
			 | 
		
	
		
			
			| 
				
			 | 
			
				47
			 | 
			
			
				+BATMAN_CELLID='02:BA:00:00:03:01' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				+ESSID='mesh' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				+# Babel 
			 | 
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				+BABEL_PORT=6696 
			 | 
		
	
		
			
			| 
				
			 | 
			
				52
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				53
			 | 
			
			
				+rootdir='' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				54
			 | 
			
			
				+FN= 
			 | 
		
	
		
			
			| 
				
			 | 
			
				55
			 | 
			
			
				+CHROOT_PREFIX='' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				56
			 | 
			
			
				+FRIENDS_MIRRORS_SERVER= 
			 | 
		
	
		
			
			| 
				
			 | 
			
				57
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				58
			 | 
			
			
				+TOXID_REPO="https://github.com/bashrc/toxid" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				59
			 | 
			
			
				+TOX_PORT=33445 
			 | 
		
	
		
			
			| 
				
			 | 
			
				60
			 | 
			
			
				+TOX_REPO="git://github.com/irungentoo/toxcore.git" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				61
			 | 
			
			
				+TOX_COMMIT='73b2144edcfd1ca617e9054479b66ab0c0361a14' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				62
			 | 
			
			
				+# These are some default nodes, but you can replace them with trusted nodes 
			 | 
		
	
		
			
			| 
				
			 | 
			
				63
			 | 
			
			
				+# as you prefer. See https://wiki.tox.im/Nodes 
			 | 
		
	
		
			
			| 
				
			 | 
			
				64
			 | 
			
			
				+TOX_NODES= 
			 | 
		
	
		
			
			| 
				
			 | 
			
				65
			 | 
			
			
				+#TOX_NODES=( 
			 | 
		
	
		
			
			| 
				
			 | 
			
				66
			 | 
			
			
				+#  '192.254.75.102,2607:5600:284::2,33445,951C88B7E75C867418ACDB5D273821372BB5BD652740BCDF623A4FA293E75D2F,Tox RELENG,US' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				67
			 | 
			
			
				+#  '144.76.60.215,2a01:4f8:191:64d6::1,33445,04119E835DF3E78BACF0F84235B300546AF8B936F035185E2A8E9E0A67C8924F,sonOfRa,DE' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				68
			 | 
			
			
				+#) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				69
			 | 
			
			
				+ZERONET_REPO="https://github.com/HelloZeroNet/ZeroNet.git" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				+ZERONET_COMMIT='675bd462556c541d65e2d95f91f899146a373aad' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				71
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				72
			 | 
			
			
				+function show_help { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				73
			 | 
			
			
				+	echo '' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				74
			 | 
			
			
				+	echo $"${PROJECT_NAME}-mesh-install -f [function] -r [rootdir]" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				+	echo '' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				76
			 | 
			
			
				+	echo $'Runs a mesh network install function' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				77
			 | 
			
			
				+	echo '' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				+	echo $'  -h --help                   Show help' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				+	echo $'  -f --function [name]        Name of the function to be run' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				+	echo $'  -r --rootdir [directory]    Root directory' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				+	echo $'  -w --wifi [interface]       e.g. wlan0' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				+	echo '' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				+	exit 0 
			 | 
		
	
		
			
			| 
				
			 | 
			
				84
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				85
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				86
			 | 
			
			
				+function git_clone { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				87
			 | 
			
			
				+	repo_url="$1" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				88
			 | 
			
			
				+	destination_dir="$2" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				89
			 | 
			
			
				+	if [[ "$repo_url" == "ssh:"* ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				+		if [ "${FRIENDS_MIRRORS_SERVER}" ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				91
			 | 
			
			
				+			if [ ${#FRIENDS_MIRRORS_SERVER} -gt 2 ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				+				if [ "$FRIENDS_MIRRORS_PASSWORD" ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				93
			 | 
			
			
				+					if [ ${#FRIENDS_MIRRORS_PASSWORD} -gt 2 ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				94
			 | 
			
			
				+						sshpass -p "$FRIENDS_MIRRORS_PASSWORD" git clone "$repo_url" "$destination_dir" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				95
			 | 
			
			
				+						return 
			 | 
		
	
		
			
			| 
				
			 | 
			
				96
			 | 
			
			
				+					fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				97
			 | 
			
			
				+				fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				98
			 | 
			
			
				+			fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				99
			 | 
			
			
				+		fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				100
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				101
			 | 
			
			
				+	git clone "$repo_url" "$destination_dir" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				102
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				103
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				104
			 | 
			
			
				+function mesh_babel { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				105
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install babeld 
			 | 
		
	
		
			
			| 
				
			 | 
			
				106
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				107
			 | 
			
			
				+	babel_script=${rootdir}/var/lib/babel 
			 | 
		
	
		
			
			| 
				
			 | 
			
				108
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				109
			 | 
			
			
				+	echo '#!/bin/bash' > $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				110
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				111
			 | 
			
			
				+	echo 'if [[ $1 == "ls" || $1 == "list" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				112
			 | 
			
			
				+	echo '    avahi-browse -atl' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				113
			 | 
			
			
				+	echo '    exit 0' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				114
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				115
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				+	echo 'if [[ $1 == "start" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				+	echo '    sed -i "s|#host-name=.*|host-name=$(hostname)|g" /etc/avahi/avahi-daemon.conf' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				+	echo '    sed -i "s|host-name=.*|host-name=$(hostname)|g" /etc/avahi/avahi-daemon.conf' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				+	echo '    sed -i "s|use-ipv4=.*|use-ipv4=yes|g" /etc/avahi/avahi-daemon.conf' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				120
			 | 
			
			
				+	echo '    sed -i "s|use-ipv6=.*|use-ipv6=no|g" /etc/avahi/avahi-daemon.conf' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				121
			 | 
			
			
				+	echo '    sed -i "s|hosts:.*|hosts:          files mdns4_minimal dns mdns4 mdns|g" /etc/nsswitch.conf' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				122
			 | 
			
			
				+	echo '    systemctl restart avahi-daemon' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				123
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				124
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				125
			 | 
			
			
				+	echo "IFACE=$WIFI_INTERFACE" >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				126
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				127
			 | 
			
			
				+	echo '    if grep -q "wlan1" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				128
			 | 
			
			
				+	echo '        IFACE=wlan1' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				129
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				130
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				131
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				132
			 | 
			
			
				+	echo '    if grep -q "wlan2" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				133
			 | 
			
			
				+	echo '        IFACE=wlan2' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				134
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				135
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				136
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				137
			 | 
			
			
				+	echo '    if grep -q "wlan3" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				138
			 | 
			
			
				+	echo '        IFACE=wlan3' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				139
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				140
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				141
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				142
			 | 
			
			
				+	echo 'if [[ ! grep -q "$IFACE" /proc/net/dev || $1 == "stop" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				143
			 | 
			
			
				+	echo '    if ! grep -q "$IFACE" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				144
			 | 
			
			
				+	echo '        echo "Interface $IFACE was not found"' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				145
			 | 
			
			
				+	echo '    else' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				146
			 | 
			
			
				+	echo '        echo "Stopping"' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				147
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				148
			 | 
			
			
				+	echo '    ifconfig $IFACE down' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				+	echo '    pkill babeld' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				150
			 | 
			
			
				+	echo '    systemctl restart network-manager' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				151
			 | 
			
			
				+	echo '    exit 1' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				152
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				153
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				154
			 | 
			
			
				+	echo 'systemctl stop network-manager' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				155
			 | 
			
			
				+	echo 'ifconfig $IFACE down' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				156
			 | 
			
			
				+	echo -n 'iwconfig $IFACE mode ad-hoc channel ' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				157
			 | 
			
			
				+	echo "$WIFI_CHANNEL essid \"$ESSID\"" >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				158
			 | 
			
			
				+	echo 'ifconfig $IFACE up' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				159
			 | 
			
			
				+	echo -n 'ifconfig $IFACE:avahi ' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				160
			 | 
			
			
				+	echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				161
			 | 
			
			
				+	echo '255.255.255.0 broadcast 192.168.13.255' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				162
			 | 
			
			
				+	echo -n 'babeld -D $IFACE:avahi -p ' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				163
			 | 
			
			
				+	echo -n "$BABEL_PORT -d 5 " >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				164
			 | 
			
			
				+	echo '$IFACE' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				165
			 | 
			
			
				+	echo 'exit 0' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				166
			 | 
			
			
				+	chmod +x $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				167
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				168
			 | 
			
			
				+	echo '[Unit]' > ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				169
			 | 
			
			
				+	echo 'Description=Babel Mesh' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				170
			 | 
			
			
				+	echo '' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				171
			 | 
			
			
				+	echo '[Service]' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				172
			 | 
			
			
				+	echo 'Type=oneshot' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				173
			 | 
			
			
				+	echo "ExecStart=$babel_script start" >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				174
			 | 
			
			
				+	echo "ExecStop=$babel_script stop" >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				175
			 | 
			
			
				+	echo 'RemainAfterExit=yes' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				176
			 | 
			
			
				+	echo '' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				177
			 | 
			
			
				+	echo '# Allow time for the server to start/stop' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				178
			 | 
			
			
				+	echo 'TimeoutSec=300' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				179
			 | 
			
			
				+	echo '' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				180
			 | 
			
			
				+	echo '[Install]' >> /etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				181
			 | 
			
			
				+	echo 'WantedBy=multi-user.target' >> ${rootdir}/etc/systemd/system/babel.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				182
			 | 
			
			
				+	$CHROOT_PREFIX systemctl enable babel 
			 | 
		
	
		
			
			| 
				
			 | 
			
				183
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				184
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				185
			 | 
			
			
				+function mesh_avahi { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				186
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install avahi-utils avahi-autoipd avahi-dnsconfd 
			 | 
		
	
		
			
			| 
				
			 | 
			
				187
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				188
			 | 
			
			
				+	decarray=( 1 2 3 4 5 6 7 8 9 0 ) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				189
			 | 
			
			
				+	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]} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				190
			 | 
			
			
				+	sed -i "s|#host-name=.*|host-name=P$PEER_ID|g" $rootdir/etc/avahi/avahi-daemon.conf 
			 | 
		
	
		
			
			| 
				
			 | 
			
				191
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				192
			 | 
			
			
				+	if [ ! -d $rootdir/etc/avahi/services ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				193
			 | 
			
			
				+		mkdir -p $rootdir/etc/avahi/services 
			 | 
		
	
		
			
			| 
				
			 | 
			
				194
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				195
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				196
			 | 
			
			
				+	# remove an avahi service which isn't used 
			 | 
		
	
		
			
			| 
				
			 | 
			
				197
			 | 
			
			
				+	if [ -f $rootdir/etc/avahi/services/udisks.service ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				198
			 | 
			
			
				+		rm $rootdir/etc/avahi/services/udisks.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				199
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				200
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				201
			 | 
			
			
				+	# Add an ssh service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				202
			 | 
			
			
				+	echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				203
			 | 
			
			
				+	echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				204
			 | 
			
			
				+	echo '<service-group>' >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				205
			 | 
			
			
				+	echo '  <name replace-wildcards="yes">%h SSH</name>' >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				206
			 | 
			
			
				+	echo '  <service>' >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				207
			 | 
			
			
				+	echo '    <type>_ssh._tcp</type>' >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				208
			 | 
			
			
				+	echo "    <port>$SSH_PORT</port>" >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				209
			 | 
			
			
				+	echo '  </service>' >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				210
			 | 
			
			
				+	echo '</service-group>' >> $rootdir/etc/avahi/services/ssh.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				211
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				212
			 | 
			
			
				+	# keep the daemon running 
			 | 
		
	
		
			
			| 
				
			 | 
			
				213
			 | 
			
			
				+	WATCHDOG_SCRIPT_NAME="keepon" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				214
			 | 
			
			
				+	echo '' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				215
			 | 
			
			
				+	echo '# keep avahi daemon running' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				216
			 | 
			
			
				+	echo 'AVAHI_RUNNING=$(pgrep avahi-daemon > /dev/null && echo Running)' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				217
			 | 
			
			
				+	echo 'if [ ! $AVAHI_RUNNING ]; then' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				218
			 | 
			
			
				+	echo '  systemctl start avahi-daemon' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				219
			 | 
			
			
				+	echo '  echo -n $CURRENT_DATE >> $LOGFILE' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				220
			 | 
			
			
				+	echo '  echo " Avahi daemon restarted" >> $LOGFILE' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				221
			 | 
			
			
				+	echo 'fi' >> $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				222
			 | 
			
			
				+	chmod +x $rootdir/usr/bin/$WATCHDOG_SCRIPT_NAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				223
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				224
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				225
			 | 
			
			
				+function mesh_babel_client { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				226
			 | 
			
			
				+	if [ ! -f ${rootdir}/tmp/meshtype ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				227
			 | 
			
			
				+		$CHROOT_PREFIX sudo apt-get -y install babeld 
			 | 
		
	
		
			
			| 
				
			 | 
			
				228
			 | 
			
			
				+		$CHROOT_PREFIX sudo apt-get -y install irssi mumble 
			 | 
		
	
		
			
			| 
				
			 | 
			
				229
			 | 
			
			
				+		if [ ! -f /usr/bin/toxic ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				230
			 | 
			
			
				+			$CHROOT_PREFIX sudo apt-get -y install toxic 
			 | 
		
	
		
			
			| 
				
			 | 
			
				231
			 | 
			
			
				+			echo "n 
			 | 
		
	
		
			
			| 
				
			 | 
			
				232
			 | 
			
			
				+/nick $USER 
			 | 
		
	
		
			
			| 
				
			 | 
			
				233
			 | 
			
			
				+/exit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				234
			 | 
			
			
				+" | ${rootdir}/usr/bin/toxic -d 
			 | 
		
	
		
			
			| 
				
			 | 
			
				235
			 | 
			
			
				+		fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				236
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				237
			 | 
			
			
				+		CURR_DIR=$(pwd) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				238
			 | 
			
			
				+		if [ ! -f ~/develop/toxid ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				239
			 | 
			
			
				+			if [ ! -f ~/develop ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				240
			 | 
			
			
				+				mkdir ~/develop 
			 | 
		
	
		
			
			| 
				
			 | 
			
				241
			 | 
			
			
				+			fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				242
			 | 
			
			
				+			cd ~/develop 
			 | 
		
	
		
			
			| 
				
			 | 
			
				243
			 | 
			
			
				+			git_clone $TOXID_REPO ~/develop/toxid 
			 | 
		
	
		
			
			| 
				
			 | 
			
				244
			 | 
			
			
				+		fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				245
			 | 
			
			
				+		cd ~/develop/toxid 
			 | 
		
	
		
			
			| 
				
			 | 
			
				246
			 | 
			
			
				+		sudo make install 
			 | 
		
	
		
			
			| 
				
			 | 
			
				247
			 | 
			
			
				+		cd $CURR_DIR 
			 | 
		
	
		
			
			| 
				
			 | 
			
				248
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				249
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				250
			 | 
			
			
				+	babel_script=${rootdir}/tmp/babel 
			 | 
		
	
		
			
			| 
				
			 | 
			
				251
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				252
			 | 
			
			
				+	echo '#!/bin/bash' > $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				253
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				254
			 | 
			
			
				+	echo 'if [[ $1 == "ls" || $1 == "list" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				255
			 | 
			
			
				+	echo '    avahi-browse -atl' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				256
			 | 
			
			
				+	echo '    exit 0' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				257
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				258
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				259
			 | 
			
			
				+	echo 'if [[ $1 == "start" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				260
			 | 
			
			
				+	echo '    if [ -f /tmp/meshtype ] ; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				261
			 | 
			
			
				+	echo '        echo "Mesh already running"' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				262
			 | 
			
			
				+	echo '        return' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				263
			 | 
			
			
				+	echo '    fi' >> $batman_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				264
			 | 
			
			
				+	echo '    # install avahi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				265
			 | 
			
			
				+	echo '    apt-get -y install avahi-utils avahi-autoipd avahi-daemon avahi-dnsconfd bittornado' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				266
			 | 
			
			
				+	echo '    sed -i "s|#host-name=.*|host-name=$(hostname)|g" /etc/avahi/avahi-daemon.conf' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				267
			 | 
			
			
				+	echo '    sed -i "s|host-name=.*|host-name=$(hostname)|g" /etc/avahi/avahi-daemon.conf' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				268
			 | 
			
			
				+	echo '    if [ -f /bin/systemctl ]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				269
			 | 
			
			
				+	echo '        systemctl restart avahi-daemon' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				270
			 | 
			
			
				+	echo '    else' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				271
			 | 
			
			
				+	echo '        service avahi-daemon restart' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				272
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				273
			 | 
			
			
				+	echo '    echo "babel" > /tmp/meshtype' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				274
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				275
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				276
			 | 
			
			
				+	echo "IFACE=$WIFI_INTERFACE" >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				277
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				278
			 | 
			
			
				+	echo '    if grep -q "wlan1" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				279
			 | 
			
			
				+	echo '        IFACE=wlan1' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				280
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				281
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				282
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				283
			 | 
			
			
				+	echo '    if grep -q "wlan2" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				284
			 | 
			
			
				+	echo '        IFACE=wlan2' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				285
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				286
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				287
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				288
			 | 
			
			
				+	echo '    if grep -q "wlan3" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				289
			 | 
			
			
				+	echo '        IFACE=wlan3' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				290
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				291
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				292
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				293
			 | 
			
			
				+	echo 'if [[ ! grep -q "$IFACE" /proc/net/dev || $1 == "stop" ]]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				294
			 | 
			
			
				+	echo '    if ! grep -q "$IFACE" /proc/net/dev; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				295
			 | 
			
			
				+	echo '        echo "Interface $IFACE was not found"' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				296
			 | 
			
			
				+	echo '    else' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				297
			 | 
			
			
				+	echo '        echo "Stopping"' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				298
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				299
			 | 
			
			
				+	echo '    ifconfig $IFACE down' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				300
			 | 
			
			
				+	echo '    pkill babeld' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				301
			 | 
			
			
				+	echo '    if [ -f /bin/systemctl ]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				302
			 | 
			
			
				+	echo '        systemctl restart network-manager' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				303
			 | 
			
			
				+	echo '    else' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				304
			 | 
			
			
				+	echo '        service network-manager restart' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				305
			 | 
			
			
				+	echo '    fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				306
			 | 
			
			
				+	echo '    exit 1' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				307
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				308
			 | 
			
			
				+	echo '' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				309
			 | 
			
			
				+	echo 'if [ -f /bin/systemctl ]; then' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				310
			 | 
			
			
				+	echo '    systemctl stop network-manager' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				311
			 | 
			
			
				+	echo 'else' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				312
			 | 
			
			
				+	echo '    service network-manager stop' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				313
			 | 
			
			
				+	echo 'fi' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				314
			 | 
			
			
				+	echo 'ifconfig $IFACE down' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				315
			 | 
			
			
				+	echo -n 'iwconfig $IFACE mode ad-hoc channel ' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				316
			 | 
			
			
				+	echo "$WIFI_CHANNEL essid \"$ESSID\"" >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				317
			 | 
			
			
				+	echo 'ifconfig $IFACE up' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				318
			 | 
			
			
				+	echo -n 'ifconfig $IFACE:avahi ' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				319
			 | 
			
			
				+	echo -n "$LOCAL_NETWORK_STATIC_IP_ADDRESS netmask " >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				320
			 | 
			
			
				+	echo '255.255.255.0 broadcast 192.168.13.255' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				321
			 | 
			
			
				+	echo -n 'babeld -D $IFACE:avahi -p ' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				322
			 | 
			
			
				+	echo -n "$BABEL_PORT -d 5 " >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				323
			 | 
			
			
				+	echo '$IFACE' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				324
			 | 
			
			
				+	echo 'exit 0' >> $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				325
			 | 
			
			
				+	chmod +x $babel_script 
			 | 
		
	
		
			
			| 
				
			 | 
			
				326
			 | 
			
			
				+	sudo mv $babel_script ${rootdir}/usr/bin/babel 
			 | 
		
	
		
			
			| 
				
			 | 
			
				327
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				328
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				329
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				330
			 | 
			
			
				+function mesh_batman { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				331
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install iproute bridge-utils libnetfilter-conntrack3 batctl 
			 | 
		
	
		
			
			| 
				
			 | 
			
				332
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install python-dev libevent-dev ebtables python-pip git 
			 | 
		
	
		
			
			| 
				
			 | 
			
				333
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install wireless-tools rfkill 
			 | 
		
	
		
			
			| 
				
			 | 
			
				334
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				335
			 | 
			
			
				+	if ! grep -q "batman_adv" $rootdir/etc/modules; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				336
			 | 
			
			
				+		echo 'batman_adv' >> $rootdir/etc/modules 
			 | 
		
	
		
			
			| 
				
			 | 
			
				337
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				338
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				339
			 | 
			
			
				+	BATMAN_SCRIPT=$rootdir/var/lib/batman 
			 | 
		
	
		
			
			| 
				
			 | 
			
				340
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				341
			 | 
			
			
				+	if [ -f /usr/local/bin/${PROJECT_NAME}-mesh-batman ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				342
			 | 
			
			
				+		cp /usr/local/bin/${PROJECT_NAME}-mesh-batman $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				343
			 | 
			
			
				+	else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				344
			 | 
			
			
				+		cp /usr/bin/${PROJECT_NAME}-mesh-batman $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				345
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				346
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				347
			 | 
			
			
				+	BATMAN_DAEMON=$rootdir/etc/systemd/system/batman.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				348
			 | 
			
			
				+	echo '[Unit]' > $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				349
			 | 
			
			
				+	echo 'Description=B.A.T.M.A.N. Advanced' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				350
			 | 
			
			
				+	echo '' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				351
			 | 
			
			
				+	echo '[Service]' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				352
			 | 
			
			
				+	echo 'Type=oneshot' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				353
			 | 
			
			
				+	echo "ExecStart=/var/lib/batman start" >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				354
			 | 
			
			
				+	echo "ExecStop=/var/lib/batman stop" >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				355
			 | 
			
			
				+	echo 'RemainAfterExit=yes' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				356
			 | 
			
			
				+	echo '' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				357
			 | 
			
			
				+	echo '# Allow time for the server to start/stop' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				358
			 | 
			
			
				+	echo 'TimeoutSec=300' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				359
			 | 
			
			
				+	echo '' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				360
			 | 
			
			
				+	echo '[Install]' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				361
			 | 
			
			
				+	echo 'WantedBy=multi-user.target' >> $BATMAN_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				362
			 | 
			
			
				+	$CHROOT_PREFIX systemctl enable batman 
			 | 
		
	
		
			
			| 
				
			 | 
			
				363
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				364
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				365
			 | 
			
			
				+function mesh_firewall { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				366
			 | 
			
			
				+	FIREWALL_FILENAME=${rootdir}/etc/systemd/system/meshfirewall.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				367
			 | 
			
			
				+	MESH_FIREWALL_SCRIPT=${rootdir}/usr/bin/mesh-firewall 
			 | 
		
	
		
			
			| 
				
			 | 
			
				368
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				369
			 | 
			
			
				+	echo '#!/bin/bash' > $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				370
			 | 
			
			
				+	echo 'iptables -P INPUT ACCEPT' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				371
			 | 
			
			
				+	echo 'ip6tables -P INPUT ACCEPT' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				372
			 | 
			
			
				+	echo 'iptables -F' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				373
			 | 
			
			
				+	echo 'ip6tables -F' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				374
			 | 
			
			
				+	echo 'iptables -t nat -F' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				375
			 | 
			
			
				+	echo 'ip6tables -t nat -F' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				376
			 | 
			
			
				+	echo 'iptables -X' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				377
			 | 
			
			
				+	echo 'ip6tables -X' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				378
			 | 
			
			
				+	echo 'iptables -P INPUT DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				379
			 | 
			
			
				+	echo 'ip6tables -P INPUT DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				380
			 | 
			
			
				+	echo 'iptables -A INPUT -i lo -j ACCEPT' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				381
			 | 
			
			
				+	echo 'iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				382
			 | 
			
			
				+	echo '' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				383
			 | 
			
			
				+	echo '# Make sure incoming tcp connections are SYN packets' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				384
			 | 
			
			
				+	echo 'iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				385
			 | 
			
			
				+	echo '' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				386
			 | 
			
			
				+	echo '# Drop packets with incoming fragments' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				387
			 | 
			
			
				+	echo 'iptables -A INPUT -f -j DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				388
			 | 
			
			
				+	echo '' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				389
			 | 
			
			
				+	echo '# Drop bogons' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				390
			 | 
			
			
				+	echo 'iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				391
			 | 
			
			
				+	echo 'iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				392
			 | 
			
			
				+	echo 'iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				393
			 | 
			
			
				+	echo '' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				394
			 | 
			
			
				+	echo '# Incoming malformed NULL packets:' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				395
			 | 
			
			
				+	echo 'iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				396
			 | 
			
			
				+	echo '' >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				397
			 | 
			
			
				+	echo "iptables -A INPUT -p tcp --dport $TOX_PORT -j ACCEPT" >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				398
			 | 
			
			
				+	echo "iptables -A INPUT -i $WIFI_INTERFACE -p udp --dport $ZERONET_PORT -j ACCEPT" >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				399
			 | 
			
			
				+	echo "iptables -A INPUT -i $WIFI_INTERFACE -p tcp --dport $ZERONET_PORT -j ACCEPT" >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				400
			 | 
			
			
				+	echo "iptables -A INPUT -i $WIFI_INTERFACE -p udp --dport $TRACKER_PORT -j ACCEPT" >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				401
			 | 
			
			
				+	echo "iptables -A INPUT -i $WIFI_INTERFACE -p tcp --dport $TRACKER_PORT -j ACCEPT" >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				402
			 | 
			
			
				+	echo "iptables -A INPUT -i $WIFI_INTERFACE -p udp --dport 1900 -j ACCEPT" >> $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				403
			 | 
			
			
				+	chmod +x $MESH_FIREWALL_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				404
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				405
			 | 
			
			
				+	echo '[Unit]' > $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				406
			 | 
			
			
				+	echo 'Description=Mesh Firewall' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				407
			 | 
			
			
				+	echo '' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				408
			 | 
			
			
				+	echo '[Service]' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				409
			 | 
			
			
				+	echo 'Type=oneshot' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				410
			 | 
			
			
				+	echo 'ExecStart=/usr/bin/mesh-firewall' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				411
			 | 
			
			
				+	echo 'RemainAfterExit=no' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				412
			 | 
			
			
				+	echo '' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				413
			 | 
			
			
				+	echo 'TimeoutSec=30' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				414
			 | 
			
			
				+	echo '' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				415
			 | 
			
			
				+	echo '[Install]' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				416
			 | 
			
			
				+	echo 'WantedBy=multi-user.target' >> $FIREWALL_FILENAME 
			 | 
		
	
		
			
			| 
				
			 | 
			
				417
			 | 
			
			
				+	$CHROOT_PREFIX systemctl enable meshfirewall 
			 | 
		
	
		
			
			| 
				
			 | 
			
				418
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				419
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				420
			 | 
			
			
				+function mesh_tox_node { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				421
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install build-essential libtool autotools-dev 
			 | 
		
	
		
			
			| 
				
			 | 
			
				422
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install automake checkinstall check git yasm 
			 | 
		
	
		
			
			| 
				
			 | 
			
				423
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install libsodium13 libsodium-dev libcap2-bin 
			 | 
		
	
		
			
			| 
				
			 | 
			
				424
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install libconfig9 libconfig-dev 
			 | 
		
	
		
			
			| 
				
			 | 
			
				425
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				426
			 | 
			
			
				+	$CHROOT_PREFIX git_clone $TOX_REPO $INSTALL_DIR/toxcore 
			 | 
		
	
		
			
			| 
				
			 | 
			
				427
			 | 
			
			
				+	$CHROOT_PREFIX cd $INSTALL_DIR/toxcore 
			 | 
		
	
		
			
			| 
				
			 | 
			
				428
			 | 
			
			
				+	$CHROOT_PREFIX git checkout $TOX_COMMIT -b $TOX_COMMIT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				429
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				430
			 | 
			
			
				+	$CHROOT_PREFIX autoreconf -i 
			 | 
		
	
		
			
			| 
				
			 | 
			
				431
			 | 
			
			
				+	$CHROOT_PREFIX ./configure --enable-daemon 
			 | 
		
	
		
			
			| 
				
			 | 
			
				432
			 | 
			
			
				+	if [ ! "$?" = "0" ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				433
			 | 
			
			
				+		return 
			 | 
		
	
		
			
			| 
				
			 | 
			
				434
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				435
			 | 
			
			
				+	$CHROOT_PREFIX make 
			 | 
		
	
		
			
			| 
				
			 | 
			
				436
			 | 
			
			
				+	if [ ! "$?" = "0" ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				437
			 | 
			
			
				+		return 
			 | 
		
	
		
			
			| 
				
			 | 
			
				438
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				439
			 | 
			
			
				+	$CHROOT_PREFIX make install 
			 | 
		
	
		
			
			| 
				
			 | 
			
				440
			 | 
			
			
				+	$CHROOT_PREFIX cp /usr/local/lib/libtoxcore* /usr/lib/ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				441
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				442
			 | 
			
			
				+	if [ ! -f $rootdir/usr/local/bin/tox-bootstrapd ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				443
			 | 
			
			
				+		echo $"File not found /usr/local/bin/tox-bootstrapd" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				444
			 | 
			
			
				+		return 
			 | 
		
	
		
			
			| 
				
			 | 
			
				445
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				446
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				447
			 | 
			
			
				+	$CHROOT_PREFIX 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 
			 | 
		
	
		
			
			| 
				
			 | 
			
				448
			 | 
			
			
				+	$CHROOT_PREFIX chmod 700 /var/lib/tox-bootstrapd 
			 | 
		
	
		
			
			| 
				
			 | 
			
				449
			 | 
			
			
				+	if [ ! -f $rootdir/$INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				450
			 | 
			
			
				+		echo $"File not found $INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				451
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				452
			 | 
			
			
				+	# remove Maildir 
			 | 
		
	
		
			
			| 
				
			 | 
			
				453
			 | 
			
			
				+	if [ -d $rootdir/var/lib/tox-bootstrapd/Maildir ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				454
			 | 
			
			
				+		rm -rf $rootdir/var/lib/tox-bootstrapd/Maildir 
			 | 
		
	
		
			
			| 
				
			 | 
			
				455
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				456
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				457
			 | 
			
			
				+	# create configuration file 
			 | 
		
	
		
			
			| 
				
			 | 
			
				458
			 | 
			
			
				+	TOX_BOOTSTRAP_CONFIG=${rootdir}/etc/tox-bootstrapd.conf 
			 | 
		
	
		
			
			| 
				
			 | 
			
				459
			 | 
			
			
				+	echo "port = $TOX_PORT" > $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				460
			 | 
			
			
				+	echo 'keys_file_path = "/var/lib/tox-bootstrapd/keys"' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				461
			 | 
			
			
				+	echo 'pid_file_path = "/var/run/tox-bootstrapd/tox-bootstrapd.pid"' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				462
			 | 
			
			
				+	echo 'enable_ipv6 = true' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				463
			 | 
			
			
				+	echo 'enable_ipv4_fallback = true' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				464
			 | 
			
			
				+	echo 'enable_lan_discovery = true' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				465
			 | 
			
			
				+	echo 'enable_tcp_relay = true' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				466
			 | 
			
			
				+	echo "tcp_relay_ports = [443, 3389, $TOX_PORT]" >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				467
			 | 
			
			
				+	echo 'enable_motd = true' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				468
			 | 
			
			
				+	echo 'motd = "tox-bootstrapd"' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				469
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				470
			 | 
			
			
				+	if [ $TOX_NODES ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				471
			 | 
			
			
				+		echo 'bootstrap_nodes = (' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				472
			 | 
			
			
				+		toxcount=0 
			 | 
		
	
		
			
			| 
				
			 | 
			
				473
			 | 
			
			
				+		while [ "x${TOX_NODES[toxcount]}" != "x" ] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				474
			 | 
			
			
				+		do 
			 | 
		
	
		
			
			| 
				
			 | 
			
				475
			 | 
			
			
				+			toxval_ipv4=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $1}') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				476
			 | 
			
			
				+			toxval_ipv6=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $2}') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				477
			 | 
			
			
				+			toxval_port=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $3}') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				478
			 | 
			
			
				+			toxval_pubkey=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $4}') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				479
			 | 
			
			
				+			toxval_maintainer=$(echo $TOX_NODES[toxcount] | awk -F ',' '{print $5}') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				480
			 | 
			
			
				+			echo "{ // $toxval_maintainer" >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				481
			 | 
			
			
				+			if [[ $toxval_ipv6 != 'NONE' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				482
			 | 
			
			
				+				echo "  address = \"$toxval_ipv6\"" >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				483
			 | 
			
			
				+			else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				484
			 | 
			
			
				+				echo "  address = \"$toxval_ipv4\"" >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				485
			 | 
			
			
				+			fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				486
			 | 
			
			
				+			echo "  port = $toxval_port" >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				487
			 | 
			
			
				+			echo "  public_key = \"$toxval_pubkey\"" >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				488
			 | 
			
			
				+			toxcount=$(( $toxcount + 1 )) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				489
			 | 
			
			
				+			if [ "x${TOX_NODES[toxcount]}" != "x" ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				490
			 | 
			
			
				+				echo "}," >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				491
			 | 
			
			
				+			else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				492
			 | 
			
			
				+				echo "}" >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				493
			 | 
			
			
				+			fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				494
			 | 
			
			
				+		done 
			 | 
		
	
		
			
			| 
				
			 | 
			
				495
			 | 
			
			
				+		echo ')' >> $TOX_BOOTSTRAP_CONFIG 
			 | 
		
	
		
			
			| 
				
			 | 
			
				496
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				497
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				498
			 | 
			
			
				+	if [ ! -f $rootdir/$INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.service ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				499
			 | 
			
			
				+		echo $"File not found $INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.service" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				500
			 | 
			
			
				+		return 
			 | 
		
	
		
			
			| 
				
			 | 
			
				501
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				502
			 | 
			
			
				+	cp $rootdir/$INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.service $rootdir/etc/systemd/system/ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				503
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				504
			 | 
			
			
				+	$CHROOT_PREFIX systemctl daemon-reload 
			 | 
		
	
		
			
			| 
				
			 | 
			
				505
			 | 
			
			
				+	$CHROOT_PREFIX systemctl enable tox-bootstrapd.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				506
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				507
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				508
			 | 
			
			
				+function mesh_tox_client { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				509
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install libncursesw5-dev libconfig-dev libqrencode-dev libcurl4-openssl-dev 
			 | 
		
	
		
			
			| 
				
			 | 
			
				510
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				511
			 | 
			
			
				+	$CHROOT_PREFIX git_clone $TOXIC_REPO $INSTALL_DIR/toxic 
			 | 
		
	
		
			
			| 
				
			 | 
			
				512
			 | 
			
			
				+	$CHROOT_PREFIX cd $INSTALL_DIR/toxic 
			 | 
		
	
		
			
			| 
				
			 | 
			
				513
			 | 
			
			
				+	$CHROOT_PREFIX git checkout $TOXIC_COMMIT -b $TOXIC_COMMIT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				514
			 | 
			
			
				+	echo "Toxic commit:$TOXIC_COMMIT" >> $rootdir$COMPLETION_FILE 
			 | 
		
	
		
			
			| 
				
			 | 
			
				515
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				516
			 | 
			
			
				+	$CHROOT_PREFIX make 
			 | 
		
	
		
			
			| 
				
			 | 
			
				517
			 | 
			
			
				+	if [ ! -f $INSTALL_DIR/toxic/build/toxic ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				518
			 | 
			
			
				+		exit 74872 
			 | 
		
	
		
			
			| 
				
			 | 
			
				519
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				520
			 | 
			
			
				+	$CHROOT_PREFIX make install 
			 | 
		
	
		
			
			| 
				
			 | 
			
				521
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				522
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				523
			 | 
			
			
				+function mesh_zeronet { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				524
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install python python-msgpack python-gevent 
			 | 
		
	
		
			
			| 
				
			 | 
			
				525
			 | 
			
			
				+	$CHROOT_PREFIX apt-get -y install python-pip bittornado 
			 | 
		
	
		
			
			| 
				
			 | 
			
				526
			 | 
			
			
				+	$CHROOT_PREFIX pip install msgpack-python --upgrade 
			 | 
		
	
		
			
			| 
				
			 | 
			
				527
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				528
			 | 
			
			
				+	$CHROOT_PREFIX useradd -d /opt/zeronet/ -s /bin/false zeronet 
			 | 
		
	
		
			
			| 
				
			 | 
			
				529
			 | 
			
			
				+	git_clone $ZERONET_REPO $rootdir/opt/zeronet 
			 | 
		
	
		
			
			| 
				
			 | 
			
				530
			 | 
			
			
				+	if [ ! -d $rootdir/opt/zeronet ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				531
			 | 
			
			
				+		echo 'WARNING: Unable to clone zeronet' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				532
			 | 
			
			
				+		return 
			 | 
		
	
		
			
			| 
				
			 | 
			
				533
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				534
			 | 
			
			
				+	cd $rootdir/opt/zeronet 
			 | 
		
	
		
			
			| 
				
			 | 
			
				535
			 | 
			
			
				+	git checkout $ZERONET_COMMIT -b $ZERONET_COMMIT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				536
			 | 
			
			
				+	if ! grep -q "ZeroNet commit" $COMPLETION_FILE; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				537
			 | 
			
			
				+		echo "ZeroNet commit:$ZERONET_COMMIT" >> $rootdir$COMPLETION_FILE 
			 | 
		
	
		
			
			| 
				
			 | 
			
				538
			 | 
			
			
				+	else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				539
			 | 
			
			
				+		sed -i "s/ZeroNet commit.*/ZeroNet commit:$ZERONET_COMMIT/g" $COMPLETION_FILE 
			 | 
		
	
		
			
			| 
				
			 | 
			
				540
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				541
			 | 
			
			
				+	chown -R zeronet:zeronet $rootdir/opt/zeronet 
			 | 
		
	
		
			
			| 
				
			 | 
			
				542
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				543
			 | 
			
			
				+	# Hack to ensure that the file access port is opened 
			 | 
		
	
		
			
			| 
				
			 | 
			
				544
			 | 
			
			
				+	# This is because zeronet normally relies on an internet site 
			 | 
		
	
		
			
			| 
				
			 | 
			
				545
			 | 
			
			
				+	# to do this, but on a purely local mesh the internet isn't available 
			 | 
		
	
		
			
			| 
				
			 | 
			
				546
			 | 
			
			
				+	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 
			 | 
		
	
		
			
			| 
				
			 | 
			
				547
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				548
			 | 
			
			
				+	ZERPNET_DAEMON=$rootdir/etc/systemd/system/zeronet.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				549
			 | 
			
			
				+	echo '[Unit]' > $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				550
			 | 
			
			
				+	echo 'Description=Zeronet Server' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				551
			 | 
			
			
				+	echo 'After=syslog.target' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				552
			 | 
			
			
				+	echo 'After=network.target' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				553
			 | 
			
			
				+	echo '[Service]' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				554
			 | 
			
			
				+	echo 'Type=simple' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				555
			 | 
			
			
				+	echo 'User=zeronet' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				556
			 | 
			
			
				+	echo 'Group=zeronet' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				557
			 | 
			
			
				+	echo 'WorkingDirectory=/opt/zeronet' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				558
			 | 
			
			
				+	echo 'ExecStart=/usr/bin/python zeronet.py --ip_external replace.local --trackers_file /opt/zeronet/bootstrap' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				559
			 | 
			
			
				+	echo '' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				560
			 | 
			
			
				+	echo 'TimeoutSec=300' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				561
			 | 
			
			
				+	echo '' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				562
			 | 
			
			
				+	echo '[Install]' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				563
			 | 
			
			
				+	echo 'WantedBy=multi-user.target' >> $ZERONET_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				564
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				565
			 | 
			
			
				+	TRACKER_DAEMON=$rootdir/etc/systemd/system/tracker.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				566
			 | 
			
			
				+	echo '[Unit]' > $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				567
			 | 
			
			
				+	echo 'Description=Torrent Tracker' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				568
			 | 
			
			
				+	echo 'After=syslog.target' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				569
			 | 
			
			
				+	echo 'After=network.target' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				570
			 | 
			
			
				+	echo '[Service]' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				571
			 | 
			
			
				+	echo 'Type=simple' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				572
			 | 
			
			
				+	echo 'User=tracker' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				573
			 | 
			
			
				+	echo 'Group=tracker' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				574
			 | 
			
			
				+	echo 'WorkingDirectory=/opt/tracker' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				575
			 | 
			
			
				+	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" >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				576
			 | 
			
			
				+	echo '' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				577
			 | 
			
			
				+	echo 'TimeoutSec=300' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				578
			 | 
			
			
				+	echo '' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				579
			 | 
			
			
				+	echo '[Install]' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				580
			 | 
			
			
				+	echo 'WantedBy=multi-user.target' >> $TRACKER_DAEMON 
			 | 
		
	
		
			
			| 
				
			 | 
			
				581
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				582
			 | 
			
			
				+	$CHROOT_PREFIX useradd -d /opt/tracker/ -s /bin/false tracker 
			 | 
		
	
		
			
			| 
				
			 | 
			
				583
			 | 
			
			
				+	if [ ! -d $rootdir/opt/tracker ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				584
			 | 
			
			
				+		mkdir $rootdir/opt/tracker 
			 | 
		
	
		
			
			| 
				
			 | 
			
				585
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				586
			 | 
			
			
				+	chown -R tracker:tracker $rootdir/opt/tracker 
			 | 
		
	
		
			
			| 
				
			 | 
			
				587
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				588
			 | 
			
			
				+	# publish regularly 
			 | 
		
	
		
			
			| 
				
			 | 
			
				589
			 | 
			
			
				+	echo "* *     * * *   root    zeronetavahi > /dev/null" >> $rootdir/etc/crontab 
			 | 
		
	
		
			
			| 
				
			 | 
			
				590
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				591
			 | 
			
			
				+	$CHROOT_PREFIX systemctl enable tracker.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				592
			 | 
			
			
				+	$CHROOT_PREFIX systemctl enable zeronet.service 
			 | 
		
	
		
			
			| 
				
			 | 
			
				593
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				594
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				595
			 | 
			
			
				+function mesh_batman_client { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				596
			 | 
			
			
				+	if [ ! -f ${rootdir}/tmp/meshtype ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				597
			 | 
			
			
				+		$CHROOT_PREFIX sudo apt-get -y install iproute bridge-utils libnetfilter-conntrack3 batctl 
			 | 
		
	
		
			
			| 
				
			 | 
			
				598
			 | 
			
			
				+		$CHROOT_PREFIX sudo apt-get -y install python-dev libevent-dev ebtables python-pip 
			 | 
		
	
		
			
			| 
				
			 | 
			
				599
			 | 
			
			
				+		$CHROOT_PREFIX sudo apt-get -y install wireless-tools rfkill 
			 | 
		
	
		
			
			| 
				
			 | 
			
				600
			 | 
			
			
				+		$CHROOT_PREFIX sudo apt-get -y install irssi mumble 
			 | 
		
	
		
			
			| 
				
			 | 
			
				601
			 | 
			
			
				+		if [ ! -f /usr/bin/toxic ]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				602
			 | 
			
			
				+			$CHROOT_PREFIX sudo apt-get -y install toxic 
			 | 
		
	
		
			
			| 
				
			 | 
			
				603
			 | 
			
			
				+			echo "n 
			 | 
		
	
		
			
			| 
				
			 | 
			
				604
			 | 
			
			
				+/nick $USER 
			 | 
		
	
		
			
			| 
				
			 | 
			
				605
			 | 
			
			
				+/exit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				606
			 | 
			
			
				+" | ${rootdir}/usr/bin/toxic -d 
			 | 
		
	
		
			
			| 
				
			 | 
			
				607
			 | 
			
			
				+		fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				608
			 | 
			
			
				+	fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				609
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				610
			 | 
			
			
				+	BATMAN_SCRIPT=${rootdir}/tmp/batman 
			 | 
		
	
		
			
			| 
				
			 | 
			
				611
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				612
			 | 
			
			
				+	echo '#!/bin/bash' > $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				613
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				614
			 | 
			
			
				+	echo 'if [[ $1 == "start" ]]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				615
			 | 
			
			
				+	echo '    # install avahi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				616
			 | 
			
			
				+	echo '    apt-get -y install avahi-utils avahi-autoipd avahi-daemon avahi-dnsconfd bittornado' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				617
			 | 
			
			
				+	echo '    sed -i "s|#host-name=.*|host-name=$(hostname)|g" /etc/avahi/avahi-daemon.conf' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				618
			 | 
			
			
				+	echo '    sed -i "s|host-name=.*|host-name=$(hostname)|g" /etc/avahi/avahi-daemon.conf' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				619
			 | 
			
			
				+	echo '    sed -i "s|use-ipv4=.*|use-ipv4=yes|g" /etc/avahi/avahi-daemon.conf' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				620
			 | 
			
			
				+	echo '    sed -i "s|use-ipv6=.*|use-ipv6=no|g" /etc/avahi/avahi-daemon.conf' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				621
			 | 
			
			
				+	echo '    sed -i "s|#disallow-other-stacks=.*|disallow-other-stacks=yes|g" /etc/avahi/avahi-daemon.conf' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				622
			 | 
			
			
				+	echo '    sed -i "s|hosts:.*|hosts:          files mdns4_minimal dns mdns4 mdns|g" /etc/nsswitch.conf' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				623
			 | 
			
			
				+	echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				624
			 | 
			
			
				+	echo '        systemctl restart avahi-daemon' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				625
			 | 
			
			
				+	echo '    else' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				626
			 | 
			
			
				+	echo '        service avahi-daemon restart' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				627
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				628
			 | 
			
			
				+	echo 'fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				629
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				630
			 | 
			
			
				+	echo '# Mesh definition' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				631
			 | 
			
			
				+	echo "ESSID=$ESSID" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				632
			 | 
			
			
				+	echo "CELLID=$BATMAN_CELLID" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				633
			 | 
			
			
				+	echo "CHANNEL=$WIFI_CHANNEL" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				634
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				635
			 | 
			
			
				+	echo '# Ethernet bridge definition (bridged to bat0)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				636
			 | 
			
			
				+	echo 'BRIDGE=br-mesh' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				637
			 | 
			
			
				+	echo "IFACE=$WIFI_INTERFACE" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				638
			 | 
			
			
				+	echo 'EIFACE=eth0' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				639
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				640
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				641
			 | 
			
			
				+	echo '    if grep -q "wlan1" /proc/net/dev; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				642
			 | 
			
			
				+	echo '        IFACE=wlan1' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				643
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				644
			 | 
			
			
				+	echo 'fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				645
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				646
			 | 
			
			
				+	echo '    if grep -q "wlan2" /proc/net/dev; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				647
			 | 
			
			
				+	echo '        IFACE=wlan2' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				648
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				649
			 | 
			
			
				+	echo 'fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				650
			 | 
			
			
				+	echo 'if [[ $IFACE == "wlan0" ]]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				651
			 | 
			
			
				+	echo '    if grep -q "wlan3" /proc/net/dev; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				652
			 | 
			
			
				+	echo '        IFACE=wlan3' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				653
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				654
			 | 
			
			
				+	echo 'fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				655
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				656
			 | 
			
			
				+	echo 'if [ -e /etc/default/batctl ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				657
			 | 
			
			
				+	echo '    . /etc/default/batctl' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				658
			 | 
			
			
				+	echo 'fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				659
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				660
			 | 
			
			
				+	echo 'start() {' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				661
			 | 
			
			
				+	echo '    if [ -f /tmp/meshtype ] ; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				662
			 | 
			
			
				+	echo '        echo "Mesh already running"' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				663
			 | 
			
			
				+	echo '        return' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				664
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				665
			 | 
			
			
				+	echo '    if [ -z "$IFACE" ] ; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				666
			 | 
			
			
				+	echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				667
			 | 
			
			
				+	echo '        return' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				668
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				669
			 | 
			
			
				+	echo '    echo "info: enabling batman-adv mesh network $ESSID on $IFACE"' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				670
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				671
			 | 
			
			
				+	echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				672
			 | 
			
			
				+	echo '        systemctl stop network-manager' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				673
			 | 
			
			
				+	echo '    else' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				674
			 | 
			
			
				+	echo '        service network-manager stop' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				675
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				676
			 | 
			
			
				+	echo '    sleep 5' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				677
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				678
			 | 
			
			
				+	echo "    # remove an avahi service which isn't used" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				679
			 | 
			
			
				+	echo '    if [ -f /etc/avahi/services/udisks.service ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				680
			 | 
			
			
				+	echo '        sudo rm /etc/avahi/services/udisks.service' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				681
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				682
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				683
			 | 
			
			
				+	echo '    # Might have to re-enable wifi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				684
			 | 
			
			
				+	echo '    rfkill unblock $(rfkill list|awk -F: "/phy/ {print $1}") || true' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				685
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				686
			 | 
			
			
				+	echo '    ifconfig $IFACE down' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				687
			 | 
			
			
				+	echo '    ifconfig $IFACE mtu 1532' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				688
			 | 
			
			
				+	echo '    iwconfig $IFACE enc off' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				689
			 | 
			
			
				+	echo '    iwconfig $IFACE mode ad-hoc essid $ESSID channel $CHANNEL' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				690
			 | 
			
			
				+	echo '    sleep 1' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				691
			 | 
			
			
				+	echo '    iwconfig $IFACE ap $CELLID' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				692
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				693
			 | 
			
			
				+	echo '    modprobe batman-adv' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				694
			 | 
			
			
				+	echo '    batctl if add $IFACE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				695
			 | 
			
			
				+	echo '    ifconfig $IFACE up' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				696
			 | 
			
			
				+	echo '    avahi-autoipd --force-bind --daemonize --wait $BRIDGE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				697
			 | 
			
			
				+	echo '    avahi-autoipd --force-bind --daemonize --wait $IFACE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				698
			 | 
			
			
				+	echo '    ifconfig bat0 up promisc' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				699
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				700
			 | 
			
			
				+	echo '    #Use persistent HWAddr' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				701
			 | 
			
			
				+	echo '    ether_new=$(ifconfig eth0 | grep HWaddr | sed -e "s/.*HWaddr //")' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				702
			 | 
			
			
				+	echo '    if [ ! -f /var/lib/mesh-node/bat0 ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				703
			 | 
			
			
				+	echo '        mkdir /var/lib/mesh-node' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				704
			 | 
			
			
				+	echo '        echo "${ether_new}" > /var/lib/mesh-node/bat0' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				705
			 | 
			
			
				+	echo '    else' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				706
			 | 
			
			
				+	echo '        ether=$(cat /var/lib/mesh-node/bat0)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				707
			 | 
			
			
				+	echo '        ifconfig bat0 hw ether ${ether}' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				708
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				709
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				710
			 | 
			
			
				+	echo '    if [ "$EIFACE" ] ; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				711
			 | 
			
			
				+	echo '        brctl addbr $BRIDGE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				712
			 | 
			
			
				+	echo '        brctl addif $BRIDGE bat0' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				713
			 | 
			
			
				+	echo '        brctl addif $BRIDGE $EIFACE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				714
			 | 
			
			
				+	echo '        ifconfig bat0 0.0.0.0' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				715
			 | 
			
			
				+	echo '        ifconfig $EIFACE 0.0.0.0' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				716
			 | 
			
			
				+	echo '        ifconfig $EIFACE up promisc' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				717
			 | 
			
			
				+	echo '        ifconfig $BRIDGE up' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				718
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				719
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				720
			 | 
			
			
				+	echo '    iptables -A INPUT -p tcp --dport 548 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				721
			 | 
			
			
				+	echo '    iptables -A INPUT -p udp --dport 548 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				722
			 | 
			
			
				+	echo '    iptables -A INPUT -p tcp --dport 5353 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				723
			 | 
			
			
				+	echo '    iptables -A INPUT -p udp --dport 5353 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				724
			 | 
			
			
				+	echo '    iptables -A INPUT -p tcp --dport 5354 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				725
			 | 
			
			
				+	echo '    iptables -A INPUT -p udp --dport 5354 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				726
			 | 
			
			
				+	echo "    iptables -A INPUT -p tcp --dport $ZERONET_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				727
			 | 
			
			
				+	echo "    iptables -A INPUT -p udp --dport $ZERONET_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				728
			 | 
			
			
				+	echo "    iptables -A INPUT -p udp --dport $TRACKER_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				729
			 | 
			
			
				+	echo "    iptables -A INPUT -p tcp --dport $TRACKER_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				730
			 | 
			
			
				+	echo "    iptables -A INPUT -p tcp --dport $IPFS_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				731
			 | 
			
			
				+	echo "    iptables -A INPUT -p udp --dport 1900 -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				732
			 | 
			
			
				+	echo "    iptables -A INPUT -p tcp --dport 80 -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				733
			 | 
			
			
				+	echo "    iptables -A INPUT -p udp -m udp -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				734
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				735
			 | 
			
			
				+	echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				736
			 | 
			
			
				+	echo '        systemctl restart avahi-daemon' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				737
			 | 
			
			
				+	echo '    else' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				738
			 | 
			
			
				+	echo '        service avahi-daemon restart' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				739
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				740
			 | 
			
			
				+	echo '    echo "batman" > /tmp/meshtype' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				741
			 | 
			
			
				+	echo '}' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				742
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				743
			 | 
			
			
				+	echo 'stop() {' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				744
			 | 
			
			
				+	echo '    if [ -z "$IFACE" ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				745
			 | 
			
			
				+	echo '        echo "error: unable to find wifi interface, not enabling batman-adv mesh"' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				746
			 | 
			
			
				+	echo '        return' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				747
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				748
			 | 
			
			
				+	echo '    if [ "$EIFACE" ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				749
			 | 
			
			
				+	echo '        brctl delif $BRIDGE bat0' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				750
			 | 
			
			
				+	echo '        brctl delif $BRIDGE $EIFACE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				751
			 | 
			
			
				+	echo '        ifconfig $BRIDGE down || true' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				752
			 | 
			
			
				+	echo '        brctl delbr $BRIDGE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				753
			 | 
			
			
				+	echo '        ifconfig $EIFACE down -promisc' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				754
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				755
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				756
			 | 
			
			
				+	echo '    avahi-autoipd -k $BRIDGE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				757
			 | 
			
			
				+	echo '    avahi-autoipd -k $IFACE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				758
			 | 
			
			
				+	echo '    ifconfig bat0 down -promisc' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				759
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				760
			 | 
			
			
				+	echo '    batctl if del $IFACE' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				761
			 | 
			
			
				+	echo '    rmmod batman-adv' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				762
			 | 
			
			
				+	echo '    ifconfig $IFACE mtu 1500' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				763
			 | 
			
			
				+	echo '    ifconfig $IFACE down' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				764
			 | 
			
			
				+	echo '    iwconfig $IFACE mode managed' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				765
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				766
			 | 
			
			
				+	echo '    iptables -D INPUT -p tcp --dport 548 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				767
			 | 
			
			
				+	echo '    iptables -D INPUT -p udp --dport 548 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				768
			 | 
			
			
				+	echo '    iptables -D INPUT -p tcp --dport 5353 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				769
			 | 
			
			
				+	echo '    iptables -D INPUT -p udp --dport 5353 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				770
			 | 
			
			
				+	echo '    iptables -D INPUT -p tcp --dport 5354 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				771
			 | 
			
			
				+	echo '    iptables -D INPUT -p udp --dport 5354 -j ACCEPT' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				772
			 | 
			
			
				+	echo "    iptables -D INPUT -p tcp --dport $ZERONET_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				773
			 | 
			
			
				+	echo "    iptables -D INPUT -p udp --dport $ZERONET_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				774
			 | 
			
			
				+	echo "    iptables -D INPUT -p udp --dport $TRACKER_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				775
			 | 
			
			
				+	echo "    iptables -D INPUT -p tcp --dport $TRACKER_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				776
			 | 
			
			
				+	echo "    iptables -D INPUT -p tcp --dport $IPFS_PORT -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				777
			 | 
			
			
				+	echo "    iptables -D INPUT -p udp --dport 1900 -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				778
			 | 
			
			
				+	echo "    iptables -D INPUT -p tcp --dport 80 -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				779
			 | 
			
			
				+	echo "    iptables -D INPUT -p udp -m udp -j ACCEPT" >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				780
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				781
			 | 
			
			
				+	echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				782
			 | 
			
			
				+	echo '        systemctl restart network-manager' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				783
			 | 
			
			
				+	echo '    else' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				784
			 | 
			
			
				+	echo '        service network-manager restart' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				785
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				786
			 | 
			
			
				+	echo '    ' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				787
			 | 
			
			
				+	echo '    # restore tox bootstrap nodes for the internet' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				788
			 | 
			
			
				+	echo '    if [ -f /usr/share/toxic/DHTnodes.internet ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				789
			 | 
			
			
				+	echo '        mv /usr/share/toxic/DHTnodes.internet /usr/share/toxic/DHTnodes' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				790
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				791
			 | 
			
			
				+	echo '    if [ -f /usr/local/share/toxic/DHTnodes.internet ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				792
			 | 
			
			
				+	echo '        mv /usr/local/share/toxic/DHTnodes.internet /usr/local/share/toxic/DHTnodes' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				793
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				794
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				795
			 | 
			
			
				+	echo '    if [ -f /bin/systemctl ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				796
			 | 
			
			
				+	echo '        systemctl stop avahi-daemon' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				797
			 | 
			
			
				+	echo '    else' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				798
			 | 
			
			
				+	echo '        service avahi-daemon stop' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				799
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				800
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				801
			 | 
			
			
				+	echo '    sudo rm -f /tmp/meshtype' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				802
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				803
			 | 
			
			
				+	echo '    # kill processes' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				804
			 | 
			
			
				+	echo '    zeronet_proc=$(ps aux | grep zeronet | grep -v grep | awk -F " " "{print $2}" | head -n1)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				805
			 | 
			
			
				+	echo '    if [ "$zeronet_proc" ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				806
			 | 
			
			
				+	echo '        kill -9 $zeronet_proc 2> /dev/null' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				807
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				808
			 | 
			
			
				+	echo '    tracker_proc=$(ps aux | grep bttrack | grep -v grep | awk -F " " "{print $2}" | head -n1)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				809
			 | 
			
			
				+	echo '    if [ "$tracker_proc" ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				810
			 | 
			
			
				+	echo '        kill -9 $tracker_proc 2> /dev/null' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				811
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				812
			 | 
			
			
				+	echo '    if [ ! -f /etc/systemd/system/ipfs.service ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				813
			 | 
			
			
				+	echo '        ipfs_proc=$(ps aux | grep ipfs | grep -v grep | awk -F " " "{print $2}" | head -n1)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				814
			 | 
			
			
				+	echo '        if [ "$ipfs_proc" ]; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				815
			 | 
			
			
				+	echo '            kill -9 $ipfs_proc 2> /dev/null' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				816
			 | 
			
			
				+	echo '        fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				817
			 | 
			
			
				+	echo '    fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				818
			 | 
			
			
				+	echo '}' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				819
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				820
			 | 
			
			
				+	echo 'if ! grep -q "$IFACE" /proc/net/dev; then' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				821
			 | 
			
			
				+	echo '    echo "Interface $IFACE was not found"' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				822
			 | 
			
			
				+	echo '    stop' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				823
			 | 
			
			
				+	echo '    exit 1' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				824
			 | 
			
			
				+	echo 'fi' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				825
			 | 
			
			
				+	echo '' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				826
			 | 
			
			
				+	echo 'case "$1" in' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				827
			 | 
			
			
				+	echo '    start|stop)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				828
			 | 
			
			
				+	echo '        $1' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				829
			 | 
			
			
				+	echo '        ;;' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				830
			 | 
			
			
				+	echo '    restart)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				831
			 | 
			
			
				+	echo '        stop' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				832
			 | 
			
			
				+	echo '        sleep 10' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				833
			 | 
			
			
				+	echo '        start' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				834
			 | 
			
			
				+	echo '        ;;' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				835
			 | 
			
			
				+	echo '    status)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				836
			 | 
			
			
				+	echo '        batctl o' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				837
			 | 
			
			
				+	echo '        ;;' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				838
			 | 
			
			
				+	echo '    ping)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				839
			 | 
			
			
				+	echo '        batctl ping $2' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				840
			 | 
			
			
				+	echo '        ;;' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				841
			 | 
			
			
				+	echo '    ls|list)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				842
			 | 
			
			
				+	echo '        avahi-browse -atl' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				843
			 | 
			
			
				+	echo '        ;;' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				844
			 | 
			
			
				+	echo '    *)' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				845
			 | 
			
			
				+	echo '    echo "error: invalid parameter $1"' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				846
			 | 
			
			
				+	echo '    echo "usage: $0 {start|stop|restart|status|ping|ls|list}"' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				847
			 | 
			
			
				+	echo '    exit 2' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				848
			 | 
			
			
				+	echo '    ;;' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				849
			 | 
			
			
				+	echo 'esac' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				850
			 | 
			
			
				+	echo 'exit 0' >> $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				851
			 | 
			
			
				+	chmod +x $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				852
			 | 
			
			
				+	sudo cp -f $BATMAN_SCRIPT /usr/bin/batman 
			 | 
		
	
		
			
			| 
				
			 | 
			
				853
			 | 
			
			
				+	rm $BATMAN_SCRIPT 
			 | 
		
	
		
			
			| 
				
			 | 
			
				854
			 | 
			
			
				+} 
			 | 
		
	
		
			
			| 
				
			 | 
			
				855
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				856
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				857
			 | 
			
			
				+while [[ $# > 1 ]] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				858
			 | 
			
			
				+do 
			 | 
		
	
		
			
			| 
				
			 | 
			
				859
			 | 
			
			
				+	key="$1" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				860
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				861
			 | 
			
			
				+	case $key in 
			 | 
		
	
		
			
			| 
				
			 | 
			
				862
			 | 
			
			
				+		-h|--help) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				863
			 | 
			
			
				+			show_help 
			 | 
		
	
		
			
			| 
				
			 | 
			
				864
			 | 
			
			
				+			;; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				865
			 | 
			
			
				+		-f|--function) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				866
			 | 
			
			
				+			shift 
			 | 
		
	
		
			
			| 
				
			 | 
			
				867
			 | 
			
			
				+			FN="$1" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				868
			 | 
			
			
				+			;; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				869
			 | 
			
			
				+		-r|--rootdir) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				870
			 | 
			
			
				+			shift 
			 | 
		
	
		
			
			| 
				
			 | 
			
				871
			 | 
			
			
				+			rootdir="$1" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				872
			 | 
			
			
				+			CHROOT_PREFIX='chroot "${rootdir}"' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				873
			 | 
			
			
				+			;; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				874
			 | 
			
			
				+		-w|--wifi|--interface) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				875
			 | 
			
			
				+			shift 
			 | 
		
	
		
			
			| 
				
			 | 
			
				876
			 | 
			
			
				+			WIFI_INTERFACE="$1" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				877
			 | 
			
			
				+			;; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				878
			 | 
			
			
				+		-m|--mirror) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				879
			 | 
			
			
				+			shift 
			 | 
		
	
		
			
			| 
				
			 | 
			
				880
			 | 
			
			
				+			FRIENDS_MIRRORS_SERVER="$1" 
			 | 
		
	
		
			
			| 
				
			 | 
			
				881
			 | 
			
			
				+			;; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				882
			 | 
			
			
				+		*) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				883
			 | 
			
			
				+			# unknown option 
			 | 
		
	
		
			
			| 
				
			 | 
			
				884
			 | 
			
			
				+			;; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				885
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				886
			 | 
			
			
				+	esac 
			 | 
		
	
		
			
			| 
				
			 | 
			
				887
			 | 
			
			
				+	shift 
			 | 
		
	
		
			
			| 
				
			 | 
			
				888
			 | 
			
			
				+done 
			 | 
		
	
		
			
			| 
				
			 | 
			
				889
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				890
			 | 
			
			
				+if [[ $FN == 'babel' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				891
			 | 
			
			
				+	mesh_babel 
			 | 
		
	
		
			
			| 
				
			 | 
			
				892
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				893
			 | 
			
			
				+if [[ $FN == 'babel_client' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				894
			 | 
			
			
				+	mesh_babel_client 
			 | 
		
	
		
			
			| 
				
			 | 
			
				895
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				896
			 | 
			
			
				+if [[ $FN == 'avahi' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				897
			 | 
			
			
				+	mesh_avahi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				898
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				899
			 | 
			
			
				+if [[ $FN == 'firewall' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				900
			 | 
			
			
				+	mesh_firewall 
			 | 
		
	
		
			
			| 
				
			 | 
			
				901
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				902
			 | 
			
			
				+if [[ $FN == 'batman' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				903
			 | 
			
			
				+	mesh_batman 
			 | 
		
	
		
			
			| 
				
			 | 
			
				904
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				905
			 | 
			
			
				+if [[ $FN == 'batman_client' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				906
			 | 
			
			
				+	mesh_batman_client 
			 | 
		
	
		
			
			| 
				
			 | 
			
				907
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				908
			 | 
			
			
				+if [[ $FN == 'tox_node' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				909
			 | 
			
			
				+	mesh_tox_node 
			 | 
		
	
		
			
			| 
				
			 | 
			
				910
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				911
			 | 
			
			
				+if [[ $FN == 'tox_client' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				912
			 | 
			
			
				+	mesh_tox_client 
			 | 
		
	
		
			
			| 
				
			 | 
			
				913
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				914
			 | 
			
			
				+if [[ $FN == 'zeronet' ]]; then 
			 | 
		
	
		
			
			| 
				
			 | 
			
				915
			 | 
			
			
				+	mesh_zeronet 
			 | 
		
	
		
			
			| 
				
			 | 
			
				916
			 | 
			
			
				+fi 
			 | 
		
	
		
			
			| 
				
			 | 
			
				917
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				918
			 | 
			
			
				+exit 0 
			 |