diff options
author | Jo-Philipp Wich <jo@mein.io> | 2019-07-07 20:14:18 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2019-07-07 20:14:18 +0200 |
commit | 875a96f6535a97b93d09af5756db53d91e83dc49 (patch) | |
tree | 25896d1b03af317ab4ff7e1e7f9f83a838dbec1a /modules/luci-mod-network | |
parent | 91afb6fae2527174f264c9008569783a79b49dae (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')
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 |