luci-app-alist: Add log preview support

This commit is contained in:
sbwml 2022-09-12 11:01:02 +08:00
parent 9656557fdf
commit 641a8a91dc
7 changed files with 81 additions and 17 deletions

View File

@ -5,9 +5,16 @@ function index()
return return
end 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"}, firstchild(), "NAS", 44).dependent = false
entry({"admin", "nas", "alist"}, cbi("alist"), _("Alist"), 20).dependent = true entry({"admin", "nas", "alist", "basic"}, cbi("alist/basic"), _("Basic Setting"), 1).leaf = true
entry({"admin", "nas", "alist_status"}, call("alist_status")) 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
end end
function alist_status() function alist_status()
@ -23,3 +30,11 @@ function alist_status()
luci.http.prepare_content("application/json") luci.http.prepare_content("application/json")
luci.http.write_json(status) luci.http.write_json(status)
end end
function get_log()
luci.http.write(luci.sys.exec("cat $(uci -q get alist.@alist[0].temp_dir)/alist.log"))
end
function clear_log()
luci.sys.call("cat /dev/null > $(uci -q get alist.@alist[0].temp_dir)/alist.log")
end

View File

@ -8,9 +8,9 @@ local m, s
m = Map("alist", translate("Alist"), translate("A file list program that supports multiple storage.") .. translate("Default username and password:") .. "<font color=\"green\">admin / admin</font>" .. "<br/>" .. [[<a href="https://alist.nn.ci/guide/drivers/local.html" target="_blank">]] .. translate("User Manual") .. [[</a>]]) m = Map("alist", translate("Alist"), translate("A file list program that supports multiple storage.") .. translate("Default username and password:") .. "<font color=\"green\">admin / admin</font>" .. "<br/>" .. [[<a href="https://alist.nn.ci/guide/drivers/local.html" target="_blank">]] .. translate("User Manual") .. [[</a>]])
--end --end
m:section(SimpleSection).template = "alist_status" m:section(SimpleSection).template = "alist/alist_status"
s = m:section(TypedSection, "alist", translate("Global settings")) s = m:section(TypedSection, "alist")
s.addremove = false s.addremove = false
s.anonymous = true s.anonymous = true
@ -21,6 +21,10 @@ o = s:option(Value, "port", translate("Port"))
o.datatype = "and(port,min(1))" o.datatype = "and(port,min(1))"
o.rmempty = false o.rmempty = false
o = s:option(Flag, "log", translate("Enable Logs"))
o.default = 1
o.rmempty = false
o = s:option(Flag, "ssl", translate("Enable SSL")) o = s:option(Flag, "ssl", translate("Enable SSL"))
o.rmempty=false o.rmempty=false

View File

@ -0,0 +1,5 @@
m = Map("alist")
m:append(Template("alist/alist_log"))
return m

View File

@ -0,0 +1,29 @@
<script type="text/javascript">
//<![CDATA[
function clear_log(btn) {
XHR.get('<%=url([[admin]], [[nas]], [[alist]], [[clear_log]])%>', null,
function(x, data) {
if(x && x.status == 200) {
var log_textarea = document.getElementById('log_textarea');
log_textarea.innerHTML = "";
log_textarea.scrollTop = log_textarea.scrollHeight;
}
location.reload();
}
);
}
XHR.poll(2, '<%=url([[admin]], [[nas]], [[alist]], [[get_log]])%>', null,
function(x, data) {
if(x && x.status == 200) {
var log_textarea = document.getElementById('log_textarea');
log_textarea.innerHTML = x.responseText;
log_textarea.scrollTop = log_textarea.scrollHeight;
}
}
);
//]]>
</script>
<fieldset class="cbi-section" id="_log_fieldset">
<input class="cbi-button cbi-input-remove" type="button" onclick="clear_log()" value="<%:Clear logs%>" style="margin-left: 10px; margin-top: 10px;">
<textarea id="log_textarea" class="cbi-input-textarea" style="width: calc(100% - 20px); height: 500px; margin: 10px;" data-update="change" rows="5" wrap="off" readonly="readonly"></textarea>
</fieldset>

View File

