mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-14 20:29:29 +08:00
update 2026-09-26 11:07:27
This commit is contained in:
1 parent
7b88b273d0
commit
97ae9f68da
4898 files changed
-1712274
No files matched your search
@@ -1,17 +0,0 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-aliyundrive-webdav
|
||||
PKG_VERSION:=2.3.3
|
||||
PKG_RELEASE:=1
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_MAINTAINER:=messense <messense@icloud.com>
|
||||
|
||||
LUCI_TITLE:=LuCI Support for aliyundrive-webdav
|
||||
LUCI_PKGARCH:=all
|
||||
LUCI_DEPENDS:=+aliyundrive-webdav
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
# call BuildPackage - OpenWrt buildroot signature
|
||||
@@ -1,66 +0,0 @@
|
||||
module("luci.controller.aliyundrive-webdav", package.seeall)
|
||||
|
||||
function index()
|
||||
if not nixio.fs.access("/etc/config/aliyundrive-webdav") then
|
||||
return
|
||||
end
|
||||
|
||||
local page
|
||||
page = entry({ "admin", "services", "aliyundrive-webdav" }, alias("admin", "services", "aliyundrive-webdav", "client"),
|
||||
_("AliyunDrive WebDAV"), 10) -- 首页
|
||||
page.dependent = true
|
||||
page.acl_depends = { "luci-app-aliyundrive-webdav" }
|
||||
|
||||
entry({ "admin", "services", "aliyundrive-webdav", "client" }, cbi("aliyundrive-webdav/client"), _("Settings"), 10).leaf = true -- 客户端配置
|
||||
entry({ "admin", "services", "aliyundrive-webdav", "log" }, form("aliyundrive-webdav/log"), _("Log"), 30).leaf = true -- 日志页面
|
||||
|
||||
entry({ "admin", "services", "aliyundrive-webdav", "status" }, call("action_status")).leaf = true -- 运行状态
|
||||
entry({ "admin", "services", "aliyundrive-webdav", "logtail" }, call("action_logtail")).leaf = true -- 日志采集
|
||||
entry({ "admin", "services", "aliyundrive-webdav", "qrcode" }, call("action_generate_qrcode")).leaf = true -- 生成扫码登录二维码地址和参数
|
||||
entry({ "admin", "services", "aliyundrive-webdav", "query" }, call("action_query_qrcode")).leaf = true -- 查询扫码登录结果
|
||||
entry({ "admin", "services", "aliyundrive-webdav", "invalidate-cache" }, call("action_invalidate_cache")).leaf = true -- 清除缓存
|
||||
end
|
||||
|
||||
function action_status()
|
||||
local e = {}
|
||||
e.running = luci.sys.call("pidof aliyundrive-webdav >/dev/null") == 0
|
||||
e.application = luci.sys.exec("aliyundrive-webdav --version")
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
|
||||
function action_logtail()
|
||||
local fs = require "nixio.fs"
|
||||
local log_path = "/var/log/aliyundrive-webdav.log"
|
||||
local e = {}
|
||||
e.running = luci.sys.call("pidof aliyundrive-webdav >/dev/null") == 0
|
||||
if fs.access(log_path) then
|
||||
e.log = luci.sys.exec("tail -n 100 %s | sed 's/\\x1b\\[[0-9;]*m//g'" % log_path)
|
||||
else
|
||||
e.log = ""
|
||||
end
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
|
||||
function action_generate_qrcode()
|
||||
local output = luci.sys.exec("aliyundrive-webdav qr generate")
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write(output)
|
||||
end
|
||||
|
||||
function action_query_qrcode()
|
||||
local data = luci.http.formvalue()
|
||||
local sid = data.sid
|
||||
local output = {}
|
||||
output.refresh_token = luci.sys.exec("aliyundrive-webdav qr query --sid " .. sid)
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(output)
|
||||
end
|
||||
|
||||
function action_invalidate_cache()
|
||||
local e = {}
|
||||
e.ok = luci.sys.call("kill -HUP `pidof aliyundrive-webdav`") == 0
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json(e)
|
||||
end
|
||||
@@ -1,83 +0,0 @@
|
||||
m = Map("aliyundrive-webdav")
|
||||
m.title = translate("AliyunDrive WebDAV")
|
||||
m.description = translate("<a href=\"https://github.com/messense/aliyundrive-webdav\" target=\"_blank\">Project GitHub URL</a>")
|
||||
|
||||
m:section(SimpleSection).template = "aliyundrive-webdav/aliyundrive-webdav_status"
|
||||
|
||||
e = m:section(TypedSection, "server")
|
||||
e.anonymous = true
|
||||
|
||||
enable = e:option(Flag, "enable", translate("Enable"))
|
||||
enable.rmempty = false
|
||||
|
||||
refresh_token = e:option(Value, "refresh_token", translate("Refresh Token"))
|
||||
refresh_token.description = translate("Double click the input box above to get refresh token by scanning qrcode")
|
||||
|
||||
qrcode = e:option(DummyValue, '', '')
|
||||
qrcode.rawhtml = true
|
||||
qrcode.template = 'aliyundrive-webdav/aliyundrive-webdav_qrcode'
|
||||
|
||||
root = e:option(Value, "root", translate("Root Directory"))
|
||||
root.description = translate("Restrict access to a folder of aliyundrive, defaults to / which means no restrictions")
|
||||
root.default = "/"
|
||||
|
||||
host = e:option(Value, "host", translate("Host"))
|
||||
host.default = "0.0.0.0"
|
||||
host.datatype = "ipaddr"
|
||||
|
||||
port = e:option(Value, "port", translate("Port"))
|
||||
port.default = "8080"
|
||||
port.datatype = "port"
|
||||
|
||||
drive_type = e:option(ListValue, "drive_type", translate("Aliyun drive type"))
|
||||
drive_type.description = translate("Supports drive type: resource, backup")
|
||||
drive_type:value("resource", "resource");
|
||||
drive_type:value("backup", "backup");
|
||||
drive_type.default = "backup"
|
||||
|
||||
tls_cert = e:option(Value, "tls_cert", translate("TLS certificate file path"))
|
||||
tls_key = e:option(Value, "tls_key", translate("TLS private key file path"))
|
||||
|
||||
auth_user = e:option(Value, "auth_user", translate("Username"))
|
||||
auth_password = e:option(Value, "auth_password", translate("Password"))
|
||||
auth_password.password = true
|
||||
|
||||
read_buffer_size = e:option(Value, "read_buffer_size", translate("Read Buffer Size"))
|
||||
read_buffer_size.default = "10485760"
|
||||
read_buffer_size.datatype = "uinteger"
|
||||
|
||||
prefer_http_download = e:option(Flag, "prefer_http_download", translate("Prefer HTTP Download"))
|
||||
prefer_http_download.description = translate("Prefer downloading files using HTTP instead of HTTPS protocol")
|
||||
prefer_http_download.rmempty = false
|
||||
|
||||
redirect = e:option(Flag, "redirect", translate("Enable 302 Redirect"))
|
||||
redirect.description = translate("Enable 302 redirect when possible")
|
||||
redirect.rmempty = false
|
||||
|
||||
upload_buffer_size = e:option(Value, "upload_buffer_size", translate("Upload Buffer Size"))
|
||||
upload_buffer_size.default = "16777216"
|
||||
upload_buffer_size.datatype = "uinteger"
|
||||
|
||||
skip_upload_same_size = e:option(Flag, "skip_upload_same_size", translate("Skip uploading same size files"))
|
||||
skip_upload_same_size.description = translate("Reduce the upload traffic by skipping uploading files with the same size")
|
||||
skip_upload_same_size.rmempty = false
|
||||
|
||||
cache_size = e:option(Value, "cache_size", translate("Cache Size"))
|
||||
cache_size.default = "1000"
|
||||
cache_size.datatype = "uinteger"
|
||||
|
||||
cache_ttl = e:option(Value, "cache_ttl", translate("Cache Expiration Time (seconds)"))
|
||||
cache_ttl.default = "600"
|
||||
cache_ttl.datatype = "uinteger"
|
||||
|
||||
no_trash = e:option(Flag, "no_trash", translate("Delete file permanently instead of trashing"))
|
||||
no_trash.rmempty = false
|
||||
|
||||
read_only = e:option(Flag, "read_only", translate("Enable read only mode"))
|
||||
read_only.description = translate("Disallow upload, modify and delete file operations")
|
||||
read_only.rmempty = false
|
||||
|
||||
debug = e:option(Flag, "debug", translate("Debug Mode"))
|
||||
debug.rmempty = false
|
||||
|
||||
return m
|
||||
@@ -1,9 +0,0 @@
|
||||
log = SimpleForm("logview")
|
||||
log.submit = false
|
||||
log.reset = false
|
||||
|
||||
t = log:field(DummyValue, '', '')
|
||||
t.rawhtml = true
|
||||
t.template = 'aliyundrive-webdav/aliyundrive-webdav_log'
|
||||
|
||||
return log
|
||||
@@ -1,15 +0,0 @@
|
||||
<%+cbi/valueheader%>
|
||||
<textarea id="logview" class="cbi-input-textarea" style="width: 100%" rows="30" readonly="readonly"></textarea>
|
||||
|
||||
<script type="text/javascript">
|
||||
const LOG_URL = '<%=luci.dispatcher.build_url("admin", "services", "aliyundrive-webdav", "logtail")%>';
|
||||
XHR.poll(1, LOG_URL, null, (x, d) => {
|
||||
let logview = document.getElementById("logview");
|
||||
if (!d.running) {
|
||||
XHR.halt();
|
||||
}
|
||||
logview.value = d.log;
|
||||
logview.scrollTop = logview.scrollHeight;
|
||||
});
|
||||
</script>
|
||||
<%+cbi/valuefooter%>
|
||||
-158
@@ -1,158 +0,0 @@
|
||||
<%+cbi/valueheader%>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
|
||||
<style>
|
||||
#mask-box {
|
||||
z-index: 1000;
|
||||
display: flex;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, .8);
|
||||
}
|
||||
#mask-box #code-box {
|
||||
color: #000000;
|
||||
width: 288px;
|
||||
height: 325px;
|
||||
border: 1px solid #585858;
|
||||
padding: 15px;
|
||||
position: absolute;
|
||||
box-shadow: 0px 0px 7px 3px rgb(0 0 0 / 20%);
|
||||
background: #fff url('data:image/gif;base64,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 truncated
|
||||
border-radius: 4px;
|
||||
}
|
||||
#mask-box #code-box img {
|
||||
margin-top: 5px;
|
||||
}
|
||||
#mask-box #close-link {
|
||||
float: right;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin: -32px;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHhtbDpzcGFjZT0icHJlc2VydmUiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB5PSIwIiB4PSIwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSLlnJblsaRfMSIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0N3B4IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1zaXplOmluaXRpYWw7YmFja2dyb3VuZC1yZXBlYXQteTppbml0aWFsO2JhY2tncm91bmQtcmVwZWF0LXg6aW5pdGlhbDtiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6aW5pdGlhbDtiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6aW5pdGlhbDtiYWNrZ3JvdW5kLW9yaWdpbjppbml0aWFsO2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtiYWNrZ3JvdW5kLWNsaXA6aW5pdGlhbDtiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6aW5pdGlhbDthbmltYXRpb24tcGxheS1zdGF0ZTpwYXVzZWQiID48ZyBjbGFzcz0ibGRsLXNjYWxlIiBzdHlsZT0idHJhbnNmb3JtLW9yaWdpbjo1MCUgNTAlO3RyYW5zZm9ybTpyb3RhdGUoMGRlZykgc2NhbGUoMC44LCAwLjgpO2FuaW1hdGlvbi1wbGF5LXN0YXRlOnBhdXNlZCIgPjxjaXJjbGUgZmlsbD0iIzMzMyIgcj0iNDAiIGN5PSI1MCIgY3g9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoODksIDg5LCA4OSk7YW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkIiA+PC9jaXJjbGU+CjxnIHN0eWxlPSJhbmltYXRpb24tcGxheS1zdGF0ZTpwYXVzZWQiID48cGF0aCBkPSJNMjUuMyA0NWg0OS41djEwSDI1LjN6IiBmaWxsPSIjZTE1YjY0IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDQuOTk2IDQ5Ljk5NyA0OS45OTcpIiBzdHlsZT0iZmlsbDpyZ2IoMjU1LCAyNTUsIDI1NSk7YW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkIiA+PC9wYXRoPjwvZz4KPGcgc3R5bGU9ImFuaW1hdGlvbi1wbGF5LXN0YXRlOnBhdXNlZCIgPjxwYXRoIGQ9Ik00NSAyNS4zaDEwdjQ5LjVINDV6IiBmaWxsPSIjZTE1YjY0IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDUuMDAxIDUwIDUwKSIgc3R5bGU9ImZpbGw6cmdiKDI1NSwgMjU1LCAyNTUpO2FuaW1hdGlvbi1wbGF5LXN0YXRlOnBhdXNlZCIgPjwvcGF0aD48L2c+CjxtZXRhZGF0YSB4bWxuczpkPSJodHRwczovL2xvYWRpbmcuaW8vc3RvY2svIiBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkIiA+PGQ6bmFtZSBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkIiA+Y2xvc2U8L2Q6bmFtZT4KPGQ6dGFncyBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkIiA+Y2xvc2UscmVqZWN0LG9mZixkaXNhYmxlLHJlbW92ZSxkZWxldGUsY2FuY2VsLGRyb3AsY29sbGFwc2U8L2Q6dGFncz4KPGQ6bGljZW5zZSBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkIiA+Ynk8L2Q6bGljZW5zZT4KPGQ6c2x1ZyBzdHlsZT0iYW5pbWF0aW9uLXBsYXktc3RhdGU6cGF1c2VkIiA+bmVmM2Q0PC9kOnNsdWc+PC9tZXRhZGF0YT48L2c+PCEtLSBnZW5lcmF0ZWQgYnkgaHR0cHM6Ly9sb2FkaW5nLmlvLyAtLT48L3N2Zz4=') no-repeat center center;
|
||||
}
|
||||
#mask-box #load-link {
|
||||
color: #fbfbfb;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: 0 10px;
|
||||
bottom: 115px;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
position: absolute;
|
||||
background: #e4393c;
|
||||
line-height: 48px;
|
||||
text-decoration: none;
|
||||
}
|
||||
div[id$="-html"] {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function( window, document, undefined ) {
|
||||
// 选取 DOM 元素
|
||||
var selector, section = document.querySelector("[id$='refresh_token']");
|
||||
|
||||
// 遮罩容器
|
||||
var mask = document.createElement('div');
|
||||
mask.id = 'mask-box';
|
||||
|
||||
// 二维码容器
|
||||
var code = document.createElement('div');
|
||||
code.id = 'code-box';
|
||||
code.innerHTML = "请使用 阿里云盘 App 进行扫码认证";
|
||||
|
||||
// 刷新按钮
|
||||
var load = document.createElement('a');
|
||||
load.id = 'load-link';
|
||||
load.innerHTML = "刷新";
|
||||
|
||||
// 创建二维码
|
||||
var make = new QRCode( code, { correctLevel: QRCode.CorrectLevel.L });
|
||||
make.clear = function() {
|
||||
code.getElementsByTagName("img").item(0).removeAttribute('src');
|
||||
this._oDrawing.clear();
|
||||
}
|
||||
|
||||
// 关闭按钮
|
||||
var link = document.createElement('a');
|
||||
link.id = 'close-link';
|
||||
link.addEventListener('click', ( e ) => {
|
||||
XHR.halt();
|
||||
XHR._q = [];
|
||||
mask.remove();
|
||||
return false;
|
||||
});
|
||||
|
||||
// 二维码层居中
|
||||
var center = function() {
|
||||
// 调整遮罩层覆盖范围
|
||||
mask.style.width = section.clientWidth + "px";
|
||||
mask.style.height = section.clientHeight + "px";
|
||||
// 二维码层居中
|
||||
var top = selector.offsetTop - selector.parentNode.offsetTop;
|
||||
if ( selector.offsetTop <= 380 ) {
|
||||
code.style.top = top + selector.offsetHeight + "px";
|
||||
} else {
|
||||
code.style.top = top - code.offsetHeight + "px";
|
||||
}
|
||||
code.style.left = ( ( section.offsetWidth - code.offsetWidth ) / 2 ) + parseInt( ( selector.currentStyle || window.getComputedStyle( selector ) ).marginLeft ) + "px";
|
||||
};
|
||||
|
||||
// 获取二维码
|
||||
var feedback = function() {
|
||||
// 清除二维码
|
||||
make.clear();
|
||||
// 获取通信数据
|
||||
XHR.get( '<%=luci.dispatcher.build_url("admin", "services", "aliyundrive-webdav","qrcode")%>', null, ( x, d ) => {
|
||||
if ( x.status != 200 ) {
|
||||
alert('获取二维码失败!');
|
||||
return false;
|
||||
}
|
||||
// 移除刷新
|
||||
load.remove();
|
||||
// 创建二维码
|
||||
make.makeCode("https://www.aliyundrive.com/o/oauth/authorize?sid=" + d.sid);
|
||||
// 监听扫码反馈
|
||||
XHR.poll( 3, '<%=luci.dispatcher.build_url("admin", "services", "aliyundrive-webdav", "query")%>', { sid: d.sid }, ( x, d ) => {
|
||||
if ( d.refresh_token.trim() ) {
|
||||
// 清除线程
|
||||
XHR.halt();
|
||||
XHR._q = [];
|
||||
// 回写 Cookie 数据
|
||||
mask.remove();
|
||||
selector.value = d.refresh_token.trim();
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// 鼠标事件
|
||||
var event = function( e ) {
|
||||
// 区分单击、双击事件
|
||||
if ( e.target.tagName == "INPUT" && e.type == "dblclick" ) {
|
||||
selector = e.target;
|
||||
} else if ( e.target.tagName == "IMG" && e.type == "click" && /add/ig.test( e.target.src ) ) {
|
||||
selector = section.getElementsByTagName("INPUT");
|
||||
selector = selector.item( selector.length - 1 );
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
// 插入容器
|
||||
if ( !document.contains( mask ) ) {
|
||||
section.prepend( mask );
|
||||
mask.prepend( code );
|
||||
code.prepend( link );
|
||||
center();
|
||||
}
|
||||
// 获取及监听扫码事件
|
||||
feedback();
|
||||
};
|
||||
|
||||
// 绑定事件
|
||||
section.addEventListener( 'click', event );
|
||||
section.addEventListener( 'dblclick', event );
|
||||
})( window, document );
|
||||
</script>
|
||||
<%+cbi/valuefooter%>
|
||||
-36
@@ -1,36 +0,0 @@
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
XHR.poll(3, '<%=url([[admin]], [[services]], [[aliyundrive-webdav]], [[status]])%>', null,
|
||||
function(x, data) {
|
||||
var tb = document.getElementById('aliyundrive-webdav_status');
|
||||
if (data && tb) {
|
||||
if (data.running) {
|
||||
tb.innerHTML = '<em><b style=color:green>' + data.application + '<%:RUNNING%></b></em>';
|
||||
} else {
|
||||
tb.innerHTML = '<em><b style=color:red>' + data.application + '<%:NOT RUNNING%></b></em>';
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
function invalidateCache(button) {
|
||||
XHR.get('<%=url([[admin]], [[services]], [[aliyundrive-webdav]], [[invalidate-cache]])%>', null,
|
||||
function(x, data) {
|
||||
if (data.ok) {
|
||||
alert("缓存已清除.");
|
||||
} else {
|
||||
alert("清除缓存失败!");
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
//]]>
|
||||
</script>
|
||||
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
|
||||
<fieldset class="cbi-section">
|
||||
<p id="aliyundrive-webdav_status" style="float: left; width: 60%; margin-top: 12px;">
|
||||
<em><%:Collecting data...%></em>
|
||||
</p>
|
||||
<p class="right" style="float: right; width: 40%;">
|
||||
<button class="cbi-button" onclick="event.stopPropagation(); invalidateCache(this);"><%:Invalidate cache%></button>
|
||||
</p>
|
||||
</fieldset>
|
||||
@@ -1,110 +0,0 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
msgid "AliyunDrive"
|
||||
msgstr "阿里云盘"
|
||||
|
||||
msgid "AliyunDrive WebDAV"
|
||||
msgstr "阿里云盘 WebDAV"
|
||||
|
||||
msgid "Enable"
|
||||
msgstr "启用"
|
||||
|
||||
msgid "Refresh Token"
|
||||
msgstr "Refresh Token"
|
||||
|
||||
msgid "Root Directory"
|
||||
msgstr "云盘根目录"
|
||||
|
||||
msgid "Host"
|
||||
msgstr "监听主机"
|
||||
|
||||
msgid "Port"
|
||||
msgstr "监听端口"
|
||||
|
||||
msgid "Aliyun drive type"
|
||||
msgstr "云盘驱动类型"
|
||||
|
||||
msgid "Supports drive type: resource, backup"
|
||||
msgstr "支持驱动器类型:resource, backup"
|
||||
|
||||
msgid "TLS certificate file path"
|
||||
msgstr "TLS 证书文件路径"
|
||||
|
||||
msgid "TLS private key file path"
|
||||
msgstr "TLS 私钥文件路径"
|
||||
|
||||
msgid "Username"
|
||||
msgstr "用户名"
|
||||
|
||||
msgid "Password"
|
||||
msgstr "密码"
|
||||
|
||||
msgid "Read Buffer Size"
|
||||
msgstr "下载缓冲大小(bytes)"
|
||||
|
||||
msgid "Upload Buffer Size"
|
||||
msgstr "上传缓冲大小(bytes)"
|
||||
|
||||
msgid "Cache Size"
|
||||
msgstr "目录缓存大小"
|
||||
|
||||
msgid "Cache Expiration Time (seconds)"
|
||||
msgstr "目录缓存过期时间(单位为秒)"
|
||||
|
||||
msgid "Collecting data..."
|
||||
msgstr "获取数据中..."
|
||||
|
||||
msgid "Invalidate cache"
|
||||
msgstr "清除缓存"
|
||||
|
||||
msgid "RUNNING"
|
||||
msgstr "运行中"
|
||||
|
||||
msgid "NOT RUNNING"
|
||||
msgstr "未运行"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "设置"
|
||||
|
||||
msgid "Log"
|
||||
msgstr "日志"
|
||||
|
||||
msgid "Debug Mode"
|
||||
msgstr "调试模式"
|
||||
|
||||
msgid "<a href=\"https://github.com/messense/aliyundrive-webdav\" target=\"_blank\">Project GitHub URL</a>"
|
||||
msgstr "<a href=\"https://github.com/messense/aliyundrive-webdav\" target=\"_blank\">GitHub 项目地址</a> | <a href=\"https://t.zsxq.com/0c9sq6Ca8\" target=\"_blank\">加入知识星球</a>"
|
||||
|
||||
msgid "Double click the input box above to get refresh token by scanning qrcode"
|
||||
msgstr "鼠标双击上面的输入框扫码登录自动获取 refresh token"
|
||||
|
||||
msgid "Restrict access to a folder of aliyundrive, defaults to / which means no restrictions"
|
||||
msgstr "限制只能访问该云盘目录,默认为 / 表示不限制,注意这个参数不是本地磁盘路径"
|
||||
|
||||
msgid "Delete file permanently instead of trashing"
|
||||
msgstr "删除文件不放入回收站"
|
||||
|
||||
msgid "Enable read only mode"
|
||||
msgstr "启用只读模式"
|
||||
|
||||
msgid "Disallow upload, modify and delete file operations"
|
||||
msgstr "禁止上传、修改和删除文件操作"
|
||||
|
||||
msgid "Skip uploading same size files"
|
||||
msgstr "跳过上传相同大小的文件"
|
||||
|
||||
msgid "Reduce the upload traffic by skipping uploading files with the same size"
|
||||
msgstr "跳过上传相同大小的文件减少上传流量消耗,但可能会导致修改过的同样大小的文件不会被上传"
|
||||
|
||||
msgid "Prefer HTTP Download"
|
||||
msgstr "使用 HTTP 下载"
|
||||
|
||||
msgid "Prefer downloading files using HTTP instead of HTTPS protocol"
|
||||
msgstr "优先使用 HTTP 而不是 HTTPS 协议下载,低端设备上降低 CPU 占用"
|
||||
|
||||
msgid "Enable 302 Redirect"
|
||||
msgstr "启用 302 重定向"
|
||||
|
||||
msgid "Enable 302 redirect when possible"
|
||||
msgstr "在可能的情况下启用 302 重定向"
|
||||
@@ -1 +0,0 @@
|
||||
zh-cn
|
||||
@@ -1,11 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
delete ucitrack.@aliyundrive-webdav[-1]
|
||||
add ucitrack aliyundrive-webdav
|
||||
set ucitrack.@aliyundrive-webdav[-1].init=aliyundrive-webdav
|
||||
commit ucitrack
|
||||
EOF
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
exit 0
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"luci-app-aliyundrive-webdav": {
|
||||
"description": "Grant UCI access for luci-app-aliyundrive-webdav",
|
||||
"read": {
|
||||
"uci": [ "aliyundrive-webdav" ]
|
||||
},
|
||||
"write": {
|
||||
"uci": [ "aliyundrive-webdav" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user