applications/luci-statistics: cope with uci list values, thanks Bluse for reporting...
[project/luci.git] / applications / luci-statistics / root / usr / bin / stat-genconfig
index 7f0a05f..171c1ae 100755 (executable)
@@ -9,7 +9,7 @@ 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
+               http://www.apache.org/licenses/LICENSE-2.0
 
 $Id$
 
@@ -25,6 +25,11 @@ local uci = luci.model.uci.cursor()
 local sections = uci:get_all( "luci_statistics" )
 
 
+function print(...)
+       nixio.stdout:write(...)
+       nixio.stdout:write("\n")
+end
+
 function section( plugin )
 
        local config = sections[ "collectd_" .. plugin ] or sections["collectd"]
@@ -94,11 +99,17 @@ function config_exec( c )
                for key, type in pairs({ Exec="collectd_exec_input", NotificationExec="collectd_exec_notify" }) do
                        if sections[s][".type"] == type then
 
-                               cmd   = sections[s].cmdline
-                               user  = sections[s].cmduser  or "nobody"
-                               group = sections[s].cmdgroup or "nogroup"
+                               cmd = sections[s].cmdline
+
+                               if cmd then
+                                       cmd   = cmd:gsub("^%s+", ""):gsub("%s+$", "")
+                                       user  = sections[s].cmduser  or "nobody"
+                                       group = sections[s].cmdgroup
 
-                               str = str .. "\t" .. key .. " " .. user .. ":" .. group .. ' "' .. cmd .. "\"\n"
+                                       str = str .. "\t" .. key .. ' "' ..
+                                               user .. ( group and ":" .. group or "" ) .. '" "' ..
+                                               cmd:gsub('%s+', '" "') .. '"\n'
+                               end
                        end
                end
        end
@@ -151,14 +162,14 @@ function config_network( c )
 
                                if host then
                                        if port then
-                                               str = str .. "\t" .. key .. " " .. host .. " " .. port .. "\n"
+                                               str = str .. "\t" .. key .. " \"" .. host .. "\" \"" .. port .. "\"\n"
                                        else
-                                               str = str .. "\t" .. key .. " " .. host .. "\n"
+                                               str = str .. "\t" .. key .. " \"" .. host .. "\"\n"
                                        end
                                end
-                        end
-                end
-        end
+                                               end
+                               end
+               end
 
        return str .. _string( c["TimeToLive"], "TimeToLive" )
                   .. _string( c["CacheFlush"], "CacheFlush" )
@@ -197,6 +208,13 @@ function _expand( s, n, nopad )
                end
 
                return str
+
+       elseif type(s) == "table" then
+               local str = ""
+
+               for i, v in ipairs(s) do
+                       str = str .. _string( v, n, nopad )
+               end
        end
 end
 
@@ -222,8 +240,8 @@ function _string( s, n, nopad )
        if not nopad then pad = "\t" end
 
        if s then
-               if s:find("[^%d]") then
-                       if not s:find("[^%w]") then
+               if s:find("[^%d]") or n == "Port" then
+                       if not s:find("[^%w]") and n ~= "Port" then
                                str = pad .. n .. " " .. luci.util.trim(s)
                        else
                                str = pad .. n .. ' "' .. luci.util.trim(s) .. '"'
@@ -246,6 +264,12 @@ plugins = {
                { }
        },
 
+       conntrack = {
+               { },
+               { },
+               { }
+       },
+
        cpu     = {
                { },
                { },
@@ -298,6 +322,12 @@ plugins = {
                { "Irqs" }
        },
 
+       iwinfo = {
+               { },
+               { "IgnoreSelected" },
+               { "Interfaces" }
+       },
+
        load    = {
                { },
                { },
@@ -310,6 +340,18 @@ plugins = {
                { }
        },
 
+       madwifi = {
+               { "WatchSet" },
+               { },
+               { "Interfaces", "WatchAdds" }
+       },
+
+       memory = { 
+               { },
+               { },
+               { }
+       },
+
        netlink = {
                { },
                { "IgnoreSelected" },
@@ -318,8 +360,14 @@ plugins = {
 
        network = config_network,
 
+       olsrd = {
+               { "Host", "Port", "CollectLinks","CollectRoutes","CollectTopology"},
+               { },
+               { }
+       },
+
        ping    = {
-               { "TTL" },
+               { "TTL", "Interval" },
                { },
                { "Hosts" }
        },