modules/admin-full: Rewrote route configuration page
This commit is contained in:
parent
7726e73725
commit
68d499edb9
9 changed files with 86 additions and 57 deletions
|
@ -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 = "Keep-Alive"
|
||||||
network_interface_keepalive_desc = "Number of failed connection tests to initiate automatic reconnect"
|
network_interface_keepalive_desc = "Number of failed connection tests to initiate automatic reconnect"
|
||||||
|
|
||||||
a_n_routes = "Static Routes"
|
a_n_routes1 = [[Routes specify over which
|
||||||
a_n_routes1 = [[With Static Routes you can specify through which
|
|
||||||
interface and gateway a certain host or network can be reached.]]
|
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_target1 = "host-IP or network"
|
||||||
a_n_r_netmask1 = "if target is a network"
|
a_n_r_netmask1 = "if target is a network"
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,12 @@ a_n_ptp1 = [[Punkt-zu-Punkt Verbindungen
|
||||||
Verbindung zum Internetgateway eines Internetzugangsanbieters aufzubauen.]]
|
Verbindung zum Internetgateway eines Internetzugangsanbieters aufzubauen.]]
|
||||||
a_n_r_netmask1 = [[falls Ziel ein Netzwerk ist]]
|
a_n_r_netmask1 = [[falls Ziel ein Netzwerk ist]]
|
||||||
a_n_r_target1 = [[Host-IP oder Netzwerk]]
|
a_n_r_target1 = [[Host-IP oder Netzwerk]]
|
||||||
a_n_routes = [[Statische Routen]]
|
a_n_routes = [[Routen]]
|
||||||
a_n_routes1 = [[Statische Routen geben an,
|
a_n_routes1 = [[Routen geben an,
|
||||||
über welche Schnittstelle und welches Gateway ein bestimmter Host
|
über welche Schnittstelle und welches Gateway ein bestimmter Host
|
||||||
oder ein bestimmtes Netzwerk erreicht werden kann.]]
|
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_switch = [[Switch]]
|
||||||
a_n_switch1 = [[Die Netzwerkschnittstellen am Router
|
a_n_switch1 = [[Die Netzwerkschnittstellen am Router
|
||||||
können zu verschienden VLANs zusammengefasst werden, in denen Geräte miteinander direkt
|
können zu verschienden VLANs zusammengefasst werden, in denen Geräte miteinander direkt
|
||||||
|
|
|
@ -59,7 +59,7 @@ end
|
||||||
isempty = false
|
isempty = false
|
||||||
scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
|
scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
|
||||||
-%>
|
-%>
|
||||||
<tr class="cbi-section-table-row<% if self.extedit then %> cbi-rowstyle-<%=rowstyle()%><% end %>" id="cbi-<%=self.config%>-<%=section%>">
|
<tr class="cbi-section-table-row<% if self.extedit or self.rowcolors then %> cbi-rowstyle-<%=rowstyle()%><% end %>" id="cbi-<%=self.config%>-<%=section%>">
|
||||||
<% if not self.anonymous then -%>
|
<% if not self.anonymous then -%>
|
||||||
<th><h3><%=k%></h3></th>
|
<th><h3><%=k%></h3></th>
|
||||||
<%- end %>
|
<%- end %>
|
||||||
|
|
|
@ -116,4 +116,22 @@ function firewall_find_zone(name)
|
||||||
)
|
)
|
||||||
|
|
||||||
return find
|
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
|
end
|
|
@ -54,6 +54,14 @@ function index()
|
||||||
|
|
||||||
local page = node("admin", "network", "routes")
|
local page = node("admin", "network", "routes")
|
||||||
page.target = cbi("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.order = 40
|
||||||
|
page.leaf = true
|
||||||
|
|
||||||
|
entry(
|
||||||
|
{"admin", "network", "routes", "static"},
|
||||||
|
function() end,
|
||||||
|
i18n("a_n_routes_static")
|
||||||
|
)
|
||||||
|
|
||||||
end
|
end
|
|
@ -19,7 +19,6 @@ function index()
|
||||||
|
|
||||||
entry({"admin", "status"}, template("admin_status/index"), i18n("status", "Status"), 20)
|
entry({"admin", "status"}, template("admin_status/index"), i18n("status", "Status"), 20)
|
||||||
entry({"admin", "status", "syslog"}, call("action_syslog"), i18n("syslog", "Systemprotokoll"))
|
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)
|
entry({"admin", "status", "iwscan"}, template("admin_status/iwscan"), i18n("wlanscan"), 20)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -11,20 +11,64 @@ You may obtain a copy of the License at
|
||||||
|
|
||||||
$Id$
|
$Id$
|
||||||
]]--
|
]]--
|
||||||
|
require("luci.tools.webadmin")
|
||||||
m = Map("network", translate("a_n_routes"), translate("a_n_routes1"))
|
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.addremove = true
|
||||||
s.anonymous = true
|
s.anonymous = true
|
||||||
s.template = "cbi/tblsection"
|
s.template = "cbi/tblsection"
|
||||||
|
|
||||||
iface = s:option(ListValue, "interface", translate("interface"))
|
iface = s:option(ListValue, "interface", translate("interface"))
|
||||||
luci.model.uci.foreach("network", "interface",
|
luci.tools.webadmin.cbi_add_networks(iface)
|
||||||
function (section)
|
|
||||||
if section[".name"] ~= "loopback" then
|
if not arg or not arg[1] then
|
||||||
iface:value(section[".name"])
|
net.titleref = iface.titleref
|
||||||
end
|
end
|
||||||
end)
|
|
||||||
|
|
||||||
s:option(Value, "target", translate("target"), translate("a_n_r_target1"))
|
s:option(Value, "target", translate("target"), translate("a_n_r_target1"))
|
||||||
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
<%#
|
|
||||||
LuCI - Lua Configuration Interface
|
|
||||||
Copyright 2008 Steven Barth <steven@midlink.org>
|
|
||||||
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
|
|
||||||
|
|
||||||
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%>
|
|
||||||
<h1><%:routes%></h1>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
<table cellspacing="0" cellpadding="6" class="smalltext">
|
|
||||||
<tr>
|
|
||||||
<th><%:target%></th>
|
|
||||||
<th><%:routes_netmask%></th>
|
|
||||||
<th><%:routes_gateway%></th>
|
|
||||||
<th><%:routes_metric%></th>
|
|
||||||
<th><%:interface%></th>
|
|
||||||
</tr>
|
|
||||||
<%
|
|
||||||
local routes = luci.sys.net.routes()
|
|
||||||
|
|
||||||
for i, r in pairs(routes) do
|
|
||||||
%>
|
|
||||||
<tr>
|
|
||||||
<td><%=luci.ip.Hex(r.Destination, 32):string()%></td>
|
|
||||||
<td><%=luci.ip.Hex(r.Mask, 32):string()%></td>
|
|
||||||
<td><%=luci.ip.Hex(r.Gateway, 32):string()%></td>
|
|
||||||
<td><%=r.Metric%></td>
|
|
||||||
<td><%=r.Iface%></td>
|
|
||||||
</tr>
|
|
||||||
<% end %>
|
|
||||||
</table>
|
|
||||||
<br />
|
|
||||||
<%+footer%>
|
|
|
@ -45,7 +45,6 @@ function index()
|
||||||
page.setuser = false
|
page.setuser = false
|
||||||
page.setgroup = 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", "status", "iwscan"}, {"admin", "status", "iwscan"}, "WLAN-Scan", 20)
|
||||||
|
|
||||||
assign({"freifunk", "olsr"}, {"admin", "status", "olsr"}, "OLSR", 30)
|
assign({"freifunk", "olsr"}, {"admin", "status", "olsr"}, "OLSR", 30)
|
||||||
|
|
Loading…
Reference in a new issue