--- --- 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" } local function kafkaLog(_, brokerList, info) local kp = producer:new(brokerList, { producer_type = "async" }) local key = "key" local message = log.encodeJson(info) local ok, err = kp:send("waf-log", key, message) if not ok then log.errLog(_M.name, " send err: ", err) end end function _M.log_post_filter(waf) local brokerList = { { host = "127.0.0.1", port = 9092, sasl_config = { mechanism = "PLAIN", user = "USERNAME", password = "PASSWORD", }, } } 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 = log.utf8(waf.msg), req = log.utf8(log.getReq()), country = country, province = province, city = city, create_at = ngx.localtime() } log.broker(kafkaLog, brokerList, info) end end return _M