This commit is contained in:
Bob Mottram 2018-01-16 22:55:05 +00:00
commit 07d43725f9
8 changed files with 154 additions and 23 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
img/icon_routing.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -701,12 +701,9 @@ EOF
echo 'After=network.target' >> $rootdir/etc/systemd/system/olsr2.service
echo '' >> $rootdir/etc/systemd/system/olsr2.service
echo '[Service]' >> $rootdir/etc/systemd/system/olsr2.service
echo 'Type=forking' >> $rootdir/etc/systemd/system/olsr2.service
echo 'User=root' >> $rootdir/etc/systemd/system/olsr2.service
echo 'Group=root' >> $rootdir/etc/systemd/system/olsr2.service
echo 'ExecStart=/usr/local/sbin/olsrd2_static wlan0' >> $rootdir/etc/systemd/system/olsr2.service
echo 'ExecStop=/usr/bin/kill -15 $MAINPID' >> $rootdir/etc/systemd/system/olsr2.service
echo 'PIDFile=/var/run/olsr2/pid' >> $rootdir/etc/systemd/system/olsr2.service
echo 'Restart=on-failure' >> $rootdir/etc/systemd/system/olsr2.service
echo '' >> $rootdir/etc/systemd/system/olsr2.service
echo '[Install]' >> $rootdir/etc/systemd/system/olsr2.service
@ -1299,6 +1296,39 @@ if [ \$no_of_users -gt 0 ]; then
chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/Desktop/vpn.desktop
fi
if [ ! -f /home/$MY_USERNAME/Desktop/routing.desktop ]; then
echo '[Desktop Entry]' > /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Type=Application' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name=Routing Protocol' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[el]=Πρωτόκολλο δρομολόγησης' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[ar]=بروتوكول التوجيه' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo "Name[ca]=Protocol d'enrutament" >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[hi]=रूटिंग प्रोटोकॉल' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[fr]=Protocole de routage' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[de]=Routingprotokoll' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[es]=Protocolo de enrutamiento' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[it]=Protocollo di routing' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[ru]=Протокол маршрутизации' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Name[zh]=路由协议' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment=Select the mesh routing protocol' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[el]=Επιλέξτε το πρωτόκολλο δρομολόγησης πλέγματος' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[ar]=حدد بروتوكول توجيه الشبكة' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo "Comment[ca]=Seleccioneu el protocol d'enrutament de malles" >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[hi]=जाल रूटिंग प्रोटोकॉल का चयन करें' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[fr]=Sélectionnez le protocole de routage de maillage' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[de]=Wählen Sie das Mesh-Routing-Protokoll' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[es]=Seleccione el protocolo de enrutamiento de malla' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo "Comment[it]=Seleziona il protocollo di instradamento della mesh" >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[ru]=Выберите протокол маршрутизации сетки' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Comment[zh]=选择网状路由协议' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo "Exec=mate-terminal -e \"/usr/local/bin/${PROJECT_NAME}-mesh-routing\"" >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Icon=/usr/share/$PROJECT_NAME/avatars/icon_routing.png' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Terminal=false' >> /home/$MY_USERNAME/Desktop/routing.desktop
echo 'Categories=Application' >> /home/$MY_USERNAME/Desktop/routing.desktop
chmod +x /home/$MY_USERNAME/Desktop/routing.desktop
chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/Desktop/routing.desktop
fi
if [ -f /tmp/.ipfs-users ]; then
echo '[Desktop Entry]' > /home/$MY_USERNAME/Desktop/sites.desktop
echo 'Type=Application' >> /home/$MY_USERNAME/Desktop/sites.desktop
@ -1459,6 +1489,9 @@ else
if [ -f /home/$MY_USERNAME/Desktop/tox.desktop ]; then
rm /home/$MY_USERNAME/Desktop/tox.desktop
fi
if [ -f /home/$MY_USERNAME/Desktop/routing.desktop ]; then
rm /home/$MY_USERNAME/Desktop/routing.desktop
fi
pkill qtox
fi

View File

