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$
require("luci.util")
local ipt = luci.sys.iptparser.IptParser()
-local uci = luci.model.uci.Session()
-local sections, names = uci:sections( "luci_statistics" )
+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"]
if type(singles) == "table" then
for i, key in ipairs( singles ) do
+ if preprocess[key] then
+ c[key] = preprocess[key](c[key])
+ end
+
str = str .. _string( c[key], key, nopad )
end
end
if type(bools) == "table" then
for i, key in ipairs( bools ) do
+ if preprocess[key] then
+ c[key] = preprocess[key](c[key])
+ end
+
str = str .. _bool( c[key], key, nopad )
end
end
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
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" )
for i, n in ipairs(l) do
if c[n] then
+ if preprocess[n] then
+ c[n] = preprocess[n](c[n])
+ end
+
if n:find("(%w+)ses") then
k = n:gsub("(%w+)ses", "%1s")
else
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
if not nopad then pad = "\t" end
if s then
- if s:find("[^%d]") then
- if not s:find("[^%w]") then
- str = pad .. n .. " " .. s
+ 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 .. ' "' .. s .. '"'
+ str = pad .. n .. ' "' .. luci.util.trim(s) .. '"'
end
else
- str = pad .. n .. " " .. s
+ str = pad .. n .. " " .. luci.util.trim(s)
end
str = str .. "\n"
end
return str
-end
+end
plugins = {
collectd = {
- { "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads" },
+ { "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" },
{ },
{ }
},
- csv = {
+ conntrack = {
+ { },
+ { },
+ { }
+ },
+
+ cpu = {
+ { },
+ { },
+ { }
+ },
+
+ csv = {
{ "DataDir" },
{ "StoreRates" },
{ }
{ "Irqs" }
},
+ iwinfo = {
+ { },
+ { "IgnoreSelected" },
+ { "Interfaces" }
+ },
+
+ load = {
+ { },
+ { },
+ { }
+ },
+
logfile = {
{ "LogLevel", "File" },
{ "Timestamp" },
{ }
},
+ madwifi = {
+ { "WatchSet" },
+ { },
+ { "Interfaces", "WatchAdds" }
+ },
+
+ memory = {
+ { },
+ { },
+ { }
+ },
+
netlink = {
{ },
{ "IgnoreSelected" },
network = config_network,
+ olsrd = {
+ { "Host", "Port", "CollectLinks","CollectRoutes","CollectTopology"},
+ { },
+ { }
+ },
+
ping = {
- { "TTL" },
+ { "TTL", "Interval" },
{ },
{ "Hosts" }
},
{ },
{ }
},
+}
+preprocess = {
+ RRATimespans = function(val)
+ local rv = { }
+ for time in val:gmatch("[^%s]+") do
+ table.insert( rv, luci.util.parse_units(time) )
+ end
+ return table.concat(rv, " ")
+ end
}