summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm28
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm26
2 files changed, 50 insertions, 4 deletions
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm
index ab8e73257..f7787dd1e 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm
@@ -1,4 +1,18 @@
<script type="text/javascript">//<![CDATA[
+ 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 hosts = <%=luci.http.write_json(luci.sys.net.host_hints())%>;
+
XHR.poll(5, '<%=url('admin/network/dhcplease_status')%>', null,
function(x, st)
{
@@ -67,7 +81,17 @@
var tr = tb6.insertRow(-1);
tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
- tr.insertCell(-1).innerHTML = st[1][i].hostname ? st[1][i].hostname : '?';
+ var host = hosts[duid2mac(st[1][i].duid)];
+ if (host)
+ tr.insertCell(-1).innerHTML = String.format(
+ '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%s</div>',
+ ((host.name && (host.ipv4 || host.ipv6))
+ ? '%h (%s)'.format(host.name, host.ipv4 || host.ipv6)
+ : '%h'.format(host.name || host.ipv4 || host.ipv6)).nobr()
+ );
+ else
+ tr.insertCell(-1).innerHTML = st[1][i].hostname ? st[1][i].hostname : '?';
+
tr.insertCell(-1).innerHTML = st[1][i].ip6addr;
tr.insertCell(-1).innerHTML = st[1][i].duid;
tr.insertCell(-1).innerHTML = timestr;
@@ -106,7 +130,7 @@
<legend><%:Active DHCPv6 Leases%></legend>
<table class="cbi-section-table" id="lease6_status_table">
<tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Hostname%></th>
+ <th class="cbi-section-table-cell"><%:Host%></th>
<th class="cbi-section-table-cell"><%:IPv6-Address%></th>
<th class="cbi-section-table-cell"><%:DUID%></th>
<th class="cbi-section-table-cell"><%:Leasetime remaining%></th>
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 a37982e1d..8bfc61b99 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
@@ -144,6 +144,18 @@
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())%>;
@@ -339,7 +351,17 @@
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 (host)
+ tr.insertCell(-1).innerHTML = String.format(
+ '<div style="max-width:200px;overflow:hidden;text-overflow:ellipsis">%s</div>',
+ ((host.name && (host.ipv4 || host.ipv6))
+ ? '%h (%s)'.format(host.name, host.ipv4 || host.ipv6)
+ : '%h'.format(host.name || host.ipv4 || host.ipv6)).nobr()
+ );
+ else
+ 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;
@@ -671,7 +693,7 @@
<table class="cbi-section-table" id="lease6_status_table">
<tr class="cbi-section-table-titles">
- <th class="cbi-section-table-cell"><%:Hostname%></th>
+ <th class="cbi-section-table-cell"><%:Host%></th>
<th class="cbi-section-table-cell"><%:IPv6-Address%></th>
<th class="cbi-section-table-cell"><%:DUID%></th>
<th class="cbi-section-table-cell"><%:Leasetime remaining%></th>