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
|
--
-- (C) 2017-22 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/pools/?.lua;" .. package.path
require "lua_utils"
local json = require "dkjson"
local os_utils = require "os_utils"
-- ##############################################
local pools_lua_utils = {}
-- ##############################################
-- @brief Returns an array of pool Lua class instances, for all available pools
-- e.g., {interface_pools:create(), local_network_pools:create(), snmp_device_pools:create(), ...}
function pools_lua_utils.all_pool_instances_factory()
local pools_dir = os_utils.fixPath(dirs.installdir .. "/scripts/lua/modules/pools/")
local res = {}
for pool_file in pairs(ntop.readdir(pools_dir)) do
-- Load all sub-classes of pools.lua (and exclude pools.lua itself)
if pool_file:match("_pools%.lua$") and not pool_file:match("^pools.lua$") then
local pool_file_path = os_utils.fixPath(string.format("%s/%s", pools_dir, pool_file))
local pool = dofile(pool_file_path)
-- Make sure pool is actually a pool Lua class by checking if it has method create
-- this is to avoid instantiating modules such as pool_lua_utils.lua and pool_rest_utils.lua
-- which are not classes and thus cannot be instantiated
if pool.create then
-- If it has a method create, then we can instantiate it and add it to the result
local instance = pool:create()
res[#res + 1] = instance
end
end
end
return res
end
-- ##############################################
-- @brief Call `instance:unbind_all_recipient_id` for every available pools `instance`
function pools_lua_utils.unbind_all_recipient_id(recipient_id)
local all_instances = pools_lua_utils.all_pool_instances_factory()
for _, instance in pairs(all_instances) do
instance:unbind_all_recipient_id(recipient_id)
end
end
-- ##############################################
-- @brief Call `instance:bind_all_recipient_id` for every available pools `instance`
function pools_lua_utils.bind_all_recipient_id(recipient_id)
local all_instances = pools_lua_utils.all_pool_instances_factory()
for _, instance in pairs(all_instances) do
instance:bind_all_recipient_id(recipient_id)
end
end
-- ##############################################
-- @brief Returns the pool url for a pool with a given `pool_key`
-- @param pool_key A pool key string as found inside `create` method of any pools instance.
-- If no pool key is found, the home of the pool url is returned.
-- @return The pool url
function pools_lua_utils.get_pool_url(pool_key)
local pool_url = ntop.getHttpPrefix().."/lua/admin/manage_pools.lua"
if pool_key then
pool_url = pool_url.."?page="..pool_key
end
return pool_url
end
-- ##############################################
return pools_lua_utils
|