Przeglądaj źródła

Fixing mesh protocol switching

Bob Mottram 7 lat temu
rodzic
commit
c5d907da5b
1 zmienionych plików z 59 dodań i 32 usunięć
  1. 59
    32
      src/freedombone-mesh-routing

+ 59
- 32
src/freedombone-mesh-routing Wyświetl plik

@@ -34,6 +34,17 @@ export TEXTDOMAINDIR="/usr/share/locale"
34 34
 source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-wifi
35 35
 source /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-mesh
36 36
 
37
+function mesh_stop_daemon {
38
+    daemon_name=$1
39
+
40
+    clear
41
+    echo ''
42
+    echo $"Stopping $1..."
43
+    sudo systemctl stop $1
44
+    echo $"Disabling $1..."
45
+    sudo systemctl disable $1
46
+}
47
+
37 48
 clear
38 49
 echo ''
39 50
 echo $'Scanning for BMX6 protocol...'
@@ -59,12 +70,29 @@ case $sel in
59 70
     255) exit 1;;
60 71
 esac
61 72
 
62
-echo '#!/bin/bash' > /tmp/change_routing
63
-echo "echo '$1' > $MESH_DEFAULT_PROTOCOL" >> /tmp/change_routing
64
-echo "echo '$1' > $MESH_CURRENT_PROTOCOL" >> /tmp/change_routing
65
-echo "sed -i 's|<type>.*|<type>_${1}._tcp</type>|g' /etc/avahi/services/routing.service"  >> /tmp/change_routing
66
-echo 'systemctl restart avahi-daemon'  >> /tmp/change_routing
67
-chmod +x /tmp/change_routing
73
+temp_script=$HOME/.change_routing
74
+echo '#!/bin/bash' > $temp_script
75
+echo "echo \"\$1\" > $MESH_DEFAULT_PROTOCOL" >> $temp_script
76
+echo "echo \"\$1\" > $MESH_CURRENT_PROTOCOL" >> $temp_script
77
+echo "sed -i \"s|<type>.*|<type>_\${1}._tcp</type>|g\" /etc/avahi/services/routing.service" >> $temp_script
78
+echo 'systemctl restart avahi-daemon' >> $temp_script
79
+echo "IFACE=\$(cat /etc/systemd/system/\${1}.service | grep ExecStart | awk -F ' ' '{print \$2}')" >> $temp_script
80
+echo 'network=fd66:66:66' >> $temp_script
81
+echo 'search_ipv6=$(ifconfig $1 | grep $network)' >> $temp_script
82
+echo 'if [ $search_ipv6 ]; then' >> $temp_script
83
+echo "    result=\$(ifconfig \$1 | grep \$network | awk -F ' ' '{print \$2}')" >> $temp_script
84
+echo '    ip -6 addr add ${result}/128 dev $1' >> $temp_script
85
+echo 'else' >> $temp_script
86
+echo '    ipv6_array=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )' >> $temp_script
87
+echo '    a=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}' >> $temp_script
88
+echo '    b=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}' >> $temp_script
89
+echo '    c=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}' >> $temp_script
90
+echo '    d=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}' >> $temp_script
91
+echo '    e=${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}${ipv6_array[$RANDOM%16]}' >> $temp_script
92
+echo '    result=$network:$a:$b:$c:$d:$e' >> $temp_script
93
+echo '    ip -6 addr add ${result}/128 dev $1' >> $temp_script
94
+echo 'fi' >> $temp_script
95
+chmod +x $temp_script
68 96
 
69 97
 clear
70 98
 echo ''
@@ -72,42 +100,41 @@ echo $'Authentication to change mesh protocol'
72 100
 echo ''
73 101
 
74 102
 case $data in
75
-    1)  sudo /tmp/change_routing 'bmx6'
76
-        sudo systemctl stop bmx7
77
-        sudo systemctl disable bmx7
78
-        sudo systemctl stop olsr2
79
-        sudo systemctl disable olsr2
80
-        sudo systemctl stop babel
81
-        sudo systemctl disable babel
103
+    1)  sudo $temp_script 'bmx6'
104
+        mesh_stop_daemon 'bmx7'
105
+        mesh_stop_daemon 'olsr2'
106
+        mesh_stop_daemon 'babel'
107
+        clear
108
+        echo ''
109
+        echo $'Enabling BMX6...'
82 110
         sudo systemctl enable bmx6
111
+        echo $'Starting BMX6...'
83 112
         sudo systemctl start bmx6
84 113
         ;;
85
-    2)  sudo /tmp/change_routing 'olsr2'
86
-        sudo systemctl stop bmx7
87
-        sudo systemctl disable bmx7
88
-        sudo systemctl stop bmx6
89
-        sudo systemctl disable bmx6
90
-        sudo systemctl stop babel
91
-        sudo systemctl disable babel
92
-        IFACE=$(cat /etc/systemd/system/olsr2.service | grep ExecStart | awk -F ' ' '{print $2}')
93
-        mesh_generate_ipv6_address $IFACE
114
+    2)  sudo $temp_script 'olsr2'
115
+        mesh_stop_daemon 'bmx6'
116
+        mesh_stop_daemon 'bmx7'
117
+        mesh_stop_daemon 'babel'
118
+        clear
119
+        echo ''
120
+        echo $'Enabling OLSR2...'
94 121
         sudo systemctl enable olsr2
122
+        echo $'Starting OLSR2...'
95 123
         sudo systemctl start olsr2
96 124
         ;;
97
-    3)  sudo /tmp/change_routing 'babel'
98
-        sudo systemctl stop bmx7
99
-        sudo systemctl disable bmx7
100
-        sudo systemctl stop bmx6
101
-        sudo systemctl disable bmx6
102
-        sudo systemctl stop olsr2
103
-        sudo systemctl disable olsr2
104
-        IFACE=$(cat /etc/systemd/system/babel.service | grep ExecStart | awk -F ' ' '{print $2}')
105
-        mesh_generate_ipv6_address $IFACE
125
+    3)  sudo $temp_script 'babel'
126
+        mesh_stop_daemon 'bmx6'
127
+        mesh_stop_daemon 'bmx7'
128
+        mesh_stop_daemon 'olsr2'
129
+        clear
130
+        echo ''
131
+        echo $'Enabling Babel...'
106 132
         sudo systemctl enable babel
133
+        echo $'Starting Babel...'
107 134
         sudo systemctl start babel
108 135
         ;;
109 136
 esac
110 137
 
111
-rm /tmp/change_routing
138
+rm $temp_script
112 139
 
113 140
 exit 0