X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fluci-mod-admin-full%2Fluasrc%2Fview%2Fadmin_status%2Findex.htm;h=a37982e1dc0a3ee580e0124ac3bc886de5ce53e0;hp=07a96b2bf015f5f0131d9bdd4ca9d65455d0c23a;hb=4f47a18bb1a98ed263559e1cb40b5b5efc43f14b;hpb=60f62f841f6816b83dab9a9028c4d0799992c56c diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm index 07a96b2bf..a37982e1d 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm @@ -88,13 +88,20 @@ if has_dsl then local dsl_stat = luci.sys.exec("/etc/init.d/dsl_control lucistat") local dsl_func = loadstring(dsl_stat) - rv.dsl = dsl_func() + if dsl_func then + rv.dsl = dsl_func() + end end luci.http.prepare_content("application/json") luci.http.write_json(rv) return + elseif luci.http.formvalue("hosts") == "1" then + luci.http.prepare_content("application/json") + luci.http.write_json(luci.sys.net.host_hints()) + + return end -%> @@ -119,12 +126,39 @@ ); } - var wifidevs = <%=luci.http.write_json(netdevs)%>; - var arptable = <%=luci.http.write_json(arpcache)%>; + function wifirate(bss, rx) { + var p = rx ? 'rx_' : 'tx_', + s = '%.1f <%:Mbit/s%>, %d<%:MHz%>' + .format(bss[p+'rate'] / 1000, bss[p+'mhz']), + ht = bss[p+'ht'], vht = bss[p+'vht'], + mhz = bss[p+'mhz'], nss = bss[p+'nss'], + mcs = bss[p+'mcs'], sgi = bss[p+'short_gi']; + + if (ht || vht) { + if (vht) s += ', VHT-MCS %d'.format(mcs); + if (nss) s += ', VHT-NSS %d'.format(nss); + if (ht) s += ', MCS %s'.format(mcs); + if (sgi) s += ', <%:Short GI%>'; + } + + return s; + } + + var npoll = 1; + var hosts = <%=luci.http.write_json(luci.sys.net.host_hints())%>; + + function updateHosts() { + XHR.get('<%=REQUEST_URI%>', { hosts: 1 }, function(x, data) { + hosts = data; + }); + } XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 }, function(x, info) { + if (!(npoll++ % 5)) + updateHosts(); + var si = document.getElementById('wan4_i'); var ss = document.getElementById('wan4_s'); var ifc = info.wan; @@ -403,19 +437,15 @@ 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 - }); + var bss = net.assoclist[bssid]; + + bss.bssid = bssid; + bss.link = net.link; + bss.name = net.name; + bss.ifname = net.ifname; + bss.radio = dev.name; + + assoclist.push(bss); } } @@ -459,30 +489,37 @@ icon = "<%=resource%>/icons/signal-75-100.png"; tr.insertCell(-1).innerHTML = String.format( - '', - icon, assoclist[i].signal, assoclist[i].noise + ' %h', + assoclist[i].radio, assoclist[i].ifname ); - tr.insertCell(-1).innerHTML = assoclist[i].bssid; - tr.insertCell(-1).innerHTML = String.format( '%s', assoclist[i].link, '%h'.format(assoclist[i].name).nobr() ); - tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].signal).nobr(); - tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].noise).nobr(); + tr.insertCell(-1).innerHTML = assoclist[i].bssid; - tr.insertCell(-1).innerHTML = (assoclist[i].rx_mcs > -1) - ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].rx_rate / 1000, assoclist[i].rx_mcs, assoclist[i].rx_40mhz ? 40 : 20).nobr() - : String.format('%.1f <%:Mbit/s%>', assoclist[i].rx_rate / 1000).nobr() - ; + var host = hosts[assoclist[i].bssid]; + if (host) + tr.insertCell(-1).innerHTML = String.format( + '
%s
', + ((host.name && (host.ipv4 || host.ipv6)) + ? '%h (%s)'.format(host.name, host.ipv4 || host.ipv6) + : '%h'.format(host.name || host.ipv4 || host.ipv6)).nobr() + ); + else + tr.insertCell(-1).innerHTML = '?'; - tr.insertCell(-1).innerHTML = (assoclist[i].tx_mcs > -1) - ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].tx_rate / 1000, assoclist[i].tx_mcs, assoclist[i].tx_40mhz ? 40 : 20).nobr() - : String.format('%.1f <%:Mbit/s%>', assoclist[i].tx_rate / 1000).nobr() - ; + tr.insertCell(-1).innerHTML = String.format( + ' %d / %d <%:dBm%>', + assoclist[i].signal, assoclist[i].noise, assoclist[i].signal - assoclist[i].noise, + icon, + assoclist[i].signal, assoclist[i].noise + ); + + tr.insertCell(-1).innerHTML = wifirate(assoclist[i], true).nobr() + '
' + wifirate(assoclist[i], false).nobr(); } if (ac.rows.length == 1) @@ -550,7 +587,7 @@ ); //]]> -

<%:Status%>

+

<%:Status%>

<%:System%> @@ -672,18 +709,17 @@
<%:Associated Stations%> - +
- - - - - + + + + - +
 <%:MAC-Address%> <%:Network%><%:Signal%><%:Noise%><%:RX Rate%><%:TX Rate%><%:MAC-Address%><%:Host%><%:Signal%> / <%:Noise%><%:RX Rate%> / <%:TX Rate%>

<%:Collecting data...%>

<%:Collecting data...%>