tazpanel view network.cgi @ rev 241

network.cgi: Some small fixes
author Christophe Lincoln <pankso@slitaz.org>
date Tue Feb 28 13:59:51 2012 +0100 (2012-02-28)
parents 70d08efa0334
children e6ea08e35049
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 # 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 *\ hostname\ *)
83 echo $(gettext "Changed hostname:") $(GET hostname) | log
84 echo "$(GET hostname)" > /etc/hostname ;;
85 esac
87 # Get values only now since they could have been modified by actions.
88 . /etc/network.conf
90 #
91 # Main Commands for pages
92 #
94 case " $(GET) " in
95 *\ scan\ *)
96 # Scan open ports
97 scan=$(GET scan)
98 xhtml_header
99 LOADING_MSG=$(gettext "Scanning open ports...")
100 loading_msg
101 cat << EOT
102 <h2>$(gettext "Port scanning for") $scan</h2>
103 <pre>
104 $(pscan -b $scan)
105 </pre>
106 EOT
107 ;;
108 *\ eth\ *)
109 # Wired connections settings
110 xhtml_header
111 if [ "$(GET ip)" ]; then
112 DHCP=no
113 STATIC=no
114 [ -n "$(GET dhcp)" ] && DHCP=yes
115 [ -n "$(GET static)" ] && STATIC=yes
116 LOADING_MSG=$(gettext "Setting up IP...")
117 loading_msg
118 sed -i \
119 -e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \
120 -e s"/^DHCP=.*/DHCP=\"$DHCP\"/" \
121 -e s"/^STATIC=.*/STATIC=\"$STATIC\"/" \
122 -e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \
123 -e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \
124 -e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \
125 -e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf
126 /etc/init.d/network stop | log
127 sleep 2
128 /etc/init.d/network start | log
129 . /etc/network.conf
130 fi
131 cat << EOT
132 <h2>$(gettext "Ethernet connection")</h2>
133 <p>
134 $(gettext "Here you can configure a wired connection using DHCP to
135 automatically get a random IP or configure a static/fixed IP")
136 </p>
137 <h3>$(gettext "Configuration")</h3>
138 <form method="get" action="$SCRIPT_NAME">
139 <input type="hidden" name="eth" />
140 $(table_start)
141 <thead>
142 <tr>
143 <td>$(gettext "Name")</td>
144 <td>$(gettext "Value")</td>
145 </tr>
146 </thead>
147 <tr>
148 <td>$(gettext "Interface")</td>
149 <td><input type="text" name="iface" size="20" value="$INTERFACE" /></td>
150 </tr>
151 <tr>
152 <td>$(gettext "IP address")</td>
153 <td><input type="text" name="ip" size="20" value="$IP" /></td>
154 </tr>
155 <tr>
156 <td>$(gettext "Netmask")</td>
157 <td><input type="text" name="netmask" size="20" value="$NETMASK" /></td>
158 </tr>
159 <tr>
160 <td>$(gettext "Gateway")</td>
161 <td><input type="text" name="gateway" size="20" value="$GATEWAY" /></td>
162 </tr>
163 <tr>
164 <td>$(gettext "DNS server")</td>
165 <td><input type="text" name="dns" size="20" value="$DNS_SERVER" /></td>
166 </tr>
167 $(table_end)
168 <input type="submit" name="static" value="`gettext "Activate (static)"`">
169 <input type="submit" name="dhcp" value="`gettext "Activate (DHCP)"`">
170 <input type="submit" name="disable" value="`gettext "Disable"`">
171 </form>
173 <h3>$(gettext "Configuration file")</h3>
174 <p>
175 $(gettext "These values are the ethernet settings in the main
176 /etc/network.conf configuration file")
177 </p>
178 <pre>
179 $(grep ^[A-V] /etc/network.conf | syntax_highlighter conf)
180 </pre>
181 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
182 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
183 EOT
184 ;;
185 *\ wifi\ *)
186 # Wireless connections settings
187 xhtml_header
188 LOADING_MSG=$(gettext "Scanning wireless interface...")
189 loading_msg
190 . /etc/network.conf
191 cat << EOT
192 <h2>$(gettext "Wireless connection")</h2>
193 <div id="actions">
194 <a class="button" href="$SCRIPT_NAME?wifi&start-wifi=start-wifi">
195 <img src="$IMAGES/start.png" />$(gettext "Start")</a>
196 <a class="button" href="$SCRIPT_NAME?wifi&stop=stop">
197 <img src="$IMAGES/stop.png" />$(gettext "Stop")</a>
198 <a class="button" href="$SCRIPT_NAME?wifi=scan">
199 <img src="$IMAGES/recharge.png" />$(gettext "Scan")</a>
200 </div>
201 $(detect_wifi_networks)
202 EOT
203 if [ "$(GET essid)" ]; then
204 WIFI_KEY=""
205 WIFI_KEY_TYPE=none
206 [ -n "$(GET key)" ] && WIFI_KEY="$(GET key)"
207 [ -n "$(GET keytype)" ] && WIFI_KEY_TYPE="$(GET keytype)"
208 sed -i \
209 -e s'/^DHCP=.*/DHCP="yes"/' \
210 -e s'/^STATIC=.*/STATIC="no"/' \
211 -e s'/^WIFI=.*/WIFI="yes"/' \
212 -e s"/^WIFI_ESSID=.*/WIFI_ESSID=\"$(GET essid)\""/ \
213 -e s"/^WIFI_KEY=.*/WIFI_KEY=\"$WIFI_KEY\"/" \
214 -e s"/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \
215 /etc/network.conf
216 # BUGGY
217 #/etc/init.d/network stop | log
218 # sleep 2
219 /etc/init.d/network start | log
220 sleep 2
221 . /etc/network.conf
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