EVOLUTION-MANAGER
Edit File: get_check_config.lua
-- -- (C) 2019-24 - ntop.org -- local dirs = ntop.getDirs() package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path require "lua_utils" local json = require("dkjson") local checks = require("checks") local alert_consts = require("alert_consts") local alert_exclusions = require "alert_exclusions" sendHTTPContentTypeHeader('application/json') local subdir = _GET["check_subdir"] or "host" local factory = _GET["factory"] local script_key = _GET["script_key"] local script_type = checks.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 if factory and factory == "true" then config_set = checks.getFactoryConfig() else config_set = checks.getConfigset() end -- ################################################ local script = checks.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 = {}, metadata = {}, filters = {} } 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 if (script.default_value) then result.metadata.default_value = script.default_value end -- Getting filter configurations if script.alert_id and (subdir == "flow" or subdir == "host") then result.filters = { current_filters = {} } local current_filters if subdir == "flow" then current_filters = alert_exclusions.flow_alerts_get_exclusions(script.alert_id) else current_filters = alert_exclusions.host_alerts_get_exclusions(script.alert_id) end for current_ip, _ in pairs(current_filters or {}) do result.filters.current_filters[#result.filters.current_filters + 1] = { ip = current_ip } end else local filter_conf = config_set["filters"] if filter_conf and filter_conf[subdir] and filter_conf[subdir][script_key] and filter_conf[subdir][script_key]["filter"] then result.filters = filter_conf[subdir][script_key]["filter"] end if not result.filters or table.len(result.filters) == 0 then -- No configuration found, trying to check if there is a default filter configured result.filters = checks.getDefaultFilters(interface.getId(), subdir, script_key) end end ------------------------------- local hooks_config = checks.getScriptConfig(config_set, script, subdir) -- script.template:render(hooks_config) 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))