X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fview%2Fadmin_status%2Findex.htm;h=cfeb91ac7ae342699b6efb20f9ecd55dbefb3c24;hp=f6432ef6f922c4720005409d3e8c419e18854555;hb=2aad24cec13cbc4765cbbc5502832184713b823f;hpb=fc84bd87ecbc0e077dc4e624b3139c7e3adb8b0f
diff --git a/modules/admin-full/luasrc/view/admin_status/index.htm b/modules/admin-full/luasrc/view/admin_status/index.htm
index f6432ef6f..cfeb91ac7 100644
--- a/modules/admin-full/luasrc/view/admin_status/index.htm
+++ b/modules/admin-full/luasrc/view/admin_status/index.htm
@@ -9,8 +9,6 @@ You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
-$Id$
-
-%>
<%
@@ -21,24 +19,17 @@ $Id$
local has_dhcp = luci.fs.access("/etc/config/dhcp")
local has_wifi = luci.fs.stat("/etc/config/wireless")
has_wifi = has_wifi and has_wifi.size > 0
+ local _, _, memtotal, memcached, membuffers, memfree, _, swaptotal, swapcached, swapfree = luci.sys.sysinfo()
+ local has_swap
+ if swaptotal > 0 then
+ has_swap = 1
+ end
+ local has_dsl = luci.fs.stat("/etc/init.d/dsl_control")
if luci.http.formvalue("status") == "1" then
local ntm = require "luci.model.network".init()
- local dr4 = luci.sys.net.defaultroute()
- local dr6 = luci.sys.net.defaultroute6()
- local wan, wan6
-
- if dr4 and dr4.device then
- wan = ntm:get_interface(dr4.device)
- wan = wan and wan:get_network()
- end
-
- if dr6 and dr6.device then
- wan6 = ntm:get_interface(dr6.device)
- wan6 = wan6 and wan6:get_network()
- end
-
- local _, _, memtotal, memcached, membuffers, memfree = luci.sys.sysinfo()
+ local wan = ntm:get_wannet()
+ local wan6 = ntm:get_wan6net()
local conn_count = tonumber((
luci.sys.exec("wc -l /proc/net/nf_conntrack") or
@@ -58,9 +49,13 @@ $Id$
memcached = memcached,
membuffers = membuffers,
memfree = memfree,
+ swaptotal = swaptotal,
+ swapcached = swapcached,
+ swapfree = swapfree,
connmax = conn_max,
conncount = conn_count,
leases = luci.tools.status.dhcp_leases(),
+ leases6 = luci.tools.status.dhcp6_leases(),
wifinets = luci.tools.status.wifi_networks()
}
@@ -89,6 +84,12 @@ $Id$
}
end
+ 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()
+ end
+
luci.http.prepare_content("application/json")
luci.http.write_json(rv)
@@ -119,350 +120,438 @@ $Id$
);
}
- var iwxhr = new XHR();
var wifidevs = <%=luci.http.write_json(netdevs)%>;
var arptable = <%=luci.http.write_json(arpcache)%>;
- var update_status = function() {
- iwxhr.get('<%=REQUEST_URI%>', { status: 1 },
- function(x, info)
+ XHR.poll(5, '<%=REQUEST_URI%>', { status: 1 },
+ function(x, info)
+ {
+ var si = document.getElementById('wan4_i');
+ var ss = document.getElementById('wan4_s');
+ var ifc = info.wan;
+
+ if (ifc && ifc.ifname && ifc.proto != 'none')
{
- var si = document.getElementById('wan4_i');
- var ss = document.getElementById('wan4_s');
- var ifc = info.wan;
+ var s = String.format(
+ '<%:Type%>: %s
' +
+ '<%:Address%>: %s
' +
+ '<%:Netmask%>: %s
' +
+ '<%:Gateway%>: %s
',
+ ifc.proto,
+ (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0',
+ (ifc.netmask && ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255',
+ (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0'
+ );
+
+ for (var i = 0; i < ifc.dns.length; i++)
+ {
+ s += String.format(
+ '<%:DNS%> %d: %s
',
+ i + 1, ifc.dns[i]
+ );
+ }
- if (ifc && ifc.ifname && ifc.proto != 'none')
+ if (ifc.expires > -1)
{
- var s = String.format(
- '<%:Type%>: %s
' +
- '<%:Address%>: %s
' +
- '<%:Netmask%>: %s
' +
- '<%:Gateway%>: %s
',
- ifc.proto,
- (ifc.ipaddr) ? ifc.ipaddr : '0.0.0.0',
- (ifc.netmask != ifc.ipaddr) ? ifc.netmask : '255.255.255.255',
- (ifc.gwaddr) ? ifc.gwaddr : '0.0.0.0'
+ s += String.format(
+ '<%:Expires%>: %t
',
+ ifc.expires
);
+ }
- for (var i = 0; i < ifc.dns.length; i++)
- {
- s += String.format(
- '<%:DNS%> %d: %s
',
- i + 1, ifc.dns[i]
- );
- }
+ if (ifc.uptime > 0)
+ {
+ s += String.format(
+ '<%:Connected%>: %t
',
+ ifc.uptime
+ );
+ }
- if (ifc.expires > -1)
- {
- s += String.format(
- '<%:Expires%>: %t
',
- ifc.expires
- );
- }
+ ss.innerHTML = String.format('%s', s);
+ si.innerHTML = String.format(
+ '' +
+ '
%s',
+ ifc.link, ifc.ifname
+ );
+ }
+ else
+ {
+ si.innerHTML = '
?';
+ ss.innerHTML = '<%:Not connected%>';
+ }
- if (ifc.uptime > 0)
- {
- s += String.format(
- '<%:Connected%>: %t
',
- ifc.uptime
- );
- }
+ <% if has_ipv6 then %>
+ var si6 = document.getElementById('wan6_i');
+ var ss6 = document.getElementById('wan6_s');
+ var ifc6 = info.wan6;
- ss.innerHTML = String.format('%s', s);
- si.innerHTML = String.format(
- '' +
- '
%s',
- ifc.link, ifc.ifname
+ if (ifc6 && ifc6.ifname && ifc6.proto != 'none')
+ {
+ var s = String.format(
+ '<%:Address%>: %s
' +
+ '<%:Gateway%>: %s
',
+ (ifc6.ip6addr) ? ifc6.ip6addr : '::',
+ (ifc6.gw6addr) ? ifc6.gw6addr : '::'
+ );
+
+ for (var i = 0; i < ifc6.dns.length; i++)
+ {
+ s += String.format(
+ '<%:DNS%> %d: %s
',
+ i + 1, ifc6.dns[i]
);
}
- else
+
+ if (ifc6.uptime > 0)
{
- si.innerHTML = '
?';
- ss.innerHTML = 'Not connected';
+ s += String.format(
+ '<%:Connected%>: %t
',
+ ifc6.uptime
+ );
}
- <% if has_ipv6 then %>
- var si6 = document.getElementById('wan6_i');
- var ss6 = document.getElementById('wan6_s');
- var ifc6 = info.wan6;
+ ss6.innerHTML = String.format('%s', s);
+ si6.innerHTML = String.format(
+ '' +
+ '
%s',
+ ifc6.link, ifc6.ifname
+ );
+ }
+ else
+ {
+ si6.innerHTML = '
?';
+ ss6.innerHTML = '<%:Not connected%>';
+ }
+ <% end %>
+
+ <% if has_dsl then %>
+ var dsl_i = document.getElementById('dsl_i');
+ var dsl_s = document.getElementById('dsl_s');
+
+ 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
',
+ info.dsl.line_state, info.dsl.line_state_detail,
+ info.dsl.line_state_num,
+ info.dsl.data_rate_down_s, info.dsl.data_rate_up_s,
+ info.dsl.line_attenuation_down, info.dsl.line_attenuation_up,
+ info.dsl.noise_margin_down, info.dsl.noise_margin_up
+ );
+
+ dsl_s.innerHTML = String.format('%s', s);
+ dsl_i.innerHTML = String.format(
+ '' +
+ '
ADSL'
+ );
+ <% end %>
+
+ <% if has_dhcp then %>
+ var ls = document.getElementById('lease_status_table');
+ if (ls)
+ {
+ /* clear all rows */
+ while( ls.rows.length > 1 )
+ ls.rows[0].parentNode.deleteRow(1);
- if (ifc6 && ifc6.ifname && ifc6.proto != 'none')
+ for( var i = 0; i < info.leases.length; i++ )
{
- var s = String.format(
- '<%:Address%>: %s
' +
- '<%:Gateway%>: %s
',
- (ifc6.ip6addr) ? ifc6.ip6addr : '::',
- (ifc6.gw6addr) ? ifc6.gw6addr : '::'
- );
+ var timestr;
- for (var i = 0; i < ifc6.dns.length; i++)
- {
- s += String.format(
- '<%:DNS%> %d: %s
',
- i + 1, ifc6.dns[i]
- );
- }
+ if (info.leases[i].expires <= 0)
+ timestr = '<%:expired%>';
+ else
+ timestr = String.format('%t', info.leases[i].expires);
- if (ifc6.uptime > 0)
- {
- s += String.format(
- '<%:Connected%>: %t
',
- ifc6.uptime
- );
- }
+ var tr = ls.rows[0].parentNode.insertRow(-1);
+ tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
- ss6.innerHTML = String.format('%s', s);
- si6.innerHTML = String.format(
- '' +
- '
%s',
- ifc6.link, ifc6.ifname
- );
- }
- else
- {
- si6.innerHTML = '
?';
- ss6.innerHTML = 'Not connected';
+ tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?';
+ tr.insertCell(-1).innerHTML = info.leases[i].ipaddr;
+ tr.insertCell(-1).innerHTML = info.leases[i].macaddr;
+ tr.insertCell(-1).innerHTML = timestr;
}
- <% end %>
- <% if has_dhcp then %>
- var ls = document.getElementById('lease_status_table');
- if (ls)
+ if( ls.rows.length == 1 )
{
- /* clear all rows */
- while( ls.rows.length > 1 )
- ls.rows[0].parentNode.deleteRow(1);
+ var tr = ls.rows[0].parentNode.insertRow(-1);
+ tr.className = 'cbi-section-table-row';
- for( var i = 0; i < info.leases.length; i++ )
- {
- var timestr;
+ var td = tr.insertCell(-1);
+ td.colSpan = 4;
+ td.innerHTML = '
<%:There are no active leases.%>';
+ }
+ }
- if (info.leases[i].expires <= 0)
- timestr = '<%:expired%>';
- else
- timestr = String.format('%t', info.leases[i].expires);
+ var ls6 = document.getElementById('lease6_status_table');
+ if (ls6 && info.leases6)
+ {
+ ls6.parentNode.style.display = 'block';
- var tr = ls.rows[0].parentNode.insertRow(-1);
- tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
+ /* clear all rows */
+ while( ls6.rows.length > 1 )
+ ls6.rows[0].parentNode.deleteRow(1);
- tr.insertCell(-1).innerHTML = info.leases[i].hostname ? info.leases[i].hostname : '?';
- tr.insertCell(-1).innerHTML = info.leases[i].ipaddr;
- tr.insertCell(-1).innerHTML = info.leases[i].macaddr;
- tr.insertCell(-1).innerHTML = timestr;
- }
+ for( var i = 0; i < info.leases6.length; i++ )
+ {
+ var timestr;
- if( ls.rows.length == 1 )
- {
- var tr = ls.rows[0].parentNode.insertRow(-1);
- tr.className = 'cbi-section-table-row';
+ if (info.leases6[i].expires <= 0)
+ timestr = '<%:expired%>';
+ else
+ timestr = String.format('%t', info.leases6[i].expires);
- var td = tr.insertCell(-1);
- td.colSpan = 4;
- td.innerHTML = '
<%:There are no active leases.%>';
- }
- }
- <% end %>
+ var tr = ls6.rows[0].parentNode.insertRow(-1);
+ tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
- <% if has_wifi then %>
- var assoclist = [ ];
+ tr.insertCell(-1).innerHTML = info.leases6[i].hostname ? 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;
+ }
- var ws = document.getElementById('wifi_status_table');
- if (ws)
+ if( ls6.rows.length == 1 )
{
- var wsbody = ws.rows[0].parentNode;
- while (ws.rows.length > 0)
- wsbody.deleteRow(0);
-
- for (var didx = 0; didx < info.wifinets.length; didx++)
- {
- var dev = info.wifinets[didx];
+ var tr = ls6.rows[0].parentNode.insertRow(-1);
+ tr.className = 'cbi-section-table-row';
- var tr = wsbody.insertRow(-1);
- var td;
-
- td = tr.insertCell(-1);
- td.width = "33%";
- td.innerHTML = dev.name;
- td.style.verticalAlign = "top";
+ var td = tr.insertCell(-1);
+ td.colSpan = 4;
+ td.innerHTML = '
<%:There are no active leases.%>';
+ }
+ }
+ <% end %>
- td = tr.insertCell(-1);
+ <% if has_wifi then %>
+ var assoclist = [ ];
- var s = '';
+ var ws = document.getElementById('wifi_status_table');
+ if (ws)
+ {
+ var wsbody = ws.rows[0].parentNode;
+ while (ws.rows.length > 0)
+ wsbody.deleteRow(0);
- for (var nidx = 0; nidx < dev.networks.length; nidx++)
- {
- var net = dev.networks[nidx];
- var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel);
-
- var icon;
- if (!is_assoc)
- icon = "<%=resource%>/icons/signal-none.png";
- else if (net.quality == 0)
- icon = "<%=resource%>/icons/signal-0.png";
- else if (net.quality < 25)
- icon = "<%=resource%>/icons/signal-0-25.png";
- else if (net.quality < 50)
- icon = "<%=resource%>/icons/signal-25-50.png";
- else if (net.quality < 75)
- icon = "<%=resource%>/icons/signal-50-75.png";
- else
- icon = "<%=resource%>/icons/signal-75-100.png";
+ for (var didx = 0; didx < info.wifinets.length; didx++)
+ {
+ var dev = info.wifinets[didx];
- s += String.format(
- '
' +
- '' +
- ' %d%%' + - ' | ' +
- '<%:SSID%>: %h ' + - '<%:Mode%>: %s ' + - '<%:Channel%>: %d (%.2f GHz) ' + - '<%:Bitrate%>: %s Mb/s ', - icon, net.signal, net.noise, - net.quality, - net.link, net.ssid, - net.mode, - net.channel, net.frequency, - net.bitrate || '?' - ); + var tr = wsbody.insertRow(-1); + var td; - if (is_assoc) - { - s += String.format( - '<%:BSSID%>: %s ' + - '<%:Encryption%>: %s', - net.bssid, - net.encryption - ); - } - else - { - s += '<%:Wireless is disabled or not associated%>'; - } - - s += ' |
' +
+ '' +
+ ' %d%%' + + ' | ' +
+ '<%:SSID%>: %h ' + + '<%:Mode%>: %s ' + + '<%:Channel%>: %d (%.3f <%:GHz%>) ' + + '<%:Bitrate%>: %s <%:Mbit/s%> ', + icon, net.signal, net.noise, + net.quality, + net.link, net.ssid, + net.mode, + net.channel, net.frequency, + net.bitrate || '?' ); - tr.insertCell(-1).innerHTML = assoclist[i].bssid; + if (is_assoc) + { + s += String.format( + '<%:BSSID%>: %s ' + + '<%:Encryption%>: %s', + net.bssid, + net.encryption + ); + } + else + { + s += '<%:Wireless is disabled or not associated%>'; + } - tr.insertCell(-1).innerHTML = String.format( - '%h', - assoclist[i].link, - assoclist[i].name - ); + s += ' |
<%:Router Name%> | <%=luci.sys.hostname() or "?"%> |
<%:Router Model%> | <%=pcdata(model or "?")%> |
<%:Hostname%> | <%=luci.sys.hostname() or "?"%> |
<%:Model%> | <%=pcdata(model or "?")%> |
<%:Firmware Version%> | <%=pcdata(luci.version.distname)%> <%=pcdata(luci.version.distversion)%> / - <%=pcdata(luci.version.luciname)%> <%=pcdata(luci.version.luciversion)%> + <%=pcdata(luci.version.luciname)%> (<%=pcdata(luci.version.luciversion)%>) |
<%:Kernel Version%> | <%=luci.sys.exec("uname -r")%> |
<%:Local Time%> | - |
- | <%:BSSID%> | +<%:MAC-Address%> | <%:Network%> | <%:Signal%> | <%:Noise%> | +<%:RX Rate%> | +<%:TX Rate%> | ||||
---|---|---|---|---|---|---|---|---|---|---|---|
<%:Collecting data...%> |
+ <%:Collecting data...%> |