mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-10-29 11:25:13 +08:00
update 2026-05-10 09:48:30
This commit is contained in:
1 parent
95ac96413e
commit
0b362674f1
6244 files changed
+2992248
No files matched your search
@@ -0,0 +1,83 @@
|
||||
local http = require "luci.http"
|
||||
local nixio = require "nixio"
|
||||
local fs = require "nixio.fs"
|
||||
local ltn12 = require "luci.ltn12"
|
||||
|
||||
local iform = {}
|
||||
local const_log_end = "XU6J03M6"
|
||||
|
||||
function iform.log_end()
|
||||
return const_log_end
|
||||
end
|
||||
|
||||
function iform.exec_to_log(command)
|
||||
local f = io.popen(command, "r")
|
||||
local log = command
|
||||
if f then
|
||||
local output = f:read('*all')
|
||||
f:close()
|
||||
log = log .. "\n" .. output .. const_log_end
|
||||
else
|
||||
log = log .. " Failed" .. const_log_end
|
||||
end
|
||||
return log
|
||||
end
|
||||
|
||||
function iform.response_log(logpath)
|
||||
local logfd = io.open(logpath, "r")
|
||||
if logfd == nil then
|
||||
http.write("log not found" .. const_log_end)
|
||||
return
|
||||
end
|
||||
|
||||
local curr = logfd:seek()
|
||||
local size = logfd:seek("end")
|
||||
if size > 8*1024 then
|
||||
logfd:seek("end", -8*1024)
|
||||
else
|
||||
logfd:seek("set", curr)
|
||||
end
|
||||
|
||||
local write_log = function()
|
||||
local buffer = logfd:read(4096)
|
||||
if buffer and #buffer > 0 then
|
||||
return buffer
|
||||
else
|
||||
logfd:close()
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
http.prepare_content("text/plain;charset=utf-8")
|
||||
|
||||
if logfd then
|
||||
ltn12.pump.all(write_log, http.write)
|
||||
end
|
||||
end
|
||||
|
||||
function iform.fork_exec(command)
|
||||
local pid = nixio.fork()
|
||||
if pid > 0 then
|
||||
return
|
||||
elseif pid == 0 then
|
||||
-- change to root dir
|
||||
nixio.chdir("/")
|
||||
|
||||
-- patch stdin, out, err to /dev/null
|
||||
local null = nixio.open("/dev/null", "w+")
|
||||
if null then
|
||||
nixio.dup(null, nixio.stderr)
|
||||
nixio.dup(null, nixio.stdout)
|
||||
nixio.dup(null, nixio.stdin)
|
||||
if null:fileno() > 2 then
|
||||
null:close()
|
||||
end
|
||||
end
|
||||
|
||||
-- replace with target command
|
||||
nixio.exec("/bin/sh", "-c", command)
|
||||
end
|
||||
end
|
||||
|
||||
return iform
|
||||
|
||||
Reference in new issue
Block a user