From 68d499edb91de2d73f14d5dcc4d6328fff2e23ea Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Thu, 14 Aug 2008 20:33:30 +0000 Subject: [PATCH] modules/admin-full: Rewrote route configuration page --- i18n/english/luasrc/i18n/admin-core.en.lua | 5 +- i18n/german/luasrc/i18n/admin-core.de.lua | 6 +- libs/cbi/luasrc/view/cbi/tblsection.htm | 2 +- modules/admin-core/luasrc/tools/webadmin.lua | 18 ++++++ .../luasrc/controller/admin/network.lua | 10 +++- .../luasrc/controller/admin/status.lua | 1 - .../luasrc/model/cbi/admin_network/routes.lua | 58 ++++++++++++++++--- .../luasrc/view/admin_status/routes.htm | 42 -------------- .../luasrc/controller/freifunk/freifunk.lua | 1 - 9 files changed, 86 insertions(+), 57 deletions(-) delete mode 100644 modules/admin-full/luasrc/view/admin_status/routes.htm diff --git a/i18n/english/luasrc/i18n/admin-core.en.lua b/i18n/english/luasrc/i18n/admin-core.en.lua index 767608722..a34530b54 100644 --- a/i18n/english/luasrc/i18n/admin-core.en.lua +++ b/i18n/english/luasrc/i18n/admin-core.en.lua @@ -245,9 +245,10 @@ network_interface_demand_desc = "Time (in s) after which an unused connection wi network_interface_keepalive = "Keep-Alive" network_interface_keepalive_desc = "Number of failed connection tests to initiate automatic reconnect" -a_n_routes = "Static Routes" -a_n_routes1 = [[With Static Routes you can specify through which +a_n_routes1 = [[Routes specify over which interface and gateway a certain host or network can be reached.]] +a_n_routes_static = [[Static Routes]] +a_n_routes_kernel4 = [[Kernel IPv4-Routes]] a_n_r_target1 = "host-IP or network" a_n_r_netmask1 = "if target is a network" diff --git a/i18n/german/luasrc/i18n/admin-core.de.lua b/i18n/german/luasrc/i18n/admin-core.de.lua index 8a06f7098..8e214ba4b 100644 --- a/i18n/german/luasrc/i18n/admin-core.de.lua +++ b/i18n/german/luasrc/i18n/admin-core.de.lua @@ -28,10 +28,12 @@ a_n_ptp1 = [[Punkt-zu-Punkt Verbindungen Verbindung zum Internetgateway eines Internetzugangsanbieters aufzubauen.]] a_n_r_netmask1 = [[falls Ziel ein Netzwerk ist]] a_n_r_target1 = [[Host-IP oder Netzwerk]] -a_n_routes = [[Statische Routen]] -a_n_routes1 = [[Statische Routen geben an, +a_n_routes = [[Routen]] +a_n_routes1 = [[Routen geben an, über welche Schnittstelle und welches Gateway ein bestimmter Host oder ein bestimmtes Netzwerk erreicht werden kann.]] +a_n_routes_static = [[Statische Routen]] +a_n_routes_kernel4 = [[Kernel IPv4-Routen]] a_n_switch = [[Switch]] a_n_switch1 = [[Die Netzwerkschnittstellen am Router können zu verschienden VLANs zusammengefasst werden, in denen Geräte miteinander direkt diff --git a/libs/cbi/luasrc/view/cbi/tblsection.htm b/libs/cbi/luasrc/view/cbi/tblsection.htm index a6944881a..d03d6f497 100644 --- a/libs/cbi/luasrc/view/cbi/tblsection.htm +++ b/libs/cbi/luasrc/view/cbi/tblsection.htm @@ -59,7 +59,7 @@ end isempty = false scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" } -%> - + <% if not self.anonymous then -%>

<%=k%>

<%- end %> diff --git a/modules/admin-core/luasrc/tools/webadmin.lua b/modules/admin-core/luasrc/tools/webadmin.lua index d6d952117..57941c966 100644 --- a/modules/admin-core/luasrc/tools/webadmin.lua +++ b/modules/admin-core/luasrc/tools/webadmin.lua @@ -116,4 +116,22 @@ function firewall_find_zone(name) ) return find +end + +function iface_get_network(iface) + local net + + luci.model.uci.foreach("network", "interface", + function (section) + local ifname = luci.model.uci.get_statevalue( + "network", section[".name"], "ifname" + ) + + if iface == ifname then + net = section[".name"] + end + end + ) + + return net end \ No newline at end of file diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index cc79e57a5..76145294c 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -54,6 +54,14 @@ function index() local page = node("admin", "network", "routes") page.target = cbi("admin_network/routes") - page.title = i18n("a_n_routes", "Routen") + page.title = i18n("a_n_routes") page.order = 40 + page.leaf = true + + entry( + {"admin", "network", "routes", "static"}, + function() end, + i18n("a_n_routes_static") + ) + end \ No newline at end of file diff --git a/modules/admin-full/luasrc/controller/admin/status.lua b/modules/admin-full/luasrc/controller/admin/status.lua index ea7ad1b03..81686d906 100644 --- a/modules/admin-full/luasrc/controller/admin/status.lua +++ b/modules/admin-full/luasrc/controller/admin/status.lua @@ -19,7 +19,6 @@ function index() entry({"admin", "status"}, template("admin_status/index"), i18n("status", "Status"), 20) entry({"admin", "status", "syslog"}, call("action_syslog"), i18n("syslog", "Systemprotokoll")) - entry({"admin", "status", "routes"}, template("admin_status/routes"), i18n("routingtable"), 10) entry({"admin", "status", "iwscan"}, template("admin_status/iwscan"), i18n("wlanscan"), 20) end diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua b/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua index 15f994c16..ec659a521 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/routes.lua @@ -11,20 +11,64 @@ You may obtain a copy of the License at $Id$ ]]-- +require("luci.tools.webadmin") m = Map("network", translate("a_n_routes"), translate("a_n_routes1")) -s = m:section(TypedSection, "route", "") +if not arg or not arg[1] then + local routes = luci.sys.net.routes() + + v = m:section(TypedSection, "_virtual", translate("a_n_routes_kernel4")) + v.anonymous = true + v.rowcolors = true + v.template = "cbi/tblsection" + + function v.cfgsections(self) + local sections = {} + for i=1,#routes do + table.insert(sections, i) + end + return sections + end + + net = v:option(DummyValue, "iface", translate("network")) + function net.cfgvalue(self, section) + return luci.tools.webadmin.iface_get_network(routes[section].Iface) + or routes[section].Iface + end + + target = v:option(DummyValue, "target", translate("target")) + function target.cfgvalue(self, section) + return luci.ip.Hex(routes[section].Destination, 32):string() + end + + netmask = v:option(DummyValue, "netmask", translate("netmask")) + function netmask.cfgvalue(self, section) + return luci.ip.Hex(routes[section].Mask, 32):string() + end + + gateway = v:option(DummyValue, "gateway", translate("gateway")) + function gateway.cfgvalue(self, section) + return luci.ip.Hex(routes[section].Gateway, 32):string() + end + + metric = v:option(DummyValue, "metric", translate("metric")) + function metric.cfgvalue(self, section) + return routes[section].Metric + end +end + + +s = m:section(TypedSection, "route", translate("a_n_routes_static")) s.addremove = true s.anonymous = true s.template = "cbi/tblsection" iface = s:option(ListValue, "interface", translate("interface")) -luci.model.uci.foreach("network", "interface", - function (section) - if section[".name"] ~= "loopback" then - iface:value(section[".name"]) - end - end) +luci.tools.webadmin.cbi_add_networks(iface) + +if not arg or not arg[1] then + net.titleref = iface.titleref +end s:option(Value, "target", translate("target"), translate("a_n_r_target1")) diff --git a/modules/admin-full/luasrc/view/admin_status/routes.htm b/modules/admin-full/luasrc/view/admin_status/routes.htm deleted file mode 100644 index bfee6227e..000000000 --- a/modules/admin-full/luasrc/view/admin_status/routes.htm +++ /dev/null @@ -1,42 +0,0 @@ -<%# -LuCI - Lua Configuration Interface -Copyright 2008 Steven Barth -Copyright 2008 Jo-Philipp Wich - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ - --%> -<%+header%> -

<%:routes%>

- -
- - - - - - - - -<% -local routes = luci.sys.net.routes() - -for i, r in pairs(routes) do -%> - - - - - - - -<% end %> -
<%:target%><%:routes_netmask%><%:routes_gateway%><%:routes_metric%><%:interface%>
<%=luci.ip.Hex(r.Destination, 32):string()%><%=luci.ip.Hex(r.Mask, 32):string()%><%=luci.ip.Hex(r.Gateway, 32):string()%><%=r.Metric%><%=r.Iface%>
-
-<%+footer%> \ No newline at end of file diff --git a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua index e4ab2bba4..717972636 100644 --- a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua +++ b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua @@ -45,7 +45,6 @@ function index() page.setuser = false page.setgroup = false - assign({"freifunk", "status", "routes"}, {"admin", "status", "routes"}, "Routingtabelle", 10) assign({"freifunk", "status", "iwscan"}, {"admin", "status", "iwscan"}, "WLAN-Scan", 20) assign({"freifunk", "olsr"}, {"admin", "status", "olsr"}, "OLSR", 30) -- 2.25.1