modules/admin-full: Rewrote route configuration page
authorSteven Barth <steven@midlink.org>
Thu, 14 Aug 2008 20:33:30 +0000 (20:33 +0000)
committerSteven Barth <steven@midlink.org>
Thu, 14 Aug 2008 20:33:30 +0000 (20:33 +0000)
i18n/english/luasrc/i18n/admin-core.en.lua
i18n/german/luasrc/i18n/admin-core.de.lua
libs/cbi/luasrc/view/cbi/tblsection.htm
modules/admin-core/luasrc/tools/webadmin.lua
modules/admin-full/luasrc/controller/admin/network.lua
modules/admin-full/luasrc/controller/admin/status.lua
modules/admin-full/luasrc/model/cbi/admin_network/routes.lua
modules/admin-full/luasrc/view/admin_status/routes.htm [deleted file]
modules/freifunk/luasrc/controller/freifunk/freifunk.lua

index 7676087..a34530b 100644 (file)
@@ -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"
 
index 8a06f70..8e214ba 100644 (file)
@@ -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
index a694488..d03d6f4 100644 (file)
@@ -59,7 +59,7 @@ end
                                        isempty = false
                                        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 -%>
                                        <th><h3><%=k%></h3></th>
                                <%- end %>
index d6d9521..57941c9 100644 (file)
@@ -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
index cc79e57..7614529 100644 (file)
@@ -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
index ea7ad1b..81686d9 100644 (file)
@@ -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
 
index 15f994c..ec659a5 100644 (file)
@@ -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 (file)
index bfee622..0000000
+++ /dev/null
@@ -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%>
\ No newline at end of file
index e4ab2bb..7179726 100644 (file)
@@ -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)