tazpanel view network.cgi @ rev 250

network.cgi: Fix enabling wifi typo (found on fresh install with rolling)
author Christophe Lincoln <pankso@slitaz.org>
date Thu Mar 01 04:01:06 2012 +0100 (2012-03-01)
parents e6ea08e35049
children 5f3ac6d0bd75
line source
1 #!/bin/sh
2 #
3 # Network configuration CGI interface
4 #
5 # Copyright (C) 2012 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 # Start a wifi connection
67 start_wifi() {
68 sed -i \
69 -e s'/^DHCP=.*/DHCP="yes"/' \
70 -e s'/^WIFI=.*/WIFI="yes"/' \
71 -e s'/^STATIC=.*/STATIC="no"/' /etc/network.conf
72 ifconfig $WIFI_INTERFACE up
73 iwconfig $WIFI_INTERFACE txpower auto
74 /etc/init.d/network.sh start | log
75 sleep 2
76 }
78 # Actions commands before page is displayed
79 case " $(GET) " in
80 *\ start\ *)
81 # Here we sleep a bit to let udhcp get the lease before reloading
82 # the page with status
83 /etc/init.d/network.sh start | log
84 sleep 2 ;;
85 *\ stop\ *)
86 /etc/init.d/network.sh stop | log ;;
87 *\ start-wifi\ *) start_wifi ;;
88 *\ hostname\ *)
89 echo $(gettext "Changed hostname:") $(GET hostname) | log
90 echo "$(GET hostname)" > /etc/hostname ;;
91 esac
93 # Get values only now since they could have been modified by actions.
94 . /etc/network.conf
96 #
97 # Main Commands for pages
98 #
100 case " $(GET) " in
101 *\ scan\ *)
102 # Scan open ports
103 scan=$(GET scan)
104 xhtml_header
105 LOADING_MSG=$(gettext "Scanning open ports...")
106 loading_msg
107 cat << EOT
108 <h2>$(gettext "Port scanning for") $scan</h2>
109 <pre>
110 $(pscan -b $scan)
111 </pre>
112 EOT
113 ;;
114 *\ eth\ *)
115 # Wired connections settings
116 xhtml_header
117 if [ "$(GET ip)" ]; then
118 DHCP=no
119 STATIC=no
120 [ -n "$(GET dhcp)" ] && DHCP=yes
121 [ -n "$(GET static)" ] && STATIC=yes
122 LOADING_MSG=$(gettext "Setting up IP...")
123 loading_msg
124 sed -i \
125 -e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \
126 -e s"/^DHCP=.*/DHCP=\"$DHCP\"/" \
127 -e s"/^STATIC=.*/STATIC=\"$STATIC\"/" \
128 -e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \
129 -e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \
130 -e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \
131 -e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf
132 /etc/init.d/network stop | log
133 sleep 2
134 /etc/init.d/network start | log
135 . /etc/network.conf
136 fi
137 cat << EOT
138 <h2>$(gettext "Ethernet connection")</h2>
139 <p>
140 $(gettext "Here you can configure a wired connection using DHCP to
141 automatically get a random IP or configure a static/fixed IP")
142 </p>
143 <h3>$(gettext "Configuration")</h3>
144 <form method="get" action="$SCRIPT_NAME">
145 <input type="hidden" name="eth" />
146 $(table_start)
147 <thead>
148 <tr>
149 <td>$(gettext "Name")</td>
150 <td>$(gettext "Value")</td>
151 </tr>
152 </thead>
153 <tr>
154 <td>$(gettext "Interface")</td>
155 <td><input type="text" name="iface" size="20" value="$INTERFACE" /></td>
156 </tr>
157 <tr>
158 <td>$(gettext "IP address")</td>
159 <td><input type="text" name="ip" size="20" value="$IP" /></td>
160 </tr>
161 <tr>
162 <td>$(gettext "Netmask")</td>
163 <td><input type="text" name="netmask" size="20" value="$NETMASK" /></td>
164 </tr>
165 <tr>
166 <td>$(gettext "Gateway")</td>
167 <td><input type="text" name="gateway" size="20" value="$GATEWAY" /></td>
168 </tr>
169 <tr>
170 <td>$(gettext "DNS server")</td>
171 <td><input type="text" name="dns" size="20" value="$DNS_SERVER" /></td>
172 </tr>
173 $(table_end)
174 <input type="submit" name="static" value="`gettext "Activate (static)"`">
175 <input type="submit" name="dhcp" value="`gettext "Activate (DHCP)"`">
176 <input type="submit" name="disable" value="`gettext "Disable"`">
177 </form>
179 <h3>$(gettext "Configuration file")</h3>
180 <p>
181 $(gettext "These values are the ethernet settings in the main
182 /etc/network.conf configuration file")
183 </p>
184 <pre>
185 $(grep ^[A-V] /etc/network.conf | syntax_highlighter conf)
186 </pre>
187 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
188 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
189 EOT
190 ;;
191 *\ wifi\ *)
192 # Wireless connections settings
193 xhtml_header
194 LOADING_MSG=$(gettext "Scanning wireless interface...")
195 loading_msg
196 . /etc/network.conf
197 cat << EOT
198 <h2>$(gettext "Wireless connection")</h2>
199 <div id="actions">
200 <a class="button" href="$SCRIPT_NAME?wifi&start-wifi=start-wifi">
201 <img src="$IMAGES/start.png" />$(gettext "Start")</a>
202 <a class="button" href="$SCRIPT_NAME?wifi&stop=stop">
203 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a>
204 <a class="button" href="$SCRIPT_NAME?wifi=scan">
205 <img src="$IMAGES/recharge.png" />$(gettext "Scan")</a>
206 </div>
207 $(detect_wifi_networks)
208 EOT
209 if [ "$(GET essid)" ]; then
210 WIFI_KEY=""
211 WIFI_KEY_TYPE=none
212 [ -n "$(GET key)" ] && WIFI_KEY="$(GET key)"
213 [ -n "$(GET keytype)" ] && WIFI_KEY_TYPE="$(GET keytype)"
214 /etc/init.d/network.sh stop | log
215 sed -i \
216 -e s"/^WIFI_ESSID=.*/WIFI_ESSID=\"$(GET essid)\""/ \
217 -e s"/^WIFI_KEY=.*/WIFI_KEY=\"$WIFI_KEY\"/" \
218 -e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \
219 /etc/network.conf
220 . /etc/network.conf
221 start_wifi
222 fi
223 # ESSID names are clickable
224 if [ "$(GET select)" ]; then
225 if [ "$(GET select)" != "$WIFI_ESSID" ]; then
226 WIFI_KEY=""
227 fi
228 WIFI_ESSID="$(GET select)"
229 WIFI_KEY_TYPE="$(GET keytype)"
230 fi
231 cat << EOT
232 <h3>$(gettext "Connection")</h3>
233 <form method="get" action="$SCRIPT_NAME">
234 <input type="hidden" name="connect-wifi" />
235 $(table_start)
236 <thead>
237 <tr>
238 <td>$(gettext "Name")</td>
239 <td>$(gettext "Value")</td>
240 </tr>
241 </thead>
242 <tr>
243 <td>$(gettext "Wifi name (ESSID)")</td>
244 <td><input type="text" name="essid" size="30" value="$WIFI_ESSID" /></td>
245 </tr>
246 <tr>
247 <td>$(gettext "Password (Wifi key)")</td>
248 <td><input type="password" name="key" size="30" value="$WIFI_KEY" /></td>
249 </tr>
250 <tr>
251 <td>$(gettext "Encryption type")</td>
252 <td><input type="text" name="keytype" size="30" value="$WIFI_KEY_TYPE" /></td>
253 </tr>
254 $(table_end)
255 <input type="submit" name="wifi" value="$(gettext "Configure")" />
256 </form>
258 <h3>$(gettext "Configuration file")</h3>
259 <p>
260 $(gettext "These values are the wifi settings in the main
261 /etc/network.conf configuration file")
262 </p>
263 <pre>
264 $(grep ^WIFI /etc/network.conf | syntax_highlighter conf)
265 </pre>
266 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
267 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
269 <h3>$(gettext "Output of") iwconfig</h3>
270 <pre>
271 $(iwconfig)
272 </pre>
273 EOT
274 ;;
275 *)
276 # Main Network page starting with a summary
277 xhtml_header
278 hostname=$(cat /etc/hostname)
279 cat << EOT
280 <h2>`gettext "Networking"`</h2>
281 <p>
282 `gettext "Manage network connections and services"`
283 </p>
284 <div id="actions">
285 <div class="float-left">
286 `gettext "Connection:"`
287 <a class="button" href="$SCRIPT_NAME?start">
288 <img src="$IMAGES/start.png" />$(gettext "Start")</a>
289 <a class="button" href="$SCRIPT_NAME?stop">
290 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a>
291 </div>
292 <div class="float-right">
293 `gettext "Configuration:"`
294 <a class="button" href="index.cgi?file=/etc/network.conf">network.conf</a>
295 <a class="button" href="$SCRIPT_NAME?eth">Ethernet</a>
296 <a class="button" href="$SCRIPT_NAME?wifi">Wireless</a>
297 </div>
298 </div>
300 $(list_network_interfaces)
302 <a name="hosts"></a>
303 <h3>$(gettext "Hosts")</h3>
304 <pre>
305 $(cat /etc/hosts)
306 </pre>
307 <a class="button" href="index.cgi?file=/etc/hosts&action=edit">
308 <img src="$IMAGES/edit.png" />$(gettext "Edit hosts")</a>
310 <h3>$(gettext "Hostname")</h3>
311 <form method="get" name="$SCRIPT_NAME"
312 <input type="text" name="hostname" value="$hostname" />
313 <input type="submit" value="$(gettext "Change hostname")"
314 </form>
317 <a name="ifconfig"></a>
318 <h3>$(gettext "Output of ") ifconfig</h3>
319 <pre>
320 $(ifconfig)
321 </pre>
323 <a name="routing"></a>
324 <h3>`gettext "Routing table"`</h3>
325 <pre>
326 $(route -n)
327 </pre>
329 <a name="dns"></a>
330 <h3>`gettext "Domain name resolution"`</h3>
331 <pre>
332 $(cat /etc/resolv.conf)
333 </pre>
335 <a name="arp"></a>
336 <h3>`gettext "ARP table"`</h3>
337 <pre>
338 $(arp)
339 </pre>
341 <a name="connections"></a>
342 <h3>`gettext "IP Connections"`</h3>
343 <pre>
344 $(netstat -anp 2> /dev/null | sed -e '/UNIX domain sockets/,$d' \
345 -e 's#\([0-9]*\)/#<a href="boot.cgi?daemons=pid=\1">\1</a>/#')
346 </pre>
347 EOT
348 ;;
349 esac
351 xhtml_footer
352 exit 0