tazpanel annotate network.cgi @ rev 422

Remove development code (thanks az_ua).
author Aleksej Bobylev <al.bobylev@gmail.com>
date Wed Mar 25 03:29:55 2015 +0200 (2015-03-25)
parents 299f204b8f1f
children a686450b8e9e
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="&amp;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