6 var callLuciDHCPLeases
= rpc
.declare({
8 method
: 'getDHCPLeases',
12 return baseclass
.extend({
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 lases' }, [
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' }, _('Lease time 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 leases6' }, [
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' }, _('Lease time 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
);