tazpanel view network.cgi @ rev 107

network.cgi: Add static IP config
author Christophe Lincoln <pankso@slitaz.org>
date Fri Apr 15 07:45:43 2011 +0200 (2011-04-15)
parents 21a86f36336d
children cab93136cc87
line source
1 #!/bin/sh
2 #
3 # Network configuration CGI interface
4 #
6 # Common functions from libtazpanel
7 . lib/libtazpanel
8 . /etc/network.conf
9 get_config
10 header
12 # Include gettext helper script.
13 . /usr/bin/gettext.sh
15 # Export package name for gettext.
16 TEXTDOMAIN='tazpanel'
17 export TEXTDOMAIN
19 TITLE="- Network"
21 # Catch ESSIDs and format output for GTK tree. We get the list of
22 # networks by Cell and without spaces.
23 detect_wifi_networks()
24 {
25 table_start
26 cat << EOT
27 <thead>
28 <tr>
29 <td>$(gettext "Name")</td>
30 <td>$(gettext "Quality")</td>
31 <td>$(gettext "Encryption")</td>
32 <td>$(gettext "Status")</td>
33 </tr>
34 </thead>
35 EOT
36 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
37 ifconfig $WIFI_INTERFACE up
38 for i in `iwlist $WIFI_INTERFACE scan | sed s/"Cell "/Cell-/ | grep "Cell-" | awk '{print $1}'`
39 do
40 SCAN=`iwlist $WIFI_INTERFACE scan last | \
41 awk '/(Cell|ESS|Qual|Encry|IE: WPA)/ {print}' | \
42 sed s/"Cell "/Cell-/ | grep -A 5 "$i"`
43 ESSID=`echo $SCAN | cut -d '"' -f 2`
44 if echo "$SCAN" | grep -q Quality; then
45 QUALITY=`echo $SCAN | sed 's/.*Quality=\([^ ]*\).*/\1/' | sed 's/.*Quality:\([^ ]*\).*/\1/'`
46 else
47 QUALITY="-"
48 fi
49 ENCRYPTION=`echo $SCAN | sed 's/.*key:\([^ ]*\).*/\1/'`
50 # Check encryption type
51 if echo "$SCAN" | grep -q WPA; then
52 ENCRYPTION="${ENCRYPTION} (WPA)"
53 fi
54 # Connected or not connected...
55 if ifconfig | grep -A 1 $WIFI_INTERFACE | \
56 grep -q inet && iwconfig $WIFI_INTERFACE | \
57 grep ESSID | grep -q -w "$ESSID"; then
58 STATUS=$(gettext "Connected")
59 else
60 STATUS="-"
61 fi
62 echo '<tr>'
63 echo "<td><img src='$IMAGES/wireless.png' />$ESSID</td>"
64 echo "<td>$QUALITY</td><td>$ENCRYPTION</td><td>$STATUS</td>"
65 echo '</tr>'
66 done
67 fi
68 table_end
69 }
71 # Actions commands before page is displayed
72 case " $(GET) " in
73 *\ start\ *)
74 # Here we sleep a bit to let udhcp get the lease before reloading
75 # page with status
76 /etc/init.d/network.sh start | log
77 sleep 2 ;;
78 *\ stop\ *)
79 /etc/init.d/network.sh stop | log ;;
80 *)
81 continue ;;
82 esac
84 #
85 # Main Commands for pages
86 #
88 case " $(GET) " in
89 *\ eth\ *)
90 # Wired connections settings
91 xhtml_header
92 if [ "$(GET ip)" ]; then
93 LOADING_MSG=$(gettext "Setting up static IP...")
94 loading_msg
95 sed -i \
96 -e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \
97 -e s'/^DHCP=.*/DHCP="no"/' \
98 -e s'/^WIFI=.*/WIFI="no"/' \
99 -e s'/^STATIC=.*/STATIC="yes"/' \
100 -e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \
101 -e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \
102 -e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \
103 -e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf
104 /etc/init.d/network stop | log
105 sleep 2
106 /etc/init.d/network start | log
107 fi
108 . /etc/network.conf
109 cat << EOT
110 <h2>`gettext "Ethernet connection`</h2>
112 <h3>$(gettext "Setup a static IP")</h3>
113 <form method="get" action="$SCRIPT_NAME">
114 <input type="hidden" name="eth" />
115 $(table_start)
116 <thead>
117 <tr>
118 <td>$(gettext "Name")</td>
119 <td>$(gettext "Value")</td>
120 </tr>
121 </thead>
122 <tr>
123 <td>$(gettext "Interface")</td>
124 <td><input type="text" name="iface" size="20" value="$INTERFACE" /></td>
125 </tr>
126 <tr>
127 <td>$(gettext "IP address")</td>
128 <td><input type="text" name="ip" size="20" value="$IP" /></td>
129 </tr>
130 <tr>
131 <td>$(gettext "Netmask")</td>
132 <td><input type="text" name="netmask" size="20" value="$NETMASK" /></td>
133 </tr>
134 <tr>
135 <td>$(gettext "Gateway")</td>
136 <td><input type="text" name="gateway" size="20" value="$GATEWAY" /></td>
137 </tr>
138 <tr>
139 <td>$(gettext "DNS server")</td>
140 <td><input type="text" name="dns" size="20" value="$DNS_SERVER" /></td>
141 </tr>
142 $(table_end)
143 <input type="submit" value="`gettext "Activate"`">
144 </form>
146 <h3>$(gettext "Configuration file")</h3>
147 <p>
148 $(gettext "These values are the ethernet settings in the main
149 /etc/network.conf configuration file")
150 </p>
151 <pre>
152 $(grep ^[A-V] /etc/network.conf | syntax_highlighter conf)
153 </pre>
154 <a class="button" href="index.cgi?file=/etc/network.conf&action=edit">
155 <img src="$IMAGES/edit.png" />$(gettext "Manual Edit")</a>
156 EOT
157 ;;
158 *\ wifi\ *)
159 # Wireless connections settings
160 xhtml_header
161 LOADING_MSG=$(gettext "Scanning wireless interface...")
162 loading_msg
163 cat << EOT
164 <h2>`gettext "Wireless connection`</h2>
165 <div id="actions">
166 <a class="button" href="$SCRIPT_NAME?wifi=scan">
167 <img src="$IMAGES/recharge.png" />$(gettext "Scan")</a>
168 </div>
169 $(detect_wifi_networks)
170 EOT
171 cat << EOT
172 <h3>$(gettext "Configuration file")</h3>
173 <p>
174 $(gettext "These values are the wifi settings in the main
175 /etc/network.conf configuration file")
176 </p>
177 <pre>
178 $(grep ^WIFI /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>
183 <h3>$(gettext "Output of") iwconfig</h3>
184 <pre>
185 $(iwconfig)
186 </pre>
187 EOT
188 ;;
189 *)
190 # Main Network page starting with a summary
191 xhtml_header
192 cat << EOT
193 <h2>`gettext "Networking`</h2>
194 <p>
195 `gettext "Manage network connections and services`
196 </p>
197 <div id="actions">
198 <div class="float-left">
199 `gettext "Connection:"`
200 <a class="button" href="$SCRIPT_NAME?start">`gettext "Start"`</a>
201 <a class="button" href="$SCRIPT_NAME?stop">`gettext "Stop"`</a>
202 </div>
203 <div class="float-right">
204 `gettext "Configuration file:"`
205 <a class="button" href="index.cgi?file=/etc/network.conf">network.conf</a>
206 </div>
207 </div>
209 $(list_network_interfaces)
211 <h3>$(gettext "Output of ") ifconfig</h3>
212 <pre>
213 $(ifconfig)
214 </pre>
216 <h3>`gettext "Routing table"`</h3>
217 <pre>
218 $(route -n)
219 </pre>
221 <h3>`gettext "Domain name resolution"`</h3>
222 <pre>
223 $(cat /etc/resolv.conf)
224 </pre>
226 <h3>`gettext "ARP table"`</h3>
227 <pre>
228 $(arp)
229 </pre>
230 EOT
231 ;;
232 esac
234 xhtml_footer
235 exit 0