luci-mod-admin-full: extend dsl stats
[project/luci.git] / modules / luci-mod-admin-full / luasrc / view / admin_status / index.htm
index a37982e..2abb370 100644 (file)
                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())%>;
 
                                var s = String.format(
                                        '<strong><%:Status%>: </strong>%s<br />' +
                                        '<strong><%:Line State%>: </strong>%s [0x%x]<br />' +
-                                       '<strong><%:Line Speed%>: </strong>%s/s / %s/s<br />' +
-                                       '<strong><%:Line Attenuation%>: </strong>%s dB / %s dB<br />' +
-                                       '<strong><%:Noise Margin%>: </strong>%s dB / %s dB<br />',
+                                       '<strong><%:Line Mode%>: </strong>%s<br />' +
+                                       '<strong><%:Annex%>: </strong>%s<br />' +
+                                       '<strong><%:Profile%>: </strong>%s<br />' +
+                                       '<strong><%:Data Rate%>: </strong>%s/s / %s/s<br />' +
+                                       '<strong><%:Max. Attainable Data Rate (ATTNDR)%>: </strong>%s/s / %s/s<br />' +
+                                       '<strong><%:Latency%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Line Attenuation (LATN)%>: </strong>%s dB / %s dB<br />' +
+                                       '<strong><%:Signal Attenuation (SATN)%>: </strong>%s dB / %s dB<br />' +
+                                       '<strong><%:Noise Margin (SNR)%>: </strong>%s dB / %s dB<br />' +
+                                       '<strong><%:Aggregate Transmit Power(ACTATP)%>: </strong>%s dB / %s dB<br />' +
+                                       '<strong><%:Forward Error Correction Seconds (FECS)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Errored seconds (ES)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Severely Errored Seconds (SES)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Loss of Signal Seconds (LOSS)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Unavailable Seconds (UAS)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Header Error Code Errors (HEC)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Non Pre-emtive CRC errors (CRC_P)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Pre-emtive CRC errors (CRCP_P)%>: </strong>%s / %s<br />' +
+                                       '<strong><%:Line Uptime%>: </strong>%s<br />' +
+                                       '<strong><%:ATU-C System Vendor ID%>: </strong>%s<br />' +
+                                       '<strong><%:Power Management Mode%>: </strong>%s<br />',
                                                info.dsl.line_state, info.dsl.line_state_detail,
                                                info.dsl.line_state_num,
+                                               info.dsl.line_mode_s,
+                                               info.dsl.annex_s,
+                                               info.dsl.profile_s,
                                                info.dsl.data_rate_down_s, info.dsl.data_rate_up_s,
+                                               info.dsl.max_data_rate_down_s, info.dsl.max_data_rate_up_s,                                             
+                                               info.dsl.latency_num_down, info.dsl.latency_num_up,
                                                info.dsl.line_attenuation_down, info.dsl.line_attenuation_up,
-                                               info.dsl.noise_margin_down, info.dsl.noise_margin_up
+                                               info.dsl.noise_margin_down, info.dsl.noise_margin_up,
+                                               info.dsl.signal_attenuation_down, info.dsl.signal_attenuation_up,
+                                               info.dsl.actatp_down, info.dsl.actatp_up,
+                                               info.dsl.errors_fec_near, info.dsl.errors_fec_far,
+                                               info.dsl.errors_es_near, info.dsl.errors_es_far,
+                                               info.dsl.errors_ses_near, info.dsl.errors_ses_far,
+                                               info.dsl.errors_loss_near, info.dsl.errors_loss_far,
+                                               info.dsl.errors_uas_near, info.dsl.errors_uas_far,
+                                               info.dsl.errors_hec_near, info.dsl.errors_hec_far,
+                                               info.dsl.errors_crc_p_near, info.dsl.errors_crc_p_far,
+                                               info.dsl.errors_crcp_p_near, info.dsl.errors_crcp_p_far,
+                                               info.dsl.line_uptime_s,
+                                               info.dsl.atuc_vendor_id,
+                                               info.dsl.power_mode_s
                                );
 
                                dsl_s.innerHTML = String.format('<small>%s</small>', s);
                                dsl_i.innerHTML = String.format(
                                        '<img src="<%=resource%>/icons/ethernet.png" />' +
-                                       '<br /><small>ADSL</small>'
+                                       '<br /><small>DSL</small>'
                                );
                        <% end %>
 
                                        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;
 
        <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>
 
 <% if has_dsl then %>
 <fieldset class="cbi-section">
-       <legend><%:ADSL%></legend>
+       <legend><%:DSL%></legend>
        <table width="100%" cellspacing="10">
-               <tr><td width="33%" style="vertical-align:top"><%:ADSL Status%></td><td>
+               <tr><td width="33%" style="vertical-align:top"><%:DSL Status%></td><td>
                        <table><tr>
                                <td id="dsl_i" style="width:16px; text-align:center; padding:3px"><img src="<%=resource%>/icons/ethernet_disabled.png" /><br /><small>?</small></td>
                                <td id="dsl_s" style="vertical-align:middle; padding: 3px"><em><%:Collecting data...%></em></td>