--- /dev/null
+'use strict';
+'require rpc';
+'require form';
+
+return L.view.extend({
+ callHostHints: rpc.declare({
+ object: 'luci',
+ method: 'host_hints'
+ }),
+
+ 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;
+ L.sortedKeys(hosts, 'ipv4', 'addr').forEach(function(mac) {
+ o.value(hosts[mac].ipv4, '%s (%s)'.format(
+ hosts[mac].ipv4,
+ hosts[mac].name || mac
+ ));
+ });
+
+ return m.render();
+ }
+});
page.order = 30
page = node("admin", "network", "hosts")
- page.target = cbi("admin_network/hosts")
+ page.target = view("network/hosts")
page.title = _("Hostnames")
page.order = 40
end
+++ /dev/null
--- Copyright 2008 Steven Barth <steven@midlink.org>
--- Copyright 2010-2015 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-local ipc = require "luci.ip"
-local sys = require "luci.sys"
-
-m = Map("dhcp", translate("Hostnames"))
-
-s = m:section(TypedSection, "domain", translate("Host entries"))
-s.addremove = true
-s.anonymous = true
-s.template = "cbi/tblsection"
-
-hn = s:option(Value, "name", translate("Hostname"))
-hn.datatype = "hostname"
-hn.rmempty = true
-
-ip = s:option(Value, "ip", translate("IP address"))
-ip.datatype = "ipaddr"
-ip.rmempty = true
-
-sys.net.host_hints(function(mac, v4, v6, name)
- v6 = v6 and ipc.IPv6(v6)
-
- if v4 or (v6 and not v6:is6linklocal()) then
- ip:value(tostring(v4 or v6), "%s (%s)" %{ tostring(v4 or v6), name or mac })
- end
-end)
-
-return m