tazpanel view network.cgi @ rev 239

network.sh: Make ESSID clickable to select it and detect WPA2
author Christophe Lincoln <pankso@slitaz.org>
date Tue Feb 28 12:46:02 2012 +0100 (2012-02-28)
parents 3fe4007eaf93
children 70d08efa0334
line source
1 #!/bin/sh
2 #
3 # Network configuration CGI interface
4 #
5 # Copyright (C) 2011 SliTaz GNU/Linux - BSD License
6 #
8 # Common functions from libtazpanel
9 . lib/libtazpanel
10 get_config
11 header
13 TITLE="- Network"
15 # Catch ESSIDs and format output for GTK tree. We get the list of
16 # networks by Cell and without spaces.
17 detect_wifi_networks()
18 {
19 table_start
20 cat << EOT
21 <thead>
22 <tr>
23 <td>$(gettext "Name")</td>
24 <td>$(gettext "Quality")</td>
25 <td>$(gettext "Encryption")</td>
26 <td>$(gettext "Status")</td>
27 </tr>
28 </thead>
29 EOT
30 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
31 ifconfig $WIFI_INTERFACE up
32 for i in $(iwlist $WIFI_INTERFACE scan | sed s/"Cell "/Cell-/ | grep "Cell-" | awk '{print $1}')
33 do
34 SCAN=$(iwlist $WIFI_INTERFACE scan last | \
35 awk '/(Cell|ESS|Qual|Encry|IE: WPA|WPA2)/ {print}' | \
36 sed s/"Cell "/Cell-/ | grep -A 5 "$i")
37 ESSID=$(echo $SCAN | cut -d '"' -f 2)
38 if echo "$SCAN" | grep -q Quality; then
39 QUALITY=$(echo $SCAN | sed 's/.*Quality=\([^ ]*\).*/\1/' | sed 's/.*Quality:\([^ ]*\).*/\1/')
40 else
41 QUALITY="-"
42 fi
43 ENCRYPTION=$(echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/')
44 # Check encryption type
45 if echo "$SCAN" | grep -q WPA*; then
46 ENCRYPTION="WPA"
47 fi
48 # Connected or not connected...
49 if ifconfig | grep -A 1 $WIFI_INTERFACE | \
50 fgrep -q inet && iwconfig $WIFI_INTERFACE | \
51 grep ESSID | fgrep -q -w "$ESSID"; then
52 status=$(gettext "Connected")
53 else
54 status="---"
55 fi
56 echo '<tr>'
57 echo "<td><a href=\"$SCRIPT_NAME?wifi&select=$ESSID&keytype=$ENCRYPTION\">
58 <img src='$IMAGES/wireless.png' />$ESSID</a></td>"
59 echo "<td>$QUALITY</td><td>$ENCRYPTION</td><td>$status $ip</td>"
60 echo '</tr>'
61 done
62 fi
63 table_end
64 }
66 # Actions commands before page is displayed
67 case " $(GET) " in
68 *\ start\ *)
69 # Here we sleep a bit to let udhcp get the lease before reloading
70 # the page with status
71 /etc/init.d/network.sh start | log
72 sleep 2 ;;
73 *\ stop\ *)
74 /etc/init.d/network.sh stop | log ;;
75 *\ start-wifi\ *)
76 sed -i \
77 -e s'/^DHCP=.*/DHCP="yes"/' \
78 -e s'/^WIFI=.*/WIFI="yes"/' \
79 -e s'/^STATIC=.*/STATIC="no"/'/etc/network.conf
80 /etc/init.d/network.sh start | log
81 sleep 2 ;;
82 *\ select\ *)
83 WIFI_KEY_TYPE="$(GET keytype)"
84 [ "$WIFI_KEY_TYPE" == "on" ] && WIFI_KEY_TYPE=""
85 sed -i \
86 -e s"/^WIFI_ESSID=.*/WIFI_ESSID=\"$(GET select)\""/ \
87 -e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \
88 /etc/network.conf ;;
89 *\ hostname\ *)
90 echo $(gettext "Changed hostname:") $(GET hostname) | log
91 echo "$(GET hostname)" > /etc/hostname ;;
92 esac
94 # Get values only now since they could have been modified by actions.
95 . /etc/network.conf
97 #
98 # Main Commands for pages
99 #
101 case " $(GET) " in
102 *\ scan\ *)
103 # Scan open ports
104 scan=$(GET scan)
105 xhtml_header
106 LOADING_MSG=$(gettext "Scanning open ports...")
107 loading_msg
108 cat << EOT
109 <h2>`gettext "Port scanning for"` $scan</h2>
110 <pre>
111 $(pscan -b $scan)
112 </pre>
113 EOT
114 ;;
115 *\ eth\ *)
116 # Wired connections settings
117 xhtml_header
118 if [ "$(GET ip)" ]; then
119 DHCP=no
120 STATIC=no
121 [ -n "$(GET dhcp)" ] && DHCP=yes
122 [ -n "$(GET static)" ] && STATIC=yes
123 LOADING_MSG=$(gettext "Setting up IP...")
124 loading_msg
125 sed -i \
126 -e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \
127 -e s"/^DHCP=.*/DHCP=\"$DHCP\"/" \
128 -e s"/^STATIC=.*/STATIC=\"$STATIC\"/" \
129 -e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \
130 -e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \
131 -e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \
132 -e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf
133 /etc/init.d/network stop | log
134 sleep 2
135 /etc/init.d/network start | log
136 fi
137 . /etc/network.conf
138 cat << EOT
139 <h2>`gettext "Ethernet connection"`</h2>
140 <p>
141 $(gettext "Here you can configure a wired connection using DHCP to
142 automatically get a random IP or configure a static/fixed IP")
143 </p>
144 <h3>$(gettext "Configuration")</h3>
145 <form method="get" action="$SCRIPT_NAME">
146 <input type="hidden" name="eth" />
147 $(table_start)
148 <thead>
149 <tr>
150 <td>$(gettext "Name")</td>
151 <td>$(gettext "Value")</td>
152 </tr>
153 </thead>
154 <tr>
155 <td>$(gettext "Interface")</td>
156 <td><input type="text" name="iface" size="20" value="$INTERFACE" /></td>
157 </tr>
158 <tr>
159 <td>$(gettext "IP address")</td>
160 <td><input type="text" name="ip" size="20" value="$IP" /></td>
161 </tr>
162 <tr>
163 <td>$(gettext "Netmask")</td>
164 <td><input type="text" name="netmask" size="20" value="$NETMASK" /></td>
165 </tr>
166 <tr>
167 <td>$(gettext "Gateway")</td>
168 <td><input type="text" name="gateway" size="20" value="$GATEWAY" /></td>
169 </tr>
170 <tr>
171 <td>$(gettext "DNS server")</td>
172 <td><input type="text" name="dns" size="20" value="$DNS_SERVER" /></td>
173 </tr>
174 $(table_end)
175 <input type="submit" name="static" value="`gettext "Activate (static)"`">
176 <input type="submit" name="dhcp" value="`gettext "Activate (DHCP)"`">
177 <input type="submit" name="disable" value="`gettext "Disable"`">
178 </form>
180 <h3>$(gettext "Configuration file")</h3>
181 <p>
182 $(gettext "These values are the ethernet settings in the main
183 /etc/network.conf configuration file")
184 </p>
185 <pre>
186 $(grep ^[A-V] /etc/network.conf | syntax_highlighter conf)
187 </pre>
188 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
189 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
190 EOT
191 ;;
192 *\ wifi\ *)
193 # Wireless connections settings
194 #ifconfig $WIFI_INTERFACE up
195 xhtml_header
196 LOADING_MSG=$(gettext "Scanning wireless interface...")
197 loading_msg
198 if [ "$(GET essid)" ]; then
199 WIFI_KEY=""
200 WIFI_KEY_TYPE=none
201 [ -n "$(GET key)" ] && WIFI_KEY="$(GET key)"
202 [ -n "$(GET keytype)" ] && WIFI_KEY_TYPE="$(GET keytype)"
203 sed -i \
204 -e s'/^DHCP=.*/DHCP="yes"/' \
205 -e s'/^STATIC=.*/STATIC="no"/' \
206 -e s'/^WIFI=.*/WIFI="yes"/' \
207 -e s"/^WIFI_ESSID=.*/WIFI_ESSID=\"$(GET essid)\""/ \
208 -e s"/^WIFI_KEY=.*/WIFI_KEY=\"$WIFI_KEY\"/" \
209 -e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \
210 /etc/network.conf
211 /etc/init.d/network stop | log
212 sleep 2
213 /etc/init.d/network start | log
214 fi
215 . /etc/network.conf
216 cat << EOT
217 <h2>$(gettext "Wireless connection")</h2>
218 <div id="actions">
219 <a class="button" href="$SCRIPT_NAME?wifi&start-wifi=start-wifi">
220 <img src="$IMAGES/start.png" />$(gettext "Start")</a>
221 <a class="button" href="$SCRIPT_NAME?wifi&stop=stop">
222 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a>
223 <a class="button" href="$SCRIPT_NAME?wifi=scan">
224 <img src="$IMAGES/recharge.png" />$(gettext "Scan")</a>
225 </div>
226 $(detect_wifi_networks)
227 EOT
228 cat << EOT
229 <h3>$(gettext "Connection")</h3>
230 <form method="get" action="$SCRIPT_NAME">
231 <input type="hidden" name="wifi" />
232 $(table_start)
233 <thead>
234 <tr>
235 <td>$(gettext "Name")</td>
236 <td>$(gettext "Value")</td>
237 </tr>
238 </thead>
239 <tr>
240 <td>$(gettext "Wifi name (ESSID)")</td>
241 <td><input type="text" name="essid" size="30" value="$WIFI_ESSID" /></td>
242 </tr>
243 <tr>
244 <td>$(gettext "Password (Wifi key)")</td>
245 <td><input type="text" name="key" size="30" value="$WIFI_KEY" /></td>
246 </tr>
247 <tr>
248 <td>$(gettext "Encryption type")</td>
249 <td><input type="text" name="keytype" size="30" value="$WIFI_KEY_TYPE" /></td>
250 </tr>
251 $(table_end)
252 <input type="submit" name="wifi" value="$(gettext "Connect")" />
253 </form>
255 <h3>$(gettext "Configuration file")</h3>
256 <p>
257 $(gettext "These values are the wifi settings in the main
258 /etc/network.conf configuration file")
259 </p>
260 <pre>
261 $(grep ^WIFI /etc/network.conf | syntax_highlighter conf)
262 </pre>
263 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
264 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
266 <h3>$(gettext "Output of") iwconfig</h3>
267 <pre>
268 $(iwconfig)
269 </pre>
270 EOT
271 ;;
272 *)
273 # Main Network page starting with a summary
274 xhtml_header
275 hostname=$(cat /etc/hostname)
276 cat << EOT
277 <h2>`gettext "Networking"`</h2>
278 <p>
279 `gettext "Manage network connections and services"`
280 </p>
281 <div id="actions">
282 <div class="float-left">
283 `gettext "Connection:"`
284 <a class="button" href="$SCRIPT_NAME?start">
285 <img src="$IMAGES/start.png" />$(gettext "Start")</a>
286 <a class="button" href="$SCRIPT_NAME?stop">
287 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a>
288 </div>
289 <div class="float-right">
290 `gettext "Configuration:"`
291 <a class="button" href="index.cgi?file=/etc/network.conf">network.conf</a>
292 <a class="button" href="$SCRIPT_NAME?eth">Ethernet</a>
293 <a class="button" href="$SCRIPT_NAME?wifi">Wireless</a>
294 </div>
295 </div>
297 $(list_network_interfaces)
299 <a name="hosts"></a>
300 <h3>$(gettext "Hosts")</h3>
301 <pre>
302 $(cat /etc/hosts)
303 </pre>
304 <a class="button" href="index.cgi?file=/etc/hosts&action=edit">
305 <img src="$IMAGES/edit.png" />$(gettext "Edit hosts")</a>
307 <h3>$(gettext "Hostname")</h3>
308 <form method="get" name="$SCRIPT_NAME"
309 <input type="text" name="hostname" value="$hostname" />
310 <input type="submit" value="$(gettext "Change hostname")"
311 </form>
314 <a name="ifconfig"></a>
315 <h3>$(gettext "Output of ") ifconfig</h3>
316 <pre>
317 $(ifconfig)
318 </pre>
320 <a name="routing"></a>
321 <h3>`gettext "Routing table"`</h3>
322 <pre>
323 $(route -n)
324 </pre>
326 <a name="dns"></a>
327 <h3>`gettext "Domain name resolution"`</h3>
328 <pre>
329 $(cat /etc/resolv.conf)
330 </pre>
332 <a name="arp"></a>
333 <h3>`gettext "ARP table"`</h3>
334 <pre>
335 $(arp)
336 </pre>
338 <a name="connections"></a>
339 <h3>`gettext "IP Connections"`</h3>
340 <pre>
341 $(netstat -anp 2> /dev/null | sed -e '/UNIX domain sockets/,$d' \
342 -e 's#\([0-9]*\)/#<a href="boot.cgi?daemons=pid=\1">\1</a>/#')
343 </pre>
344 EOT
345 ;;
346 esac
348 xhtml_footer
349 exit 0