@ -260,16 +260,19 @@ function start {
if grep -q "bmx6" $MESH_DEFAULT_PROTOCOL; then
systemctl enable bmx6
systemctl restart bmx6
sed -i 's|<type>.*|<type>_bmx6._tcp</type>|g' /etc/avahi/services/routing.service
fi
if grep -q "bmx7" $MESH_DEFAULT_PROTOCOL; then
systemctl enable bmx7
systemctl restart bmx7
sed -i 's|<type>.*|<type>_bmx7._tcp</type>|g' /etc/avahi/services/routing.service
fi
if grep -q "olsr" $MESH_DEFAULT_PROTOCOL; then
systemctl enable olsr2
systemctl restart olsr2
sed -i 's|<type>.*|<type>_olsr2._tcp</type>|g' /etc/avahi/services/routing.service
fi
systemctl restart avahi-daemon

View File

@ -107,16 +107,15 @@ function mesh_avahi {
rm $rootdir/etc/avahi/services/udisks.service
fi
# Add an ssh service
echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > $rootdir/etc/avahi/services/ssh.service
echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> $rootdir/etc/avahi/services/ssh.service
echo '<service-group>' >> $rootdir/etc/avahi/services/ssh.service
echo ' <name replace-wildcards="yes">%h SSH</name>' >> $rootdir/etc/avahi/services/ssh.service
echo ' <service>' >> $rootdir/etc/avahi/services/ssh.service
echo ' <type>_ssh._tcp</type>' >> $rootdir/etc/avahi/services/ssh.service
echo " <port>$SSH_PORT</port>" >> $rootdir/etc/avahi/services/ssh.service
echo ' </service>' >> $rootdir/etc/avahi/services/ssh.service
echo '</service-group>' >> $rootdir/etc/avahi/services/ssh.service
# Add a mesh routing protocol service
echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > $rootdir/etc/avahi/services/routing.service
echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> $rootdir/etc/avahi/services/routing.service
echo '<service-group>' >> $rootdir/etc/avahi/services/routing.service
echo ' <name replace-wildcards="yes">%h routing</name>' >> $rootdir/etc/avahi/services/routing.service
echo ' <service>' >> $rootdir/etc/avahi/services/routing.service
echo ' <type>_bmx6._tcp</type>' >> $rootdir/etc/avahi/services/routing.service
echo ' </service>' >> $rootdir/etc/avahi/services/routing.service
echo '</service-group>' >> $rootdir/etc/avahi/services/routing.service
# keep the daemon running
WATCHDOG_SCRIPT_NAME="keepon"
@ -228,6 +227,12 @@ function mesh_firewall {
echo "ip6tables -A INPUT -p tcp --dport $TRACKER_PORT -j ACCEPT" >> $MESH_FIREWALL_SCRIPT
echo "iptables -A INPUT -p udp --dport 1900 -j ACCEPT" >> $MESH_FIREWALL_SCRIPT
echo "ip6tables -A INPUT -p udp --dport 1900 -j ACCEPT" >> $MESH_FIREWALL_SCRIPT
echo '# OLSR2/MANET' >> $MESH_FIREWALL_SCRIPT
echo 'iptables -A INPUT -p udp --dport 269 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
echo 'ip6tables -A INPUT -p udp --dport 269 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
echo 'iptables -A INPUT -p tcp --dport 138 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
echo 'ip6tables -A INPUT -p tcp --dport 138 -j ACCEPT' >> $MESH_FIREWALL_SCRIPT
chmod +x $MESH_FIREWALL_SCRIPT
echo '[Unit]' > $FIREWALL_FILENAME

79
src/freedombone-mesh-routing Executable file
View File

@ -0,0 +1,79 @@
#!/bin/bash
#
# .---. . .
# | | |
# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
# | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
# ' ' --' --' -' - -' ' ' -' -' -' ' - --'
#
# Freedom in the Cloud
#
# Select the mesh routing protocol
#
# License
# =======
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
PROJECT_NAME='freedombone'
export TEXTDOMAIN=${PROJECT_NAME}-mesh-routing
export TEXTDOMAINDIR="/usr/share/locale"
source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-wifi
source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-mesh
bmx6_peers=$(avahi-browse -at | grep routing | grep bmx6 | wc -l)
olsr2_peers=$(avahi-browse -at | grep routing | grep olsr2 | wc -l)
data=$(zenity --list 1 $"BMX6 ($bmx6_peers)" 2 $"OLSR2 ($olsr2_peers)" $"Select Mesh Protocol" --column="id" --title $"Mesh Protocol" --column=$"Choose the mesh protocol:" --hide-column=1 --print-column=1 --height=150)
sel=$?
case $sel in
1) exit 1;;
255) exit 1;;
esac
echo '#!/bin/bash' > /tmp/change_routing
echo "echo '$1' > $MESH_DEFAULT_PROTOCOL" >> /tmp/change_routing
echo "echo '$1' > $MESH_CURRENT_PROTOCOL" >> /tmp/change_routing
chmod +x /tmp/change_routing
clear
echo ''
echo $'Authentication to change mesh protocol'
echo ''
case $data in
1) sudo /tmp/change_routing 'bmx6'
sudo systemctl stop bmx7
sudo systemctl disable bmx7
sudo systemctl stop olsr2
sudo systemctl disable olsr2
sudo systemctl enable bmx6
sudo systemctl start bmx6
;;
2) sudo /tmp/change_routing 'olsr2'
sudo systemctl stop bmx7
sudo systemctl disable bmx7
sudo systemctl stop bmx6
sudo systemctl disable bmx6
sudo systemctl enable olsr2
sudo systemctl start olsr2
;;
esac
rm /tmp/change_routing
exit 0

