2020-03-27 09:27:18 +00:00
|
|
|
'use strict';
|
2020-04-09 12:39:09 +00:00
|
|
|
'require view';
|
2020-03-27 09:27:18 +00:00
|
|
|
'require rpc';
|
|
|
|
'require form';
|
|
|
|
|
2020-04-09 12:39:09 +00:00
|
|
|
return view.extend({
|
2020-03-27 09:27:18 +00:00
|
|
|
callHostHints: rpc.declare({
|
|
|
|
object: 'luci-rpc',
|
|
|
|
method: 'getHostHints',
|
|
|
|
expect: { '': {} }
|
|
|
|
}),
|
|
|
|
|
|
|
|
load: function() {
|
|
|
|
return this.callHostHints();
|
|
|
|
},
|
|
|
|
|
|
|
|
render: function(hosts) {
|
|
|
|
var m, s, o;
|
|
|
|
|
|
|
|
m = new form.Map('dhcp', _('Hostnames'));
|
|
|
|
|
|
|
|
s = m.section(form.GridSection, 'domain', _('Host entries'));
|
|
|
|
s.addremove = true;
|
|
|
|
s.anonymous = true;
|
|
|
|
s.sortable = true;
|
|
|
|
|
|
|
|
o = s.option(form.Value, 'name', _('Hostname'));
|
|
|
|
o.datatype = 'hostname';
|
|
|
|
o.rmempty = true;
|
|
|
|
|
|
|
|
o = s.option(form.Value, 'ip', _('IP address'));
|
|
|
|
o.datatype = 'ipaddr';
|
|
|
|
o.rmempty = true;
|
2021-06-25 17:45:23 +00:00
|
|
|
|
|
|
|
var ipaddrs = {};
|
|
|
|
|
|
|
|
Object.keys(hosts).forEach(function(mac) {
|
|
|
|
var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4);
|
|
|
|
|
|
|
|
for (var i = 0; i < addrs.length; i++)
|
|
|
|
ipaddrs[addrs[i]] = hosts[mac].name || mac;
|
|
|
|
});
|
|
|
|
|
|
|
|
L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
|
|
|
|
o.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4]));
|
2020-03-27 09:27:18 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
return m.render();
|
|
|
|
}
|
|
|
|
});
|