tazpanel view network.cgi @ rev 311

change 'zebra' table styles to use in scrollable tables
author Aleksej Bobylev <al.bobylev@gmail.com>
date Thu May 17 14:02:41 2012 +0300 (2012-05-17)
parents fdfc6b494539
children 42367a53cf50
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=$(gettext 'TazPanel - 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 cat << EOT
20 <table class="zebra outbox">
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 <tbody>
30 EOT
31 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
32 ifconfig $WIFI_INTERFACE up
33 for i in $(iwlist $WIFI_INTERFACE scan | sed s/"Cell "/Cell-/ | grep "Cell-" | awk '{print $1}')
34 do
35 SCAN=$(iwlist $WIFI_INTERFACE scan last | \
36 awk '/(Cell|ESS|Qual|Encry|IE: WPA|WPA2)/ {print}' | \
37 sed s/"Cell "/Cell-/ | grep -A 5 "$i")
38 ESSID=$(echo $SCAN | cut -d '"' -f 2)
39 if echo "$SCAN" | grep -q Quality; then
40 QUALITY=$(echo $SCAN | sed 's/.*Quality=\([^ ]*\).*/\1/' | sed 's/.*Quality:\([^ ]*\).*/\1/')
41 else
42 QUALITY="-"
43 fi
44 ENCRYPTION=$(echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/')
45 # Check encryption type
46 if echo "$SCAN" | grep -q WPA*; then
47 ENCRYPTION="WPA"
48 fi
49 # Connected or not connected...
50 if ifconfig | grep -A 1 $WIFI_INTERFACE | \
51 fgrep -q inet && iwconfig $WIFI_INTERFACE | \
52 grep ESSID | fgrep -q -w "$ESSID"; then
53 status=$(gettext 'Connected')
54 else
55 status="---"
56 fi
57 echo '<tr>'
58 echo "<td><a href=\"$SCRIPT_NAME?wifi&select=$ESSID&keytype=$ENCRYPTION\">
59 <img src='$IMAGES/wireless.png' />$ESSID</a></td>"
60 echo "<td>$QUALITY</td><td>$ENCRYPTION</td><td>$status $ip</td>"
61 echo '</tr>'
62 done
63 fi
64 cat << EOT
65 </tbody>
66 </table>
67 EOT
68 }
70 # Start a wifi connection
71 start_wifi() {
72 sed -i \
73 -e s'/^DHCP=.*/DHCP="yes"/' \
74 -e s'/^WIFI=.*/WIFI="yes"/' \
75 -e s'/^STATIC=.*/STATIC="no"/' /etc/network.conf
76 ifconfig $WIFI_INTERFACE up
77 iwconfig $WIFI_INTERFACE txpower auto
78 /etc/init.d/network.sh restart | log
79 sleep 2
80 }
82 # Actions commands before page is displayed
83 case " $(GET) " in
84 *\ start\ *)
85 # Here we sleep a bit to let udhcp get the lease before reloading
86 # the page with status
87 /etc/init.d/network.sh start | log
88 sleep 2 ;;
89 *\ stop\ *)
90 /etc/init.d/network.sh stop | log ;;
91 *\ restart\ *)
92 /etc/init.d/network.sh restart | log ;;
93 *\ start-wifi\ *) start_wifi ;;
94 *\ hostname\ *)
95 get_hostname="$(GET hostname)"
96 echo $(eval_gettext 'Changed hostname: $get_hostname') | log
97 echo "$get_hostname" > /etc/hostname ;;
98 esac
100 # Get values only now since they could have been modified by actions.
101 . /etc/network.conf
103 #
104 # Main Commands for pages
105 #
107 case " $(GET) " in
108 *\ scan\ *)
109 # Scan open ports
110 scan=$(GET scan)
111 xhtml_header
112 LOADING_MSG=$(gettext 'Scanning open ports...')
113 loading_msg
114 cat << EOT
115 <h2>$(eval_gettext 'Port scanning for $scan')</h2>
117 <pre>$(pscan -b $scan)</pre>
118 EOT
119 ;;
121 *\ eth\ *)
122 # Wired connections settings
123 xhtml_header
124 if [ "$(GET ip)" ]; then
125 DHCP=no
126 STATIC=no
127 [ -n "$(GET dhcp)" ] && DHCP=yes
128 [ -n "$(GET static)" ] && STATIC=yes
129 LOADING_MSG=$(gettext 'Setting up IP...')
130 loading_msg
131 sed -i \
132 -e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \
133 -e s"/^DHCP=.*/DHCP=\"$DHCP\"/" \
134 -e s"/^STATIC=.*/STATIC=\"$STATIC\"/" \
135 -e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \
136 -e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \
137 -e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \
138 -e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf
139 /etc/init.d/network stop | log
140 sleep 2
141 /etc/init.d/network start | log
142 . /etc/network.conf
143 fi
144 cat << EOT
145 <h2>$(gettext 'Ethernet connection')</h2>
147 <p>$(gettext "Here you can configure a wired connection using DHCP to \
148 automatically get a random IP or configure a static/fixed IP")</p>
150 <h3>$(gettext 'Configuration')</h3>
151 <form method="get" action="$SCRIPT_NAME">
152 <input type="hidden" name="eth" />
153 <table>
154 <thead>
155 <tr>
156 <td>$(gettext 'Name')</td>
157 <td>$(gettext 'Value')</td>
158 </tr>
159 </thead>
160 <tbody>
161 <tr>
162 <td>$(gettext 'Interface')</td>
163 <td><input type="text" name="iface" size="20" value="$INTERFACE" /></td>
164 </tr>
165 <tr>
166 <td>$(gettext 'IP address')</td>
167 <td><input type="text" name="ip" size="20" value="$IP" /></td>
168 </tr>
169 <tr>
170 <td>$(gettext 'Netmask')</td>
171 <td><input type="text" name="netmask" size="20" value="$NETMASK" /></td>
172 </tr>
173 <tr>
174 <td>$(gettext 'Gateway')</td>
175 <td><input type="text" name="gateway" size="20" value="$GATEWAY" /></td>
176 </tr>
177 <tr>
178 <td>$(gettext 'DNS server')</td>
179 <td><input type="text" name="dns" size="20" value="$DNS_SERVER" /></td>
180 </tr>
181 </tbody>
182 </table>
183 <input type="submit" name="static" value="$(gettext 'Activate (static)')">
184 <input type="submit" name="dhcp" value="$(gettext 'Activate (DHCP)')">
185 <input type="submit" name="disable" value="$(gettext 'Disable')">
186 </form>
188 <h3>$(gettext 'Configuration file')</h3>
190 <p>$(gettext "These values are the ethernet settings in the main \
191 /etc/network.conf configuration file")</p>
192 <pre>
193 $(grep ^[A-V] /etc/network.conf | syntax_highlighter conf)
194 </pre>
195 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
196 <img src="$IMAGES/edit.png" />$(gettext 'Manual Edit')</a>
197 EOT
198 ;;
199 *\ wifi\ *)
200 # Wireless connections settings
201 xhtml_header
202 LOADING_MSG=$(gettext 'Scanning wireless interface...')
203 loading_msg
204 . /etc/network.conf
205 cat << EOT
206 <h2>$(gettext 'Wireless connection')</h2>
207 <div id="actions">
208 <a class="button" href="$SCRIPT_NAME?wifi&start-wifi=start-wifi">
209 <img src="$IMAGES/start.png" />$(gettext 'Start')</a>
210 <a class="button" href="$SCRIPT_NAME?wifi&stop=stop">
211 <img src="$IMAGES/stop.png" />$(gettext 'Stop')</a>
212 <a class="button" href="$SCRIPT_NAME?wifi=scan">
213 <img src="$IMAGES/recharge.png" />$(gettext 'Scan')</a>
214 </div>
215 $(detect_wifi_networks)
216 EOT
217 if [ "$(GET essid)" ]; then
218 WIFI_KEY=""
219 WIFI_KEY_TYPE=none
220 [ -n "$(GET key)" ] && WIFI_KEY="$(GET key)"
221 [ -n "$(GET keytype)" ] && WIFI_KEY_TYPE="$(GET keytype)"
222 /etc/init.d/network.sh stop | log
223 sed -i \
224 -e s"/^WIFI_ESSID=.*/WIFI_ESSID=\"$(GET essid)\""/ \
225 -e s"/^WIFI_KEY=.*/WIFI_KEY=\"$WIFI_KEY\"/" \
226 -e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \
227 /etc/network.conf
228 . /etc/network.conf
229 start_wifi
230 fi
231 # ESSID names are clickable
232 if [ "$(GET select)" ]; then
233 if [ "$(GET select)" != "$WIFI_ESSID" ]; then
234 WIFI_KEY=""
235 fi
236 WIFI_ESSID="$(GET select)"
237 WIFI_KEY_TYPE="$(GET keytype)"
238 fi
239 cat << EOT
240 <h3>$(gettext 'Connection')</h3>
241 <form method="get" action="$SCRIPT_NAME">
242 <input type="hidden" name="connect-wifi" />
243 $(table_start)
244 <thead>
245 <tr>
246 <td>$(gettext 'Name')</td>
247 <td>$(gettext 'Value')</td>
248 </tr>
249 </thead>
250 <tr>
251 <td>$(gettext 'Wifi name (ESSID)')</td>
252 <td><input type="text" name="essid" size="30" value="$WIFI_ESSID" /></td>
253 </tr>
254 <tr>
255 <td>$(gettext 'Password (Wifi key)')</td>
256 <td><input type="password" name="key" size="30" value="$WIFI_KEY" /></td>
257 </tr>
258 <tr>
259 <td>$(gettext 'Encryption type')</td>
260 <td><input type="text" name="keytype" size="30" value="$WIFI_KEY_TYPE" /></td>
261 </tr>
262 $(table_end)
263 <input type="submit" name="wifi" value="$(gettext 'Configure')" />
264 </form>
266 <h3>$(gettext 'Configuration file')</h3>
268 <p>$(gettext "These values are the wifi settings in the main /etc/network.conf \
269 configuration file")</p>
271 <pre>$(grep ^WIFI /etc/network.conf | syntax_highlighter conf)</pre>
273 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
274 <img src="$IMAGES/edit.png" />$(gettext 'Manual Edit')</a>
276 <h3>$(gettext 'Output of iwconfig')</h3>
278 <pre>$(iwconfig)</pre>
279 EOT
280 ;;
281 *)
282 # Main Network page starting with a summary
283 xhtml_header
284 hostname=$(cat /etc/hostname)
285 cat << EOT
286 <h2>$(gettext 'Networking')</h2>
288 <p>$(gettext 'Manage network connections and services')</p>
290 <div id="actions">
291 <div class="float-left">
292 <a class="button" href="$SCRIPT_NAME?start">
293 <img src="$IMAGES/start.png" />$(gettext 'Start')</a>
294 <a class="button" href="$SCRIPT_NAME?stop">
295 <img src="$IMAGES/stop.png" />$(gettext 'Stop')</a>
296 <a class="button" href="$SCRIPT_NAME?restart">
297 <img src="$IMAGES/recharge.png" />$(gettext 'Restart')</a>
298 </div>
299 <div class="float-right">
300 $(gettext 'Configuration:')
301 <a class="button" href="index.cgi?file=/etc/network.conf">network.conf</a>
302 <a class="button" href="$SCRIPT_NAME?eth">Ethernet</a>
303 <a class="button" href="$SCRIPT_NAME?wifi">Wireless</a>
304 </div>
305 </div>
307 $(list_network_interfaces)
309 <h3 id="hosts">$(gettext 'Hosts')</h3>
311 <pre>$(cat /etc/hosts)</pre>
313 <a class="button" href="index.cgi?file=/etc/hosts&action=edit">
314 <img src="$IMAGES/edit.png" />$(gettext 'Edit hosts')</a>
316 <h3>$(gettext 'Hostname')</h3>
318 <form method="get" name="$SCRIPT_NAME">
319 <input type="text" name="hostname" value="$hostname" />
320 <input type="submit" value="$(gettext 'Change hostname')" />
321 </form>
324 <h3 id="ifconfig">$(gettext 'Output of ifconfig')</h3>
326 <pre>$(ifconfig)</pre>
328 <h3 id="routing">$(gettext 'Routing table')</h3>
330 <pre>$(route -n)</pre>
332 <h3 id="dns">$(gettext 'Domain name resolution')</h3>
334 <pre>$(cat /etc/resolv.conf)</pre>
336 <h3 id="arp">$(gettext 'ARP table')</h3>
338 <pre>$(arp)</pre>
340 <h3 id="connections">$(gettext 'IP Connections')</h3>
342 <pre>
343 $(netstat -anp 2> /dev/null | sed -e '/UNIX domain sockets/,$d' \
344 -e 's#\([0-9]*\)/#<a href="boot.cgi?daemons=pid=\1">\1</a>/#')
345 </pre>
346 EOT
347 ;;
348 esac
350 xhtml_footer
351 exit 0