luci-mod-network: re-add DHCPv6 lease status to dnsmasq page
Ref: https://bugs.openwrt.org/index.php?do=details&task_id=2674
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit f6410361c8
)
This commit is contained in:
parent
af5d665a70
commit
ddc89b418b
1 changed files with 63 additions and 5 deletions
|
@ -3,7 +3,7 @@
|
||||||
'require uci';
|
'require uci';
|
||||||
'require form';
|
'require form';
|
||||||
|
|
||||||
var callHostHints, callDUIDHints, callDHCPLeases, CBILeaseStatus;
|
var callHostHints, callDUIDHints, callDHCPLeases, CBILeaseStatus, CBILease6Status;
|
||||||
|
|
||||||
callHostHints = rpc.declare({
|
callHostHints = rpc.declare({
|
||||||
object: 'luci-rpc',
|
object: 'luci-rpc',
|
||||||
|
@ -20,8 +20,7 @@ callDUIDHints = rpc.declare({
|
||||||
callDHCPLeases = rpc.declare({
|
callDHCPLeases = rpc.declare({
|
||||||
object: 'luci-rpc',
|
object: 'luci-rpc',
|
||||||
method: 'getDHCPLeases',
|
method: 'getDHCPLeases',
|
||||||
params: [ 'family' ],
|
expect: { '': {} }
|
||||||
expect: { dhcp_leases: [] }
|
|
||||||
});
|
});
|
||||||
|
|
||||||
CBILeaseStatus = form.DummyValue.extend({
|
CBILeaseStatus = form.DummyValue.extend({
|
||||||
|
@ -43,6 +42,25 @@ CBILeaseStatus = form.DummyValue.extend({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
CBILease6Status = form.DummyValue.extend({
|
||||||
|
renderWidget: function(section_id, option_id, cfgvalue) {
|
||||||
|
return E([
|
||||||
|
E('h4', _('Active DHCPv6 Leases')),
|
||||||
|
E('div', { 'id': 'lease6_status_table', 'class': 'table' }, [
|
||||||
|
E('div', { 'class': 'tr table-titles' }, [
|
||||||
|
E('div', { 'class': 'th' }, _('Host')),
|
||||||
|
E('div', { 'class': 'th' }, _('IPv6-Address')),
|
||||||
|
E('div', { 'class': 'th' }, _('DUID')),
|
||||||
|
E('div', { 'class': 'th' }, _('Leasetime remaining'))
|
||||||
|
]),
|
||||||
|
E('div', { 'class': 'tr placeholder' }, [
|
||||||
|
E('div', { 'class': 'td' }, E('em', _('Collecting data...')))
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return L.view.extend({
|
return L.view.extend({
|
||||||
load: function() {
|
load: function() {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
|
@ -52,7 +70,8 @@ return L.view.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function(hosts_duids) {
|
render: function(hosts_duids) {
|
||||||
var hosts = hosts_duids[0],
|
var has_dhcpv6 = L.hasSystemFeature('dnsmasq', 'dhcpv6') || L.hasSystemFeature('odhcpd'),
|
||||||
|
hosts = hosts_duids[0],
|
||||||
duids = hosts_duids[1],
|
duids = hosts_duids[1],
|
||||||
m, s, o, ss, so;
|
m, s, o, ss, so;
|
||||||
|
|
||||||
|
@ -398,9 +417,15 @@ return L.view.extend({
|
||||||
|
|
||||||
o = s.taboption('leases', CBILeaseStatus, '__status__');
|
o = s.taboption('leases', CBILeaseStatus, '__status__');
|
||||||
|
|
||||||
|
if (has_dhcpv6)
|
||||||
|
o = s.taboption('leases', CBILease6Status, '__status6__');
|
||||||
|
|
||||||
return m.render().then(function(mapEl) {
|
return m.render().then(function(mapEl) {
|
||||||
L.Poll.add(function() {
|
L.Poll.add(function() {
|
||||||
return callDHCPLeases(4).then(function(leases) {
|
return callDHCPLeases().then(function(leaseinfo) {
|
||||||
|
var leases = Array.isArray(leaseinfo.dhcp_leases) ? leaseinfo.dhcp_leases : [],
|
||||||
|
leases6 = Array.isArray(leaseinfo.dhcp6_leases) ? leaseinfo.dhcp6_leases : [];
|
||||||
|
|
||||||
cbi_update_table(mapEl.querySelector('#lease_status_table'),
|
cbi_update_table(mapEl.querySelector('#lease_status_table'),
|
||||||
leases.map(function(lease) {
|
leases.map(function(lease) {
|
||||||
var exp;
|
var exp;
|
||||||
|
@ -420,6 +445,39 @@ return L.view.extend({
|
||||||
];
|
];
|
||||||
}),
|
}),
|
||||||
E('em', _('There are no active leases')));
|
E('em', _('There are no active leases')));
|
||||||
|
|
||||||
|
if (has_dhcpv6) {
|
||||||
|
cbi_update_table(mapEl.querySelector('#lease6_status_table'),
|
||||||
|
leases6.map(function(lease) {
|
||||||
|
var exp;
|
||||||
|
|
||||||
|
if (lease.expires === false)
|
||||||
|
exp = E('em', _('unlimited'));
|
||||||
|
else if (lease.expires <= 0)
|
||||||
|
exp = E('em', _('expired'));
|
||||||
|
else
|
||||||
|
exp = '%t'.format(lease.expires);
|
||||||
|
|
||||||
|
var hint = lease.macaddr ? hosts[lease.macaddr] : null,
|
||||||
|
name = hint ? (hint.name || hint.ipv4 || hint.ipv6) : null,
|
||||||
|
host = null;
|
||||||
|
|
||||||
|
if (name && lease.hostname && lease.hostname != name && lease.ip6addr != name)
|
||||||
|
host = '%s (%s)'.format(lease.hostname, name);
|
||||||
|
else if (lease.hostname)
|
||||||
|
host = lease.hostname;
|
||||||
|
else if (name)
|
||||||
|
host = name;
|
||||||
|
|
||||||
|
return [
|
||||||
|
host || '-',
|
||||||
|
lease.ip6addrs ? lease.ip6addrs.join(' ') : lease.ip6addr,
|
||||||
|
lease.duid,
|
||||||
|
exp
|
||||||
|
];
|
||||||
|
}),
|
||||||
|
E('em', _('There are no active leases')));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue