diff options
author | Steven Barth <steven@midlink.org> | 2008-06-02 20:16:05 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-06-02 20:16:05 +0000 |
commit | 561b0cfaa3fb8163d9ec74a3f96fd5b22ad54f33 (patch) | |
tree | 8b4b1765c70bae824bbad3006021cf7a4a775a34 /modules/admin-core/luasrc | |
parent | 953510ccac9b9c6b3c1d8634897c0dddc92913e4 (diff) |
* Moved Freifunk status pages to admin-core and linked them in Freifunk
* luci/web: Added assign() to dispatcher to reference foreign nodes in the dispatching tree
Diffstat (limited to 'modules/admin-core/luasrc')
10 files changed, 373 insertions, 0 deletions
diff --git a/modules/admin-core/luasrc/controller/admin/status.lua b/modules/admin-core/luasrc/controller/admin/status.lua index 223f54b295..afd6804f79 100644 --- a/modules/admin-core/luasrc/controller/admin/status.lua +++ b/modules/admin-core/luasrc/controller/admin/status.lua @@ -6,6 +6,8 @@ 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"), "Routingtabelle", 10) + entry({"admin", "status", "iwscan"}, template("admin_status/iwscan"), "WLAN-Scan", 20) end function action_syslog() diff --git a/modules/admin-core/luasrc/controller/admin/status_olsr.lua b/modules/admin-core/luasrc/controller/admin/status_olsr.lua new file mode 100644 index 0000000000..cadda546ef --- /dev/null +++ b/modules/admin-core/luasrc/controller/admin/status_olsr.lua @@ -0,0 +1,163 @@ +module("luci.controller.admin.status_olsr", package.seeall) +require("luci.sys") + +function index() + local page = node("admin", "status", "olsr") + page.target = call("action_index") + page.title = "OLSR" + + local page = node("admin", "status", "olsr", "routes") + page.target = call("action_routes") + page.title = "Routen" + page.order = 10 + + local page = node("admin", "status", "olsr", "topology") + page.target = call("action_topology") + page.title = "Topologie" + page.order = 20 + + local page = node("admin", "status", "olsr", "hna") + page.target = call("action_hna") + page.title = "HNA" + page.order = 30 + + local page = node("admin", "status", "olsr", "mid") + page.target = call("action_mid") + page.title = "MID" + page.order = 50 +end + +function action_index() + local data = fetch_txtinfo("links") + + if not data or not data.Links then + luci.template.render("status-olsr/error_olsr") + return nil + end + + local function compare(a, b) + if tonumber(a.ETX) == 0 then + return false + end + + if tonumber(b.ETX) == 0 then + return true + end + + return tonumber(a.ETX) < tonumber(b.ETX) + end + + table.sort(data.Links, compare) + + luci.template.render("status-olsr/index", {links=data.Links}) +end + +function action_routes() + local data = fetch_txtinfo("routes") + + if not data or not data.Routes then + luci.template.render("status-olsr/error_olsr") + return nil + end + + local function compare(a, b) + if tonumber(a.ETX) == 0 then + return false + end + + if tonumber(b.ETX) == 0 then + return true + end + + return tonumber(a.ETX) < tonumber(b.ETX) + end + + table.sort(data.Routes, compare) + + luci.template.render("status-olsr/routes", {routes=data.Routes}) +end + +function action_topology() + local data = fetch_txtinfo("topology") + + if not data or not data.Topology then + luci.template.render("status-olsr/error_olsr") + return nil + end + + local function compare(a, b) + return a["Destination IP"] < b["Destination IP"] + end + + table.sort(data.Topology, compare) + + luci.template.render("status-olsr/topology", {routes=data.Topology}) +end + +function action_hna() + local data = fetch_txtinfo("hna") + + if not data or not data.HNA then + luci.template.render("status-olsr/error_olsr") + return nil + end + + local function compare(a, b) + return a.Network < b.Network + end + + table.sort(data.HNA, compare) + + luci.template.render("status-olsr/hna", {routes=data.HNA}) +end + +function action_mid() + local data = fetch_txtinfo("mid") + + if not data or not data.MID then + luci.template.render("status-olsr/error_olsr") + return nil + end + + local function compare(a, b) + return a.IP < b.IP + end + + table.sort(data.MID, compare) + + luci.template.render("status-olsr/mid", {mids=data.MID}) +end + + +-- Internal +function fetch_txtinfo(otable) + otable = otable or "" + local rawdata = luci.sys.httpget("http://127.0.0.1:2006/"..otable) + + if #rawdata == 0 then + return nil + end + + local data = {} + + local tables = luci.util.split(luci.util.trim(rawdata), "\n\n") + + + for i, tbl in ipairs(tables) do + local lines = luci.util.split(tbl, "\n") + local name = table.remove(lines, 1):sub(8) + local keys = luci.util.split(table.remove(lines, 1), "\t") + + data[name] = {} + + for j, line in ipairs(lines) do + local fields = luci.util.split(line, "\t") + data[name][j] = {} + for k, key in pairs(keys) do + data[name][j][key] = fields[k] + end + end + end + + return data +end
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/admin_status/iwscan.htm b/modules/admin-core/luasrc/view/admin_status/iwscan.htm new file mode 100644 index 0000000000..adba2d23e7 --- /dev/null +++ b/modules/admin-core/luasrc/view/admin_status/iwscan.htm @@ -0,0 +1,38 @@ +<%+header%> +<h1><%:iwscan WLAN-Scan%></h1> +<p><%:iwscan1 Drahtlosnetzwerke in der lokalen Umgebung des Routers:%></p> + +<br /> +<table cellspacing="0" cellpadding="6" class="smalltext"> +<tr> +<th><%:interface Schnittstelle%></th> +<th><%:essid ESSID%></th> +<th><%:bssid BSSID%></th> +<th><%:mode Modus%></th> +<th><%:channel Kanal%></th> +<th><%:encr Vers.%></th> +<th><%:link Verb.%></th> +<th><%:signal Signal%></th> +<th><%:noise Rausch%></th> +</tr> +<%for iface, cells in pairs(luci.sys.wifi.iwscan()) do + for i, cell in ipairs(cells) do +%> +<tr> +<td><%=iface%></td> +<td><%=cell.ESSID%></td> +<td><%=cell.Address%></td> +<td><%=cell.Mode%></td> +<td><%=(cell.Channel or cell.Frequency or "")%></td> +<td><%=cell["Encryption key"]%></td> +<td><%=cell.Quality%></td> +<td><%=cell["Signal level"]%></td> +<td><%=cell["Noise level"]%></td> +</tr> +<% + end +end +%> +</table> +<br /> +<%+footer%>
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/admin_status/routes.htm b/modules/admin-core/luasrc/view/admin_status/routes.htm new file mode 100644 index 0000000000..382b8290f2 --- /dev/null +++ b/modules/admin-core/luasrc/view/admin_status/routes.htm @@ -0,0 +1,28 @@ +<%+header%> +<h1><%:routes Routen%></h1> + +<br /> +<table cellspacing="0" cellpadding="6" class="smalltext"> +<tr> +<th><%:target Ziel%></th> +<th><%:netmask Netzmaske%></th> +<th><%:gateway Gateway%></th> +<th><%:metric Metrik%></th> +<th><%:iface Schnittstelle%></th> +</tr> +<% +local routes = luci.sys.net.routes() + +for i, r in pairs(routes) do +%> +<tr> +<td><%=luci.sys.net.hexip4(r.Destination)%></td> +<td><%=luci.sys.net.hexip4(r.Mask)%></td> +<td><%=luci.sys.net.hexip4(r.Gateway)%></td> +<td><%=r.Metric%></td> +<td><%=r.Iface%></td> +</tr> +<% end %> +</table> +<br /> +<%+footer%>
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/status-olsr/error_olsr.htm b/modules/admin-core/luasrc/view/status-olsr/error_olsr.htm new file mode 100644 index 0000000000..25426f50d7 --- /dev/null +++ b/modules/admin-core/luasrc/view/status-olsr/error_olsr.htm @@ -0,0 +1,6 @@ +<%+header%> +<h1><%:olsr OLSR%></h1> +<p class="error"><%:olsrerror1 Es konnte keine Verbindung zum OLSR-Daemon hergestellt werden!%></p> +<p><%:olsrerror2 Um die Statusinformationen abfragen zu können muss der OLSR-Daemon gestartet +und das Plugin "txtinfo" geladen sein.%></p> +<%+footer%>
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/status-olsr/hna.htm b/modules/admin-core/luasrc/view/status-olsr/hna.htm new file mode 100644 index 0000000000..c13369f426 --- /dev/null +++ b/modules/admin-core/luasrc/view/status-olsr/hna.htm @@ -0,0 +1,17 @@ +<%+header%> +<h1><%:olsrhna OLSR-HNA%></h1> +<br /> +<table cellspacing="0" cellpadding="6"> +<tr> +<th><%:destination Ziel%></th> +<th><%:gateway Gateway%></th> +</tr> +<% for k, route in ipairs(routes) do %> +<tr> +<td><%=route.Network%>/<%=route.Netmask%></td> +<td><a href="http://<%=route.Gateway%>"><%=route.Gateway%></a></td> +</tr> +<% end %> +</table> +<br /> +<%+footer%>
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/status-olsr/index.htm b/modules/admin-core/luasrc/view/status-olsr/index.htm new file mode 100644 index 0000000000..0633d1f456 --- /dev/null +++ b/modules/admin-core/luasrc/view/status-olsr/index.htm @@ -0,0 +1,43 @@ +<%+header%> +<h1><%:olsrlinks OLSR-Verbindungen%></h1> +<p><%:olsrlinks1 Übersicht über aktuell bestehende OLSR-Verbindungen%></p> +<br /> +<table cellspacing="0" cellpadding="6"> +<tr> +<th><%:destination Ziel%></th> +<th><%:local Lokal%></th> +<th>LQ</th> +<th>NLQ</th> +<th>ETX</th> +</tr> +<% for k, link in ipairs(links) do + local color = "#bb3333" + + link.ETX = tonumber(link.ETX) + if link.ETX == 0 then + color = "#bb3333" + elseif link.ETX < 4 then + color = "#00cc00" + elseif link.ETX < 10 then + color = "#ffcb05" + elseif link.ETX < 100 then + color = "#ff6600" + end +%> +<tr> +<td><a href="http://<%=link["remote IP"]%>"><%=link["remote IP"]%></a></td> +<td><%=link["Local IP"]%></td> +<td><%=link.LinkQuality%></td> +<td><%=link.NLQ%></td> +<td style="background-color:<%=color%>"><%=link.ETX%></td> +</tr> +<% end %> +</table> +<br /> +<h3><%:legend Legende%>:</h3> +<ul> +<li><strong>LQ: </strong><%:lq1 Erfolgsquote gesendeter Pakete%></li> +<li><strong>NLQ: </strong><%:nlq1 Erfolgsquote empfangener Pakete%></li> +<li><strong>ETX: </strong><%:etx1 Zu erwartende Sendeversuche pro Paket%></li> +</ul> +<%+footer%>
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/status-olsr/mid.htm b/modules/admin-core/luasrc/view/status-olsr/mid.htm new file mode 100644 index 0000000000..6553237ea5 --- /dev/null +++ b/modules/admin-core/luasrc/view/status-olsr/mid.htm @@ -0,0 +1,17 @@ +<%+header%> +<h1><%:olsrmid OLSR-MID%></h1> +<br /> +<table cellspacing="0" cellpadding="6"> +<tr> +<th><%:node Knoten%></th> +<th><%:aliases Aliasse%></th> +</tr> +<% for k, mid in ipairs(mids) do %> +<tr> +<td><a href="http://<%=mid.IP%>"><%=mid.IP%></a></td> +<td><%=mid.Aliases%></td> +</tr> +<% end %> +</table> +<br /> +<%+footer%>
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/status-olsr/routes.htm b/modules/admin-core/luasrc/view/status-olsr/routes.htm new file mode 100644 index 0000000000..f3a0fd3366 --- /dev/null +++ b/modules/admin-core/luasrc/view/status-olsr/routes.htm @@ -0,0 +1,36 @@ +<%+header%> +<h1><%:olsrlinks OLSR-Routen%></h1> +<br /> +<table cellspacing="0" cellpadding="6"> +<tr> +<th><%:destination Ziel%></th> +<th><%:gateway Gateway%></th> +<th><%:interface Schnittstelle%></th> +<th><%:metric Metrik%></th> +<th>ETX</th> +</tr> +<% for k, route in ipairs(routes) do + local color = "#bb3333" + + route.ETX = tonumber(route.ETX) + if route.ETX == 0 then + color = "#bb3333" + elseif route.ETX < 4 then + color = "#00cc00" + elseif route.ETX < 10 then + color = "#ffcb05" + elseif route.ETX < 100 then + color = "#ff6600" + end +%> +<tr> +<td><%=route.Destination%></td> +<td><%=route.Gateway%></td> +<td><%=route.Interface%></td> +<td><%=route.Metric%></td> +<td style="background-color:<%=color%>"><%=route.ETX%></td> +</tr> +<% end %> +</table> +<br /> +<%+footer%>
\ No newline at end of file diff --git a/modules/admin-core/luasrc/view/status-olsr/topology.htm b/modules/admin-core/luasrc/view/status-olsr/topology.htm new file mode 100644 index 0000000000..c622026d48 --- /dev/null +++ b/modules/admin-core/luasrc/view/status-olsr/topology.htm @@ -0,0 +1,23 @@ +<%+header%> +<h1><%:olsrtopo OLSR-Topologie%></h1> +<br /> +<table cellspacing="0" cellpadding="6"> +<tr> +<th><%:destination Ziel%></th> +<th><%:lasthop Letzter Router%></th> +<th>LQ</th> +<th>ILQ</th> +<th>ETX</th> +</tr> +<% for k, route in ipairs(routes) do %> +<tr> +<td><a href="http://<%=route["Destination IP"]%>"><%=route["Destination IP"]%></a></td> +<td><a href="http://<%=route["Last hop IP"]%>"><%=route["Last hop IP"]%></a></td> +<td><%=route.LQ%></td> +<td><%=route.ILQ%></td> +<td><%=route.ETX%></td> +</tr> +<% end %> +</table> +<br /> +<%+footer%>
\ No newline at end of file |