modules/admin-full: add DNS resolution to connections status page, order connections descending by traffic
This commit is contained in:
parent
e6bf801bad
commit
b22f022f2c
2 changed files with 49 additions and 4 deletions
|
@ -37,6 +37,8 @@ function index()
|
|||
|
||||
entry({"admin", "status", "realtime", "connections"}, template("admin_status/connections"), _("Connections"), 4).leaf = true
|
||||
entry({"admin", "status", "realtime", "connections_status"}, call("action_connections")).leaf = true
|
||||
|
||||
entry({"admin", "status", "nameinfo"}, call("action_nameinfo")).leaf = true
|
||||
end
|
||||
|
||||
function action_syslog()
|
||||
|
@ -153,3 +155,16 @@ function action_connections()
|
|||
|
||||
luci.http.write(" }")
|
||||
end
|
||||
|
||||
function action_nameinfo(...)
|
||||
local i
|
||||
local rv = { }
|
||||
for i = 1, select('#', ...) do
|
||||
local addr = select(i, ...)
|
||||
local fqdn = nixio.getnameinfo(addr)
|
||||
rv[addr] = fqdn or (addr:match(":") and "[%s]" % addr or addr)
|
||||
end
|
||||
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(rv)
|
||||
end
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue