in example/plugins/lua-api/modsecurity/ats-luajit-modsecurity.lua [75:142]
function do_global_read_request()
if(msc_config.rules == nil) then
ts.debug("No rules loaded. Thus there is no processing done")
return 0
end
local txn = msc.msc_new_transaction(mst, msc_config.rules ,nil)
local client_ip, client_port, client_ip_family = ts.client_request.client_addr.get_addr()
local incoming_port = ts.client_request.client_addr.get_incoming_port()
msc.msc_process_connection(txn, client_ip, client_port, "127.0.0.1", incoming_port)
local uri = ts.client_request.get_uri()
local query_params = ts.client_request.get_uri_args() or ''
if (query_params ~= '') then
uri = uri .. '?' .. query_params
end
msc.msc_process_uri(txn, uri, ts.client_request.get_method(), ts.client_request.get_version())
local hdrs = ts.client_request.get_headers()
for k, v in pairs(hdrs) do
msc.msc_add_request_header(txn, k, v)
end
msc.msc_process_request_headers(txn)
msc.msc_process_request_body(txn)
ts.debug("done with processing request")
local iv = ffi.new("ModSecurityIntervention")
iv.status = 200
iv.log = nil
iv.url = nil
iv.disruptive = 0
local iv_res = msc.msc_intervention(txn, iv)
ts.debug("done with intervention ".. iv_res .. ' with status ' .. iv.status )
if(iv.log ~= nil) then
ts.debug("Intervention log: " .. ffi.string(iv.log))
C.free(iv.log)
end
if(iv.url ~= nil) then
ts.ctx['url'] = ffi.string(iv.url)
ts.hook(TS_LUA_HOOK_SEND_RESPONSE_HDR, send_response)
C.free(iv.url)
end
if (iv.status ~= 200) then
ts.http.set_resp(iv.status)
msc.msc_process_logging(txn)
msc.msc_transaction_cleanup(txn)
ts.debug("done with setting custom response")
return 0
end
ts.ctx["mst"] = txn
ts.debug("done with setting context")
ts.hook(TS_LUA_HOOK_READ_RESPONSE_HDR, read_response)
return 0
end