1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-openstar

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
body.lua 1.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
starjun Отправлено 19.12.2018 17:44 cea1f3a
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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-openstar.git
git@api.gitlife.ru:oschina-mirror/mirrors-openstar.git
oschina-mirror
mirrors-openstar
mirrors-openstar
master