@ -9,7 +9,7 @@
%> %>
<script type="text/javascript">//<![CDATA[ <script type="text/javascript">//<![CDATA[
XHR.poll(5, '<%=url("admin/nas/alist_status")%>', null, XHR.poll(5, '<%=url("admin/nas/alist/alist_status")%>', null,
function(x, st) function(x, st)
{ {
var tb = document.getElementById('alist_status'); var tb = document.getElementById('alist_status');
@ -17,11 +17,11 @@
{ {
if (st.running) if (st.running)
{ {
tb.innerHTML = '<em style=\"color:green\"><b><%:The Alist service is running.%></b></em>' + "<input class=\"cbi-button-reload mar-10\" type=\"button\" value=\" <%:Click to open Alist%> \" onclick=\"window.open('<%=protocol%>" + window.location.hostname + ":" + st.port + "/')\"/>"; tb.innerHTML = '<em style=\"color:green\"><b>Alist <%:RUNNING%></b></em>' + "<input class=\"cbi-button-reload mar-10\" type=\"button\" value=\" <%:Open Web Interface%> \" onclick=\"window.open('<%=protocol%>" + window.location.hostname + ":" + st.port + "/')\"/>";
} }
else else
{ {
tb.innerHTML = '<em style=\"color:red\"><b><%:The Alist service is not running.%></b></em>'; tb.innerHTML = '<em style=\"color:red\"><b>Alist <%:NOT RUNNING%></b></em>';
} }
} }
} }

View File

@ -4,8 +4,8 @@ msgstr "Alist 文件列表"
msgid "Running state" msgid "Running state"
msgstr "运行状态" msgstr "运行状态"
msgid "Click to open Alist" msgid "Open Web Interface"
msgstr "点击打开 Alist" msgstr "打开 Web 界面"
msgid "A file list program that supports multiple storage." msgid "A file list program that supports multiple storage."
msgstr "一款支持多种存储的目录文件列表程序。" msgstr "一款支持多种存储的目录文件列表程序。"
@ -13,8 +13,8 @@ msgstr "一款支持多种存储的目录文件列表程序。"
msgid "manage password:" msgid "manage password:"
msgstr "管理密码:" msgstr "管理密码:"
msgid "Global settings" msgid "Basic Setting"
msgstr "全局设置" msgstr "基本设置"
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
@ -37,11 +37,11 @@ msgstr "SSL 密钥文件路径"
msgid "Cache directory" msgid "Cache directory"
msgstr "缓存目录" msgstr "缓存目录"
msgid "The Alist service is running." msgid "RUNNING"
msgstr "Alist 服务已启动" msgstr "运行中"
msgid "The Alist service is not running." msgid "NOT RUNNING"
msgstr "Alist 服务未启动" msgstr "未运行"
msgid "Collecting data..." msgid "Collecting data..."
msgstr "收集数据..." msgstr "收集数据..."
@ -52,9 +52,14 @@ msgstr "网络存储"
msgid "User Manual" msgid "User Manual"
msgstr "用户手册" msgstr "用户手册"
#: luci-app-alist/luasrc/model/cbi/alist.lua:35
msgid "Allow Access From Internet" msgid "Allow Access From Internet"
msgstr "允许从外网访问" msgstr "允许从外网访问"
msgid "Default username and password:" msgid "Default username and password:"
msgstr "默认用户名和密码:" msgstr "默认用户名和密码:"
msgid "Enable Logs"
msgstr "启用日志"
msgid "Clear logs"
msgstr "清空日志"

View File

@ -8,6 +8,7 @@ CONFIG=/etc/alist/config.json
get_config() { get_config() {
config_get_bool enabled $1 enabled 1 config_get_bool enabled $1 enabled 1
config_get port $1 port 5244 config_get port $1 port 5244
config_get log $1 log 1
config_get temp_dir $1 temp_dir "/tmp/alist" config_get temp_dir $1 temp_dir "/tmp/alist"
config_get ssl $1 ssl 0 config_get ssl $1 ssl 0
config_get ssl_cert $1 ssl_cert "" config_get ssl_cert $1 ssl_cert ""
@ -46,6 +47,11 @@ start_service() {
else else
SSL=false SSL=false
fi fi
if [ "$log" -eq 1 ];then
LOG=true
else
LOG=false
fi
if [ "$allow_wan" -eq "1" ]; then if [ "$allow_wan" -eq "1" ]; then
listen_addr="0.0.0.0" listen_addr="0.0.0.0"
external_access="allow" external_access="allow"
@ -55,7 +61,7 @@ start_service() {
fi fi
set_firewall set_firewall
cat > $CONFIG <<EOF cat > $CONFIG <<EOF
{"force":false,"address":"$listen_addr","port":$port,"jwt_secret":"","cdn":"","database":{"type":"sqlite3","host":"","port":0,"user":"","password":"","name":"","db_file":"/etc/alist/data.db","table_prefix":"x_","ssl_mode":""},"scheme":{"https":$SSL,"cert_file":"$ssl_cert","key_file":"$ssl_key"},"temp_dir":"$temp_dir","log":{"enable":false,"name":"$temp_dir/alist.log","max_size":10,"max_backups":5,"max_age":28,"compress":false}} {"force":false,"address":"$listen_addr","port":$port,"jwt_secret":"","cdn":"","database":{"type":"sqlite3","host":"","port":0,"user":"","password":"","name":"","db_file":"/etc/alist/data.db","table_prefix":"x_","ssl_mode":""},"scheme":{"https":$SSL,"cert_file":"$ssl_cert","key_file":"$ssl_key"},"temp_dir":"$temp_dir","log":{"enable":$LOG,"name":"$temp_dir/alist.log","max_size":10,"max_backups":5,"max_age":28,"compress":false}}
EOF EOF
procd_open_instance alist procd_open_instance alist
procd_set_param command $PROG procd_set_param command $PROG