-
Notifications
You must be signed in to change notification settings - Fork 1
/
lua_fa.lua
71 lines (56 loc) · 1.9 KB
/
lua_fa.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
-- 用户跟踪cookie名为_n3fa_cid
local uid = ngx.var.cookie__n3fa_cid
if not uid then
-- 如果没有则生成一个跟踪cookie,算法为md5(时间戳+IP+客户端信息)
uid = ngx.md5(ngx.now() .. ngx.var.remote_addr .. ngx.var.http_user_agent)
end
local expires = 3600 * 24 * 365 -- 1 year
ngx.header['Set-Cookie'] = {'_n3fa_cid=' .. uid .. '; path=/;Expires=' .. ngx.cookie_time(ngx.time() + expires) .. '; Domain=10010.com;'}
if ngx.var.arg_domain then
-- 通过subrequest到/i-log记录日志,将参数和用户跟踪cookie带过去
ngx.location.capture('/i-log?' .. ngx.var.args .. '&utrace=' .. uid)
end
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000) -- 1 sec
-- or connect to a unix domain socket file listened
-- by a redis server:
-- local ok, err = red:connect("unix:/path/to/redis.sock")
local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.log(ngx.ERR, "failed to connect:", err)
return
end
--fa.js--
local n3fa_url_configs, err = red:hkeys("n3fa:url_configs")
if not n3fa_url_configs then
ngx.log(ngx.ERR, "failed to get n3fa:url_configs: ", err)
return
end
if n3fa_url_configs == ngx.null then
ngx.log(ngx.DEBUG, "n3fa:url_configs not found.")
return
end
local referer = ngx.req.get_headers().referer
if not referer then
ngx.log(ngx.DEBUG,"referer not found.")
return
end
for i, url in ipairs(n3fa_url_configs) do
local m, err = ngx.re.match(referer, url)
if m then
local script_key, err = red:hget("n3fa:url_configs",url)
if not script_key then
return
end
local script_value, err = red:hget("n3fa:javascripts",script_key)
ngx.say(script_value);
else
if err then
ngx.log(ngx.ERR, "ngx re match error: ", err)
return
end
end
end
--fa.js--
red:close()