ntopng/scripts/callbacks/minute-delayed/system/radius_accounting.lua
2024-06-17 11:25:32 +02:00

48 lines
1.6 KiB
Lua

--
-- (C) 2019-24 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
local radius_handler = require "radius_handler"
-- #################################################################
if radius_handler.isAccountingEnabled() then
-- Import only if radius is enabled, otherwise it's a waste of memory
require "lua_utils"
local host_pools = require "host_pools"
-- Instantiate host pools
local pool = host_pools:create()
local pools_list = {}
-- Table with pool names as keys
for _, pool_info in pairs(pool:get_all_pools()) do
pools_list[pool_info["name"]] = pool_info
end
-- TODO: currently accounting is supported only for an interface
-- add the support to multiple interfaces
interface.select(tostring(interface.getFirstInterfaceId()))
for _, pool_info in pairs(pools_list) do
if pool_info.id ~= host_pools.DEFAULT_POOL_ID and pool_info.id ~= host_pools.DROP_HOST_POOL_ID then
local members = pool_info.members
for _, member in pairs(members) do
local is_mac = isMacAddress(member)
if is_mac then
-- Update stats only if the mac is in memory
local mac_info = interface.getMacInfo(member)
if mac_info then
-- In case the update fails, move the member into the default pool
radius_handler.accountingUpdate(member, mac_info)
end
end
end
end
end
interface.select("-1") -- System Interface
end