kenzok8-passwall/luci-app-alist/luasrc/controller/alist.lua
2024-08-17 15:10:24 +08:00

51 lines
1.7 KiB
Lua

module("luci.controller.alist", package.seeall)
function index()
if not nixio.fs.access("/etc/config/alist") then
return
end
local page = entry({"admin", "nas", "alist"}, alias("admin", "nas", "alist", "basic"), _("Alist"), 20)
page.dependent = true
page.acl_depends = { "luci-app-alist" }
entry({"admin", "nas"}, firstchild(), "NAS", 44).dependent = false
entry({"admin", "nas", "alist", "basic"}, cbi("alist/basic"), _("Basic Setting"), 1).leaf = true
entry({"admin", "nas", "alist", "log"}, cbi("alist/log"), _("Logs"), 2).leaf = true
entry({"admin", "nas", "alist", "alist_status"}, call("alist_status")).leaf = true
entry({"admin", "nas", "alist", "get_log"}, call("get_log")).leaf = true
entry({"admin", "nas", "alist", "clear_log"}, call("clear_log")).leaf = true
entry({"admin", "nas", "alist", "admin_info"}, call("admin_info")).leaf = true
end
function alist_status()
local sys = require "luci.sys"
local uci = require "luci.model.uci".cursor()
local port = tonumber(uci:get_first("alist", "alist", "port"))
local status = {
running = (sys.call("pidof alist >/dev/null") == 0),
port = (port or 5244)
}
luci.http.prepare_content("application/json")
luci.http.write_json(status)
end
function get_log()
luci.http.write(luci.sys.exec("cat /var/log/alist.log"))
end
function clear_log()
luci.sys.call("cat /dev/null > /var/log/alist.log")
end
function admin_info()
local random = luci.sys.exec("/usr/bin/alist --data $(uci -q get alist.@alist[0].data_dir) admin random 2>&1")
local username = string.match(random, "username: (%S+)")
local password = string.match(random, "password: (%S+)")
luci.http.prepare_content("application/json")
luci.http.write_json({username = username, password = password})
end