applications/luci-olsr-services: Move services away from mod-freifunk and make it...
authorManuel Munz <freifunk@somakoma.de>
Thu, 10 Feb 2011 14:58:44 +0000 (14:58 +0000)
committerManuel Munz <freifunk@somakoma.de>
Thu, 10 Feb 2011 14:58:44 +0000 (14:58 +0000)
applications/luci-olsr-services/Makefile [new file with mode: 0644]
applications/luci-olsr-services/luasrc/controller/services.lua [new file with mode: 0644]
applications/luci-olsr-services/luasrc/view/freifunk-services/services.htm [new file with mode: 0644]
contrib/package/luci/Makefile
modules/freifunk/luasrc/controller/freifunk/freifunk.lua
modules/freifunk/luasrc/view/freifunk-services/services.htm [deleted file]

diff --git a/applications/luci-olsr-services/Makefile b/applications/luci-olsr-services/Makefile
new file mode 100644 (file)
index 0000000..572afba
--- /dev/null
@@ -0,0 +1,4 @@
+PO =
+
+include ../../build/config.mk
+include ../../build/module.mk
diff --git a/applications/luci-olsr-services/luasrc/controller/services.lua b/applications/luci-olsr-services/luasrc/controller/services.lua
new file mode 100644 (file)
index 0000000..cc1a2f6
--- /dev/null
@@ -0,0 +1,17 @@
+module "luci.controller.services"
+
+function index()
+       local uci = require "luci.model.uci".cursor()
+       local i18n = luci.i18n.translate
+
+       uci:foreach("olsrd", "LoadPlugin", function(s)
+               if s.library == "olsrd_nameservice.so.0.3" then
+                       has_serv = true
+               end
+       end)
+
+       if has_serv then
+               entry({"freifunk", "services"}, template("freifunk-services/services"), i18n("Services"), 60)
+       end
+end
+
diff --git a/applications/luci-olsr-services/luasrc/view/freifunk-services/services.htm b/applications/luci-olsr-services/luasrc/view/freifunk-services/services.htm
new file mode 100644 (file)
index 0000000..c9385cd
--- /dev/null
@@ -0,0 +1,90 @@
+<%+header%>
+
+<%
+local fs  = require "luci.fs"
+local utl = 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 and fs.access(s.services_file) then
+                       has_services = true
+                       services_file = s.services_file
+               else
+                       if fs.access("/var/run/services_olsr") then
+                               has_services = true
+                               services_file = "/var/run/services_olsr"
+                       end
+               end
+       end
+end)
+
+
+function fetch_services()
+       local rawdata = fs.readfile(services_file)
+
+       if #rawdata == 0 then
+               return nil
+       end
+
+       local data = {}
+
+       local tables = utl.split(utl.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 = utl.split(tbl, "\n", nil, true)
+       end
+       
+       return tables
+end
+%>
+
+<% if has_services then %>
+<div class="cbi-map">
+       <h2><a id="content" name="content"><%:Services%></a></h2>
+       <div class="cbi-map-descr"/>
+                <div class="cbi-section">
+                        <div class="cbi-section-node">
+                                <table class="cbi-section-table">
+                                        <tr class="cbi-section-table-titles">
+                                               <th class="cbi-section-table-cell"><%:Url%></th>
+                                               <th class="cbi-section-table-cell"><%:Source%></th>
+                                       </tr>
+
+       <% table=fetch_services()
+       local i = 1
+       for k, line in ipairs(table) do
+               local field = {}
+               -- split line at # and |, 1=url, 2=proto, 3=description, 4=source
+               local field = utl.split(line, "[#|]", split, true)
+               local url,descr,origin = pcdata(field[1]),pcdata(field[3]),pcdata(field[4])
+               %>
+                                       <tr class="cbi-section-table-row cbi-rowstyle-<%=i%>">
+                                               <td class="cbi-section-table-cell"><a href="<%=url%>"><%=descr%></a></td>
+                                               <td class="cbi-section-table-cell"><%=origin%></td>
+                                       </tr>
+       <% if i == 1 then i = 0 elseif i == 0 then i = 1 end %>
+       <%end%>
+                               </table>
+                       </div>
+               </div>
+       </div>
+       <br />
+       <%=last_update%>
+
+<%else%>
+       <%:No services can be shown, because olsrd is not running or the olsrd-nameservice Plugin is not loaded.%>
+<%end%>
+
+<%+footer%>
index b6f7170..53aaec1 100644 (file)
@@ -228,7 +228,7 @@ define Package/luci-mod-freifunk-community
    +PACKAGE_luci-mod-freifunk-community:olsrd +PACKAGE_luci-mod-freifunk-community:olsrd-mod-dyn-gw-plain \
    +PACKAGE_luci-mod-freifunk-community:olsrd-mod-txtinfo +PACKAGE_luci-mod-freifunk-community:olsrd-mod-nameservice \
    +PACKAGE_luci-mod-freifunk-community:olsrd-mod-watchdog +PACKAGE_luci-mod-freifunk-community:kmod-tun \
-   +PACKAGE_luci-mod-freifunk-community:ip +PACKAGE_luci-mod-freifunk-community:freifunk-watchdog +luci-app-olsr
+   +PACKAGE_luci-mod-freifunk-community:ip +PACKAGE_luci-mod-freifunk-community:freifunk-watchdog +luci-app-olsr +luci-app-olsr-services
 endef
 
 define Package/luci-mod-freifunk-community/install
@@ -337,6 +337,9 @@ $(eval $(call application,olsr,OLSR configuration and status module,\
 $(eval $(call application,olsr-viz,OLSR Visualisation,\
        +PACKAGE_luci-app-olsr-viz:luci-app-olsr +PACKAGE_luci-app-olsr-viz:olsrd-mod-txtinfo))
 
+$(eval $(call application,olsr-services,Show services announced with the nameservice plugin,\
+       +PACKAGE_luci-app-olsr-services:olsrd-mod-nameservice +luci-mod-freifunk +PACKAGE_luci-app-olsr-services:luci-app-olsr))
+
 $(eval $(call application,qos,Quality of Service configuration module,\
        +PACKAGE_luci-app-qos:qos-scripts))
 
index 154a299..8fc3244 100644 (file)
@@ -98,15 +98,6 @@ function index()
 
        entry({"freifunk", "map"}, template("freifunk-map/frame"), i18n("Karte"), 50)
        entry({"freifunk", "map", "content"}, template("freifunk-map/map"), nil, 51)
-
-       uci:foreach("olsrd", "LoadPlugin", function(s)
-               if s.library == "olsrd_nameservice.so.0.3" then
-                       has_serv = true
-               end
-       end)
-       if has_serv then
-               entry({"freifunk", "services"}, template("freifunk-services/services"), i18n("Services"), 60)
-       end
 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
deleted file mode 100644 (file)
index c9385cd..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-<%+header%>
-
-<%
-local fs  = require "luci.fs"
-local utl = 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 and fs.access(s.services_file) then
-                       has_services = true
-                       services_file = s.services_file
-               else
-                       if fs.access("/var/run/services_olsr") then
-                               has_services = true
-                               services_file = "/var/run/services_olsr"
-                       end
-               end
-       end
-end)
-
-
-function fetch_services()
-       local rawdata = fs.readfile(services_file)
-
-       if #rawdata == 0 then
-               return nil
-       end
-
-       local data = {}
-
-       local tables = utl.split(utl.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 = utl.split(tbl, "\n", nil, true)
-       end
-       
-       return tables
-end
-%>
-
-<% if has_services then %>
-<div class="cbi-map">
-       <h2><a id="content" name="content"><%:Services%></a></h2>
-       <div class="cbi-map-descr"/>
-                <div class="cbi-section">
-                        <div class="cbi-section-node">
-                                <table class="cbi-section-table">
-                                        <tr class="cbi-section-table-titles">
-                                               <th class="cbi-section-table-cell"><%:Url%></th>
-                                               <th class="cbi-section-table-cell"><%:Source%></th>
-                                       </tr>
-
-       <% table=fetch_services()
-       local i = 1
-       for k, line in ipairs(table) do
-               local field = {}
-               -- split line at # and |, 1=url, 2=proto, 3=description, 4=source
-               local field = utl.split(line, "[#|]", split, true)
-               local url,descr,origin = pcdata(field[1]),pcdata(field[3]),pcdata(field[4])
-               %>
-                                       <tr class="cbi-section-table-row cbi-rowstyle-<%=i%>">
-                                               <td class="cbi-section-table-cell"><a href="<%=url%>"><%=descr%></a></td>
-                                               <td class="cbi-section-table-cell"><%=origin%></td>
-                                       </tr>
-       <% if i == 1 then i = 0 elseif i == 0 then i = 1 end %>
-       <%end%>
-                               </table>
-                       </div>
-               </div>
-       </div>
-       <br />
-       <%=last_update%>
-
-<%else%>
-       <%:No services can be shown, because olsrd is not running or the olsrd-nameservice Plugin is not loaded.%>
-<%end%>
-
-<%+footer%>