6 var callLuciDHCPLeases = rpc.declare({
8 method: 'getDHCPLeases',
12 return baseclass.extend({
17 L.resolveDefault(callLuciDHCPLeases(), {}),
18 network.getHostHints()
22 renderLeases: function(data) {
23 var leases = Array.isArray(data[0].dhcp_leases) ? data[0].dhcp_leases : [],
24 leases6 = Array.isArray(data[0].dhcp6_leases) ? data[0].dhcp6_leases : [],
25 machints = data[1].getMACHints(false);
27 var table = E('div', { 'class': 'table' }, [
28 E('div', { 'class': 'tr table-titles' }, [
29 E('div', { 'class': 'th' }, _('Hostname')),
30 E('div', { 'class': 'th' }, _('IPv4-Address')),
31 E('div', { 'class': 'th' }, _('MAC-Address')),
32 E('div', { 'class': 'th' }, _('Leasetime remaining'))
36 cbi_update_table(table, leases.map(function(lease) {
39 if (lease.expires === false)
40 exp = E('em', _('unlimited'));
41 else if (lease.expires <= 0)
42 exp = E('em', _('expired'));
44 exp = '%t'.format(lease.expires);
47 lease.hostname || '-',
52 }), E('em', _('There are no active leases')));
54 var table6 = E('div', { 'class': 'table' }, [
55 E('div', { 'class': 'tr table-titles' }, [
56 E('div', { 'class': 'th' }, _('Host')),
57 E('div', { 'class': 'th' }, _('IPv6-Address')),
58 E('div', { 'class': 'th' }, _('DUID')),
59 E('div', { 'class': 'th' }, _('Leasetime remaining'))
63 cbi_update_table(table6, leases6.map(function(lease) {
66 if (lease.expires === false)
67 exp = E('em', _('unlimited'));
68 else if (lease.expires <= 0)
69 exp = E('em', _('expired'));
71 exp = '%t'.format(lease.expires);
73 var hint = lease.macaddr ? machints.filter(function(h) { return h[0] == lease.macaddr })[0] : null,
76 if (hint && lease.hostname && lease.hostname != hint[1] && lease.ip6addr != hint[1])
77 host = '%s (%s)'.format(lease.hostname, hint[1]);
78 else if (lease.hostname)
79 host = lease.hostname;
85 lease.ip6addrs ? lease.ip6addrs.join(' ') : lease.ip6addr,
89 }), E('em', _('There are no active leases')));
92 E('h3', _('Active DHCP Leases')),
94 E('h3', _('Active DHCPv6 Leases')),
99 render: function(data) {
100 if (L.hasSystemFeature('dnsmasq') || L.hasSystemFeature('odhcpd'))
101 return this.renderLeases(data);