require "config" local optionIsOn = function(options) return options == "on" and true or false end local Attacklog = optionIsOn(attacklog) local logpath = logdir local function getClientIp() IP = ngx.var.remote_addr if IP == nil then IP = "unknown" end return IP end local function write(logfile, msg) local fd = io.open(logfile, "ab") if fd == nil then return end fd:write(msg) fd:flush() fd:close() end function log(data, ruletag, fp) if Attacklog then local fingerprint = fp or "" local realIp = getClientIp() local method = ngx.var.request_method local ua = ngx.var.http_user_agent local servername = ngx.var.server_name local url = ngx.var.request_uri local time = ngx.localtime() if ua then line = realIp .. " [" .. time .. '] "' .. method .. " " .. servername .. url .. '" "' .. ruletag .. '" "' .. ua .. '" "' .. data .. '" "' .. fingerprint .. '"\n' else line = realIp .. " [" .. time .. '] "' .. method .. " " .. servername .. url .. '" "' .. ruletag .. '" - "' .. data .. '" "' .. fingerprint .. '"\n' end local filename = logpath .. "/" .. servername .. "_" .. ngx.today() .. "_sec.log" write(filename, line) end end