View File

@ -88,16 +88,15 @@ function mesh_avahi {
rm $rootdir/etc/avahi/services/udisks.service
fi
# Add an ssh service
echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > $rootdir/etc/avahi/services/ssh.service
echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> $rootdir/etc/avahi/services/ssh.service
echo '<service-group>' >> $rootdir/etc/avahi/services/ssh.service
echo ' <name replace-wildcards="yes">%h SSH</name>' >> $rootdir/etc/avahi/services/ssh.service
echo ' <service>' >> $rootdir/etc/avahi/services/ssh.service
echo ' <type>_ssh._tcp</type>' >> $rootdir/etc/avahi/services/ssh.service
echo " <port>$SSH_PORT</port>" >> $rootdir/etc/avahi/services/ssh.service
echo ' </service>' >> $rootdir/etc/avahi/services/ssh.service
echo '</service-group>' >> $rootdir/etc/avahi/services/ssh.service
# Add a mesh routing protocol service
echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > $rootdir/etc/avahi/services/routing.service
echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> $rootdir/etc/avahi/services/routing.service
echo '<service-group>' >> $rootdir/etc/avahi/services/routing.service
echo ' <name replace-wildcards="yes">%h routing</name>' >> $rootdir/etc/avahi/services/routing.service
echo ' <service>' >> $rootdir/etc/avahi/services/routing.service
echo ' <type>_bmx6._tcp</type>' >> $rootdir/etc/avahi/services/routing.service
echo ' </service>' >> $rootdir/etc/avahi/services/routing.service
echo '</service-group>' >> $rootdir/etc/avahi/services/routing.service
# keep the daemon running
WATCHDOG_SCRIPT_NAME="keepon"

View File

@ -195,6 +195,9 @@ function enable_mesh_firewall {
iptables -A INPUT -p tcp --dport 8008 -j ACCEPT
iptables -A INPUT -p udp --dport 8010 -j ACCEPT
iptables -A INPUT -p tcp --dport 8010 -j ACCEPT
# OLSR2/MANET
iptables -A INPUT -p udp --dport 269 -j ACCEPT
iptables -A INPUT -p tcp --dport 138 -j ACCEPT
ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
@ -225,6 +228,9 @@ function enable_mesh_firewall {
ip6tables -A INPUT -p tcp --dport 8008 -j ACCEPT
ip6tables -A INPUT -p udp --dport 8010 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 8010 -j ACCEPT
# OLSR2/MANET
ip6tables -A INPUT -p udp --dport 269 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 138 -j ACCEPT
# vpn over the internet
@ -273,6 +279,9 @@ function disable_mesh_firewall {
iptables -D INPUT -p tcp --dport 8008 -j ACCEPT
iptables -D INPUT -p udp --dport 8010 -j ACCEPT
iptables -D INPUT -p tcp --dport 8010 -j ACCEPT
# OLSR2/MANET
iptables -D INPUT -p udp --dport 269 -j ACCEPT
iptables -D INPUT -p tcp --dport 138 -j ACCEPT
ip6tables -D INPUT -p tcp --dport $TRACKER_PORT -j ACCEPT
@ -302,6 +311,9 @@ function disable_mesh_firewall {
ip6tables -D INPUT -p tcp --dport 8008 -j ACCEPT
ip6tables -D INPUT -p udp --dport 8010 -j ACCEPT
ip6tables -D INPUT -p tcp --dport 8010 -j ACCEPT
# OLSR2/MANET
ip6tables -D INPUT -p udp --dport 269 -j ACCEPT
ip6tables -D INPUT -p tcp --dport 138 -j ACCEPT
# vpn over the internet