$56 GRAYBYTE WORDPRESS FILE MANAGER $44

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/imunify360-webshield/lualib/resty/core/

HOME
Current File : /opt/imunify360-webshield/lualib/resty/core//hash.lua
-- 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
}

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
16 Dec 2025 10.11 AM
root / root
0755
base.lua
5.396 KB
26 Nov 2025 10.43 PM
root / root
0644
base64.lua
3.057 KB
26 Nov 2025 10.43 PM
root / root
0644
coroutine.lua
0.751 KB
26 Nov 2025 10.43 PM
root / root
0644
ctx.lua
3.707 KB
26 Nov 2025 10.43 PM
root / root
0644
exit.lua
1.411 KB
26 Nov 2025 10.43 PM
root / root
0644
hash.lua
3.915 KB
26 Nov 2025 10.43 PM
root / root
0644
misc.lua
5.704 KB
26 Nov 2025 10.43 PM
root / root
0644
ndk.lua
2.128 KB
26 Nov 2025 10.43 PM
root / root
0644
param.lua
2.346 KB
26 Nov 2025 10.43 PM
root / root
0644
phase.lua
1.478 KB
26 Nov 2025 10.43 PM
root / root
0644
regex.lua
34.613 KB
26 Nov 2025 10.43 PM
root / root
0644
request.lua
11.139 KB
26 Nov 2025 10.43 PM
root / root
0644
response.lua
6.212 KB
26 Nov 2025 10.43 PM
root / root
0644
shdict.lua
26.563 KB
26 Nov 2025 10.43 PM
root / root
0644
socket.lua
7.221 KB
26 Nov 2025 10.43 PM
root / root
0644
time.lua
4.639 KB
26 Nov 2025 10.43 PM
root / root
0644
uri.lua
3.025 KB
26 Nov 2025 10.43 PM
root / root
0644
utils.lua
0.949 KB
26 Nov 2025 10.43 PM
root / root
0644
var.lua
3.817 KB
26 Nov 2025 10.43 PM
root / root
0644
worker.lua
3.412 KB
26 Nov 2025 10.43 PM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF