404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@3.145.32.238: ~ $
-- Copyright (C) Yichun Zhang (agentzh)


local ffi = require "ffi"
local base = require "resty.core.base"


local C = ffi.C
local ffi_string = ffi.string
local ngx = ngx
local type = type
local error = error
local tostring = tostring
local get_string_buf = base.get_string_buf
local subsystem = ngx.config.subsystem


local ngx_lua_ffi_escape_uri
local ngx_lua_ffi_unescape_uri
local ngx_lua_ffi_uri_escaped_length

local NGX_ESCAPE_URI = 0
local NGX_ESCAPE_URI_COMPONENT = 2
local NGX_ESCAPE_MAIL_AUTH = 6


if subsystem == "http" then
    ffi.cdef[[
    size_t ngx_http_lua_ffi_uri_escaped_length(const unsigned char *src,
                                               size_t len, int type);

    void ngx_http_lua_ffi_escape_uri(const unsigned char *src, size_t len,
                                     unsigned char *dst, int type);

    size_t ngx_http_lua_ffi_unescape_uri(const unsigned char *src,
                                         size_t len, unsigned char *dst);
    ]]

    ngx_lua_ffi_escape_uri = C.ngx_http_lua_ffi_escape_uri
    ngx_lua_ffi_unescape_uri = C.ngx_http_lua_ffi_unescape_uri
    ngx_lua_ffi_uri_escaped_length = C.ngx_http_lua_ffi_uri_escaped_length

elseif subsystem == "stream" then
    ffi.cdef[[
    size_t ngx_stream_lua_ffi_uri_escaped_length(const unsigned char *src,
                                                 size_t len, int type);

    void ngx_stream_lua_ffi_escape_uri(const unsigned char *src, size_t len,
                                       unsigned char *dst, int type);

    size_t ngx_stream_lua_ffi_unescape_uri(const unsigned char *src,
                                           size_t len, unsigned char *dst);
    ]]

    ngx_lua_ffi_escape_uri = C.ngx_stream_lua_ffi_escape_uri
    ngx_lua_ffi_unescape_uri = C.ngx_stream_lua_ffi_unescape_uri
    ngx_lua_ffi_uri_escaped_length = C.ngx_stream_lua_ffi_uri_escaped_length
end


ngx.escape_uri = function (s, esc_type)
    if type(s) ~= 'string' then
        if not s then
            s = ''

        else
            s = tostring(s)
        end
    end

    if esc_type == nil then
        esc_type = NGX_ESCAPE_URI_COMPONENT

    else
        if type(esc_type) ~= 'number' then
            error("\"type\" is not a number", 3)
        end

        if esc_type < NGX_ESCAPE_URI or esc_type > NGX_ESCAPE_MAIL_AUTH then
            error("\"type\" " .. esc_type .. " out of range", 3)
        end
    end

    local slen = #s
    local dlen = ngx_lua_ffi_uri_escaped_length(s, slen, esc_type)

    -- print("dlen: ", tonumber(dlen))
    if dlen == slen then
        return s
    end
    local dst = get_string_buf(dlen)
    ngx_lua_ffi_escape_uri(s, slen, dst, esc_type)
    return ffi_string(dst, dlen)
end


ngx.unescape_uri = function (s)
    if type(s) ~= 'string' then
        if not s then
            s = ''
        else
            s = tostring(s)
        end
    end
    local slen = #s
    local dlen = slen
    local dst = get_string_buf(dlen)
    dlen = ngx_lua_ffi_unescape_uri(s, slen, dst)
    return ffi_string(dst, dlen)
end


return {
    version = base.version,
}

Filemanager

Name Type Size Permission Actions
base.lua File 5.4 KB 0644
base64.lua File 3.06 KB 0644
coroutine.lua File 769 B 0644
ctx.lua File 3.71 KB 0644
exit.lua File 1.41 KB 0644
hash.lua File 3.92 KB 0644
misc.lua File 5.7 KB 0644
ndk.lua File 2.13 KB 0644
param.lua File 2.35 KB 0644
phase.lua File 1.48 KB 0644
regex.lua File 33.67 KB 0644
request.lua File 11.14 KB 0644
response.lua File 6.21 KB 0644
shdict.lua File 26.56 KB 0644
socket.lua File 7.22 KB 0644
time.lua File 4.64 KB 0644
uri.lua File 3.03 KB 0644
utils.lua File 972 B 0644
var.lua File 3.82 KB 0644
worker.lua File 3.27 KB 0644