diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2012-03-04 18:36:05 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2012-03-04 18:36:05 +0000 |
commit | b22f022f2c3652a5af3c1ef843a9b06eba851404 (patch) | |
tree | 633a00a0d6c263974b88d6a872b6b364cd718a80 /modules/admin-full/luasrc/view | |
parent | e6bf801bad495bc15f8272af3ae653e50421c6c6 (diff) |
modules/admin-full: add DNS resolution to connections status page, order connections descending by traffic
Diffstat (limited to 'modules/admin-full/luasrc/view')
-rw-r--r-- | modules/admin-full/luasrc/view/admin_status/connections.htm | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/modules/admin-full/luasrc/view/admin_status/connections.htm b/modules/admin-full/luasrc/view/admin_status/connections.htm index bfa2a33a45..9c9eb01c96 100644 --- a/modules/admin-full/luasrc/view/admin_status/connections.htm +++ b/modules/admin-full/luasrc/view/admin_status/connections.htm @@ -59,6 +59,8 @@ $Id$ var conn_table; + var dns_cache = { }; + /* wait for SVG */ window.setTimeout( @@ -149,19 +151,47 @@ $Id$ while (conn_table.rows.length > 1) conn_table.rows[0].parentNode.deleteRow(-1); + + var lookup_queue = [ ]; + + conn.sort(function(a, b) { + return b.bytes - a.bytes; + }); + for (var i = 0; i < conn.length; i++) { var c = conn[i]; var tr = conn_table.rows[0].parentNode.insertRow(-1); - tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); + tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2)); + + if (!dns_cache[c.src]) + lookup_queue.push(c.src); + + if (!dns_cache[c.dst]) + lookup_queue.push(c.dst); + + var src = dns_cache[c.src] || (c.layer3 == 'ipv6' ? '[' + c.src + ']' : c.src); + var dst = dns_cache[c.dst] || (c.layer3 == 'ipv6' ? '[' + c.dst + ']' : c.dst); tr.insertCell(-1).innerHTML = c.layer3.toUpperCase(); tr.insertCell(-1).innerHTML = c.layer4.toUpperCase(); - tr.insertCell(-1).innerHTML = String.format(c.layer3 == 'ipv6' ? '[%s]:%d' : '%s:%d', c.src, c.sport); - tr.insertCell(-1).innerHTML = String.format(c.layer3 == 'ipv6' ? '[%s]:%d' : '%s:%d', c.dst, c.dport); - tr.insertCell(-1).innerHTML = String.format('%1024.2mB (%d <%:Pkts.%>)', c.bytes, c.packets); + tr.insertCell(-1).innerHTML = String.format('%s:%d', src, c.sport); + tr.insertCell(-1).innerHTML = String.format('%s:%d', dst, c.dport); + + var traf = tr.insertCell(-1); + traf.style.whiteSpace = 'nowrap'; + traf.innerHTML = String.format('%1024.2mB (%d <%:Pkts.%>)', c.bytes, c.packets); } + if (lookup_queue.length > 0) + XHR.get('<%=build_url("admin/status/nameinfo")%>/' + lookup_queue.slice(0, 100).join('/'), null, + function(x, json) + { + for (var addr in json) + dns_cache[addr] = json[addr]; + } + ); + var data = json.statistics; |