|
@@ -32,7 +32,8 @@ CURR_USER=$USER
|
32
|
32
|
VERSION="1.01"
|
33
|
33
|
|
34
|
34
|
# mesh networking settings
|
35
|
|
-BATMAN_IPV6=
|
|
35
|
+BRIDGE_BATMAN_IPV6=
|
|
36
|
+PEER_BATMAN_IPV6=
|
36
|
37
|
|
37
|
38
|
# ssh (from https://stribika.github.io/2015/01/04/secure-secure-shell.html)
|
38
|
39
|
SSH_CIPHERS="chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr"
|
|
@@ -83,7 +84,7 @@ function configure_ssh_client {
|
83
|
84
|
}
|
84
|
85
|
|
85
|
86
|
function mesh_batman {
|
86
|
|
- if [ ! $BATMAN_IPV6 ]; then
|
|
87
|
+ if [ ! $BRIDGE_BATMAN_IPV6 ]; then
|
87
|
88
|
return
|
88
|
89
|
fi
|
89
|
90
|
sudo apt-get -y install iproute bridge-utils libnetfilter-conntrack3 batctl
|
|
@@ -95,6 +96,29 @@ function mesh_batman {
|
95
|
96
|
sudo echo 'batman_adv' >> /etc/modules
|
96
|
97
|
fi
|
97
|
98
|
|
|
99
|
+ # If no address has been given then create a ramdom one
|
|
100
|
+ if [ ! $PEER_BATMAN_IPV6 ]; then
|
|
101
|
+ hexarray=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )
|
|
102
|
+ a=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
|
103
|
+ b=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
|
104
|
+ c=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
|
105
|
+ d=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
|
|
106
|
+ PEER_BATMAN_IPV6="$IPV6_NETWORK:$a:$b:$c:$d"
|
|
107
|
+ fi
|
|
108
|
+
|
|
109
|
+ sudo cp /etc/network/interfaces ~/interfaces
|
|
110
|
+ if ! grep -q "# Mesh Networking (B.A.T.M.A.N)" ~/interfaces; then
|
|
111
|
+ echo '' >> ~/interfaces
|
|
112
|
+ echo '# Mesh Networking (B.A.T.M.A.N)' >> ~/interfaces
|
|
113
|
+ echo 'iface bat0 inet6 static' >> ~/interfaces
|
|
114
|
+ echo ' pre-up modprobe ipv6' >> ~/interfaces
|
|
115
|
+ echo " address $PEER_BATMAN_IPV6" >> ~/interfaces
|
|
116
|
+ echo ' netmask 64' >> ~/interfaces
|
|
117
|
+ sudo mv ~/interfaces /etc/network/interfaces
|
|
118
|
+ else
|
|
119
|
+ sudo rm ~/interfaces
|
|
120
|
+ fi
|
|
121
|
+
|
98
|
122
|
echo '#!/bin/bash' > /tmp/freedombone_mesh
|
99
|
123
|
echo '' > /tmp/freedombone_mesh
|
100
|
124
|
echo '# stop network manager to make the mesh network work' >> /tmp/freedombone_mesh
|
|
@@ -109,7 +133,7 @@ function mesh_batman {
|
109
|
133
|
echo '' >> /tmp/freedombone_mesh
|
110
|
134
|
echo '# add the interface to the ad-hoc network - or create it.' >> /tmp/freedombone_mesh
|
111
|
135
|
echo -n "iwconfig wlan0 mode ad-hoc essid mesh ap " >> /tmp/freedombone_mesh
|
112
|
|
- echo "$BATMAN_IPV6 channel 2" >> /tmp/freedombone_mesh
|
|
136
|
+ echo "$BRIDGE_BATMAN_IPV6 channel 2" >> /tmp/freedombone_mesh
|
113
|
137
|
echo '' >> /tmp/freedombone_mesh
|
114
|
138
|
echo -n '# add wlan0 to the batman-adv virtual interface(so it can ' >> /tmp/freedombone_mesh
|
115
|
139
|
echo 'communicate with other batman-adv nodes)' >> /tmp/freedombone_mesh
|
|
@@ -127,7 +151,7 @@ function mesh_batman {
|
127
|
151
|
|
128
|
152
|
function show_help {
|
129
|
153
|
echo ''
|
130
|
|
- echo 'freedombone-client --mesh-ip [mesh bridge IPv6 address]'
|
|
154
|
+ echo 'freedombone-client --bridge-ip [mesh bridge IPv6 address]'
|
131
|
155
|
echo ''
|
132
|
156
|
exit 0
|
133
|
157
|
}
|
|
@@ -140,9 +164,9 @@ case $key in
|
140
|
164
|
-h|--help)
|
141
|
165
|
show_help
|
142
|
166
|
;;
|
143
|
|
- --mesh-ip)
|
|
167
|
+ --bridge-ip)
|
144
|
168
|
shift
|
145
|
|
- BATMAN_IPV6="$1"
|
|
169
|
+ BRIDGE_BATMAN_IPV6="$1"
|
146
|
170
|
;;
|
147
|
171
|
*)
|
148
|
172
|
# unknown option
|
|
@@ -155,7 +179,7 @@ echo 'Configuring client'
|
155
|
179
|
configure_ssh_client
|
156
|
180
|
mesh_batman
|
157
|
181
|
echo 'Configuration complete'
|
158
|
|
-if [[ $BATMAN_IPV6 ]]; then
|
|
182
|
+if [[ $BRIDGE_BATMAN_IPV6 ]]; then
|
159
|
183
|
echo ''
|
160
|
184
|
echo 'Type "sudo mesh" to connect to the mesh network'
|
161
|
185
|
fi
|