404

[ Avaa Bypassed ]




Upload:

Command:

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


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


local C = ffi.C
local ffi_new = ffi.new
local ffi_string = ffi.string
local ngx = ngx
local type = type
local error = error
local tostring = tostring
local subsystem = ngx.config.subsystem


local ngx_lua_ffi_md5
local ngx_lua_ffi_md5_bin
local ngx_lua_ffi_sha1_bin
local ngx_lua_ffi_crc32_long
local ngx_lua_ffi_crc32_short


if subsystem == "http" then
    ffi.cdef[[
    void ngx_http_lua_ffi_md5_bin(const unsigned char *src, size_t len,
                                  unsigned char *dst);

    void ngx_http_lua_ffi_md5(const unsigned char *src, size_t len,
                              unsigned char *dst);

    int ngx_http_lua_ffi_sha1_bin(const unsigned char *src, size_t len,
                                  unsigned char *dst);

    unsigned int ngx_http_lua_ffi_crc32_long(const unsigned char *src,
                                             size_t len);

    unsigned int ngx_http_lua_ffi_crc32_short(const unsigned char *src,
                                              size_t len);
    ]]

    ngx_lua_ffi_md5 = C.ngx_http_lua_ffi_md5
    ngx_lua_ffi_md5_bin = C.ngx_http_lua_ffi_md5_bin
    ngx_lua_ffi_sha1_bin = C.ngx_http_lua_ffi_sha1_bin
    ngx_lua_ffi_crc32_short = C.ngx_http_lua_ffi_crc32_short
    ngx_lua_ffi_crc32_long = C.ngx_http_lua_ffi_crc32_long

elseif subsystem == "stream" then
    ffi.cdef[[
    void ngx_stream_lua_ffi_md5_bin(const unsigned char *src, size_t len,
                                    unsigned char *dst);

    void ngx_stream_lua_ffi_md5(const unsigned char *src, size_t len,
                                unsigned char *dst);

    int ngx_stream_lua_ffi_sha1_bin(const unsigned char *src, size_t len,
                                    unsigned char *dst);

    unsigned int ngx_stream_lua_ffi_crc32_long(const unsigned char *src,
                                               size_t len);

    unsigned int ngx_stream_lua_ffi_crc32_short(const unsigned char *src,
                                                size_t len);
    ]]

    ngx_lua_ffi_md5 = C.ngx_stream_lua_ffi_md5
    ngx_lua_ffi_md5_bin = C.ngx_stream_lua_ffi_md5_bin
    ngx_lua_ffi_sha1_bin = C.ngx_stream_lua_ffi_sha1_bin
    ngx_lua_ffi_crc32_short = C.ngx_stream_lua_ffi_crc32_short
    ngx_lua_ffi_crc32_long = C.ngx_stream_lua_ffi_crc32_long
end


local MD5_DIGEST_LEN = 16
local md5_buf = ffi_new("unsigned char[?]", MD5_DIGEST_LEN)

ngx.md5_bin = function (s)
    if type(s) ~= 'string' then
        if not s then
            s = ''
        else
            s = tostring(s)
        end
    end
    ngx_lua_ffi_md5_bin(s, #s, md5_buf)
    return ffi_string(md5_buf, MD5_DIGEST_LEN)
end


local MD5_HEX_DIGEST_LEN = MD5_DIGEST_LEN * 2
local md5_hex_buf = ffi_new("unsigned char[?]", MD5_HEX_DIGEST_LEN)

ngx.md5 = function (s)
    if type(s) ~= 'string' then
        if not s then
            s = ''
        else
            s = tostring(s)
        end
    end
    ngx_lua_ffi_md5(s, #s, md5_hex_buf)
    return ffi_string(md5_hex_buf, MD5_HEX_DIGEST_LEN)
end


local SHA_DIGEST_LEN = 20
local sha_buf = ffi_new("unsigned char[?]", SHA_DIGEST_LEN)

ngx.sha1_bin = function (s)
    if type(s) ~= 'string' then
        if not s then
            s = ''
        else
            s = tostring(s)
        end
    end
    local ok = ngx_lua_ffi_sha1_bin(s, #s, sha_buf)
    if ok == 0 then
        error("SHA-1 support missing in Nginx")
    end
    return ffi_string(sha_buf, SHA_DIGEST_LEN)
end


ngx.crc32_short = function (s)
    if type(s) ~= "string" then
        if not s then
            s = ""
        else
            s = tostring(s)
        end
    end

    return ngx_lua_ffi_crc32_short(s, #s)
end


ngx.crc32_long = function (s)
    if type(s) ~= "string" then
        if not s then
            s = ""
        else
            s = tostring(s)
        end
    end

    return ngx_lua_ffi_crc32_long(s, #s)
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