ntopng/scripts/lua/modules/recipients/sqlite_recipients.lua

89 lines
2.2 KiB
Lua

--
-- (C) 2017-20 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/recipients/?.lua;" .. package.path
local recipients = require "recipients"
local json = require "dkjson"
local sqlite_recipients = {}
-- ##############################################
function sqlite_recipients:create()
-- Instance of the base class
local _sqlite_recipients = recipients:create()
self.enabled = true -- Toggle this to skip dispatch and processing of notifications
-- Subclass using the base class instance
self.key = "sqlite"
-- self is passed as argument so it will be set as base class metatable
-- and this will actually make it possible to override functions
local _sqlite_recipients_instance = _sqlite_recipients:create(self)
-- Return the instance
return _sqlite_recipients_instance
end
-- ##############################################
function sqlite_recipients:dispatch_store_notification(notification)
if self.enabled then
return ntop.pushSqliteAlert(notification)
end
return false
end
-- ##############################################
function sqlite_recipients:dispatch_release_notification(notification)
if self.enabled then
return ntop.pushSqliteAlert(notification)
end
return false
end
-- ##############################################
function sqlite_recipients:process_notifications()
if not self.enabled or not areAlertsEnabled() then
return false
end
-- SQLite Alerts
while(true) do
local alert_json = ntop.popSqliteAlert()
if(not alert_json) then
break
end
local alert = json.decode(alert_json)
if(alert) then
interface.select(string.format("%d", alert.ifid))
if(alert.is_flow_alert) then
interface.storeFlowAlert(alert)
else
interface.storeAlert(
alert.alert_tstamp, alert.alert_tstamp_end, alert.alert_granularity,
alert.alert_type, alert.alert_subtype, alert.alert_severity,
alert.alert_entity, alert.alert_entity_val,
alert.alert_json)
end
end
if ntop.isDeadlineApproaching() then
return(false)
end
end
return(true)
end
-- ##############################################
return sqlite_recipients