12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- local consts = require "resty.t1k.constants"
- local filter = require "resty.t1k.filter"
- local handler = require "resty.t1k.handler"
- local log = require "resty.t1k.log"
- local request = require "resty.t1k.request"
- local utils = require "resty.t1k.utils"
- local lower = string.lower
- local ngx = ngx
- local nlog = ngx.log
- local log_fmt = log.fmt
- local debug_fmt = log.debug_fmt
- local _M = {
- _VERSION = '1.0.0'
- }
- local DEFAULT_T1K_CONNECT_TIMEOUT = 1000 -- 1s
- local DEFAULT_T1K_SEND_TIMEOUT = 1000 -- 1s
- local DEFAULT_T1K_READ_TIMEOUT = 1000 -- 1s
- local DEFAULT_T1K_REQ_BODY_SIZE = 1024 -- 1024 KB
- local DEFAULT_T1K_KEEPALIVE_SIZE = 256
- local DEFAULT_T1K_KEEPALIVE_TIMEOUT = 60 * 1000 -- 60s
- function _M.do_access(t, handle)
- local ok, err, result
- local opts = {}
- t = t or {}
- if not t.mode then
- return true, nil, nil
- end
- opts.mode = lower(t.mode)
- if opts.mode == consts.MODE_OFF then
- nlog(debug_fmt("t1k is not enabled"))
- return true, nil, nil
- end
- if opts.mode ~= consts.MODE_OFF and opts.mode ~= consts.MODE_BLOCK and opts.mode ~= consts.MODE_MONITOR then
- err = log_fmt("invalid t1k mode: %s", t.mode)
- return nil, err, nil
- end
- if not t.host then
- err = log_fmt("invalid t1k host: %s", t.host)
- return nil, err, nil
- end
- opts.host = t.host
- if utils.starts_with(opts.host, consts.UNIX_SOCK_PREFIX) then
- opts.uds = true
- else
- if not tonumber(t.port) then
- err = log_fmt("invalid t1k port: %s", t.port)
- return nil, err, nil
- end
- opts.port = tonumber(t.port)
- end
- opts.connect_timeout = t.connect_timeout or DEFAULT_T1K_CONNECT_TIMEOUT
- opts.send_timeout = t.send_timeout or DEFAULT_T1K_SEND_TIMEOUT
- opts.read_timeout = t.read_timeout or DEFAULT_T1K_READ_TIMEOUT
- opts.req_body_size = t.req_body_size or DEFAULT_T1K_REQ_BODY_SIZE
- opts.keepalive_size = t.keepalive_size or DEFAULT_T1K_KEEPALIVE_SIZE
- opts.keepalive_timeout = t.keepalive_timeout or DEFAULT_T1K_KEEPALIVE_TIMEOUT
- if t.remote_addr then
- local var, idx = utils.to_var_idx(t.remote_addr)
- opts.remote_addr_var = var
- opts.remote_addr_idx = idx
- end
- ok, err, result = request.do_request(opts)
- if not ok then
- return ok, err, result
- end
- if handle and opts.mode == consts.MODE_BLOCK then
- ok, err = _M.do_handle(result)
- end
- return ok, err, result
- end
- function _M.do_handle(t)
- local ok, err = handler.handle(t)
- return ok, err
- end
- function _M.do_header_filter()
- filter.do_header_filter()
- end
- return _M
|