rev |
line source |
pankso@38
|
1 #!/bin/sh
|
pankso@38
|
2 #
|
pankso@38
|
3 # Network configuration CGI interface
|
pankso@38
|
4 #
|
al@419
|
5 # Copyright (C) 2012-2015 SliTaz GNU/Linux - BSD License
|
pankso@112
|
6 #
|
pankso@38
|
7
|
al@419
|
8
|
pankso@38
|
9 # Common functions from libtazpanel
|
al@419
|
10
|
pankso@38
|
11 . lib/libtazpanel
|
pankso@38
|
12 get_config
|
pascal@81
|
13 header
|
pankso@38
|
14
|
al@292
|
15 TITLE=$(gettext 'TazPanel - Network')
|
pankso@42
|
16
|
pankso@106
|
17
|
al@419
|
18 # Start a Wi-Fi connection
|
al@419
|
19
|
pankso@247
|
20 start_wifi() {
|
pankso@247
|
21 sed -i \
|
al@419
|
22 -e 's|^WIFI=.*|WIFI="yes"|' \
|
al@419
|
23 -e 's|^DHCP=.*|DHCP="yes"|' \
|
al@419
|
24 -e 's|^STATIC=.*|STATIC="no"|' /etc/network.conf
|
pankso@247
|
25 ifconfig $WIFI_INTERFACE up
|
pankso@247
|
26 iwconfig $WIFI_INTERFACE txpower auto
|
Christian@273
|
27 /etc/init.d/network.sh restart | log
|
al@419
|
28 # Sleep until connection established (max 20 seconds)
|
al@419
|
29 for i in $(seq 20); do
|
al@419
|
30 [ -n "$(iwconfig 2>/dev/null | fgrep Link)" ] && break
|
al@419
|
31 sleep 1
|
al@419
|
32 done
|
al@419
|
33 }
|
al@419
|
34
|
al@419
|
35
|
al@420
|
36 # Connect to a Wi-Fi network
|
al@420
|
37 connect_wifi() {
|
al@420
|
38 /etc/init.d/network.sh stop | log
|
al@420
|
39 sed -i \
|
al@420
|
40 -e "s|^WIFI_ESSID=.*|WIFI_ESSID=\"$(GET essid)\"|" \
|
al@420
|
41 -e "s|^WIFI_BSSID=.*|WIFI_BSSID=\"$(GET bssid)\"|" \
|
al@420
|
42 -e "s|^WIFI_KEY_TYPE=.*|WIFI_KEY_TYPE=\"$(GET keyType)\"|" \
|
al@420
|
43 -e "s|^WIFI_KEY=.*|WIFI_KEY=\"$(GET password)\"|" \
|
al@420
|
44 -e "s|^WIFI_EAP_METHOD=.*|WIFI_EAP_METHOD=\"$(GET eap)\"|" \
|
al@420
|
45 -e "s|^WIFI_CA_CERT=.*|WIFI_CA_CERT=\"$(GET caCert)\"|" \
|
al@420
|
46 -e "s|^WIFI_CLIENT_CERT=.*|WIFI_CLIENT_CERT=\"$(GET clientCert)\"|" \
|
al@420
|
47 -e "s|^WIFI_IDENTITY=.*|WIFI_IDENTITY=\"$(GET identity)\"|" \
|
al@420
|
48 -e "s|^WIFI_ANONYMOUS_IDENTITY=.*|WIFI_ANONYMOUS_IDENTITY=\"$(GET anonymousIdentity)\"|" \
|
al@420
|
49 -e "s|^WIFI_PHASE2=.*|WIFI_PHASE2=\"$(GET phase2)\"|" \
|
al@420
|
50 /etc/network.conf
|
al@420
|
51 . /etc/network.conf
|
al@420
|
52 start_wifi
|
al@420
|
53 }
|
al@420
|
54
|
al@420
|
55
|
al@420
|
56 # Start an Ethernet connection
|
al@420
|
57
|
al@420
|
58 start_eth() {
|
al@420
|
59 case "$(GET staticip)" in
|
al@420
|
60 on) DHCP='no'; STATIC='yes';;
|
al@420
|
61 *) DHCP='yes'; STATIC='no';;
|
al@420
|
62 esac
|
al@420
|
63
|
al@420
|
64 /etc/init.d/network.sh stop | log
|
al@420
|
65 sleep 2
|
al@420
|
66 sed -i \
|
al@420
|
67 -e "s|^INTERFACE=.*|INTERFACE=\"$(GET iface)\"|" \
|
al@420
|
68 -e 's|^WIFI=.*|WIFI="no"|' \
|
al@420
|
69 -e "s|^DHCP=.*|DHCP=\"$DHCP\"|" \
|
al@420
|
70 -e "s|^STATIC=.*|STATIC=\"$STATIC\"|" \
|
al@420
|
71 -e "s|^IP=.*|IP=\"$(GET ip)\"|" \
|
al@420
|
72 -e "s|^NETMASK=.*|NETMASK=\"$(GET netmask)\"|" \
|
al@420
|
73 -e "s|^GATEWAY=.*|GATEWAY=\"$(GET gateway)\"|" \
|
al@420
|
74 -e "s|^DNS_SERVER=.*|DNS_SERVER=\"$(GET dns)\"|" \
|
al@420
|
75 /etc/network.conf
|
al@420
|
76 /etc/init.d/network.sh start | log
|
al@420
|
77 . /etc/network.conf
|
al@420
|
78 }
|
al@420
|
79
|
al@420
|
80
|
al@419
|
81 # Use /etc/wpa/wpa.conf as single database for known networks, passwords, etc.
|
al@419
|
82 # Translate this data to use in javascript.
|
al@419
|
83
|
al@419
|
84 parse_wpa_conf() {
|
al@419
|
85 awk '
|
al@419
|
86 BEGIN { print "networks = ["; begin_list = 1; network = 0; }
|
al@419
|
87 {
|
al@419
|
88 if ($0 == "network={") {
|
al@419
|
89 if (begin_list == 0) print ",";
|
al@419
|
90 begin_list = 0;
|
al@419
|
91 printf "{"; begin_obj = 1;
|
al@419
|
92 network = 1; next;
|
al@419
|
93 }
|
al@419
|
94 if (network == 1) {
|
al@419
|
95 if ($0 ~ "=") {
|
al@419
|
96 if (begin_obj == 0) printf ", ";
|
al@419
|
97 begin_obj = 0;
|
al@419
|
98 split($0, a, "=");
|
al@419
|
99 if (a[2] ~ "\"")
|
al@419
|
100 printf "%s:%s", a[1], a[2];
|
al@419
|
101 else
|
al@419
|
102 printf "%s:\"%s\"", a[1], a[2];
|
al@419
|
103 }
|
al@419
|
104 }
|
al@419
|
105 if (network == 1 && $0 ~ "}") { printf "}"; network = 0; next; }
|
al@419
|
106 }
|
al@419
|
107 END {print "\n];"}
|
al@419
|
108 ' /etc/wpa/wpa.conf | sed 's|\t||g;'
|
al@419
|
109 }
|
al@419
|
110
|
al@419
|
111
|
al@419
|
112 # Waiting for network link up
|
al@419
|
113
|
al@419
|
114 wait_up() {
|
al@419
|
115 for i in $(seq 10); do
|
al@419
|
116 [ -z "$(cat /sys/class/net/*/operstate | fgrep up)"] && sleep 1
|
al@419
|
117 done
|
pankso@247
|
118 }
|
pankso@247
|
119
|
pankso@41
|
120 # Actions commands before page is displayed
|
al@419
|
121
|
pascal@81
|
122 case " $(GET) " in
|
pascal@81
|
123 *\ start\ *)
|
al@419
|
124 /etc/init.d/network.sh start | log
|
pankso@41
|
125 # Here we sleep a bit to let udhcp get the lease before reloading
|
paul@205
|
126 # the page with status
|
al@419
|
127 wait_up ;;
|
pascal@81
|
128 *\ stop\ *)
|
pankso@76
|
129 /etc/init.d/network.sh stop | log ;;
|
naitsirhc@269
|
130 *\ restart\ *)
|
al@419
|
131 /etc/init.d/network.sh restart | log
|
al@419
|
132 wait_up ;;
|
al@420
|
133 *\ start_wifi\ *)
|
al@419
|
134 start_wifi ;;
|
al@420
|
135 *\ start_eth\ *)
|
al@420
|
136 start_eth ;;
|
al@420
|
137 *\ connect_wifi\ *)
|
al@420
|
138 connect_wifi ;;
|
al@419
|
139 *\ host\ *)
|
al@419
|
140 get_hostname="$(GET host)"
|
al@303
|
141 echo $(eval_gettext 'Changed hostname: $get_hostname') | log
|
al@303
|
142 echo "$get_hostname" > /etc/hostname ;;
|
pankso@41
|
143 esac
|
pankso@41
|
144
|
al@419
|
145
|
paul@127
|
146 # Get values only now since they could have been modified by actions.
|
al@419
|
147
|
pankso@108
|
148 . /etc/network.conf
|
pankso@108
|
149
|
al@419
|
150
|
al@419
|
151
|
al@419
|
152
|
al@419
|
153
|
pankso@38
|
154 #
|
pankso@41
|
155 # Main Commands for pages
|
pankso@38
|
156 #
|
pankso@38
|
157
|
pascal@81
|
158 case " $(GET) " in
|
al@419
|
159
|
pascal@136
|
160 *\ scan\ *)
|
pascal@136
|
161 # Scan open ports
|
al@419
|
162 scan=$(GET scan); back=$(GET back)
|
pascal@136
|
163 xhtml_header
|
al@419
|
164 LOADING_MSG=$(gettext 'Scanning open ports...'); loading_msg
|
al@303
|
165
|
al@419
|
166 cat <<EOT
|
al@419
|
167 <section>
|
al@419
|
168 <header>
|
al@419
|
169 $(eval_gettext 'Port scanning for $scan')
|
al@419
|
170 $(back_button "$back" "$(gettext 'Network')" "")
|
al@419
|
171 </header>
|
al@419
|
172 <pre>$(pscan -b $scan)</pre>
|
al@419
|
173 </section>
|
pascal@136
|
174 EOT
|
pascal@136
|
175 ;;
|
al@303
|
176
|
al@419
|
177
|
pascal@81
|
178 *\ eth\ *)
|
pankso@41
|
179 # Wired connections settings
|
pankso@38
|
180 xhtml_header
|
al@419
|
181
|
al@420
|
182 PAR1="size=\"20\" required"; PAR="$PAR1 pattern=\"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\""
|
al@420
|
183
|
al@420
|
184 case "$STATIC" in
|
al@420
|
185 yes) use_static='checked';;
|
al@420
|
186 *) use_static='';;
|
al@420
|
187 esac
|
al@420
|
188
|
al@420
|
189 stop_disabled=''; start_disabled=''
|
al@420
|
190 if cat /sys/class/net/eth*/operstate | fgrep -q up; then
|
al@420
|
191 start_disabled='disabled'
|
al@420
|
192 else
|
al@420
|
193 stop_disabled='disabled'
|
pankso@107
|
194 fi
|
al@419
|
195
|
al@419
|
196 cat <<EOT
|
al@303
|
197 <h2>$(gettext 'Ethernet connection')</h2>
|
al@303
|
198
|
al@303
|
199 <p>$(gettext "Here you can configure a wired connection using DHCP to \
|
al@303
|
200 automatically get a random IP or configure a static/fixed IP")</p>
|
al@303
|
201
|
al@312
|
202 <section>
|
al@419
|
203 <header>$(gettext 'Configuration')</header>
|
al@419
|
204 <form id="conf">
|
al@419
|
205 <input type="hidden" name="eth"/>
|
al@419
|
206 <div>
|
al@419
|
207 <table>
|
al@419
|
208 <tr><td>$(gettext 'Interface')</td>
|
al@420
|
209 <td><select name="iface" value="$INTERFACE" style="width:100%">
|
al@419
|
210 $(cd /sys/class/net; ls -1 | awk -viface="$INTERFACE" '{
|
al@419
|
211 sel = ($0 == iface) ? " selected":""
|
al@419
|
212 printf "<option value=\"%s\"%s>%s", $0, sel, $0
|
al@419
|
213 }')
|
al@419
|
214 </select></td>
|
al@419
|
215 </tr>
|
al@420
|
216 <tr><td>$(gettext 'Static IP')</td>
|
al@420
|
217 <td><label><input type="checkbox" name="staticip" id="staticip" $use_static/>
|
al@419
|
218 $(gettext 'Use static IP')</td>
|
al@419
|
219 </tr>
|
al@420
|
220 <tr id="st1"><td>$(gettext 'IP address')</td>
|
al@420
|
221 <td><input type="text" name="ip" value="$IP" $PAR/></td>
|
al@419
|
222 </tr>
|
al@420
|
223 <tr id="st2"><td>$(gettext 'Netmask')</td>
|
al@420
|
224 <td><input type="text" name="netmask" value="$NETMASK" $PAR/></td>
|
al@419
|
225 </tr>
|
al@420
|
226 <tr id="st3"><td>$(gettext 'Gateway')</td>
|
al@420
|
227 <td><input type="text" name="gateway" value="$GATEWAY" $PAR/></td>
|
al@420
|
228 </tr>
|
al@420
|
229 <tr id="st4"><td>$(gettext 'DNS server')</td>
|
al@420
|
230 <td><input type="text" name="dns" value="$DNS_SERVER" $PAR/></td>
|
al@419
|
231 </tr>
|
al@419
|
232 </table>
|
al@419
|
233 </div>
|
al@419
|
234 </form>
|
al@419
|
235 <footer><!--
|
al@420
|
236 --><button form="conf" type="submit" name="start_eth" data-icon="start" $start_disabled>$(gettext 'Start' )</button><!--
|
al@420
|
237 --><button form="conf" type="submit" name="stop" data-icon="stop" $stop_disabled >$(gettext 'Stop' )</button><!--
|
al@419
|
238 --></footer>
|
al@419
|
239 </section>
|
al@419
|
240
|
al@419
|
241 <script type="text/javascript">
|
al@420
|
242 function static_change() {
|
al@420
|
243 staticip = document.getElementById('staticip').checked;
|
al@420
|
244 for (i = 1; i < 5; i++) {
|
al@420
|
245 document.getElementById('st' + i).style.display = staticip ? '' : 'none';
|
al@420
|
246 }
|
al@420
|
247 }
|
al@419
|
248
|
al@420
|
249 document.getElementById('staticip').onchange = static_change;
|
al@420
|
250 static_change();
|
al@419
|
251 </script>
|
al@419
|
252
|
al@419
|
253 <section>
|
al@419
|
254 <header>
|
al@419
|
255 $(gettext 'Configuration file')
|
al@419
|
256 <form action="index.cgi">
|
al@419
|
257 <input type="hidden" name="file" value="/etc/network.conf"/>
|
al@419
|
258 <button name="action" value="edit" data-icon="edit">$(gettext 'Edit')</button>
|
al@419
|
259 </form>
|
al@419
|
260 </header>
|
al@419
|
261 <div>$(gettext "These values are the ethernet settings in the main /etc/network.conf configuration file")</div>
|
al@419
|
262 <pre>$(awk '{if($1 !~ "WIFI" && $1 !~ "#" && $1 != ""){print $0}}' /etc/network.conf | syntax_highlighter conf)</pre>
|
al@419
|
263 </section>
|
al@419
|
264 EOT
|
al@419
|
265 ;;
|
al@419
|
266
|
al@419
|
267
|
al@419
|
268
|
al@419
|
269 *\ wifi_list\ *)
|
al@419
|
270 # Catch ESSIDs and format output.
|
al@419
|
271 # We get the list of networks by Cell and without spaces.
|
al@419
|
272
|
al@419
|
273 HIDDEN="$(gettext '(hidden)')"
|
al@419
|
274
|
al@419
|
275 cat <<EOT
|
al@419
|
276 <table class="wide center zebra">
|
pankso@107
|
277 <thead>
|
pankso@107
|
278 <tr>
|
al@303
|
279 <td>$(gettext 'Name')</td>
|
al@419
|
280 <td>$(gettext 'Signal level')</td>
|
al@419
|
281 <td>$(gettext 'Channel')</td>
|
al@419
|
282 <td>$(gettext 'Encryption')</td>
|
al@419
|
283 <td>$(gettext 'Status')</td>
|
pankso@107
|
284 </tr>
|
pankso@107
|
285 </thead>
|
al@303
|
286 <tbody>
|
al@419
|
287 EOT
|
al@419
|
288 if [ -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
|
al@419
|
289 ifconfig $WIFI_INTERFACE up
|
al@419
|
290 for i in $(iwlist $WIFI_INTERFACE scan | sed '/Cell /!d;s/.*Cell \([^ ]*\).*/Cell.\1/')
|
al@419
|
291 do
|
al@419
|
292 SCAN=$(iwlist $WIFI_INTERFACE scan last | sed "/$i/,/Cell/!d" | sed '$d')
|
al@419
|
293
|
al@419
|
294 BSSID=$(echo "$SCAN" | sed -n 's|.*Address: \([^ ]*\).*|\1|p')
|
al@419
|
295
|
al@419
|
296 CHANNEL=$(echo "$SCAN" | sed -n 's|.*Channel[:=]\([^ ]*\).*|\1|p')
|
al@419
|
297
|
al@419
|
298 QUALITY=$(echo "$SCAN" | sed -n 's|.*Quality[:=]\([^ ]*\).*|\1|p')
|
al@419
|
299 QUALITY_ICON="lvl$(( 5*${QUALITY:-0} ))" # lvl0 .. lvl4, lvl5
|
al@419
|
300 LEVEL=$(echo "$SCAN" | sed -n 's|.*Signal level[:=]\([^ ]*\).*|\1|p; s|-|−|')
|
al@419
|
301
|
al@419
|
302 ENCRYPTION=$(echo "$SCAN" | sed -n 's|.*Encryption key[:=]\([^ ]*\).*|\1|p') # on/off
|
al@419
|
303
|
al@419
|
304 ESSID=$(echo "$SCAN" | sed -n 's|.*ESSID:"\([^"]*\).*|\1|p')
|
al@419
|
305
|
al@419
|
306 # WPA Type - Group Cipher - Pairwise Ciphers - Authentication Suites
|
al@419
|
307 # {WPA|WPA2}-{TKIP|CCMP}-{TKIP|CCMP|TKIP CCMP}-{PSK|802.1x}
|
al@419
|
308 #CAPABILITIES="$(echo "$SCAN" | grep -e 'IE: .*WPA*' -A3 | cut -d: -f2 | sed -e 's|^ ||' -e '/WPA2/s|.*|=WPA2|' -e '/WPA /s|.*|=WPA|' -e '/--/d' | tr '\n' '-' | tr '=' '\n' | sed -e '/^$/d' -e 's|-$||')"
|
al@419
|
309
|
al@419
|
310 # Authentication type
|
al@419
|
311 AUTH="$(echo "$SCAN" | sed -n 's|.*Authentication Suites[^:]*: *\(.*\)|\1|p')"
|
al@419
|
312 if [ -n "$(echo -n $AUTH | fgrep PSK)" ]; then
|
al@419
|
313 # WPA-Personal. Authentication using password (PSK = pre-shared key)
|
al@419
|
314 WIFI_KEY_TYPE='WPA'
|
al@419
|
315 elif [ -n "$(echo -n $AUTH | fgrep 802.1x)" ]; then
|
al@419
|
316 # WPA-Enterprise. Authentication using username, password, certificates...
|
al@419
|
317 WIFI_KEY_TYPE='EAP'
|
al@419
|
318 else
|
al@419
|
319 WIFI_KEY_TYPE='NONE'
|
al@419
|
320 fi
|
al@419
|
321
|
al@419
|
322 # Check encryption type
|
al@419
|
323 if [ "$ENCRYPTION" == 'on' ]; then
|
al@419
|
324 # "WPA" or "WPA2" or "WPA/WPA2" (maybe also "WPA2/WPA")
|
al@419
|
325 ENC_SIMPLE=$(echo "$SCAN" | sed -n '/.*WPA.*/ s|.*\(WPA[^ ]*\).*|\1|p')
|
al@419
|
326 ENC_SIMPLE=$(echo $ENC_SIMPLE | sed 's| |/|')
|
al@419
|
327 ENC_ICON='sechi' # high
|
al@419
|
328 if [ -z "$ENC_SIMPLE" ]; then
|
al@419
|
329 WIFI_KEY_TYPE='WEP'
|
al@419
|
330 ENC_SIMPLE='WEP'; ENC_ICON='secmi' # middle
|
al@419
|
331 fi
|
al@419
|
332 else
|
al@419
|
333 WIFI_KEY_TYPE='NONE'
|
al@419
|
334 ENC_SIMPLE="$(gettext 'None')"; ENC_ICON='seclo' # low
|
al@419
|
335 fi
|
al@419
|
336
|
al@419
|
337 #
|
al@419
|
338 #if echo $SCAN | grep -q 'Mode:Managed'; then
|
al@419
|
339 # AP="&ap=$(echo $SCAN | sed 's/.*Address: \([^ ]*\).*/\1/')"
|
al@419
|
340 #else
|
al@419
|
341 # AP=''
|
al@419
|
342 #fi
|
al@419
|
343
|
al@419
|
344 # Connected or not connected...
|
al@419
|
345 if ifconfig $WIFI_INTERFACE | fgrep -q inet && \
|
al@419
|
346 iwconfig $WIFI_INTERFACE | fgrep -q "ESSID:\"$ESSID\""; then
|
al@419
|
347 status="$(gettext 'Connected')"
|
al@419
|
348 else
|
al@419
|
349 status='---'
|
al@419
|
350 fi
|
al@419
|
351
|
al@419
|
352 cat <<EOT
|
al@419
|
353 <tr>
|
al@419
|
354 <td><a data-icon="wifi" onclick="loadcfg('$ESSID', '$BSSID', '$WIFI_KEY_TYPE')">${ESSID:-$HIDDEN}</a></td>
|
al@419
|
355 <td><span data-icon="$QUALITY_ICON" title="Quality: $QUALITY"> $LEVEL dBm</span></td>
|
al@419
|
356 <td>$CHANNEL</td>
|
al@419
|
357 <td><span data-icon="$ENC_ICON">$ENC_SIMPLE</span></td>
|
al@419
|
358 <td>$status</td>
|
al@419
|
359 </tr>
|
al@419
|
360 EOT
|
al@419
|
361 done
|
al@419
|
362 fi
|
al@419
|
363 cat <<EOT
|
al@303
|
364 </tbody>
|
al@419
|
365 </table>
|
al@419
|
366 EOT
|
al@419
|
367 exit 0
|
al@419
|
368 ;;
|
al@419
|
369
|
al@419
|
370
|
al@419
|
371 *\ wifi\ *)
|
al@419
|
372 # Wireless connections settings
|
al@419
|
373 xhtml_header
|
al@419
|
374
|
al@419
|
375 . /etc/network.conf
|
al@419
|
376 cat <<EOT
|
al@419
|
377 <h2>$(gettext 'Wireless connection')</h2>
|
al@419
|
378
|
al@419
|
379 <form>
|
al@419
|
380 <input type="hidden" name="wifi"/>
|
al@419
|
381 EOT
|
al@419
|
382
|
al@419
|
383 start_disabled=''; stop_disabled=''
|
al@419
|
384 if iwconfig 2>/dev/null | grep -q 'Tx-Power=off'; then
|
al@419
|
385 stop_disabled='disabled'
|
al@419
|
386 else
|
al@419
|
387 start_disabled='disabled'
|
al@419
|
388 fi
|
al@419
|
389
|
al@419
|
390 cat <<EOT
|
al@420
|
391 <button name="start_wifi" data-icon="start" $start_disabled>$(gettext 'Start')</button><!--
|
al@419
|
392 --><button name="stop" data-icon="stop" $stop_disabled >$(gettext 'Stop' )</button><!--
|
al@419
|
393 --><button type="submit" data-icon="refresh" $stop_disabled >$(gettext 'Scan' )</button>
|
pankso@107
|
394 </form>
|
al@419
|
395 EOT
|
al@419
|
396
|
al@419
|
397 if [ -n "$start_disabled" ]; then
|
al@419
|
398 cat <<EOT
|
al@419
|
399 <section id="wifiList">
|
al@419
|
400 <div style="text-align: center;"><span id="ajaxStatus"></span>$(gettext 'Scanning wireless interface...')</div>
|
al@312
|
401 </section>
|
pankso@107
|
402
|
al@419
|
403 <script type="text/javascript">
|
al@419
|
404 ajax('/network.cgi?wifi_list', '1', 'wifiList');
|
al@419
|
405 $(parse_wpa_conf)
|
al@419
|
406 </script>
|
al@419
|
407 EOT
|
al@419
|
408
|
al@419
|
409 # ESSID names are clickable
|
al@419
|
410 #SELECT="$(GET select)"
|
al@419
|
411 #if [ -n "$SELECT" ]; then
|
al@419
|
412 # [ "$SELECT" != "$WIFI_ESSID" ] && WIFI_KEY=''
|
al@419
|
413 # WIFI_ESSID="$SELECT"
|
al@419
|
414 #fi
|
al@419
|
415
|
al@419
|
416 cat <<EOT
|
al@312
|
417 <section>
|
al@419
|
418 <header>$(gettext 'Connection')</header>
|
al@419
|
419 <div>
|
al@419
|
420 <form id="connection">
|
al@420
|
421 <input type="hidden" name="connect_wifi"/>
|
al@420
|
422 <input type="hidden" name="bssid" id="bssid"/>
|
al@419
|
423 <table>
|
al@419
|
424 <tr><td>$(gettext 'Network SSID')</td>
|
al@419
|
425 <td><input type="text" name="essid" value="$WIFI_ESSID" id="essid"/></td>
|
al@419
|
426 </tr>
|
al@303
|
427
|
al@419
|
428 <tr><td>$(gettext 'Security')</td>
|
al@419
|
429 <td><select name="keyType" id="keyType">
|
al@419
|
430 <option value="NONE">$(gettext 'None')</option>
|
al@419
|
431 <option value="WEP" >WEP</option>
|
al@419
|
432 <option value="WPA" >WPA/WPA2 PSK</option>
|
al@419
|
433 <option value="EAP" >802.1x EAP</option>
|
al@419
|
434 </select>
|
al@419
|
435 </td>
|
al@419
|
436 </tr>
|
al@419
|
437
|
al@419
|
438 <tr class="eap">
|
al@419
|
439 <td><div>$(gettext 'EAP method')</div></td>
|
al@419
|
440 <td><div><select name="eap" id="eap">
|
al@419
|
441 <option value="PEAP">PEAP</option>
|
al@419
|
442 <option value="TLS" >TLS</option>
|
al@419
|
443 <option value="TTLS">TTLS</option>
|
al@419
|
444 <option value="PWD" >PWD</option>
|
al@419
|
445 </select>
|
al@419
|
446 </div></td>
|
al@419
|
447 </tr>
|
al@419
|
448
|
al@419
|
449 <tr class="eap1">
|
al@419
|
450 <td><div>$(gettext 'Phase 2 authentication')</div></td>
|
al@419
|
451 <td><div><select name="phase2" id="phase2">
|
al@419
|
452 <option value="none" >$(gettext 'None')</option>
|
al@419
|
453 <option value="pap" >PAP</option>
|
al@419
|
454 <option value="mschap" >MSCHAP</option>
|
al@419
|
455 <option value="mschapv2">MSCHAPV2</option>
|
al@419
|
456 <option value="gtc" >GTC</option>
|
al@419
|
457 </select>
|
al@419
|
458 </div></td>
|
al@419
|
459 </tr>
|
al@419
|
460
|
al@419
|
461 <tr class="eap1">
|
al@419
|
462 <td><div>$(gettext 'CA certificate')</div></td>
|
al@419
|
463 <td><div><input type="text" name="caCert" id="caCert"></div></td>
|
al@419
|
464 </tr>
|
al@419
|
465
|
al@419
|
466 <tr class="eap1">
|
al@419
|
467 <td><div>$(gettext 'User certificate')</div></td>
|
al@419
|
468 <td><div><input type="text" name="clientCert" id="clientCert"></div></td>
|
al@419
|
469 </tr>
|
al@419
|
470
|
al@419
|
471 <tr class="eap">
|
al@419
|
472 <td><div>$(gettext 'Identity')</div></td>
|
al@419
|
473 <td><div><input type="text" name="identity" id="identity"></div></td>
|
al@419
|
474 </tr>
|
al@419
|
475
|
al@419
|
476 <tr class="eap1">
|
al@419
|
477 <td><div>$(gettext 'Anonymous identity')</div></td>
|
al@419
|
478 <td><div><input type="text" name="anonymousIdentity" id="anonymousIdentity"></div></td>
|
al@419
|
479 </tr>
|
al@419
|
480
|
al@419
|
481 <tr class="wep wpa eap">
|
al@419
|
482 <td><div>$(gettext 'Password')</div></td>
|
al@419
|
483 <td><div>
|
al@419
|
484 <input type="password" name="password" value="$WIFI_KEY" id="password"/>
|
al@419
|
485 <span data-img="view" title="$(gettext 'Show password')"
|
al@419
|
486 onmousedown="document.getElementById('password').type='text'; return false"
|
al@419
|
487 onmouseup="document.getElementById('password').type='password'"
|
al@419
|
488 onmouseout="document.getElementById('password').type='password'"
|
al@419
|
489 ></span>
|
al@419
|
490 </div></td>
|
al@419
|
491 </tr>
|
al@419
|
492
|
al@419
|
493
|
al@419
|
494 <!--
|
al@419
|
495 <tr><td>$(gettext 'Access point')</td>
|
al@419
|
496 <td><input type="text" name="ap" value="$WIFI_AP"/></td>
|
al@419
|
497 </tr>
|
al@419
|
498 -->
|
al@419
|
499
|
al@419
|
500 <script type="text/javascript">
|
al@419
|
501 function wifiSettingsChange() {
|
al@419
|
502 document.getElementById('connection').className =
|
al@419
|
503 document.getElementById('keyType').value.toLowerCase() + ' ' +
|
al@419
|
504 document.getElementById('eap').value.toLowerCase();
|
al@419
|
505 }
|
al@419
|
506 document.getElementById('keyType').onchange = wifiSettingsChange;
|
al@419
|
507 document.getElementById('eap').onchange = wifiSettingsChange;
|
al@419
|
508
|
al@419
|
509 document.getElementById('keyType').value = "$WIFI_KEY_TYPE"; wifiSettingsChange();
|
al@419
|
510 </script>
|
al@419
|
511
|
al@419
|
512 <style type="text/css">
|
al@419
|
513 #connection input[type="text"], #connection input[type="password"] { width: 14rem; }
|
al@419
|
514 #connection select { width: 14.4rem; }
|
al@419
|
515
|
al@419
|
516 #connection td { padding: 0; margin: 0; }
|
al@419
|
517 #connection [class] div {
|
al@419
|
518 max-height: 0; overflow: hidden; padding: 0; margin: 0;
|
al@419
|
519 -webkit-transition: all 0.5s ease-in-out;
|
al@419
|
520 -moz-transition: all 0.5s ease-in-out;
|
al@419
|
521 transition: all 0.5s ease-in-out;
|
al@419
|
522 }
|
al@419
|
523 .wep .wep div, .wpa .wpa div, .eap .eap div,
|
al@419
|
524 .eap.peap .eap1 div, .eap.tls .eap1 div, .eap.ttls .eap1 div {
|
al@419
|
525 max-height: 2em !important;
|
al@419
|
526 }
|
al@419
|
527 </style>
|
al@419
|
528
|
al@419
|
529 </table>
|
al@419
|
530 </form>
|
al@419
|
531 </div>
|
al@419
|
532 <footer>
|
al@419
|
533 <button form="connection" type="submit" name="wifi" data-icon="ok">$(gettext 'Configure')</button>
|
al@419
|
534 </footer>
|
al@419
|
535 </section>
|
al@419
|
536 EOT
|
al@419
|
537 fi
|
al@419
|
538
|
al@419
|
539 cat <<EOT
|
al@419
|
540 <section>
|
al@419
|
541 <header>
|
al@419
|
542 $(gettext 'Configuration file')
|
al@419
|
543 <form action="index.cgi">
|
al@419
|
544 <input type="hidden" name="file" value="/etc/network.conf"/>
|
al@419
|
545 <button name="action" value="edit" data-icon="edit">$(gettext 'Edit')</button>
|
al@419
|
546 </form>
|
al@419
|
547 </header>
|
al@419
|
548 <div>$(gettext "These values are the wifi settings in the main /etc/network.conf configuration file")</div>
|
al@419
|
549 <pre>$(grep ^WIFI /etc/network.conf | sed '/WIFI_KEY=/s|".*"|"********"|' | syntax_highlighter conf)</pre>
|
al@419
|
550 </section>
|
al@419
|
551
|
al@419
|
552
|
al@419
|
553 <section>
|
al@419
|
554 <header>$(gettext 'Output of iwconfig')</header>
|
al@419
|
555 <pre>$(iwconfig)</pre>
|
al@312
|
556 </section>
|
pankso@41
|
557 EOT
|
pankso@41
|
558 ;;
|
pankso@238
|
559
|
al@303
|
560
|
pankso@41
|
561 *)
|
pankso@41
|
562 # Main Network page starting with a summary
|
pankso@41
|
563 xhtml_header
|
al@419
|
564
|
al@419
|
565 stop_disabled=''; start_disabled=''
|
al@419
|
566 if cat /sys/class/net/*/operstate | fgrep -q up; then
|
al@419
|
567 start_disabled='disabled'
|
al@419
|
568 else
|
al@419
|
569 stop_disabled='disabled'
|
al@419
|
570 fi
|
al@419
|
571
|
al@419
|
572 cat <<EOT
|
al@303
|
573 <h2>$(gettext 'Networking')</h2>
|
al@303
|
574
|
al@303
|
575 <p>$(gettext 'Manage network connections and services')</p>
|
al@303
|
576
|
al@419
|
577 <form action="index.cgi" id="indexform"></form>
|
al@419
|
578
|
al@419
|
579 <form id="mainform"><!--
|
al@419
|
580 --><button name="start" data-icon="start" $start_disabled>$(gettext 'Start' )</button><!--
|
al@419
|
581 --><button name="stop" data-icon="stop" $stop_disabled >$(gettext 'Stop' )</button><!--
|
al@419
|
582 --><button name="restart" data-icon="restart" $stop_disabled >$(gettext 'Restart')</button>
|
al@419
|
583 </form>
|
al@419
|
584 <div class="float-right"><!--
|
al@419
|
585 -->$(gettext 'Configuration:')<!--
|
al@419
|
586 --><button form="indexform" name="file" value="/etc/network.conf" data-icon="conf">network.conf</button><!--
|
al@419
|
587 --><button form="mainform" name="eth" data-icon="eth">Ethernet</button><!--
|
al@419
|
588 --><button form="mainform" name="wifi" data-icon="wifi">Wireless</button>
|
pankso@38
|
589 </div>
|
pankso@38
|
590
|
al@419
|
591
|
al@419
|
592 <section>
|
al@419
|
593 <header>$(gettext 'Network interfaces')</header>
|
al@419
|
594 $(list_network_interfaces)
|
al@312
|
595 </section>
|
pankso@38
|
596
|
al@419
|
597
|
al@312
|
598 <section>
|
al@419
|
599 <header id="hosts">$(gettext 'Hosts')</header>
|
al@419
|
600 <pre>$(cat /etc/hosts)</pre>
|
al@419
|
601 <footer>
|
al@419
|
602 <form action="index.cgi">
|
al@419
|
603 <input type="hidden" name="file" value="/etc/hosts"/>
|
al@419
|
604 <button name="action" value="edit" data-icon="edit">$(gettext 'Edit')</button>
|
al@419
|
605 </form>
|
al@419
|
606 </footer>
|
al@312
|
607 </section>
|
pankso@108
|
608
|
al@419
|
609
|
al@312
|
610 <section>
|
al@419
|
611 <header>$(gettext 'Hostname')</header>
|
al@419
|
612 <footer>
|
al@419
|
613 <form>
|
al@419
|
614 <!-- was: name="hostname"; please don't use 'name' in name: unwanted webkit styling -->
|
al@419
|
615 <input type="text" name="host" value="$(cat /etc/hostname)"/><!--
|
al@419
|
616 --><button type="submit" data-icon="ok">$(gettext 'Change')</button>
|
al@419
|
617 </form>
|
al@419
|
618 </footer>
|
al@312
|
619 </section>
|
pankso@108
|
620
|
al@419
|
621
|
al@312
|
622 <section>
|
al@419
|
623 <header id="ifconfig">$(gettext 'Output of ifconfig')</header>
|
al@419
|
624 <pre>$(ifconfig)</pre>
|
al@312
|
625 </section>
|
pascal@68
|
626
|
al@419
|
627
|
al@312
|
628 <section>
|
al@419
|
629 <header id="routing">$(gettext 'Routing table')</header>
|
al@419
|
630 <pre>$(route -n)</pre>
|
al@312
|
631 </section>
|
pascal@131
|
632
|
al@419
|
633
|
al@312
|
634 <section>
|
al@419
|
635 <header id="dns">$(gettext 'Domain name resolution')</header>
|
al@419
|
636 <pre>$(cat /etc/resolv.conf)</pre>
|
al@312
|
637 </section>
|
al@303
|
638
|
al@419
|
639
|
al@312
|
640 <section>
|
al@419
|
641 <header id="arp">$(gettext 'ARP table')</header>
|
al@419
|
642 <pre>$(arp)</pre>
|
al@312
|
643 </section>
|
al@303
|
644
|
al@419
|
645
|
al@312
|
646 <section>
|
al@419
|
647 <header id="connections">$(gettext 'IP Connections')</header>
|
al@419
|
648 <pre>$(netstat -anp 2>/dev/null | sed -e '/UNIX domain sockets/,$d' \
|
al@419
|
649 -e 's#\([0-9]*\)/#<a href="boot.cgi?daemons=pid=\1">\1</a>/#')</pre>
|
al@312
|
650 </section>
|
pankso@38
|
651 EOT
|
pankso@38
|
652 ;;
|
pankso@38
|
653 esac
|
pankso@38
|
654
|
pankso@38
|
655 xhtml_footer
|
pankso@38
|
656 exit 0
|