luci-mod-admin-full: don't replace DHCPv6 hostname
[project/luci.git] / modules / luci-mod-admin-full / luasrc / view / admin_network / lease_status.htm
index 0ba334e..7e2cc09 100644 (file)
@@ -1,5 +1,19 @@
 <script type="text/javascript">//<![CDATA[
-       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "dhcplease_status")%>', null,
+       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)
                {
                        var tb = document.getElementById('lease_status_table');
                                {
                                        var timestr;
 
-                                       if (st[0][i].expires <= 0)
-                                       {
+                                       if (st[0][i].expires === false)
+                                               timestr = '<em><%:unlimited%></em>';
+                                       else if (st[0][i].expires <= 0)
                                                timestr = '<em><%:expired%></em>';
-                                       }
                                        else
-                                       {
                                                timestr = String.format('%t', st[0][i].expires);
-                                       }
 
                                        var tr = tb.insertRow(-1);
                                                tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
                                {
                                        var timestr;
 
-                                       if (st[1][i].expires <= 0)
-                                       {
+                                       if (st[1][i].expires === false)
+                                               timestr = '<em><%:unlimited%></em>';
+                                       else if (st[1][i].expires <= 0)
                                                timestr = '<em><%:expired%></em>';
-                                       }
                                        else
-                                       {
                                                timestr = String.format('%t', st[1][i].expires);
-                                       }
 
                                        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 (!st[1][i].hostname && 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;
        <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>