mirror of
https://github.com/ntop/ntopng.git
synced 2026-05-02 00:40:10 +00:00
107 lines
2.9 KiB
Lua
107 lines
2.9 KiB
Lua
--
|
|
-- (C) 2017-20 - ntop.org
|
|
--
|
|
local dirs = ntop.getDirs()
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/recipients/?.lua;" .. package.path
|
|
|
|
require "lua_utils"
|
|
local json = require "dkjson"
|
|
local os_utils = require "os_utils"
|
|
local lua_path_utils = require "lua_path_utils"
|
|
local base_recipients = require "base_recipients"
|
|
|
|
-- ##############################################
|
|
|
|
local recipients_lua_utils = {}
|
|
|
|
-- ##############################################
|
|
|
|
-- @brief Returns an array of recipient Lua class instances, for all available recipients
|
|
-- e.g., {sqlite_recipients:create(), ...}
|
|
--
|
|
local function all_recipient_instances_factory()
|
|
local recipients_dir = os_utils.fixPath(dirs.installdir .. "/scripts/lua/modules/recipients/")
|
|
lua_path_utils.package_path_prepend(recipients_dir)
|
|
local res = {}
|
|
|
|
for recipient_file in pairs(ntop.readdir(recipients_dir)) do
|
|
if recipient_file:match("_recipients%.lua$") then
|
|
local recipient_module_name = recipient_file:gsub(".lua", "")
|
|
local recipient_require = os_utils.fixPath(string.format("recipients.%s", recipient_module_name))
|
|
|
|
local recipient = require(recipient_require)
|
|
|
|
if recipient.create then
|
|
-- If it has a method create, then we can instantiate it and add it to the result
|
|
local instance = recipient:create()
|
|
res[#res + 1] = instance
|
|
end
|
|
end
|
|
end
|
|
|
|
return res
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
local all_instances_cache
|
|
|
|
local function get_all_instances_cache()
|
|
if not all_instances_cache then
|
|
all_instances_cache = all_recipient_instances_factory()
|
|
end
|
|
|
|
return all_instances_cache
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
function recipients_lua_utils.dispatch_trigger_notification(notification)
|
|
local all_instances = get_all_instances_cache()
|
|
|
|
for _, instance in pairs(all_instances) do
|
|
instance:dispatch_trigger_notification(notification)
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
function recipients_lua_utils.dispatch_release_notification(notification)
|
|
local all_instances = get_all_instances_cache()
|
|
|
|
for _, instance in pairs(all_instances) do
|
|
instance:dispatch_release_notification(notification)
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
function recipients_lua_utils.dispatch_store_notification(notification)
|
|
local all_instances = get_all_instances_cache()
|
|
|
|
for _, instance in pairs(all_instances) do
|
|
instance:dispatch_store_notification(notification)
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
function recipients_lua_utils.process_notifications(notification)
|
|
local all_instances = get_all_instances_cache()
|
|
|
|
for _, instance in pairs(all_instances) do
|
|
instance:process_notifications(notification)
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
-- ##############################################
|
|
|
|
return recipients_lua_utils
|