lua_zlib_body.lua 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. local zlib = require "zlib"
  2. local cjson = require "cjson"
  3. local function set_data(str,proj,ptype,ngx)
  4. local s = string.sub(str,0,1)
  5. local headers = ngx.req.get_headers()
  6. local ip = headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr or "0.0.0.0"
  7. if s == "{" then
  8. str=string.gsub(str,'{','{"proj":"'..proj..'","ptype":"'..ptype..'","ip":"'..ip..'",',1)
  9. -- str=str:gsub('\\\\', ''):gsub('\\', '_',1):gsub('\\','/')
  10. -- str = "["..str.."]"
  11. end
  12. ngx.var.data=str
  13. end
  14. local function set_list_data(listStr,proj,ptype)
  15. -- local list= cjson.decode(listStr)
  16. -- ngx.var.data=listStr
  17. -- ngx.log(ngx.INFO,"std1")
  18. local s = string.sub(listStr,0,1)
  19. local headers = ngx.req.get_headers()
  20. local ip = headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr or "0.0.0.0"
  21. if s == "[" then
  22. listStr=string.gsub(listStr,'%[','')
  23. listStr=string.gsub(listStr,'%]','')
  24. listStr=string.gsub(listStr,'(%,?){"distinct_id"','\n{"ip":"'..ip..'","proj":"'..proj..'","ptype":"'..ptype..'","distinct_id"')
  25. end
  26. ngx.var.data=listStr
  27. end
  28. local req_args = ngx.req.get_uri_args()
  29. local proj=req_args["project"]
  30. local ptype=req_args["ptype"]
  31. if proj ==nil then
  32. ngx.say("{\"r\":\"err\",\"msg\",\"no project\"}")
  33. return
  34. end
  35. if ptype ==nil then
  36. ptype=""
  37. end
  38. local method=ngx.req.get_method()
  39. if method == "POST" then
  40. ngx.req.read_body()
  41. local body = ngx.req.get_post_args()
  42. local data_list = body["data_list"]
  43. if data_list then
  44. local listStr= ngx.decode_base64(data_list)
  45. set_list_data(listStr,proj,ptype)
  46. end
  47. local data = body["data"]
  48. if data then
  49. local dec= ngx.decode_base64(data)
  50. set_data(dec,proj,ptype,ngx)
  51. end
  52. elseif method == "GET" then
  53. -- ngx.var.data="get lai le"
  54. local args = ngx.req.get_uri_args()
  55. local data = args["data"]
  56. if data then
  57. local dec= ngx.decode_base64(data)
  58. --ngx.var.data=dec
  59. set_data(dec,proj,ptype,ngx)
  60. end
  61. end
  62. ngx.say("success")