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=18f66c2a82d326f3a88a21f5c3bc6d74dbf4f447;hp=0429f48716e96f2e72e5e84a188de0bf8f5e58c5;hb=a41215581d916d2716d6ffb2428a0cfd83bb4e92;hpb=258836441babd7939b7e13a4abd19502b922928d 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 0429f4871..18f66c2a8 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 @@ -37,10 +37,8 @@ local wan = ntm:get_wannet() local wan6 = ntm:get_wan6net() - local conn_count = tonumber(( - luci.sys.exec("wc -l /proc/net/nf_conntrack") or - luci.sys.exec("wc -l /proc/net/ip_conntrack") or - ""):match("%d+")) or 0 + local conn_count = tonumber( + fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count") or "") or 0 local conn_max = tonumber(( luci.sys.exec("sysctl net.nf_conntrack_max") or @@ -76,12 +74,14 @@ if wan6 then rv.wan6 = { - ip6addr = wan6:ip6addr(), - gw6addr = wan6:gw6addr(), - dns = wan6:dns6addrs(), - uptime = wan6:uptime(), - ifname = wan6:ifname(), - link = wan6:adminlink() + ip6addr = wan6:ip6addr(), + gw6addr = wan6:gw6addr(), + dns = wan6:dns6addrs(), + ip6prefix = wan6:ip6prefix(), + uptime = wan6:uptime(), + proto = wan6:proto(), + ifname = wan6:ifname(), + link = wan6:adminlink() } end @@ -126,6 +126,36 @@ ); } + 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; + } + + function duid2mac(duid) { + // DUID-LLT / Ethernet + if (duid.length === 28 && duid.substr(0, 8) === '00010001') + return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase(); + + // DUID-LL / Ethernet + if (duid.length === 24 && duid.substr(0, 8) === '00030001') + return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase(); + + return null; + } + var npoll = 1; var hosts = <%=luci.http.write_json(luci.sys.net.host_hints())%>; @@ -203,9 +233,34 @@ if (ifc6 && ifc6.ifname && ifc6.proto != 'none') { var s = String.format( - '<%:Address%>: %s
' + + '<%:Type%>: %s%s
', + ifc6.proto, (ifc6.ip6prefix) ? '-pd' : '' + ); + + if (!ifc6.ip6prefix) + { + s += String.format( + '<%:Address%>: %s
', + (ifc6.ip6addr) ? ifc6.ip6addr : '::' + ); + } + else + { + s += String.format( + '<%:Prefix Delegated%>: %s
', + ifc6.ip6prefix + ); + if (ifc6.ip6addr) + { + s += String.format( + '<%:Address%>: %s
', + ifc6.ip6addr + ); + } + } + + s += String.format( '<%:Gateway%>: %s
', - (ifc6.ip6addr) ? ifc6.ip6addr : '::', (ifc6.gw6addr) ? ifc6.gw6addr : '::' ); @@ -246,20 +301,56 @@ var s = String.format( '<%:Status%>: %s
' + '<%:Line State%>: %s [0x%x]
' + - '<%:Line Speed%>: %s/s / %s/s
' + - '<%:Line Attenuation%>: %s dB / %s dB
' + - '<%:Noise Margin%>: %s dB / %s dB
', + '<%:Line Mode%>: %s
' + + '<%:Annex%>: %s
' + + '<%:Profile%>: %s
' + + '<%:Data Rate%>: %s/s / %s/s
' + + '<%:Max. Attainable Data Rate (ATTNDR)%>: %s/s / %s/s
' + + '<%:Latency%>: %s / %s
' + + '<%:Line Attenuation (LATN)%>: %s dB / %s dB
' + + '<%:Signal Attenuation (SATN)%>: %s dB / %s dB
' + + '<%:Noise Margin (SNR)%>: %s dB / %s dB
' + + '<%:Aggregate Transmit Power(ACTATP)%>: %s dB / %s dB
' + + '<%:Forward Error Correction Seconds (FECS)%>: %s / %s
' + + '<%:Errored seconds (ES)%>: %s / %s
' + + '<%:Severely Errored Seconds (SES)%>: %s / %s
' + + '<%:Loss of Signal Seconds (LOSS)%>: %s / %s
' + + '<%:Unavailable Seconds (UAS)%>: %s / %s
' + + '<%:Header Error Code Errors (HEC)%>: %s / %s
' + + '<%:Non Pre-emtive CRC errors (CRC_P)%>: %s / %s
' + + '<%:Pre-emtive CRC errors (CRCP_P)%>: %s / %s
' + + '<%:Line Uptime%>: %s
' + + '<%:ATU-C System Vendor ID%>: %s
' + + '<%:Power Management Mode%>: %s
', info.dsl.line_state, info.dsl.line_state_detail, info.dsl.line_state_num, + info.dsl.line_mode_s, + info.dsl.annex_s, + info.dsl.profile_s, info.dsl.data_rate_down_s, info.dsl.data_rate_up_s, + info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s, + info.dsl.latency_num_down, info.dsl.latency_num_up, info.dsl.line_attenuation_down, info.dsl.line_attenuation_up, - info.dsl.noise_margin_down, info.dsl.noise_margin_up + info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up, + info.dsl.noise_margin_down, info.dsl.noise_margin_up, + info.dsl.actatp_down, info.dsl.actatp_up, + info.dsl.errors_fec_near, info.dsl.errors_fec_far, + info.dsl.errors_es_near, info.dsl.errors_es_far, + info.dsl.errors_ses_near, info.dsl.errors_ses_far, + info.dsl.errors_loss_near, info.dsl.errors_loss_far, + info.dsl.errors_uas_near, info.dsl.errors_uas_far, + info.dsl.errors_hec_near, info.dsl.errors_hec_far, + info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far, + info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far, + info.dsl.line_uptime_s, + info.dsl.atuc_vendor_id, + info.dsl.power_mode_s ); dsl_s.innerHTML = String.format('%s', s); dsl_i.innerHTML = String.format( '' + - '
ADSL' + '
DSL' ); <% end %> @@ -275,7 +366,9 @@ { var timestr; - if (info.leases[i].expires <= 0) + if (info.leases[i].expires === false) + timestr = '<%:unlimited%>'; + else if (info.leases[i].expires <= 0) timestr = '<%:expired%>'; else timestr = String.format('%t', info.leases[i].expires); @@ -313,7 +406,9 @@ { var timestr; - if (info.leases6[i].expires <= 0) + if (info.leases6[i].expires === false) + timestr = '<%:unlimited%>'; + else if (info.leases6[i].expires <= 0) timestr = '<%:expired%>'; else timestr = String.format('%t', info.leases6[i].expires); @@ -321,7 +416,18 @@ var tr = ls6.rows[0].parentNode.insertRow(-1); tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1); - tr.insertCell(-1).innerHTML = info.leases6[i].hostname ? info.leases6[i].hostname : '?'; + var host = hosts[duid2mac(info.leases6[i].duid)]; + if (!info.leases6[i].hostname) + tr.insertCell(-1).innerHTML = + (host && (host.name || host.ipv4 || host.ipv6)) + ? '
? (%h)
'.format(host.name || host.ipv4 || host.ipv6) + : '?'; + else + tr.insertCell(-1).innerHTML = + (host && host.name && info.leases6[i].hostname != host.name) + ? '
%h (%h)
'.format(info.leases6[i].hostname, host.name) + : info.leases6[i].hostname; + tr.insertCell(-1).innerHTML = info.leases6[i].ip6addr; tr.insertCell(-1).innerHTML = info.leases6[i].duid; tr.insertCell(-1).innerHTML = timestr; @@ -395,7 +501,7 @@ '<%:Bitrate%>: %s <%:Mbit/s%>
', icon, net.signal, net.noise, net.quality, - net.link, net.ssid, + net.link, net.ssid || '?', net.mode, net.channel, net.frequency, net.bitrate || '?' @@ -406,7 +512,7 @@ s += String.format( '<%:BSSID%>: %s
' + '<%:Encryption%>: %s', - net.bssid, + net.bssid || '?', net.encryption ); } @@ -419,21 +525,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, - ifname: net.ifname, - radio: dev.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); } } @@ -507,13 +607,7 @@ assoclist[i].signal, assoclist[i].noise ); - 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() - ).nobr() + '
' + ((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() - ).nobr(); + tr.insertCell(-1).innerHTML = wifirate(assoclist[i], true).nobr() + '
' + wifirate(assoclist[i], false).nobr(); } if (ac.rows.length == 1) @@ -665,7 +759,7 @@ - + @@ -679,9 +773,9 @@ <% if has_dsl then %>
- <%:ADSL%> + <%:DSL%>
<%:Hostname%><%:Host%> <%:IPv6-Address%> <%:DUID%> <%:Leasetime remaining%>
-
<%:ADSL Status%> +
<%:DSL Status%>

?
<%:Collecting data...%>