ACIL FM
Dark
Refresh
Current DIR:
/opt/imunify360-webshield/lualib/resty
/
opt
imunify360-webshield
lualib
resty
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
core
-
chmod
Open
Rename
Delete
dns
-
chmod
Open
Rename
Delete
limit
-
chmod
Open
Rename
Delete
lrucache
-
chmod
Open
Rename
Delete
template
-
chmod
Open
Rename
Delete
upstream
-
chmod
Open
Rename
Delete
websocket
-
chmod
Open
Rename
Delete
aes.lua
9.62 MB
chmod
View
DL
Edit
Rename
Delete
cookie.lua
5.55 MB
chmod
View
DL
Edit
Rename
Delete
core.lua
710 B
chmod
View
DL
Edit
Rename
Delete
http.lua
28.99 MB
chmod
View
DL
Edit
Rename
Delete
http_headers.lua
1.12 MB
chmod
View
DL
Edit
Rename
Delete
lock.lua
4.58 MB
chmod
View
DL
Edit
Rename
Delete
lrucache.lua
6.95 MB
chmod
View
DL
Edit
Rename
Delete
md5.lua
1.19 MB
chmod
View
DL
Edit
Rename
Delete
random.lua
672 B
chmod
View
DL
Edit
Rename
Delete
sha.lua
236 B
chmod
View
DL
Edit
Rename
Delete
sha1.lua
1.16 MB
chmod
View
DL
Edit
Rename
Delete
sha224.lua
1.02 MB
chmod
View
DL
Edit
Rename
Delete
sha256.lua
1.19 MB
chmod
View
DL
Edit
Rename
Delete
sha384.lua
1.02 MB
chmod
View
DL
Edit
Rename
Delete
sha512.lua
1.33 MB
chmod
View
DL
Edit
Rename
Delete
shell.lua
4.88 MB
chmod
View
DL
Edit
Rename
Delete
signal.lua
3.12 MB
chmod
View
DL
Edit
Rename
Delete
string.lua
887 B
chmod
View
DL
Edit
Rename
Delete
template.lua
22.69 MB
chmod
View
DL
Edit
Rename
Delete
Edit 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
Simpan
Batal
Isi Zip:
Unzip
Create
Buat Folder
Buat File
Terminal / Execute
Run
Chmod Bulk
All File
All Folder
All File dan Folder
Apply