1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
--
-- (C) 2019-22 - ntop.org
--
-- ##############################################
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
package.path = dirs.installdir .. "/scripts/lua/modules/check_templates/?.lua;" .. package.path
-- Import the classes library.
local classes = require "classes"
-- Make sure to import the Superclass!
local check_template = require "check_template"
local http_lint = require "http_lint"
local format_utils = require "format_utils"
-- ##############################################
local threshold_cross = classes.class(check_template)
-- ##############################################
threshold_cross.meta = {
}
-- ##############################################
-- @brief Prepare an instance of the template
-- @return A table with the template built
function threshold_cross:init(check)
-- Call the parent constructor
self.super:init(check)
end
-- #######################################################
function threshold_cross:parseConfig(conf)
if(not http_lint.validateOperator(conf.operator)) then
return false, "bad operator"
end
if(tonumber(conf.threshold) == nil) then
return false, "bad threshold"
end
return true, conf
end
-- #######################################################
function threshold_cross:describeConfig(hooks_conf)
local alert_consts = require("alert_consts")
local granularities_order = {"min", "5mins", "hour", "day"}
local items = {}
-- E.g. "> 50 Sec (Minute), > 300 Sec (Hourly)"
for _, granularity in ipairs(granularities_order) do
local hook = hooks_conf[granularity]
local granularity = alert_consts.alerts_granularities[granularity]
if granularity and hook and hook.script_conf.threshold then
local unit = ""
local op = ternary(hook.script_conf.operator == "gt", ">", "<")
if(self._check.gui and self._check.gui.i18n_field_unit) then
unit = " " .. i18n(self._check.gui.i18n_field_unit)
end
-- Note: it would be desirable to export a 'self._check.unit' field
-- instead of 'self._check.gui.i18n_field_unit' to properly format
-- numeri values as with bytes below.
if self._check.gui.i18n_field_unit == 'field_units.bytes' then
local formatted_threshold = format_utils.bytesToSize(hook.script_conf.threshold)
items[#items + 1] = string.format("%s (%s)", op,
formatted_threshold, i18n(granularity.i18n_title) or granularity.i18n_title)
else
items[#items + 1] = string.format("%s %s%s (%s)", op,
hook.script_conf.threshold, unit, i18n(granularity.i18n_title) or granularity.i18n_title)
end
end
end
return table.concat(items, ", ")
end
-- #######################################################
return threshold_cross
|