mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Update luci-base and luci-mod-admin-full to latest upstream version
This commit is contained in:
parent
e00cf0f4f0
commit
6b6c7e6d7a
75 changed files with 3309 additions and 2564 deletions
|
@ -202,22 +202,23 @@
|
|||
data_rx_peak = Math.max(data_rx_peak, data_rx[i]);
|
||||
data_tx_peak = Math.max(data_tx_peak, data_tx[i]);
|
||||
|
||||
if (i > 0)
|
||||
{
|
||||
data_rx_avg = (data_rx_avg + data_rx[i]) / 2;
|
||||
data_tx_avg = (data_tx_avg + data_tx[i]) / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
data_rx_avg = data_rx[i];
|
||||
data_tx_avg = data_tx[i];
|
||||
}
|
||||
data_rx_avg += data_rx[i];
|
||||
data_tx_avg += data_tx[i];
|
||||
}
|
||||
|
||||
data_rx_avg = (data_rx_avg / Math.max(data_rx.length, 1));
|
||||
data_tx_avg = (data_tx_avg / Math.max(data_tx.length, 1));
|
||||
|
||||
var size = Math.floor(Math.log2(data_max)),
|
||||
div = Math.pow(2, size - (size % 10)),
|
||||
mult = data_max / div,
|
||||
mult = (mult < 5) ? 2 : ((mult < 50) ? 10 : ((mult < 500) ? 100 : 1000));
|
||||
|
||||
data_max = data_max + (mult * div) - (data_max % (mult * div));
|
||||
|
||||
/* remember current timestamp, calculate horizontal scale */
|
||||
data_stamp = data[data.length-1][TIME];
|
||||
data_scale = height / (data_max * 1.1);
|
||||
|
||||
data_scale = height / data_max;
|
||||
|
||||
/* plot data */
|
||||
var pt_rx = '0,' + height;
|
||||
|
@ -244,9 +245,9 @@
|
|||
line_rx.setAttribute('points', pt_rx);
|
||||
line_tx.setAttribute('points', pt_tx);
|
||||
|
||||
label_25.firstChild.data = bandwidth_label(1.1 * 0.25 * data_max);
|
||||
label_50.firstChild.data = bandwidth_label(1.1 * 0.50 * data_max);
|
||||
label_75.firstChild.data = bandwidth_label(1.1 * 0.75 * data_max);
|
||||
label_25.firstChild.data = bandwidth_label(0.25 * data_max);
|
||||
label_50.firstChild.data = bandwidth_label(0.50 * data_max);
|
||||
label_75.firstChild.data = bandwidth_label(0.75 * data_max);
|
||||
|
||||
label_rx_cur.innerHTML = bandwidth_label(data_rx[data_rx.length-1], true);
|
||||
label_tx_cur.innerHTML = bandwidth_label(data_tx[data_tx.length-1], true);
|
||||
|
@ -258,6 +259,8 @@
|
|||
label_tx_peak.innerHTML = bandwidth_label(data_tx_peak, true);
|
||||
}
|
||||
);
|
||||
|
||||
XHR.run();
|
||||
}
|
||||
}, 1000
|
||||
);
|
||||
|
|
|
@ -304,6 +304,8 @@
|
|||
label_otr_peak.innerHTML = Math.floor(data_otr_peak);
|
||||
}
|
||||
);
|
||||
|
||||
XHR.run();
|
||||
}
|
||||
}, 1000
|
||||
);
|
||||
|
|
|
@ -54,8 +54,6 @@
|
|||
swap = swapinfo,
|
||||
connmax = conn_max,
|
||||
conncount = conn_count,
|
||||
leases = stat.dhcp_leases(),
|
||||
leases6 = stat.dhcp6_leases(),
|
||||
wifinets = stat.wifi_networks()
|
||||
}
|
||||
|
||||
|
@ -111,11 +109,6 @@
|
|||
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
|
||||
-%>
|
||||
|
@ -131,7 +124,7 @@
|
|||
var pc = Math.floor((100 / mn) * vn);
|
||||
|
||||
return String.format(
|
||||
'<div style="width:200px; position:relative; border:1px solid #999999">' +
|
||||
'<div style="width:100%%; max-width:200px; position:relative; border:1px solid #999999">' +
|
||||
'<div style="background-color:#CCCCCC; width:%d%%; height:15px">' +
|
||||
'<div style="position:absolute; left:0; top:0; text-align:center; width:100%%; color:#000000">' +
|
||||
'<small>%s / %s (%d%%)</small>' +
|
||||
|
@ -141,45 +134,6 @@
|
|||
);
|
||||
}
|
||||
|
||||
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 === 20 && 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())%>;
|
||||
|
||||
function updateHosts() {
|
||||
XHR.get('<%=REQUEST_URI%>', { hosts: 1 }, function(x, data) {
|
||||
hosts = data;
|
||||
});
|
||||
}
|
||||
|
||||
function labelList(items, offset) {
|
||||
var rv = [ ];
|
||||
|
||||
|
@ -206,7 +160,7 @@
|
|||
return E('div', { class: 'ifacebox' }, [
|
||||
E('div', { class: 'ifacebox-head center ' + (active ? 'active' : '') },
|
||||
E('strong', title)),
|
||||
E('div', { class: 'ifacebox-body' }, childs)
|
||||
E('div', { class: 'ifacebox-body left' }, childs)
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -220,9 +174,6 @@
|
|||
XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 },
|
||||
function(x, info)
|
||||
{
|
||||
if (!(npoll++ % 5))
|
||||
updateHosts();
|
||||
|
||||
<% if has_mptcp == 0 then %>
|
||||
var us = document.getElementById('upstream_status_table');
|
||||
|
||||
|
@ -333,86 +284,7 @@
|
|||
);
|
||||
<% end %>
|
||||
|
||||
<% if has_dhcp then %>
|
||||
var ls = document.getElementById('lease_status_table');
|
||||
if (ls)
|
||||
{
|
||||
/* clear all rows */
|
||||
while (ls.firstElementChild !== ls.lastElementChild)
|
||||
ls.removeChild(ls.lastElementChild);
|
||||
|
||||
for (var i = 0; i < info.leases.length; i++)
|
||||
{
|
||||
var timestr;
|
||||
|
||||
if (info.leases[i].expires === false)
|
||||
timestr = '<em><%:unlimited%></em>';
|
||||
else if (info.leases[i].expires <= 0)
|
||||
timestr = '<em><%:expired%></em>';
|
||||
else
|
||||
timestr = String.format('%t', info.leases[i].expires);
|
||||
|
||||
ls.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
|
||||
E('<div class="td">', info.leases[i].hostname ? info.leases[i].hostname : '?'),
|
||||
E('<div class="td">', info.leases[i].ipaddr),
|
||||
E('<div class="td">', info.leases[i].macaddr),
|
||||
E('<div class="td">', timestr)
|
||||
]));
|
||||
}
|
||||
|
||||
if (ls.firstElementChild === ls.lastElementChild)
|
||||
ls.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>'));
|
||||
}
|
||||
|
||||
var ls6 = document.getElementById('lease6_status_table');
|
||||
if (ls6 && info.leases6)
|
||||
{
|
||||
ls6.parentNode.style.display = 'block';
|
||||
|
||||
/* clear all rows */
|
||||
while (ls6.firstElementChild !== ls6.lastElementChild)
|
||||
ls6.removeChild(ls6.lastElementChild);
|
||||
|
||||
for (var i = 0; i < info.leases6.length; i++)
|
||||
{
|
||||
var timestr;
|
||||
|
||||
if (info.leases6[i].expires === false)
|
||||
timestr = '<em><%:unlimited%></em>';
|
||||
else if (info.leases6[i].expires <= 0)
|
||||
timestr = '<em><%:expired%></em>';
|
||||
else
|
||||
timestr = String.format('%t', info.leases6[i].expires);
|
||||
|
||||
var host = hosts[duid2mac(info.leases6[i].duid)],
|
||||
name = info.leases6[i].hostname,
|
||||
hint = null;
|
||||
|
||||
if (!name) {
|
||||
if (host)
|
||||
hint = host.name || host.ipv4 || host.ipv6;
|
||||
}
|
||||
else {
|
||||
if (host && host.name && info.leases6[i].hostname != host.name)
|
||||
hint = host.name;
|
||||
}
|
||||
|
||||
ls6.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format((i % 2) + 1), [
|
||||
E('<div class="td nowrap">', hint ? '<div>%h (%h)</div>'.format(name || '?', hint) : (name || '?')),
|
||||
E('<div class="td nowrap">', info.leases6[i].ip6addr),
|
||||
E('<div class="td nowrap">', info.leases6[i].duid),
|
||||
E('<div class="td nowrap">', timestr)
|
||||
]));
|
||||
}
|
||||
|
||||
if (ls6.firstElementChild === ls6.lastElementChild)
|
||||
ls6.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:There are no active leases.%></em></div></div>'));
|
||||
}
|
||||
<% end %>
|
||||
|
||||
<% if has_wifi then %>
|
||||
var assoclist = [ ];
|
||||
|
||||
var ws = document.getElementById('wifi_status_table');
|
||||
if (ws)
|
||||
{
|
||||
|
@ -429,21 +301,6 @@
|
|||
{
|
||||
var net = dev.networks[nidx];
|
||||
var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel && !net.disabled);
|
||||
var num_assoc = 0;
|
||||
|
||||
for (var bssid in net.assoclist)
|
||||
{
|
||||
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);
|
||||
num_assoc++;
|
||||
}
|
||||
|
||||
var icon;
|
||||
if (!is_assoc)
|
||||
|
@ -466,7 +323,7 @@
|
|||
'<%:Mode%>', net.mode,
|
||||
'<%:BSSID%>', is_assoc ? (net.bssid || '-') : null,
|
||||
'<%:Encryption%>', is_assoc ? net.encryption : null,
|
||||
'<%:Associations%>', is_assoc ? (num_assoc || '-') : null,
|
||||
'<%:Associations%>', is_assoc ? (net.num_assoc || '-') : null,
|
||||
null, is_assoc ? null : E('em', '<%:Wireless is disabled or not associated%>')));
|
||||
}
|
||||
|
||||
|
@ -481,62 +338,6 @@
|
|||
if (!ws.lastElementChild)
|
||||
ws.appendChild(E('<em><%:No information available%></em>'));
|
||||
}
|
||||
|
||||
var ac = document.getElementById('wifi_assoc_table');
|
||||
if (ac)
|
||||
{
|
||||
/* clear all rows */
|
||||
while (ac.firstElementChild !== ac.lastElementChild)
|
||||
ac.removeChild(ac.lastElementChild);
|
||||
|
||||
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 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";
|
||||
|
||||
var host = hosts[assoclist[i].bssid],
|
||||
name = host ? (host.name || host.ipv4 || host.ipv6) : null,
|
||||
hint = (host && host.name && (host.ipv4 || host.ipv6)) ? (host.ipv4 || host.ipv6) : null;
|
||||
|
||||
ac.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(1 + (i % 2)), [
|
||||
E('<div class="td"><span class="ifacebadge" title="%q"><img src="<%=resource%>/icons/wifi.png" /> %h</span></div>'
|
||||
.format(assoclist[i].radio, assoclist[i].ifname)),
|
||||
E('<div class="td"><a href="%s" style="white-space:nowrap">%h</a></div>'
|
||||
.format(assoclist[i].link, assoclist[i].name)),
|
||||
E('<div class="td">',
|
||||
assoclist[i].bssid),
|
||||
E('<div class="td nowrap">',
|
||||
hint ? '<div>%h (%h)</div>'.format(name || '?', hint) : (name || '?')),
|
||||
E('<div class="td"><span class="ifacebadge" title="<%:Signal%>: %d <%:dBm%> / <%:Noise%>: %d <%:dBm%> / <%:SNR%>: %d"><img src="%s" /> %d / %d <%:dBm%></span></div>'
|
||||
.format(assoclist[i].signal, assoclist[i].noise, assoclist[i].signal - assoclist[i].noise, icon, assoclist[i].signal, assoclist[i].noise)),
|
||||
E('<div class="td nowrap">', [
|
||||
E('<span style="white-space:nowrap">', wifirate(assoclist[i], true)),
|
||||
E('<br />'),
|
||||
E('<span style="white-space:nowrap">', wifirate(assoclist[i], false))
|
||||
])
|
||||
]));
|
||||
}
|
||||
|
||||
if (ac.firstElementChild === ac.lastElementChild)
|
||||
ac.appendChild(E('<div class="tr cbi-section-table-row"><div class="td"><em><br /><%:No information available%></em></div></div>'));
|
||||
}
|
||||
<% end %>
|
||||
|
||||
var e;
|
||||
|
@ -594,8 +395,8 @@
|
|||
|
||||
<h2 name="content"><%:Status%></h2>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:System%></legend>
|
||||
<div class="cbi-section">
|
||||
<h3><%:System%></h3>
|
||||
|
||||
<div class="table" width="100%">
|
||||
<div class="tr"><div class="td left" width="33%"><%:Hostname%></div><div class="td left"><%=luci.sys.hostname() or "?"%></div></div>
|
||||
|
@ -610,79 +411,51 @@
|
|||
<div class="tr"><div class="td left" width="33%"><%:Uptime%></div><div class="td left" id="uptime">-</div></div>
|
||||
<div class="tr"><div class="td left" width="33%"><%:Load Average%></div><div class="td left" id="loadavg">-</div></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:Memory%></legend>
|
||||
<div class="cbi-section">
|
||||
<h3><%:Memory%></h3>
|
||||
|
||||
<div class="table" width="100%">
|
||||
<div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left" id="memtotal">-</div></div>
|
||||
<div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left" id="memfree">-</div></div>
|
||||
<div class="tr"><div class="td left" width="33%"><%:Buffered%></div><div class="td left" id="membuff">-</div></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<% if swapinfo.total > 0 then %>
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:Swap%></legend>
|
||||
<div class="cbi-section">
|
||||
<h3><%:Swap%></h3>
|
||||
|
||||
<div class="table" width="100%">
|
||||
<div class="tr"><div class="td left" width="33%"><%:Total Available%></div><div class="td left" id="swaptotal">-</div></div>
|
||||
<div class="tr"><div class="td left" width="33%"><%:Free%></div><div class="td left" id="swapfree">-</div></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:Network%></legend>
|
||||
<% if has_mptcp == "0" then %>
|
||||
<div class="cbi-section">
|
||||
<h3><%:Network%></h3>
|
||||
|
||||
<div id="upstream_status_table" class="network-status-table">
|
||||
<em><%:Collecting data...%></em>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="table" width="100%">
|
||||
<div class="tr"><div class="td left" width="33%"><%:Active Connections%></div><div class="td left" id="conns">-</div></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<% if has_dhcp then %>
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:DHCP Leases%></legend>
|
||||
|
||||
<div class="table cbi-section-table" id="lease_status_table">
|
||||
<div class="tr cbi-section-table-titles">
|
||||
<div class="th"><%:Hostname%></div>
|
||||
<div class="th"><%:IPv4-Address%></div>
|
||||
<div class="th"><%:MAC-Address%></div>
|
||||
<div class="th"><%:Leasetime remaining%></div>
|
||||
</div>
|
||||
<div class="tr cbi-section-table-row">
|
||||
<div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="cbi-section" style="display:none">
|
||||
<legend><%:DHCPv6 Leases%></legend>
|
||||
|
||||
<div class="table cbi-section-table" id="lease6_status_table">
|
||||
<div class="tr cbi-section-table-titles">
|
||||
<div class="th"><%:Host%></div>
|
||||
<div class="th"><%:IPv6-Address%></div>
|
||||
<div class="th"><%:DUID%></div>
|
||||
<div class="th"><%:Leasetime remaining%></div>
|
||||
</div>
|
||||
<div class="tr cbi-section-table-row">
|
||||
<div class="td" colspan="4"><em><br /><%:Collecting data...%></em></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<% end %>
|
||||
<%
|
||||
if has_dhcp then
|
||||
include("admin_network/lease_status")
|
||||
end
|
||||
%>
|
||||
|
||||
<% if has_dsl then %>
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:DSL%></legend>
|
||||
<div class="cbi-section">
|
||||
<h3><%:DSL%></h3>
|
||||
|
||||
<div class="table" width="100%">
|
||||
<div class="tr">
|
||||
<div class="td left" width="33%" style="vertical-align:top"><%:DSL Status%></div>
|
||||
|
@ -696,35 +469,23 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if has_wifi then %>
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:Wireless%></legend>
|
||||
<div class="cbi-section">
|
||||
<h3><%:Wireless%></h3>
|
||||
|
||||
<div id="wifi_status_table" class="network-status-table">
|
||||
<em><%:Collecting data...%></em>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<legend><%:Associated Stations%></legend>
|
||||
<div class="cbi-section">
|
||||
<h3><%:Associated Stations%></h3>
|
||||
|
||||
<div class="table cbi-section-table valign-middle" id="wifi_assoc_table">
|
||||
<div class="tr cbi-section-table-titles">
|
||||
<div class="th"> </div>
|
||||
<div class="th"><%:Network%></div>
|
||||
<div class="th"><%:MAC-Address%></div>
|
||||
<div class="th"><%:Host%></div>
|
||||
<div class="th"><%:Signal%> / <%:Noise%></div>
|
||||
<div class="th"><%:RX Rate%> / <%:TX Rate%></div>
|
||||
</div>
|
||||
<div class="tr cbi-section-table-row">
|
||||
<div class="td" colspan="6"><em><br /><%:Collecting data...%></em></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<%+admin_network/wifi_assoclist%>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%-
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
|
||||
<%+header%>
|
||||
|
||||
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
|
||||
<style type="text/css">
|
||||
span:target {
|
||||
color: blue;
|
||||
|
@ -70,7 +71,6 @@
|
|||
</style>
|
||||
|
||||
<h2 name="content"><%:Firewall Status%></h2>
|
||||
<br />
|
||||
|
||||
<% if has_ip6tables then %>
|
||||
<ul class="cbi-tabmenu">
|
||||
|
@ -88,69 +88,69 @@
|
|||
<input type="submit" class="cbi-button" name="restart" value="<%:Restart Firewall%>" />
|
||||
</form>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<div class="cbi-section">
|
||||
|
||||
<% for _, tbl in ipairs(tables) do chaincnt = 0 %>
|
||||
<h3><%:Table%>: <%=tbl%></h3>
|
||||
<div class="table cbi-section-table" style="font-size:90%">
|
||||
<% for _, chain in ipairs(ipt:chains(tbl)) do
|
||||
rowcnt = 0
|
||||
chaincnt = chaincnt + 1
|
||||
chaininfo = ipt:chain(tbl, chain)
|
||||
%>
|
||||
<div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>">
|
||||
<div class="th cbi-section-table-cell" style="text-align:left" colspan="11">
|
||||
<br /><span id="rule_<%=tbl:lower()%>_<%=chain%>">
|
||||
<%:Chain%> <em><%=chain%></em>
|
||||
(<%- if chaininfo.policy then -%>
|
||||
<%:Policy%>: <em><%=chaininfo.policy%></em>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%>
|
||||
<%- else -%>
|
||||
<%:References%>: <%=chaininfo.references-%>
|
||||
<%- end -%>)</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tr cbi-section-table-descr">
|
||||
<div class="th cbi-section-table-cell"><%:Pkts.%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Traffic%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Target%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Prot.%></div>
|
||||
<div class="th cbi-section-table-cell"><%:In%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Out%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Source%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Destination%></div>
|
||||
<div class="th cbi-section-table-cell" style="width:30%"><%:Options%></div>
|
||||
</div>
|
||||
|
||||
<% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %>
|
||||
<div class="tr cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
|
||||
<div class="td"><%=rule.packets%></div>
|
||||
<div class="td" style="white-space: nowrap"><%=wba.byte_format(rule.bytes)%></div>
|
||||
<div class="td"><%=rule.target and link_target(tbl, rule.target) or "-"%></div>
|
||||
<div class="td"><%=rule.protocol%></div>
|
||||
<div class="td"><%=link_iface(rule.inputif)%></div>
|
||||
<div class="td"><%=link_iface(rule.outputif)%></div>
|
||||
<div class="td"><%=rule.source%></div>
|
||||
<div class="td"><%=rule.destination%></div>
|
||||
<div class="td" style="width:30%"><small><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%></small></div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% for _, chain in ipairs(ipt:chains(tbl)) do
|
||||
rowcnt = 0
|
||||
chaincnt = chaincnt + 1
|
||||
chaininfo = ipt:chain(tbl, chain)
|
||||
%>
|
||||
<h4 id="rule_<%=tbl:lower()%>_<%=chain%>">
|
||||
<%:Chain%> <em><%=chain%></em>
|
||||
(<%- if chaininfo.policy then -%>
|
||||
<%:Policy%>: <em><%=chaininfo.policy%></em>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%>
|
||||
<%- else -%>
|
||||
<%:References%>: <%=chaininfo.references-%>
|
||||
<%- end -%>)
|
||||
</h4>
|
||||
|
||||
<% if rowcnt == 1 then %>
|
||||
<div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>">
|
||||
<div class="td" colspan="9"><em><%:No rules in this chain%></em></div>
|
||||
<div class="cbi-section-node">
|
||||
<div class="table" style="font-size:90%">
|
||||
<div class="tr table-titles cbi-rowstyle-<%=rowstyle()%>">
|
||||
<div class="th hide-xs"><%:Pkts.%></div>
|
||||
<div class="th nowrap"><%:Traffic%></div>
|
||||
<div class="th col-5"><%:Target%></div>
|
||||
<div class="th"><%:Prot.%></div>
|
||||
<div class="th"><%:In%></div>
|
||||
<div class="th"><%:Out%></div>
|
||||
<div class="th"><%:Source%></div>
|
||||
<div class="th"><%:Destination%></div>
|
||||
<div class="th col-9 hide-xs"><%:Options%></div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% if chaincnt == 0 then %>
|
||||
<div class="tr cbi-section-table-titles cbi-rowstyle-<%=rowstyle()%>">
|
||||
<div class="td" colspan="9"><em><%:No chains in this table%></em></div>
|
||||
<% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %>
|
||||
<div class="tr cbi-rowstyle-<%=rowstyle()%>">
|
||||
<div class="td"><%=rule.packets%></div>
|
||||
<div class="td nowrap"><%=wba.byte_format(rule.bytes)%></div>
|
||||
<div class="td col-5"><%=rule.target and link_target(tbl, rule.target) or "-"%></div>
|
||||
<div class="td"><%=rule.protocol%></div>
|
||||
<div class="td"><%=link_iface(rule.inputif)%></div>
|
||||
<div class="td"><%=link_iface(rule.outputif)%></div>
|
||||
<div class="td"><%=rule.source%></div>
|
||||
<div class="td"><%=rule.destination%></div>
|
||||
<div class="td col-9 hide-xs"><%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%></div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if rowcnt == 1 then %>
|
||||
<div class="tr cbi-rowstyle-<%=rowstyle()%>">
|
||||
<div class="td" colspan="9"><em><%:No rules in this chain%></em></div>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if chaincnt == 0 then %>
|
||||
<em><%:No chains in this table%></em>
|
||||
<% end %>
|
||||
|
||||
<br /><br />
|
||||
<% end %>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%+footer%>
|
||||
|
|
|
@ -237,6 +237,8 @@
|
|||
label_15_peak.innerHTML = (data_15_peak / 100).toFixed(2);
|
||||
}
|
||||
);
|
||||
|
||||
XHR.run();
|
||||
}
|
||||
}, 1000
|
||||
);
|
||||
|
|
|
@ -32,28 +32,30 @@
|
|||
|
||||
<%+header%>
|
||||
|
||||
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
|
||||
|
||||
<div class="cbi-map" id="cbi-network">
|
||||
<h2 name="content"><%:Routes%></h2>
|
||||
<div class="cbi-map-descr"><%:The following rules are currently active on this system.%></div>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<div class="cbi-section">
|
||||
<legend>ARP</legend>
|
||||
<div class="cbi-section-node">
|
||||
<div class="table cbi-section-table">
|
||||
<div class="tr cbi-section-table-titles">
|
||||
<div class="th cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></div>
|
||||
<div class="th cbi-section-table-cell"><%_<abbr title="Media Access Control">MAC</abbr>-Address%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Interface%></div>
|
||||
<div class="table">
|
||||
<div class="tr table-titles">
|
||||
<div class="th"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Address%></div>
|
||||
<div class="th"><%_<abbr title="Media Access Control">MAC</abbr>-Address%></div>
|
||||
<div class="th"><%:Interface%></div>
|
||||
</div>
|
||||
|
||||
<%
|
||||
for _, v in ipairs(ip.neighbors({ family = 4 })) do
|
||||
if v.mac then
|
||||
%>
|
||||
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td cbi-value-field"><%=v.dest%></div>
|
||||
<div class="td cbi-value-field"><%=v.mac%></div>
|
||||
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
|
||||
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td"><%=v.dest%></div>
|
||||
<div class="td"><%=v.mac%></div>
|
||||
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
|
||||
</div>
|
||||
<%
|
||||
style = not style
|
||||
|
@ -62,61 +64,57 @@
|
|||
%>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<div class="cbi-section">
|
||||
<legend><%_Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes%></legend>
|
||||
|
||||
<div class="cbi-section-node">
|
||||
<div class="table cbi-section-table">
|
||||
<div class="tr cbi-section-table-titles">
|
||||
<div class="th cbi-section-table-cell"><%:Network%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Target%></div>
|
||||
<div class="th cbi-section-table-cell"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Metric%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Table%></div>
|
||||
<div class="table">
|
||||
<div class="tr table-titles">
|
||||
<div class="th"><%:Network%></div>
|
||||
<div class="th"><%:Target%></div>
|
||||
<div class="th"><%_<abbr title="Internet Protocol Version 4">IPv4</abbr>-Gateway%></div>
|
||||
<div class="th"><%:Metric%></div>
|
||||
<div class="th"><%:Table%></div>
|
||||
</div>
|
||||
<% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %>
|
||||
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></div>
|
||||
<div class="td cbi-value-field"><%=v.dest%></div>
|
||||
<div class="td cbi-value-field"><%=v.gw%></div>
|
||||
<div class="td cbi-value-field"><%=v.metric or 0%></div>
|
||||
<div class="td cbi-value-field"><%=rtn[v.table] or v.table%></div>
|
||||
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%></div>
|
||||
<div class="td"><%=v.dest%></div>
|
||||
<div class="td"><%=v.gw or "-"%></div>
|
||||
<div class="td"><%=v.metric or 0%></div>
|
||||
<div class="td"><%=rtn[v.table] or v.table%></div>
|
||||
</div>
|
||||
<% style = not style end %>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<%
|
||||
if nixio.fs.access("/proc/net/ipv6_route") then
|
||||
style = true
|
||||
%>
|
||||
<fieldset class="cbi-section">
|
||||
<div class="cbi-section">
|
||||
<legend><%_Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes%></legend>
|
||||
|
||||
<div class="cbi-section-node">
|
||||
<div class="table cbi-section-table">
|
||||
<div class="tr cbi-section-table-titles">
|
||||
<div class="th cbi-section-table-cell"><%:Network%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Target%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Source%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Metric%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Table%></div>
|
||||
<div class="table">
|
||||
<div class="tr table-titles">
|
||||
<div class="th"><%:Network%></div>
|
||||
<div class="th"><%:Target%></div>
|
||||
<div class="th"><%:Source%></div>
|
||||
<div class="th"><%:Metric%></div>
|
||||
<div class="th"><%:Table%></div>
|
||||
</div>
|
||||
<%
|
||||
for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do
|
||||
if v.dest and not v.dest:is6linklocal() then
|
||||
%>
|
||||
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
|
||||
<div class="td cbi-value-field"><%=v.dest%></div>
|
||||
<div class="td cbi-value-field"><%=v.from%></div>
|
||||
<div class="td cbi-value-field"><%=v.metric or 0%></div>
|
||||
<div class="td cbi-value-field"><%=rtn[v.table] or v.table%></div>
|
||||
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
|
||||
<div class="td"><%=v.dest%></div>
|
||||
<div class="td"><%=v.from%></div>
|
||||
<div class="td"><%=v.metric or 0%></div>
|
||||
<div class="td"><%=rtn[v.table] or v.table%></div>
|
||||
</div>
|
||||
<%
|
||||
style = not style
|
||||
|
@ -125,27 +123,25 @@
|
|||
%>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
<fieldset class="cbi-section">
|
||||
<div class="cbi-section">
|
||||
<legend><%:IPv6 Neighbours%></legend>
|
||||
|
||||
<div class="cbi-section-node">
|
||||
<div class="table cbi-section-table">
|
||||
<div class="tr cbi-section-table-titles">
|
||||
<div class="th cbi-section-table-cell"><%:IPv6-Address%></div>
|
||||
<div class="th cbi-section-table-cell"><%:MAC-Address%></div>
|
||||
<div class="th cbi-section-table-cell"><%:Interface%></div>
|
||||
<div class="table">
|
||||
<div class="tr table-titles">
|
||||
<div class="th"><%:IPv6-Address%></div>
|
||||
<div class="th"><%:MAC-Address%></div>
|
||||
<div class="th"><%:Interface%></div>
|
||||
</div>
|
||||
<%
|
||||
for _, v in ipairs(ip.neighbors({ family = 6 })) do
|
||||
if v.dest and not v.dest:is6linklocal() and v.mac then
|
||||
%>
|
||||
<div class="tr cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td cbi-value-field"><%=v.dest%></div>
|
||||
<div class="td cbi-value-field"><%=v.mac%></div>
|
||||
<div class="td cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
|
||||
<div class="tr cbi-rowstyle-<%=(style and 1 or 2)%>">
|
||||
<div class="td"><%=v.dest%></div>
|
||||
<div class="td"><%=v.mac%></div>
|
||||
<div class="td"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></div>
|
||||
</div>
|
||||
<%
|
||||
style = not style
|
||||
|
@ -154,8 +150,7 @@
|
|||
%>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<br />
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -276,7 +276,7 @@
|
|||
function wireless_label(dbm, noise)
|
||||
{
|
||||
if (noise)
|
||||
return String.format("%d <%:dBm%> (SNR %d <%:dBm%>)", noise_floor + dbm - 255, dbm - noise);
|
||||
return String.format("%d <%:dBm%> (SNR %d <%:dB%>)", noise_floor + dbm - 255, dbm - noise);
|
||||
else
|
||||
return String.format("%d <%:dBm%>", noise_floor + dbm - 255);
|
||||
}
|
||||
|
@ -308,6 +308,8 @@
|
|||
label_rate_peak.innerHTML = rate_label(data_rate_peak);
|
||||
}
|
||||
);
|
||||
|
||||
XHR.run();
|
||||
}
|
||||
}, 1000
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue