summaryrefslogtreecommitdiffhomepage
path: root/modules/freifunk/luasrc
diff options
context:
space:
mode:
authorManuel Munz <freifunk@somakoma.de>2010-11-17 22:45:36 +0000
committerManuel Munz <freifunk@somakoma.de>2010-11-17 22:45:36 +0000
commitb05459541234cf4902a57dea0865185210140ad5 (patch)
treee46fd1a222cfc053858c4f4cc1cfc9e6a3c32687 /modules/freifunk/luasrc
parentf00bf93f0739040b68fd53499652bcb00307fb8e (diff)
Freifunk: Add page to show services announced by olsrd
Diffstat (limited to 'modules/freifunk/luasrc')
-rw-r--r--modules/freifunk/luasrc/controller/freifunk/freifunk.lua4
-rw-r--r--modules/freifunk/luasrc/view/freifunk-services/services.htm85
2 files changed, 89 insertions, 0 deletions
diff --git a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua
index e4f34714d..d4d941308 100644
--- a/modules/freifunk/luasrc/controller/freifunk/freifunk.lua
+++ b/modules/freifunk/luasrc/controller/freifunk/freifunk.lua
@@ -74,6 +74,10 @@ function index()
entry({"freifunk", "map"}, template("freifunk-map/frame"), i18n("Karte"), 50)
entry({"freifunk", "map", "content"}, template("freifunk-map/map"), nil, 51)
+
+ entry({"freifunk", "services"}, template("freifunk-services/services"), i18n("Services"), 60)
+ entry({"freifunk", "services", "content"}, template("freifunk-services/services"), nil, 61)
+
end
local function fetch_olsrd()
diff --git a/modules/freifunk/luasrc/view/freifunk-services/services.htm b/modules/freifunk/luasrc/view/freifunk-services/services.htm
new file mode 100644
index 000000000..941f85591
--- /dev/null
+++ b/modules/freifunk/luasrc/view/freifunk-services/services.htm
@@ -0,0 +1,85 @@
+<%+header%>
+
+<%
+require("luci.fs")
+require("luci.util")
+
+-- check if nameservice plugin is enabled and where to find the services file
+local has_services = false
+local uci = require "luci.model.uci".cursor()
+uci:foreach("olsrd", "LoadPlugin", function(s)
+ if s.library == "olsrd_nameservice.so.0.3" then
+ if s.services_file then
+ has_services = true
+ services_file = s.services_file
+ else
+ has_services = true
+ services_file = "/var/run/services_olsr"
+ end
+ end
+end)
+
+
+function fetch_services()
+ local rawdata = luci.fs.readfile(services_file)
+
+ if #rawdata == 0 then
+ return nil
+ end
+
+ local data = {}
+
+ local tables = luci.util.split(luci.util.trim(rawdata), "\n", nil, true)
+ -- remove the first 3 lines
+ table.remove(tables,1)
+ table.remove(tables,1)
+ table.remove(tables,1)
+
+ -- store last line in last_update and remove it, then remove another empty line at the end
+ last_update=table.remove(tables)
+ table.remove(tables)
+
+ for i, tbl in ipairs(tables) do
+ local lines = luci.util.split(tbl, "\n", nil, true)
+ end
+
+ return tables
+end
+
+%>
+
+<% if has_services then %>
+ <h2><a id="content" name="content"><%:Services%></a></h2>
+ <br />
+
+ <table class="smalltext" cellspacing="0" cellpadding="6">
+ <tr>
+ <th><%:Url%></th>
+ <th><%:Source%></th>
+ </tr>
+
+ <%
+ table=fetch_services()
+ for k, line in ipairs(table) do
+ local field = {}
+ -- split line at # and |, 1=url, 2=proto, 3=description, 4=source
+ local field = luci.util.split(line, "[#|]", split, true)
+ %>
+ <tr><td>
+ <a href="<%=field[1]%>"><%=field[3]%></a>
+ </td>
+ <td>
+ <%=field[4]%>
+ </td>
+ </tr>
+ <%end%>
+
+ </table>
+ <br />
+ <%=last_update%>
+
+<%else%>
+ <%:No services can be shown, because olsrd is not running or the olsrd-nameservice Plugin is not loaded.%>
+<%end%>
+
+<%+footer%>