uuWAF/plugins/kafka-logger.lua

60 lines
1.3 KiB
Lua
Raw Normal View History

---
--- Generated by UUSEC(https://www.uusec.com/)
--- Created by Safe3.
--- DateTime: 2022/9/21 20:37
---
local producer = require("resty.kafka.producer")
local log = require("waf.log")
local _M = {
version = 0.1,
name = "kafka-logger"
}
--[[
function _M.req_filter(waf)
end
function _M.resp_header_filter(waf)
end
function _M.resp_body_filter(waf)
end
--]]
2022-09-21 14:35:20 +00:00
local function kafkaLog(_, brokerList, info)
local kp = producer:new(brokerList, { producer_type = "async" })
local key = "key"
2022-09-21 14:35:20 +00:00
local message = log.encodeJson(info)
local ok, err = kp:send("waf-log", key, message)
if not ok then
2022-09-21 14:35:20 +00:00
log.errLog(_M.name, " send err: ", err)
end
end
function _M.log(waf)
2022-09-21 14:35:20 +00:00
local brokerList = {
{
host = "127.0.0.1",
port = 9092,
sasl_config = {
mechanism = "PLAIN",
user = "USERNAME",
password = "PASSWORD",
},
2022-09-21 14:35:20 +00:00
}
}
if waf.msg then
local country, province, city = log.ip2loc(waf.ip)
local info = { rule_id = waf.rule_id, ip = waf.ip, host = waf.host, url = waf.reqUri, data = waf.msg, country = country, province = province, city = city }
2022-09-21 14:35:20 +00:00
log.broker(kafkaLog, brokerList, info)
end
end
2022-09-22 03:18:23 +00:00
return _M