ntopng/scripts/lua/modules/as_utils.lua
2025-09-15 11:34:04 +02:00

101 lines
2.8 KiB
Lua

--
-- (C) 2025 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "ntop_utils"
local as_utils = {}
local function parseASNList(string)
local asn = {}
local tmp = split(string, ",")
for _, val in pairs(tmp or {}) do
asn[val] = 1
end
return asn
end
function as_utils.getCustomerASNList()
return ntop.getCache("ntopng.prefs.config_customer_asn_list") or ""
end
function as_utils.getSubCustomerASNList()
return ntop.getCache("ntopng.prefs.config_sub_customer_asn_list") or ""
end
function as_utils.getRemoteASNList()
return ntop.getCache("ntopng.prefs.config_remote_asn_list") or ""
end
function as_utils.getCustomerASNs()
return parseASNList(as_utils.getCustomerASNList())
end
function as_utils.getSubCustomerASNs()
return parseASNList(as_utils.getSubCustomerASNList())
end
function as_utils.getRemoteASNs()
return parseASNList(as_utils.getRemoteASNList())
end
function as_utils.getAllConfigurations()
local customer_asn = as_utils.getCustomerASNs()
local sub_customer_asn = as_utils.getSubCustomerASNs()
local remote_asn = as_utils.getRemoteASNs()
return customer_asn, sub_customer_asn, remote_asn
end
-- The function filters from a table of ASNs those that are not customers, sub-customers, or remote
function as_utils.getOtherASNs(as_info)
local customer_asn, sub_customer_asn, remote_asn = as_utils.getAllConfigurations()
local res = {}
local costumer_sub = table.merge(customer_asn, sub_customer_asn)
local total = table.merge(costumer_sub,remote_asn)
if as_info ~= nil then
for key, value in pairs(as_info) do
if total then
local value_total = total[tostring(value["asn"])]
if not value_total then
value_check = res[tostring(value["asn"])]
if not value_check then
res[tostring(value["asn"])] = 1
else
res[tostring(value["asn"])] = value_check + 1
end
end
end
end
end
return res
end
function as_utils.getASNConfiguration(asn)
local res = nil
local customer_asn, sub_customer_asn, remote_asn = as_utils.getAllConfigurations()
if customer_asn[asn] ~= nil then
res = "customer_asn"
elseif sub_customer_asn[asn] ~= nil then
res = "sub_customer_asn"
elseif remote_asn[asn] ~= nil then
res = "remote_asn"
end
return res
end
function as_utils.getCustomerAndSubCustomerASNs()
local res = {}
local sub_customer_asns = as_utils.getSubCustomerASNs()
local my_asns = as_utils.getCustomerASNs()
for k, v in pairs(sub_customer_asns) do
res[k] = v
end
for k, v in pairs(my_asns) do
res[k] = v
end
return res
end
return as_utils