summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-olsr/root/lib
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2008-09-01 22:25:51 +0000
committerJo-Philipp Wich <jow@openwrt.org>2008-09-01 22:25:51 +0000
commitc245841b4818075ad9d3fb8bc1f0b3b97b24a2e7 (patch)
tree3e5c2b845a49ab2d081caa12938810761551fe3d /applications/luci-olsr/root/lib
parentda23475d317bb7b86152c812cf4d259f349a0eff (diff)
* luci/applications: olsr: add own initscript and configuration
Diffstat (limited to 'applications/luci-olsr/root/lib')
-rw-r--r--applications/luci-olsr/root/lib/config/olsr.lua153
1 files changed, 153 insertions, 0 deletions
diff --git a/applications/luci-olsr/root/lib/config/olsr.lua b/applications/luci-olsr/root/lib/config/olsr.lua
new file mode 100644
index 0000000000..0482310f9c
--- /dev/null
+++ b/applications/luci-olsr/root/lib/config/olsr.lua
@@ -0,0 +1,153 @@
+#!/usr/bin/lua
+
+--[[
+
+OLSRd configuration generator
+(c) 2008 Freifunk Leipzig / 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: olsr.lua 2516 2008-07-06 13:34:07Z jow $
+
+]]--
+
+require("luci.util")
+require("luci.model.uci")
+
+luci.model.uci.load_state("network")
+local conf = luci.model.uci.get_all("olsr")
+
+local function _value(val)
+ if val:match("^[0-9%. \t]+$") or val == "yes" or val == "no" then
+ return val
+ else
+ return string.format( '"%s"', val )
+ end
+end
+
+local function _section(sect,sval,parstr)
+ local rv = ""
+ local pad = ""
+
+ if sval then
+ local val = ""
+
+ if sval == "Interface" then
+ val = luci.model.uci.get( "network", conf[sect][sval], "ifname" )
+ else
+ val = conf[sect][sval]
+ end
+
+ rv = string.format( '%s "%s"\n{\n', conf[sect][".type"], val )
+ pad = "\t"
+ end
+
+ for k, v in luci.util.spairs(conf[sect]) do
+ if k:sub(1,1) ~= '.' and k ~= sval then
+ if parstr then
+ rv = rv .. string.format(
+ '%s%s "%s"\t"%s"\n',
+ pad, parstr,
+ k:gsub( "_", "-" ), -- XXX: find a better solution for this
+ v
+ )
+ else
+ rv = rv .. string.format(
+ '%s%s\t%s\n',
+ pad, k, _value(v)
+ )
+ end
+ end
+ end
+
+ if sval then
+ rv = rv .. "}\n"
+ end
+
+ return rv
+end
+
+local function _hna(sval)
+ local rv = string.format( "%s\n{\n", sval )
+ local cnt = 0
+
+ for k, v in luci.util.spairs(conf) do
+ if conf[k][".type"] == sval and conf[k].NetAddr and conf[k].Prefix then
+ cnt = cnt + 1
+ rv = rv .. string.format(
+ "\t%s\t%s\n",
+ conf[k].NetAddr,
+ conf[k].Prefix
+ )
+ end
+ end
+
+ return ( cnt > 0 and rv .. "}\n" or "" )
+end
+
+local function _ipc(sval)
+ if conf[sval] and ( conf[sval].MaxConnections == nil or tonumber(conf[sval].MaxConnections) > 0 ) then
+ local rv = string.format( "%s\n{\n", sval )
+
+ for k, v in luci.util.spairs(conf[sval]) do
+ if k:sub(1,1) ~= "." then
+ local vals = luci.util.split(v, "%s+", nil, true)
+
+ if k == "Net" then
+ for i = 1,#vals,2 do
+ rv = rv .. string.format(
+ "\tNet\t%s\t%s\n",
+ vals[i], vals[i+1]
+ )
+ end
+ elseif k == "Host" then
+ for i, v in ipairs(vals) do
+ rv = rv .. string.format(
+ "\t%s\t%s\n",
+ k, vals[i]
+ )
+ end
+ else
+ rv = rv .. string.format(
+ "\t%s\t%s\n",
+ k, v
+ )
+ end
+ end
+ end
+
+ return rv .. "}\n"
+ else
+ return ""
+ end
+end
+
+
+-- general config section
+print( _section("general") )
+
+-- plugin config sections
+for k, v in luci.util.spairs(conf) do
+ if conf[k][".type"] == "LoadPlugin" then
+ print( _section( k, "Library", "PlParam" ) )
+ end
+end
+
+-- interface config sections
+for k, v in luci.util.spairs(conf) do
+ if conf[k][".type"] == "Interface" then
+ print( _section( k, "Interface" ) )
+ end
+end
+
+-- write Hna4, Hna6 sections
+print( _hna("Hna4") )
+print( _hna("Hna6") )
+
+-- write IpcConnect section
+print( _ipc("IpcConnect") )
+