Cleaned alerts REST for telemetry host, flow

This commit is contained in:
DGabri 2024-07-23 11:00:23 +02:00
parent 4551d143b3
commit 81c696aef7
9 changed files with 231 additions and 72 deletions

View file

@ -3,7 +3,8 @@
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
package.path = dirs.installdir .. "/scripts/lua/modules/alert_store/?.lua;" .. package.path
package.path = dirs.installdir .. "/scripts/lua/modules/alert_store/?.lua;" ..
package.path
local auth = require "auth"
local rest_utils = require("rest_utils")
@ -21,23 +22,22 @@ local res = {}
local ifid = _GET["ifid"]
local format = _GET["format"]
local telemetry = _GET["telemetry"]
local no_html = false
local download = false
if not format then
-- GUI request - return formatted json
format = "json"
-- GUI request - return formatted json
format = "json"
else
-- txt or (plain) json - return unformatted data
no_html = true
if format == "txt" then
if ntop.isClickHouseEnabled() then
download = true
end
else
format = "json"
end
-- txt or (plain) json - return unformatted data
no_html = true
if format == "txt" then
if ntop.isClickHouseEnabled() then download = true end
else
format = "json"
end
end
if not auth.has_capability(auth.capabilities.alerts) then
@ -56,20 +56,23 @@ interface.select(ifid)
if not download then
local debug = false
local alerts, recordsFiltered, info = host_alert_store:select_request(nil, "*", download, debug)
local alerts, recordsFiltered, info =
host_alert_store:select_request(nil, "*", download, debug)
for _, _value in ipairs(alerts or {}) do
res[#res + 1] = host_alert_store:format_record(_value, no_html)
if (isEmptyString(telemetry)) then
for _, _value in ipairs(alerts or {}) do
res[#res + 1] = host_alert_store:format_record(_value, no_html)
end
else
for _, _value in ipairs(alerts or {}) do
res[#res + 1] = host_alert_store:format_record_telemetry(_value)
end
end
if format == "txt" then
res = host_alert_store:to_csv(res)
rest_utils.vanilla_payload_response(rc, res, "text/csv")
else
local data = {
records = res,
stats = info
}
local data = {records = res, stats = info}
rest_utils.extended_answer(rc, data, {
["draw"] = tonumber(_GET["draw"]),
@ -81,8 +84,11 @@ else
local extra_headers = {}
local rsp = "" -- data pushed by the query function clickhouse_utils.query (clickhouse_utils.lua)
extra_headers["Content-Disposition"] = "attachment;filename=\"host_alerts_export_" .. os.time() .. ".csv\""
rest_utils.vanilla_payload_response(rest_utils.consts.success.ok, rsp, "application/octet-stream", extra_headers)
extra_headers["Content-Disposition"] =
"attachment;filename=\"host_alerts_export_" .. os.time() .. ".csv\""
rest_utils.vanilla_payload_response(rest_utils.consts.success.ok, rsp,
"application/octet-stream",
extra_headers)
host_alert_store:select_request(nil, "*", download)
end