From 875a96f6535a97b93d09af5756db53d91e83dc49 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sun, 7 Jul 2019 20:14:18 +0200 Subject: [PATCH] luci-mod-network: switch hostname configuration to client side js Signed-off-by: Jo-Philipp Wich --- .../resources/view/network/hosts.js | 41 +++++++++++++++++++ .../luasrc/controller/admin/network.lua | 2 +- .../luasrc/model/cbi/admin_network/hosts.lua | 31 -------------- 3 files changed, 42 insertions(+), 32 deletions(-) create mode 100644 modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js delete mode 100644 modules/luci-mod-network/luasrc/model/cbi/admin_network/hosts.lua 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 --- Copyright 2010-2015 Jo-Philipp Wich --- 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 -- 2.25.1