tazpanel view network.cgi @ rev 288

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