summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-network
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2019-07-07 20:14:18 +0200
committerJo-Philipp Wich <jo@mein.io>2019-07-07 20:14:18 +0200
commit875a96f6535a97b93d09af5756db53d91e83dc49 (patch)
tree25896d1b03af317ab4ff7e1e7f9f83a838dbec1a /modules/luci-mod-network
parent91afb6fae2527174f264c9008569783a79b49dae (diff)
luci-mod-network: switch hostname configuration to client side js
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'modules/luci-mod-network')
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js41
-rw-r--r--modules/luci-mod-network/luasrc/controller/admin/network.lua2
-rw-r--r--modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua31
3 files changed, 42 insertions, 32 deletions
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js
new file mode 100644
index 000000000..2a49b0481
--- /dev/null
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js
@@ -0,0 +1,41 @@
+'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();
+ }
+});
diff --git a/modules/luci-mod-network/luasrc/controller/admin/network.lua b/modules/luci-mod-network/luasrc/controller/admin/network.lua
index 6bd92b2d1..fac8d95a2 100644
--- a/modules/luci-mod-network/luasrc/controller/admin/network.lua
+++ b/modules/luci-mod-network/luasrc/controller/admin/network.lua
@@ -108,7 +108,7 @@ function index()
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
diff --git a/modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua b/modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua
deleted file mode 100644
index 46945af58..000000000
--- a/modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua
+++ /dev/null
@@ -1,31 +0,0 @@
--- 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