ntopng/scripts/callbacks/startup.lua
2017-11-16 16:05:49 +01:00

91 lines
2.8 KiB
Lua

--
-- (C) 2013-17 - ntop.org
--
--
-- This script is executed once at startup similar to /etc/rc.local on Unix
--
dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
if(ntop.isPro()) then
package.path = dirs.installdir .. "/pro/scripts/lua/modules/?.lua;" .. package.path
package.path = dirs.installdir .. "/pro/scripts/callbacks/?.lua;" .. package.path
end
require "lua_utils"
require "blacklist_utils"
local host_pools_utils = require "host_pools_utils"
local http_bridge_conf_utils = require "http_bridge_conf_utils"
local prefs = ntop.getPrefs()
-- restore sticky hosts
if prefs.sticky_hosts ~= nil then
-- if the sticky hosts are set, then we try and restore them out of redis
for _, ifname in pairs(interface.getIfNames()) do
interface.select(ifname)
local ifid = getInterfaceId(ifname)
-- an example key is ntopng.serialized_hosts.ifid_6__192.168.2.136@0
local keys_pattern = "ntopng.serialized_hosts.ifid_"..ifid.."__*"
local dumped_hosts = ntop.getKeysCache("ntopng.serialized_hosts.ifid_"..ifid.."__*")
if dumped_hosts ~= nil then
for hostkey, _ in pairs(dumped_hosts) do
-- let's extract just the host name and vlan from the whole key;
-- restore host will do the rest ...
local key_parts = string.split(hostkey, "__")
if key_parts ~= nil and key_parts[2] ~= nil then
local hostkey = key_parts[2]
interface.restoreHost(hostkey, true --[[ skip privileges checks: no web access --]])
end
end
end
end
end
host_pools_utils.initPools()
if(ntop.isPro()) then
shaper_utils = require "shaper_utils"
shaper_utils.initShapers()
end
-- Use a specific bridging_policy_target_type default for previous user installations
if isEmptyString(ntop.getPref("ntopng.prefs.bridging_policy_target_type")) then
for _, ifname in pairs(interface.getIfNames()) do
local ifid = getInterfaceId(ifname)
interface.select(ifname)
local stats = interface.getStats()
if stats.inline then
-- Override the default
ntop.setPref("ntopng.prefs.bridging_policy_target_type", "both")
break
end
end
end
-- ##################################################################
-- Remove the json dumps previously needed for alerts generation
for _, ifname in pairs(interface.getIfNames()) do
interface.select(ifname)
local ifid = getInterfaceId(ifname)
local alerts_status_path = fixPath(dirs.workingdir .. "/" .. ifid .. "/json/")
ntop.rmdir(alerts_status_path)
end
-- ##################################################################
initCustomnDPIProtoCategories()
loadHostBlackList()
-- TODO: migrate custom re-arm settings
-- this will retrieve host pools and policers configurtions via HTTP if enabled
http_bridge_conf_utils.configureBridge()