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("ffluci.model.uci")
-require("ffluci.sys.iptparser")
-require("ffluci.util")
+require("luci.model.uci")
+require("luci.sys.iptparser")
+require("luci.util")
-local ipt = ffluci.sys.iptparser.IptParser()
-local uci = ffluci.model.uci.Session()
-local sections, names = uci:sections( "luci_statistics" )
+local ipt = luci.sys.iptparser.IptParser()
+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["general"]
+ local config = sections[ "collectd_" .. plugin ] or sections["collectd"]
- if type(config) == "table" and ( plugin == "general" or config.enable == "1" ) then
+ if type(config) == "table" and ( plugin == "collectd" or config.enable == "1" ) then
local params = ""
if type( plugins[plugin] ) == "function" then
params = plugins[plugin]( config )
else
- params = config_generic( config, plugins[plugin][1], plugins[plugin][2], plugins[plugin][3], plugin == "general" )
+ params = config_generic( config, plugins[plugin][1], plugins[plugin][2], plugins[plugin][3], plugin == "collectd" )
end
- if plugin ~= "general" then
+ if plugin ~= "collectd" then
print( "LoadPlugin " .. plugin )
if params:len() > 0 then
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
- str = str .. "\t" .. key .. " " .. user .. ":" .. group .. ' "' .. cmd .. "\"\n"
+ 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 and ":" .. group or "" ) .. '" "' ..
+ cmd:gsub('%s+', '" "') .. '"\n'
+ end
end
end
end
v = sections[s][k]
if type(v) == "string" then
- if k == "options" then v = ffluci.util.split( v, "%s+", nil, true ) end
+ if k == "options" then v = luci.util.split( v, "%s+", nil, true ) end
search[k] = v
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
function _expand( s, n, nopad )
- if type(s) == "string" then
- local str = ""
+ local str = ""
- for i, v in ipairs( ffluci.util.split( s, "%s+", nil, true ) ) do
+ if type(s) == "string" then
+ for i, v in ipairs( luci.util.split( s, "%s+", nil, true ) ) do
+ str = str .. _string( v, n, nopad )
+ end
+ elseif type(s) == "table" then
+ for i, v in ipairs(s) do
str = str .. _string( v, n, nopad )
end
-
- return str
end
+
+ return str
end
function _bool( s, n, nopad )
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 = {
- general = {
- { "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads" },
+ collectd = {
+ { "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" },
+ { },
+ { }
+ },
+
+ conntrack = {
+ { },
+ { },
+ { }
+ },
+
+ cpu = {
+ { },
{ },
{ }
},
- csv = {
+ csv = {
{ "DataDir" },
{ "StoreRates" },
{ }
{ "Irqs" }
},
+ iwinfo = {
+ { },
+ { "IgnoreSelected" },
+ { "Interfaces" }
+ },
+
+ load = {
+ { },
+ { },
+ { }
+ },
+
logfile = {
{ "LogLevel", "File" },
{ "Timestamp" },
{ }
},
+ madwifi = {
+ { "WatchSet" },
+ { },
+ { "Interfaces", "WatchAdds" }
+ },
+
+ memory = {
+ { },
+ { },
+ { }
+ },
+
netlink = {
{ },
{ "IgnoreSelected" },
network = config_network,
+ nut = {
+ { "UPS" },
+ { },
+ { }
+ },
+
+ 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
}
-section("general")
+section("collectd")
for plugin in pairs(plugins) do
- if plugin ~= "general" then
+ if plugin ~= "collectd" then
section( plugin )
end
end