mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-30 07:59:35 +00:00
88 lines
2.1 KiB
Lua
88 lines
2.1 KiB
Lua
--
|
|
-- (C) 2019-20 - ntop.org
|
|
--
|
|
|
|
local dirs = ntop.getDirs()
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
|
|
|
|
require "lua_utils"
|
|
local json = require("dkjson")
|
|
local user_scripts = require("user_scripts")
|
|
local alert_consts = require("alert_consts")
|
|
|
|
sendHTTPContentTypeHeader('application/json')
|
|
|
|
local subdir = _GET["script_subdir"] or "host"
|
|
local confset_id = tonumber(_GET["confset_id"] or user_scripts.DEFAULT_CONFIGSET_ID)
|
|
local script_key = _GET["script_key"]
|
|
|
|
local script_type = user_scripts.getScriptType(subdir)
|
|
|
|
if(script_type == nil) then
|
|
traceError(TRACE_ERROR, TRACE_CONSOLE, "Bad subdir: " .. subdir)
|
|
return
|
|
end
|
|
|
|
if(script_key == nil) then
|
|
traceError(TRACE_ERROR, TRACE_CONSOLE, "Missing script_key parameter")
|
|
return
|
|
end
|
|
|
|
local config_set = user_scripts.getConfigsets()[confset_id]
|
|
|
|
if(config_set == nil) then
|
|
traceError(TRACE_ERROR, TRACE_CONSOLE, "Unknown configset ID: " .. confset_id)
|
|
return
|
|
end
|
|
|
|
-- ################################################
|
|
|
|
|
|
interface.select(getSystemInterfaceId())
|
|
|
|
local script = user_scripts.loadModule(getSystemInterfaceId(), script_type, subdir, script_key)
|
|
|
|
if(script == nil) then
|
|
traceError(TRACE_ERROR, TRACE_CONSOLE, "Unknown user script: " .. script_key)
|
|
return
|
|
end
|
|
|
|
local result = {
|
|
hooks = {},
|
|
gui = {},
|
|
}
|
|
|
|
if(script.gui) then
|
|
local known_fields = {i18n_title=1, i18n_description=1, i18n_field_unit=1, input_builder=1}
|
|
|
|
for field, val in pairs(script.gui) do
|
|
if not known_fields[field] then
|
|
result.gui[field] = val
|
|
end
|
|
end
|
|
|
|
if(script.gui.i18n_field_unit) then
|
|
result.gui.fields_unit = i18n(script.gui.i18n_field_unit)
|
|
end
|
|
|
|
result.gui.input_builder = script.gui.input_builder
|
|
end
|
|
|
|
local hooks_config = user_scripts.getScriptConfig(config_set, script, subdir)
|
|
|
|
for hook, config in pairs(hooks_config) do
|
|
local granularity_info = alert_consts.alerts_granularities[hook]
|
|
local label = nil
|
|
|
|
if(granularity_info) then
|
|
label = i18n(granularity_info.i18n_title)
|
|
end
|
|
|
|
result.hooks[hook] = table.merge(config, {
|
|
label = label or "",
|
|
})
|
|
end
|
|
|
|
-- ################################################
|
|
|
|
print(json.encode(result))
|