tazpanel view network.cgi @ rev 238

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