SSID: Respect ASCII character Label.
[tomato.git] / release / src / router / www / status-overview.asp
blob9d21a2a11fa74ec8d7c8e3e883d3196e71f18d4c
1 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
2 <!--
3 Tomato GUI
4 Copyright (C) 2006-2010 Jonathan Zarate
5 http://www.polarcloud.com/tomato/
7 For use with Tomato Firmware only.
8 No part of this file may be used without permission.
9 -->
10 <html>
11 <head>
12 <meta http-equiv='content-type' content='text/html;charset=utf-8'>
13 <meta name='robots' content='noindex,nofollow'>
14 <title>[<% ident(); %>] Status: Overview</title>
15 <link rel='stylesheet' type='text/css' href='tomato.css'>
16 <% css(); %>
17 <script type='text/javascript' src='tomato.js'></script>
18 <script type='text/javascript' src='interfaces.js'></script>
20 <!-- / / / -->
22 <style type='text/css'>
23 .controls {
24 width: 90px;
25 margin-top: 5px;
26 margin-bottom: 10px;
28 </style>
30 <script type='text/javascript' src='debug.js'></script>
32 <script type='text/javascript'>
34 // <% nvstat(); %>
35 // <% etherstates(); %>
37 wmo = {'ap':'Access Point','sta':'Wireless Client','wet':'Wireless Ethernet Bridge','wds':'WDS'};
38 auth = {'disabled':'-','wep':'WEP','wpa_personal':'WPA Personal (PSK)','wpa_enterprise':'WPA Enterprise','wpa2_personal':'WPA2 Personal (PSK)','wpa2_enterprise':'WPA2 Enterprise','wpaX_personal':'WPA / WPA2 Personal','wpaX_enterprise':'WPA / WPA2 Enterprise','radius':'Radius'};
39 enc = {'tkip':'TKIP','aes':'AES','tkip+aes':'TKIP / AES'};
40 bgmo = {'disabled':'-','mixed':'Auto','b-only':'B Only','g-only':'G Only','bg-mixed':'B/G Mixed','lrs':'LRS','n-only':'N Only'};
42 lastjiffiestotal = 0;
43 lastjiffiesidle = 0;
44 lastjiffiesusage = 100;
45 </script>
47 <script type='text/javascript' src='wireless.jsx?_http_id=<% nv(http_id); %>'></script>
48 <script type='text/javascript' src='status-data.jsx?_http_id=<% nv(http_id); %>'></script>
50 <script type='text/javascript'>
51 show_dhcpc = ((nvram.wan_proto == 'dhcp') || (((nvram.wan_proto == 'l2tp') || (nvram.wan_proto == 'pptp')) && (nvram.pptp_dhcp == '1')));
52 show_codi = ((nvram.wan_proto == 'pppoe') || (nvram.wan_proto == 'l2tp') || (nvram.wan_proto == 'pptp') || (nvram.wan_proto == 'ppp3g'));
54 show_radio = [];
55 for (var uidx = 0; uidx < wl_ifaces.length; ++uidx) {
56 /* REMOVE-BEGIN
57 // show_radio.push((nvram['wl'+wl_unit(uidx)+'_radio'] == '1'));
58 REMOVE-END */
59 if (wl_sunit(uidx)<0)
60 show_radio.push((nvram['wl'+wl_fface(uidx)+'_radio'] == '1'));
63 nphy = features('11n');
65 function dhcpc(what)
67 form.submitHidden('dhcpc.cgi', { exec: what, _redirect: 'status-overview.asp' });
70 function serv(service, sleep)
72 form.submitHidden('service.cgi', { _service: service, _redirect: 'status-overview.asp', _sleep: sleep });
75 function wan_connect()
77 serv('wan-restart', 5);
80 function wan_disconnect()
82 serv('wan-stop', 2);
85 function wlenable(uidx, n)
87 form.submitHidden('wlradio.cgi', { enable: '' + n, _nextpage: 'status-overview.asp', _nextwait: n ? 6 : 3, _wl_unit: wl_unit(uidx) });
90 var ref = new TomatoRefresh('status-data.jsx', '', 0, 'status_overview_refresh');
92 ref.refresh = function(text)
94 stats = {};
95 try {
96 eval(text);
98 catch (ex) {
99 stats = {};
101 show();
105 function c(id, htm)
107 E(id).cells[1].innerHTML = htm;
110 function ethstates()
112 port = etherstates.port0;
113 if (port == "disabled") { return 0; }
115 var state, state1, state2;
116 var code = '<div class="section-title">Ethernet Status</div>';
117 code += '<table class="fields"><tr><td class="title indent2"><center><b>WAN</b></center></td><td><center><b>LAN 1</b></center></td><td><center><b>LAN 2</b></center></td><td><center><b>LAN 3</b></center></td><td><center><b>LAN 4</b></center></td><tr>';
119 if (port == "DOWN") {
120 state = '<img id="eth_off" src="eth_off.gif"><br>';
121 state2 = port.replace("DOWN","Unplugged");
123 else if ((port == "100FD") || (port == "100HD") || (port == "10FD") || (port == "10HD")) {
124 state = '<img id="eth_100" img src="eth_100.gif"><br>';
125 state1 = port.replace("HD"," Half-Duplex");
126 state2 = state1.replace("FD"," Full-Duplex");
128 else if ((port == "1000FD") || (port == "1000HD")) {
129 state = '<img id="eth_1000" img src="eth_1000.gif"><br>';
130 state1 = port.replace("HD"," Half-Duplex");
131 state2 = state1.replace("FD"," Full-Duplex");
134 if (stats.lan_desc == '1') {
135 code += '<td width="21%"><center>' + state + state2 + '</center></td>';
136 } else {
137 code += '<td width="21%"><center>' + state + '</center></td>';
140 port = etherstates.port1;
141 if (port == "DOWN") {
142 state = '<img id="eth_off" src="eth_off.gif"><br>';
143 state2 = port.replace("DOWN","Unplugged");
145 else if ((port == "100FD") || (port == "100HD") || (port == "10FD") || (port == "10HD")) {
146 state = '<img id="eth_100" img src="eth_100.gif"><br>';
147 state1 = port.replace("HD"," Half-Duplex");
148 state2 = state1.replace("FD"," Full-Duplex");
150 else if ((port == "1000FD") || (port == "1000HD")) {
151 state = '<img id="eth_1000" img src="eth_1000.gif"><br>';
152 state1 = port.replace("HD"," Half-Duplex");
153 state2 = state1.replace("FD"," Full-Duplex");
155 if (stats.lan_desc == '1') {
156 code += '<td width="17%"><center>' + state + state2 + '</center></td>';
157 } else {
158 code += '<td width="17%"><center>' + state + '</center></td>';
161 port = etherstates.port2;
162 if (port == "DOWN") {
163 state = '<img id="eth_off" src="eth_off.gif"><br>';
164 state2 = port.replace("DOWN","Unplugged");
166 else if ((port == "100FD") || (port == "100HD") || (port == "10FD") || (port == "10HD")){
167 state = '<img id="eth_100" img src="eth_100.gif"><br>';
168 state1 = port.replace("HD"," Half-Duplex");
169 state2 = state1.replace("FD"," Full-Duplex");
171 else if ((port == "1000FD") || (port == "1000HD")) {
172 state = '<img id="eth_1000" img src="eth_1000.gif"><br>';
173 state1 = port.replace("HD"," Half-Duplex");
174 state2 = state1.replace("FD"," Full-Duplex");
176 if (stats.lan_desc == '1') {
177 code += '<td width="17%"><center>' + state + state2 + '</center></td>';
178 } else {
179 code += '<td width="17%"><center>' + state + '</center></td>';
182 port = etherstates.port3;
183 if (port == "DOWN") {
184 state = '<img id="eth_off" src="eth_off.gif"><br>';
185 state2 = port.replace("DOWN","Unplugged");
187 else if ((port == "100FD") || (port == "100HD") || (port == "10FD") || (port == "10HD")) {
188 state = '<img id="eth_100" img src="eth_100.gif"><br>';
189 state1 = port.replace("HD"," Half-Duplex");
190 state2 = state1.replace("FD"," Full-Duplex");
192 else if ((port == "1000FD") || (port == "1000HD")) {
193 state = '<img id="eth_1000" img src="eth_1000.gif"><br>';
194 state1 = port.replace("HD"," Half-Duplex");
195 state2 = state1.replace("FD"," Full-Duplex");
197 if (stats.lan_desc == '1') {
198 code += '<td width="17%"><center>' + state + state2 + '</center></td>';
199 } else {
200 code += '<td width="17%"><center>' + state + '</center></td>';
203 port = etherstates.port4;
204 if (port == "DOWN") {
205 state = '<img id="eth_off" src="eth_off.gif"><br>';
206 state2 = port.replace("DOWN","Unplugged");
208 else if ((port == "100FD") || (port == "100HD") || (port == "10FD") || (port == "10HD")) {
209 state = '<img id="eth_100" img src="eth_100.gif"><br>';
210 state1 = port.replace("HD"," Half-Duplex");
211 state2 = state1.replace("FD"," Full-Duplex");
213 else if ((port == "1000FD") || (port == "1000HD")) {
214 state = '<img id="eth_1000" img src="eth_1000.gif"><br>';
215 state1 = port.replace("HD"," Half-Duplex");
216 state2 = state1.replace("FD"," Full-Duplex");
218 if (stats.lan_desc == '1') {
219 code += '<td width="17%"><center>' + state + state2 + '</center></td>';
220 } else {
221 code += '<td width="17%"><center>' + state + '</center></td>';
224 code += '<td class="content"> </td></tr>';
225 code += '<tr><td class="title indent1" colspan="6" align="right">&raquo; <a href="basic-network.asp">Configure</a></td></tr></table></div>';
226 E("ports").innerHTML = code;
229 function show()
231 c('cpu', stats.cpuload);
232 c('cpupercent', stats.cpupercent);
233 c('uptime', stats.uptime);
234 c('time', stats.time);
235 c('wanip', stats.wanip);
236 c('wanprebuf',stats.wanprebuf); //Victek
237 c('wannetmask', stats.wannetmask);
238 c('wangateway', stats.wangateway);
239 c('dns', stats.dns);
240 c('memory', stats.memory);
241 c('swap', stats.swap);
242 elem.display('swap', stats.swap != '');
244 /* IPV6-BEGIN */
245 c('ip6_wan', stats.ip6_wan);
246 elem.display('ip6_wan', stats.ip6_wan != '');
247 c('ip6_lan', stats.ip6_lan);
248 elem.display('ip6_lan', stats.ip6_lan != '');
249 c('ip6_lan_ll', stats.ip6_lan_ll);
250 elem.display('ip6_lan_ll', stats.ip6_lan_ll != '');
251 /* IPV6-END */
253 c('wanstatus', stats.wanstatus);
254 c('wanuptime', stats.wanuptime);
255 if (show_dhcpc) c('wanlease', stats.wanlease);
256 if (show_codi) {
257 E('b_connect').disabled = stats.wanup;
258 E('b_disconnect').disabled = !stats.wanup;
261 for (var uidx = 0; uidx < wl_ifaces.length; ++uidx) {
262 if (wl_sunit(uidx)<0) {
263 c('radio'+uidx, wlstats[uidx].radio ? 'Enabled' : '<b>Disabled</b>');
264 c('rate'+uidx, wlstats[uidx].rate);
265 if (show_radio[uidx]) {
266 E('b_wl'+uidx+'_enable').disabled = wlstats[uidx].radio;
267 E('b_wl'+uidx+'_disable').disabled = !wlstats[uidx].radio;
269 c('channel'+uidx, stats.channel[uidx]);
270 if (nphy) {
271 c('nbw'+uidx, wlstats[uidx].nbw);
273 c('interference'+uidx, stats.interference[uidx]);
274 elem.display('interference'+uidx, stats.interference[uidx] != '');
276 if (wlstats[uidx].client) {
277 c('rssi'+uidx, wlstats[uidx].rssi || '');
278 c('noise'+uidx, wlstats[uidx].noise || '');
279 c('qual'+uidx, stats.qual[uidx] || '');
282 c('ifstatus'+uidx, wlstats[uidx].ifstatus || '');
286 function earlyInit()
288 elem.display('b_dhcpc', show_dhcpc);
289 elem.display('b_connect', 'b_disconnect', show_codi);
290 if (nvram.wan_proto == 'disabled')
291 elem.display('wan-title', 'sesdiv_wan', 0);
292 for (var uidx = 0; uidx < wl_ifaces.length; ++uidx) {
293 if (wl_sunit(uidx)<0)
294 elem.display('b_wl'+wl_fface(uidx)+'_enable', 'b_wl'+wl_fface(uidx)+'_disable', show_radio[uidx]);
297 ethstates();
298 show();
301 function init() {
302 var c;
303 var isIE6 = navigator.userAgent.search("MSIE 6") > -1;
304 if(isIE6)
305 alert("<#ALERT_TO_CHANGE_BROWSER#>");
306 if (((c = cookie.get('status_overview_system_vis')) != null) && (c != '1')) toggleVisibility("system");
307 if (((c = cookie.get('status_overview_wan_vis')) != null) && (c != '1')) toggleVisibility("wan");
308 if (((c = cookie.get('status_overview_lan_vis')) != null) && (c != '1')) toggleVisibility("lan");
309 for (var uidx = 0; uidx < wl_ifaces.length; ++uidx) {
310 u = wl_fface(uidx);
311 if (((c = cookie.get('status_overview_wl_'+u+'_vis')) != null) && (c != '1')) toggleVisibility("wl_"+u);
314 ref.initPage(3000, 3);
317 function toggleVisibility(whichone) {
318 if (E('sesdiv_' + whichone).style.display == '') {
319 E('sesdiv_' + whichone).style.display = 'none';
320 E('sesdiv_' + whichone + '_showhide').innerHTML = '(Click here to show)';
321 cookie.set('status_overview_' + whichone + '_vis', 0);
322 } else {
323 E('sesdiv_' + whichone).style.display='';
324 E('sesdiv_' + whichone + '_showhide').innerHTML = '(Click here to hide)';
325 cookie.set('status_overview_' + whichone + '_vis', 1);
328 </script>
330 </head>
331 <body onload='init()'>
332 <form>
333 <table id='container' cellspacing=0>
334 <tr><td colspan=2 id='header'>
335 <div class='title'>Tomato</div>
336 <div class='version'>Version <% version(); %></div>
337 </td></tr>
338 <tr id='body'><td id='navi'><script type='text/javascript'>navi()</script></td>
339 <td id='content'>
340 <div id='ident'><% ident(); %></div>
342 <!-- / / / -->
344 <div class='section-title'>System <small><i><a href='javascript:toggleVisibility("system");'><span id='sesdiv_system_showhide'>(Click here to hide)</span></a></i></small></div>
345 <div class='section' id='sesdiv_system'>
346 <script type='text/javascript'>
347 var a = nvstat.free / nvstat.size * 100.0;
348 createFieldTable('', [
349 { title: 'Name', text: nvram.router_name },
350 { title: 'Model', text: nvram.t_model_name },
351 { title: 'Chipset', text: stats.systemtype },
352 { title: 'CPU Clock', text: stats.cpumhz },
353 { title: 'CPU Load', rid: 'cpupercent', text: stats.cpupercent },
354 { title: 'CPU Load <small>(1 / 5 / 15 mins)</small>', rid: 'cpu', text: stats.cpuload },
356 null,
357 { title: 'Date & Time', rid: 'time', text: stats.time },
358 { title: 'Uptime', rid: 'uptime', text: stats.uptime },
359 { title: 'Flash RAM Size', text: stats.flashsize },
360 { title: 'RAM Size / Free', rid: 'memory', text: stats.memory },
361 { title: 'NVRAM Size / Free', text: scaleSize(nvstat.size) + ' / ' + scaleSize(nvstat.free) + ' <small>(' + (a).toFixed(2) + '%)</small>' },
362 { title: 'SWAP Memory Size / Free', rid: 'swap', text: stats.swap, hidden: (stats.swap == '') }
364 </script>
365 </div>
367 <div class='section' id='ports'>
368 </div>
370 <div class='section-title' id='wan-title'>WAN <small><i><a href='javascript:toggleVisibility("wan");'><span id='sesdiv_wan_showhide'>(Click here to hide)</span></a></i></small></div>
371 <div class='section' id='sesdiv_wan'>
372 <script type='text/javascript'>
373 createFieldTable('', [
374 { title: 'MAC Address', text: nvram.wan_hwaddr },
375 { title: 'Connection Type', text: { 'dhcp':'DHCP', 'static':'Static IP', 'pppoe':'PPPoE', 'pptp':'PPTP', 'l2tp':'L2TP', 'ppp3g':'3G Modem' }[nvram.wan_proto] || '-' },
376 { title: 'IP Address', rid: 'wanip', text: stats.wanip },
377 { title: 'Previous WAN IP', rid: 'wanprebuf', text: stats.wanprebuf, hidden: ((nvram.wan_proto != 'pppoe') && (nvram.wan_proto != 'pptp') && (nvram.wan_proto != 'l2tp') && (nvram.wan_proto != 'ppp3g')) }, //Victek
378 { title: 'Subnet Mask', rid: 'wannetmask', text: stats.wannetmask },
379 { title: 'Gateway', rid: 'wangateway', text: stats.wangateway },
380 /* IPV6-BEGIN */
381 { title: 'IPv6 Address', rid: 'ip6_wan', text: stats.ip6_wan, hidden: (stats.ip6_wan == '') },
382 /* IPV6-END */
383 { title: 'DNS', rid: 'dns', text: stats.dns },
384 { title: 'MTU', text: nvram.wan_run_mtu },
385 null,
386 { title: 'Status', rid: 'wanstatus', text: stats.wanstatus },
387 { title: 'Connection Uptime', rid: 'wanuptime', text: stats.wanuptime },
388 { title: 'Remaining Lease Time', rid: 'wanlease', text: stats.wanlease, ignore: !show_dhcpc }
390 </script>
391 <span id='b_dhcpc' style='display:none'>
392 <input type='button' class='controls' onclick='dhcpc("renew")' value='Renew'>
393 <input type='button' class='controls' onclick='dhcpc("release")' value='Release'> &nbsp;
394 </span>
395 <input type='button' class='controls' onclick='wan_connect()' value='Connect' id='b_connect' style='display:none'>
396 <input type='button' class='controls' onclick='wan_disconnect()' value='Disconnect' id='b_disconnect' style='display:none'>
397 </div>
400 <div class='section-title'>LAN <small><i><a href='javascript:toggleVisibility("lan");'><span id='sesdiv_lan_showhide'>(Click here to hide)</span></a></i></small></div>
401 <div class='section' id='sesdiv_lan'>
402 <script type='text/javascript'>
404 function h_countbitsfromleft(num) {
405 if (num == 255 ){
406 return(8);
408 var i = 0;
409 var bitpat=0xff00;
410 while (i < 8){
411 if (num == (bitpat & 0xff)){
412 return(i);
414 bitpat=bitpat >> 1;
415 i++;
417 return(Number.NaN);
420 function numberOfBitsOnNetMask(netmask) {
421 var total = 0;
422 var t = netmask.split('.');
423 for (var i = 0; i<= 3 ; i++) {
424 total += h_countbitsfromleft(t[i]);
426 return total;
429 /* VLAN-BEGIN */
430 var s='';
431 var t='';
432 for (var i = 0 ; i <= MAX_BRIDGE_ID ; i++) {
433 var j = (i == 0) ? '' : i.toString();
434 if (nvram['lan' + j + '_ifname'].length > 0) {
435 if (nvram['lan' + j + '_proto'] == 'dhcp') {
436 if ((!fixIP(nvram.dhcpd_startip)) || (!fixIP(nvram.dhcpd_endip))) {
437 var x = nvram['lan' + j + '_ipaddr'].split('.').splice(0, 3).join('.') + '.';
438 nvram['dhcpd' + j + '_startip'] = x + nvram['dhcp' + j + '_start'];
439 nvram['dhcpd' + j + '_endip'] = x + ((nvram['dhcp' + j + '_start'] * 1) + (nvram['dhcp' + j + '_num'] * 1) - 1);
441 s += ((s.length>0)&&(s.charAt(s.length-1) != ' ')) ? ', ' : '';
442 s += '<a href="status-devices.asp">' + nvram['dhcpd' + j + '_startip'] + ' - ' + nvram['dhcpd' + j + '_endip'] + '</a> on LAN' + j + ' (br' + i + ')';
443 } else {
444 s += ((s.length>0)&&(s.charAt(s.length-1) != ' ')) ? ', ' : '';
445 s += 'Disabled on LAN' + j + ' (br' + i + ')';
447 t += ((t.length>0)&&(t.charAt(t.length-1) != ' ')) ? ', ' : '';
448 t += nvram['lan' + j + '_ipaddr'] + '/' + numberOfBitsOnNetMask(nvram['lan' + j + '_netmask']) + ' on LAN' + j + ' (br' + i + ')';
452 createFieldTable('', [
453 { title: 'Router MAC Address', text: nvram.et0macaddr },
454 { title: 'Router IP Addresses', text: t },
455 { title: 'Gateway', text: nvram.lan_gateway, ignore: nvram.wan_proto != 'disabled' },
456 /* IPV6-BEGIN */
457 { title: 'Router IPv6 Address', rid: 'ip6_lan', text: stats.ip6_lan, hidden: (stats.ip6_lan == '') },
458 { title: 'IPv6 Link-local Address', rid: 'ip6_lan_ll', text: stats.ip6_lan_ll, hidden: (stats.ip6_lan_ll == '') },
459 /* IPV6-END */
460 { title: 'DNS', rid: 'dns', text: stats.dns, ignore: nvram.wan_proto != 'disabled' },
461 { title: 'DHCP', text: s }
463 /* VLAN-END */
465 /* NOVLAN-BEGIN */
466 if (nvram.lan_proto == 'dhcp') {
467 if ((!fixIP(nvram.dhcpd_startip)) || (!fixIP(nvram.dhcpd_endip))) {
468 var x = nvram.lan_ipaddr.split('.').splice(0, 3).join('.') + '.';
469 nvram.dhcpd_startip = x + nvram.dhcp_start;
470 nvram.dhcpd_endip = x + ((nvram.dhcp_start * 1) + (nvram.dhcp_num * 1) - 1);
472 s = '<a href="status-devices.asp">' + nvram.dhcpd_startip + ' - ' + nvram.dhcpd_endip + '</a>';
474 else {
475 s = 'Disabled';
477 createFieldTable('', [
478 { title: 'Router MAC Address', text: nvram.et0macaddr },
479 { title: 'Router IP Address', text: nvram.lan_ipaddr },
480 { title: 'Subnet Mask', text: nvram.lan_netmask },
481 { title: 'Gateway', text: nvram.lan_gateway, ignore: nvram.wan_proto != 'disabled' },
482 /* IPV6-BEGIN */
483 { title: 'Router IPv6 Address', rid: 'ip6_lan', text: stats.ip6_lan, hidden: (stats.ip6_lan == '') },
484 { title: 'IPv6 Link-local Address', rid: 'ip6_lan_ll', text: stats.ip6_lan_ll, hidden: (stats.ip6_lan_ll == '') },
485 /* IPV6-END */
486 { title: 'DNS', rid: 'dns', text: stats.dns, ignore: nvram.wan_proto != 'disabled' },
487 { title: 'DHCP', text: s }
489 /* NOVLAN-END */
491 </script>
492 </div>
494 <script type='text/javascript'>
495 for (var uidx = 0; uidx < wl_ifaces.length; ++uidx) {
496 /* REMOVE-BEGIN
497 // u = wl_unit(uidx);
498 REMOVE-END */
499 u = wl_fface(uidx);
500 W('<div class=\'section-title\' id=\'wl'+u+'-title\'>Wireless');
501 if (wl_ifaces.length > 0)
502 W(' (' + wl_display_ifname(uidx) + ')');
503 W(' <small><i><a href=\'javascript:toggleVisibility("wl_' + u + '");\'><span id=\'sesdiv_wl_' +u + '_showhide\'>(Click here to hide)</span></a></i></small>');
504 W('</div>');
505 W('<div class=\'section\' id=\'sesdiv_wl_'+u+'\'>');
506 sec = auth[nvram['wl'+u+'_security_mode']] + '';
507 if (sec.indexOf('WPA') != -1) sec += ' + ' + enc[nvram['wl'+u+'_crypto']];
509 wmode = wmo[nvram['wl'+u+'_mode']] + '';
510 if ((nvram['wl'+u+'_mode'] == 'ap') && (nvram['wl'+u+'_wds_enable'] * 1)) wmode += ' + WDS';
512 createFieldTable('', [
513 { title: 'MAC Address', text: nvram['wl'+u+'_hwaddr'] },
514 { title: 'Wireless Mode', text: wmode },
515 { title: 'Wireless Network Mode', text: bgmo[nvram['wl'+u+'_net_mode']], ignore: (wl_sunit(uidx)>=0) },
516 { title: 'Interface Status', rid: 'ifstatus'+uidx, text: wlstats[uidx].ifstatus },
517 { title: 'Radio', rid: 'radio'+uidx, text: (wlstats[uidx].radio == 0) ? '<b>Disabled</b>' : 'Enabled', ignore: (wl_sunit(uidx)>=0) },
518 /* REMOVE-BEGIN */
519 // { title: 'SSID', text: (nvram['wl'+u+'_ssid'] + ' <small><i>' + ((nvram['wl'+u+'_mode'] != 'ap') ? '' : ((nvram['wl'+u+'_closed'] == 0) ? '(Broadcast Enabled)' : '(Broadcast Disabled)')) + '</i></small>') },
520 /* REMOVE-END */
521 { title: 'SSID', text: nvram['wl'+u+'_ssid'] },
522 { title: 'Broadcast', text: (nvram['wl'+u+'_closed'] == 0) ? 'Enabled' : '<b>Disabled</b>', ignore: (nvram['wl'+u+'_mode'] != 'ap') },
523 { title: 'Security', text: sec },
524 { title: 'Channel', rid: 'channel'+uidx, text: stats.channel[uidx], ignore: (wl_sunit(uidx)>=0) },
525 { title: 'Channel Width', rid: 'nbw'+uidx, text: wlstats[uidx].nbw, ignore: ((!nphy) || (wl_sunit(uidx)>=0)) },
526 { title: 'Interference Level', rid: 'interference'+uidx, text: stats.interference[uidx], hidden: ((stats.interference[uidx] == '') || (wl_sunit(uidx)>=0)) },
527 { title: 'Rate', rid: 'rate'+uidx, text: wlstats[uidx].rate, ignore: (wl_sunit(uidx)>=0) },
528 { title: 'RSSI', rid: 'rssi'+uidx, text: wlstats[uidx].rssi || '', ignore: ((!wlstats[uidx].client) || (wl_sunit(uidx)>=0)) },
529 { title: 'Noise', rid: 'noise'+uidx, text: wlstats[uidx].noise || '', ignore: ((!wlstats[uidx].client) || (wl_sunit(uidx)>=0)) },
530 { title: 'Signal Quality', rid: 'qual'+uidx, text: stats.qual[uidx] || '', ignore: ((!wlstats[uidx].client) || (wl_sunit(uidx)>=0)) }
533 W('<input type=\'button\' class=\'controls\' onclick=\'wlenable('+uidx+', 1)\' id=\'b_wl'+uidx+'_enable\' value=\'Enable\' style=\'display:none\'>');
534 W('<input type=\'button\' class=\'controls\' onclick=\'wlenable('+uidx+', 0)\' id=\'b_wl'+uidx+'_disable\' value=\'Disable\' style=\'display:none\'>');
535 W('</div>');
537 </script>
540 <!-- / / / -->
542 </td></tr>
543 <tr><td id='footer' colspan=2>
544 <script type='text/javascript'>genStdRefresh(1,1,'ref.toggle()');</script>
545 </td></tr>
546 </table>
547 </form>
548 <script type='text/javascript'>earlyInit()</script>
549 </body>
550 </html>