-
Notifications
You must be signed in to change notification settings - Fork 419
/
body.lua
48 lines (41 loc) · 1.23 KB
/
body.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
local ngx_var = ngx.var
local ngx_unescape_uri = ngx.unescape_uri
local next_ctx = ngx.ctx.next_ctx or {}
local type = type
local ipairs = ipairs
if type(next_ctx.replace_Mod) ~= "table" then
return
end
local token_dict = ngx.shared.token_dict
local optl = require("optl")
-- 返回内容的替换使用 ngx.re.gsub 后续会更新用户可指定替换函数(如 ngx.re.sub)
local function ngx_2(reps,str_all)
for _,v in ipairs(reps) do
local tmp3 = optl.ngx_find(v[3])
if v[2] == "" then
str_all = ngx.re.gsub(str_all,v[1],tmp3)
else
str_all = ngx.re.gsub(str_all,v[1],tmp3,v[2])
end
end
ngx.arg[1] = str_all
token_dict:delete(token_tmp)
end
-- ngx.ctx.next_ctx.request_guid 一定要保证存在
local token_tmp = next_ctx.request_guid
if ngx.arg[1] ~= '' then -- 请求正常
local chunk = token_dict:get(token_tmp)
if not chunk then
chunk = ngx.arg[1]
token_dict:set(token_tmp,chunk,15)
else
chunk = chunk..ngx.arg[1]
token_dict:set(token_tmp,chunk,15)
end
end
local tmp_replace_mod = next_ctx.replace_Mod
if ngx.arg[2] then
ngx_2(tmp_replace_mod.replace_list,token_dict:get(token_tmp))
else
ngx.arg[1] = nil
end