X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fview%2Fadmin_status%2Findex.htm;h=e54ee9a9a3ad1b201810e27af73015c02c7fd3e7;hp=f6432ef6f922c4720005409d3e8c419e18854555;hb=0453e50932ab03c172ef18727673a2d874d93c52;hpb=fc84bd87ecbc0e077dc4e624b3139c7e3adb8b0f diff --git a/modules/admin-full/luasrc/view/admin_status/index.htm b/modules/admin-full/luasrc/view/admin_status/index.htm index f6432ef6f9..e54ee9a9a3 100644 --- a/modules/admin-full/luasrc/view/admin_status/index.htm +++ b/modules/admin-full/luasrc/view/admin_status/index.htm @@ -119,350 +119,360 @@ $Id$ ); } - var iwxhr = new XHR(); var wifidevs = <%=luci.http.write_json(netdevs)%>; var arptable = <%=luci.http.write_json(arpcache)%>; - var update_status = function() { - iwxhr.get('<%=REQUEST_URI%>', { status: 1 }, - function(x, info) - { - var si = document.getElementById('wan4_i'); - var ss = document.getElementById('wan4_s'); - var ifc = info.wan; + XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 }, + function(x, info) + { + var si = document.getElementById('wan4_i'); + var ss = document.getElementById('wan4_s'); + var ifc = info.wan; - if (ifc && ifc.ifname && ifc.proto != 'none') + if (ifc && ifc.ifname && ifc.proto != 'none') + { + var s = String.format( + '<%:Type%>: %s
' + + '<%:Address%>: %s
' + + '<%:Netmask%>: %s
' + + '<%:Gateway%>: %s
', + ifc.proto, + (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0', + (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255', + (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0' + ); + + for (var i = 0; i < ifc.dns.length; i++) { - var s = String.format( - '<%:Type%>: %s
' + - '<%:Address%>: %s
' + - '<%:Netmask%>: %s
' + - '<%:Gateway%>: %s
', - ifc.proto, - (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0', - (ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255', - (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0' - ); - - for (var i = 0; i < ifc.dns.length; i++) - { - s += String.format( - '<%:DNS%> %d: %s
', - i + 1, ifc.dns[i] - ); - } - - if (ifc.expires > -1) - { - s += String.format( - '<%:Expires%>: %t
', - ifc.expires - ); - } - - if (ifc.uptime > 0) - { - s += String.format( - '<%:Connected%>: %t
', - ifc.uptime - ); - } - - ss.innerHTML = String.format('%s', s); - si.innerHTML = String.format( - '' + - '
%s', - ifc.link, ifc.ifname + s += String.format( + '<%:DNS%> %d: %s
', + i + 1, ifc.dns[i] ); } - else + + if (ifc.expires > -1) { - si.innerHTML = '
?'; - ss.innerHTML = 'Not connected'; + s += String.format( + '<%:Expires%>: %t
', + ifc.expires + ); } - <% if has_ipv6 then %> - var si6 = document.getElementById('wan6_i'); - var ss6 = document.getElementById('wan6_s'); - var ifc6 = info.wan6; - - if (ifc6 && ifc6.ifname && ifc6.proto != 'none') + if (ifc.uptime > 0) { - var s = String.format( - '<%:Address%>: %s
' + - '<%:Gateway%>: %s
', - (ifc6.ip6addr) ? ifc6.ip6addr : '::', - (ifc6.gw6addr) ? ifc6.gw6addr : '::' + s += String.format( + '<%:Connected%>: %t
', + ifc.uptime ); + } - for (var i = 0; i < ifc6.dns.length; i++) - { - s += String.format( - '<%:DNS%> %d: %s
', - i + 1, ifc6.dns[i] - ); - } + ss.innerHTML = String.format('%s', s); + si.innerHTML = String.format( + '' + + '
%s', + ifc.link, ifc.ifname + ); + } + else + { + si.innerHTML = '
?'; + ss.innerHTML = 'Not connected'; + } - if (ifc6.uptime > 0) - { - s += String.format( - '<%:Connected%>: %t
', - ifc6.uptime - ); - } + <% if has_ipv6 then %> + var si6 = document.getElementById('wan6_i'); + var ss6 = document.getElementById('wan6_s'); + var ifc6 = info.wan6; - ss6.innerHTML = String.format('%s', s); - si6.innerHTML = String.format( - '' + - '
%s', - ifc6.link, ifc6.ifname - ); - } - else + if (ifc6 && ifc6.ifname && ifc6.proto != 'none') + { + var s = String.format( + '<%:Address%>: %s
' + + '<%:Gateway%>: %s
', + (ifc6.ip6addr) ? ifc6.ip6addr : '::', + (ifc6.gw6addr) ? ifc6.gw6addr : '::' + ); + + for (var i = 0; i < ifc6.dns.length; i++) { - si6.innerHTML = '
?'; - ss6.innerHTML = 'Not connected'; + s += String.format( + '<%:DNS%> %d: %s
', + i + 1, ifc6.dns[i] + ); } - <% end %> - <% if has_dhcp then %> - var ls = document.getElementById('lease_status_table'); - if (ls) + if (ifc6.uptime > 0) { - /* clear all rows */ - while( ls.rows.length > 1 ) - ls.rows[0].parentNode.deleteRow(1); + s += String.format( + '<%:Connected%>: %t
', + ifc6.uptime + ); + } - for( var i = 0; i < info.leases.length; i++ ) - { - var timestr; + ss6.innerHTML = String.format('%s', s); + si6.innerHTML = String.format( + '' + + '
%s', + ifc6.link, ifc6.ifname + ); + } + else + { + si6.innerHTML = '
?'; + ss6.innerHTML = 'Not connected'; + } + <% end %> - if (info.leases[i].expires <= 0) - timestr = '<%:expired%>'; - else - timestr = String.format('%t', info.leases[i].expires); + <% if has_dhcp then %> + var ls = document.getElementById('lease_status_table'); + if (ls) + { + /* clear all rows */ + while( ls.rows.length > 1 ) + ls.rows[0].parentNode.deleteRow(1); - var tr = ls.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); + for( var i = 0; i < info.leases.length; i++ ) + { + var timestr; - tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?'; - tr.insertCell(-1).innerHTML = info.leases[i].ipaddr; - tr.insertCell(-1).innerHTML = info.leases[i].macaddr; - tr.insertCell(-1).innerHTML = timestr; - } + if (info.leases[i].expires <= 0) + timestr = '<%:expired%>'; + else + timestr = String.format('%t', info.leases[i].expires); - if( ls.rows.length == 1 ) - { - var tr = ls.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row'; + var tr = ls.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - var td = tr.insertCell(-1); - td.colSpan = 4; - td.innerHTML = '
<%:There are no active leases.%>
'; - } + tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?'; + tr.insertCell(-1).innerHTML = info.leases[i].ipaddr; + tr.insertCell(-1).innerHTML = info.leases[i].macaddr; + tr.insertCell(-1).innerHTML = timestr; } - <% end %> - - <% if has_wifi then %> - var assoclist = [ ]; - var ws = document.getElementById('wifi_status_table'); - if (ws) + if( ls.rows.length == 1 ) { - var wsbody = ws.rows[0].parentNode; - while (ws.rows.length > 0) - wsbody.deleteRow(0); + var tr = ls.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row'; - for (var didx = 0; didx < info.wifinets.length; didx++) - { - var dev = info.wifinets[didx]; - - var tr = wsbody.insertRow(-1); - var td; - - td = tr.insertCell(-1); - td.width = "33%"; - td.innerHTML = dev.name; - td.style.verticalAlign = "top"; + var td = tr.insertCell(-1); + td.colSpan = 4; + td.innerHTML = '
<%:There are no active leases.%>
'; + } + } + <% end %> - td = tr.insertCell(-1); + <% if has_wifi then %> + var assoclist = [ ]; - var s = ''; + var ws = document.getElementById('wifi_status_table'); + if (ws) + { + var wsbody = ws.rows[0].parentNode; + while (ws.rows.length > 0) + wsbody.deleteRow(0); - for (var nidx = 0; nidx < dev.networks.length; nidx++) - { - var net = dev.networks[nidx]; - var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel); - - var icon; - if (!is_assoc) - icon = "<%=resource%>/icons/signal-none.png"; - else if (net.quality == 0) - icon = "<%=resource%>/icons/signal-0.png"; - else if (net.quality < 25) - icon = "<%=resource%>/icons/signal-0-25.png"; - else if (net.quality < 50) - icon = "<%=resource%>/icons/signal-25-50.png"; - else if (net.quality < 75) - icon = "<%=resource%>/icons/signal-50-75.png"; - else - icon = "<%=resource%>/icons/signal-75-100.png"; + for (var didx = 0; didx < info.wifinets.length; didx++) + { + var dev = info.wifinets[didx]; - s += String.format( - '
' + - '' + - '
%d%%' + - '
' + - '<%:SSID%>: %h
' + - '<%:Mode%>: %s
' + - '<%:Channel%>: %d (%.2f GHz)
' + - '<%:Bitrate%>: %s Mb/s
', - icon, net.signal, net.noise, - net.quality, - net.link, net.ssid, - net.mode, - net.channel, net.frequency, - net.bitrate || '?' - ); + var tr = wsbody.insertRow(-1); + var td; - if (is_assoc) - { - s += String.format( - '<%:BSSID%>: %s
' + - '<%:Encryption%>: %s', - net.bssid, - net.encryption - ); - } - else - { - s += '<%:Wireless is disabled or not associated%>'; - } - - s += '
'; - - for (var bssid in net.assoclist) - { - assoclist.push({ - bssid: bssid, - signal: net.assoclist[bssid].signal, - noise: net.assoclist[bssid].noise, - link: net.link, - name: net.name - }); - } - } + td = tr.insertCell(-1); + td.width = "33%"; + td.innerHTML = dev.name; + td.style.verticalAlign = "top"; - if (!s) - s = '<%:No information available%>'; + td = tr.insertCell(-1); - td.innerHTML = s; - } - } + var s = ''; - var ac = document.getElementById('wifi_assoc_table'); - if (ac) - { - /* clear all rows */ - while( ac.rows.length > 1 ) - ac.rows[0].parentNode.deleteRow(1); - - assoclist.sort(function(a, b) { - return (a.name == b.name) - ? (a.bssid < b.bssid) - : (a.name > b.name ) - ; - }); - - for( var i = 0; i < assoclist.length; i++ ) + for (var nidx = 0; nidx < dev.networks.length; nidx++) { - var tr = ac.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); + var net = dev.networks[nidx]; + var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel); var icon; - var q = (-1 * (assoclist[i].noise - assoclist[i].signal)) / 5; - if (q < 1) + if (!is_assoc) + icon = "<%=resource%>/icons/signal-none.png"; + else if (net.quality == 0) icon = "<%=resource%>/icons/signal-0.png"; - else if (q < 2) + else if (net.quality < 25) icon = "<%=resource%>/icons/signal-0-25.png"; - else if (q < 3) + else if (net.quality < 50) icon = "<%=resource%>/icons/signal-25-50.png"; - else if (q < 4) + else if (net.quality < 75) icon = "<%=resource%>/icons/signal-50-75.png"; else icon = "<%=resource%>/icons/signal-75-100.png"; - tr.insertCell(-1).innerHTML = String.format( - '', - icon, assoclist[i].signal, assoclist[i].noise + s += String.format( + '
' + + '' + + '
%d%%' + + '
' + + '<%:SSID%>: %h
' + + '<%:Mode%>: %s
' + + '<%:Channel%>: %d (%.2f GHz)
' + + '<%:Bitrate%>: %s Mb/s
', + icon, net.signal, net.noise, + net.quality, + net.link, net.ssid, + net.mode, + net.channel, net.frequency, + net.bitrate || '?' ); - tr.insertCell(-1).innerHTML = assoclist[i].bssid; + if (is_assoc) + { + s += String.format( + '<%:BSSID%>: %s
' + + '<%:Encryption%>: %s', + net.bssid, + net.encryption + ); + } + else + { + s += '<%:Wireless is disabled or not associated%>'; + } - tr.insertCell(-1).innerHTML = String.format( - '%h', - assoclist[i].link, - assoclist[i].name - ); + s += '
'; - tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].signal); - tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].noise); + for (var bssid in net.assoclist) + { + assoclist.push({ + bssid: bssid, + signal: net.assoclist[bssid].signal, + noise: net.assoclist[bssid].noise, + rx_rate: net.assoclist[bssid].rx_rate, + rx_mcs: net.assoclist[bssid].rx_mcs, + rx_40mhz: net.assoclist[bssid].rx_40mhz, + tx_rate: net.assoclist[bssid].tx_rate, + tx_mcs: net.assoclist[bssid].tx_mcs, + tx_40mhz: net.assoclist[bssid].tx_40mhz, + link: net.link, + name: net.name + }); + } } - if (ac.rows.length == 0) - { - var tr = ac.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row'; + if (!s) + s = '<%:No information available%>'; - var td = tr.insertCell(-1); - td.colSpan = 5; - td.innerHTML = '
<%:No information available%>'; - } + td.innerHTML = s; } - <% end %> - - var e; - - if (e = document.getElementById('localtime')) - e.innerHTML = info.localtime; + } - if (e = document.getElementById('uptime')) - e.innerHTML = String.format('%t', info.uptime); + var ac = document.getElementById('wifi_assoc_table'); + if (ac) + { + /* clear all rows */ + while( ac.rows.length > 1 ) + ac.rows[0].parentNode.deleteRow(1); + + assoclist.sort(function(a, b) { + return (a.name == b.name) + ? (a.bssid < b.bssid) + : (a.name > b.name ) + ; + }); + + for( var i = 0; i < assoclist.length; i++ ) + { + var tr = ac.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); + + var icon; + var q = (-1 * (assoclist[i].noise - assoclist[i].signal)) / 5; + if (q < 1) + icon = "<%=resource%>/icons/signal-0.png"; + else if (q < 2) + icon = "<%=resource%>/icons/signal-0-25.png"; + else if (q < 3) + icon = "<%=resource%>/icons/signal-25-50.png"; + else if (q < 4) + icon = "<%=resource%>/icons/signal-50-75.png"; + else + icon = "<%=resource%>/icons/signal-75-100.png"; + + tr.insertCell(-1).innerHTML = String.format( + '', + icon, assoclist[i].signal, assoclist[i].noise + ); - if (e = document.getElementById('loadavg')) - e.innerHTML = String.format('%.02f, %.02f, %.02f', - info.loadavg[0], info.loadavg[1], info.loadavg[2]); + tr.insertCell(-1).innerHTML = assoclist[i].bssid; - if (e = document.getElementById('memtotal')) - e.innerHTML = progressbar( - (info.memfree + info.membuffers + info.memcached) + " kB", - info.memtotal + " kB" + tr.insertCell(-1).innerHTML = String.format( + '%h', + assoclist[i].link, + assoclist[i].name ); - if (e = document.getElementById('memfree')) - e.innerHTML = progressbar( - info.memfree + " kB", info.memtotal + " kB" - ); + tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].signal); + tr.insertCell(-1).innerHTML = String.format('%d dBm', assoclist[i].noise); - if (e = document.getElementById('memcache')) - e.innerHTML = progressbar( - info.memcached + " kB", info.memtotal + " kB" - ); + tr.insertCell(-1).innerHTML = (assoclist[i].rx_mcs > -1) + ? String.format('%.1f Mbit/s, MCS %d, %dMHz', assoclist[i].rx_rate / 1000, assoclist[i].rx_mcs, assoclist[i].rx_40mhz ? 40 : 20) + : String.format('%.1f Mbit/s', assoclist[i].rx_rate / 1000) + ; - if (e = document.getElementById('membuff')) - e.innerHTML = progressbar( - info.membuffers + " kB", info.memtotal + " kB" - ); + tr.insertCell(-1).innerHTML = (assoclist[i].tx_mcs > -1) + ? String.format('%.1f Mbit/s, MCS %d, %dMHz', assoclist[i].tx_rate / 1000, assoclist[i].tx_mcs, assoclist[i].tx_40mhz ? 40 : 20) + : String.format('%.1f Mbit/s', assoclist[i].tx_rate / 1000) + ; + } - if (e = document.getElementById('conns')) - e.innerHTML = progressbar(info.conncount, info.connmax); + if (ac.rows.length == 1) + { + var tr = ac.rows[0].parentNode.insertRow(-1); + tr.className = 'cbi-section-table-row'; - window.setTimeout(update_status, 5000); + var td = tr.insertCell(-1); + td.colSpan = 7; + td.innerHTML = '
<%:No information available%>'; + } } - ) - }; + <% end %> + + var e; + + if (e = document.getElementById('localtime')) + e.innerHTML = info.localtime; + + if (e = document.getElementById('uptime')) + e.innerHTML = String.format('%t', info.uptime); + + if (e = document.getElementById('loadavg')) + e.innerHTML = String.format('%.02f, %.02f, %.02f', + info.loadavg[0], info.loadavg[1], info.loadavg[2]); + + if (e = document.getElementById('memtotal')) + e.innerHTML = progressbar( + (info.memfree + info.membuffers + info.memcached) + " kB", + info.memtotal + " kB" + ); - update_status(); + if (e = document.getElementById('memfree')) + e.innerHTML = progressbar( + info.memfree + " kB", info.memtotal + " kB" + ); + + if (e = document.getElementById('memcache')) + e.innerHTML = progressbar( + info.memcached + " kB", info.memtotal + " kB" + ); + + if (e = document.getElementById('membuff')) + e.innerHTML = progressbar( + info.membuffers + " kB", info.memtotal + " kB" + ); + + if (e = document.getElementById('conns')) + e.innerHTML = progressbar(info.conncount, info.connmax); + + } + ); //]]>

<%:Status%>

@@ -475,7 +485,7 @@ $Id$ <%:Router Model%><%=pcdata(model or "?")%> <%:Firmware Version%> <%=pcdata(luci.version.distname)%> <%=pcdata(luci.version.distversion)%> / - <%=pcdata(luci.version.luciname)%> <%=pcdata(luci.version.luciversion)%> + <%=pcdata(luci.version.luciname)%> (<%=pcdata(luci.version.luciversion)%>) <%:Kernel Version%><%=luci.sys.exec("uname -r")%> <%:Local Time%>- @@ -513,7 +523,7 @@ $Id$ <% end %> - <%:Active IP Connections%>- + <%:Active Connections%>- @@ -550,13 +560,15 @@ $Id$ - + + + - +
 <%:BSSID%><%:MAC-Address%> <%:Network%> <%:Signal%> <%:Noise%><%:RX Rate%><%:TX Rate%>

<%:Collecting data...%>

<%:Collecting data...%>