mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-04 23:13:56 +08:00
🍕 Sync 2026-09-14 23:30:37
This commit is contained in:
1 parent
0603b094cf
commit
81fe4cd866
214 files changed
+10806
-2630
No files matched your search
@@ -7,11 +7,11 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openlist2
|
||||
PKG_VERSION:=1.0.4
|
||||
PKG_RELEASE:=6
|
||||
PKG_RELEASE:=7
|
||||
|
||||
LUCI_TITLE:=LuCI support for openlist
|
||||
# The virtual provide forces installation of a core package with the helper.
|
||||
LUCI_DEPENDS:=+openlist2 +openlist2-helper
|
||||
# Require a core package with both the restricted helper and automatic TLS.
|
||||
LUCI_DEPENDS:=+openlist2 +openlist2-helper +openlist2-tls
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
|
||||
@@ -545,7 +545,7 @@ return view.extend({
|
||||
};
|
||||
|
||||
o = addOption('scheme', form.Value, 'listen_https_port', _('HTTPS listen port'),
|
||||
_('The upstream default is -1 (disabled). Set a valid port number to enable HTTPS.'));
|
||||
_('Set to -1 to disable HTTPS, or 1-65535 to enable it. Leave both certificate paths empty to use an automatically generated self-signed certificate.'));
|
||||
o.datatype = 'integer';
|
||||
o.default = '-1';
|
||||
o.rmempty = false;
|
||||
@@ -554,14 +554,15 @@ return view.extend({
|
||||
return validateListenPort(value);
|
||||
};
|
||||
|
||||
o = addOption('scheme', form.Flag, 'force_https', _('Force HTTPS'));
|
||||
o = addOption('scheme', form.Flag, 'force_https', _('Force HTTPS'),
|
||||
_('Redirect HTTP requests to HTTPS. The HTTPS listen port enables HTTPS independently of this option.'));
|
||||
o.rmempty = false;
|
||||
|
||||
o = addOption('scheme', form.Value, 'ssl_cert', _('SSL cert'),
|
||||
_('SSL certificate file path'));
|
||||
_('Leave both paths empty to manage a self-signed certificate in the TLS subdirectory of the data directory. It is reused and renewed at startup when fewer than 30 days remain. Browsers do not trust self-signed certificates automatically.'));
|
||||
|
||||
o = addOption('scheme', form.Value, 'ssl_key', _('SSL key'),
|
||||
_('SSL key file path'));
|
||||
_('For custom TLS, specify both certificate and private key paths. The certificate must be currently valid and match its private key. Custom files are never overwritten automatically.'));
|
||||
|
||||
o = addOption('scheme', form.Value, 'listen_unix_file', _('Unix socket file'));
|
||||
|
||||
@@ -572,7 +573,7 @@ return view.extend({
|
||||
o.rmempty = false;
|
||||
|
||||
o = addOption('scheme', form.Flag, 'listen_enable_h3', _('Enable HTTP/3/QUIC'),
|
||||
_('Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled and certificate files must be configured.'));
|
||||
_('Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled. Certificate settings are shared with HTTPS.'));
|
||||
o.rmempty = false;
|
||||
|
||||
// tasks
|
||||
@@ -698,7 +699,8 @@ return view.extend({
|
||||
o.default = 5246;
|
||||
o.rmempty = false;
|
||||
|
||||
o = addOption('s3', form.Flag, 's3_ssl', _('Enable SSL'));
|
||||
o = addOption('s3', form.Flag, 's3_ssl', _('Enable SSL'),
|
||||
_('Use the same custom or automatically generated certificate as HTTPS. Configure certificate paths on the Web Protocol tab.'));
|
||||
o.rmempty = false;
|
||||
|
||||
// ftp
|
||||
@@ -708,7 +710,8 @@ return view.extend({
|
||||
_('Ports or ranges to allow from WAN, for example 50000-50100. They must match the listening ports in OpenList passive port mapping. Empty means passive ports must be allowed manually.'));
|
||||
o.placeholder = '50000-50100';
|
||||
o.depends({ ftp: '1', allow_wan: '1' });
|
||||
o = addOption('ftp', form.Flag, 'ftp', _('Enabled FTP'));
|
||||
o = addOption('ftp', form.Flag, 'ftp', _('Enabled FTP'),
|
||||
_('Enable FTP/SFTP access for the OpenList account in Management > Users. Also grant FTP/SFTP management permission to allow uploads and changes.'));
|
||||
o.rmempty = false;
|
||||
|
||||
o = addOption('ftp', form.Value, 'ftp_port', _('FTP Port'));
|
||||
@@ -749,7 +752,8 @@ return view.extend({
|
||||
o.rmempty = false;
|
||||
|
||||
// sftp
|
||||
o = addOption('sftp', form.Flag, 'sftp', _('Enabled SFTP'));
|
||||
o = addOption('sftp', form.Flag, 'sftp', _('Enabled SFTP'),
|
||||
_('Enable FTP/SFTP access for the OpenList account in Management > Users. Also grant FTP/SFTP management permission to allow uploads and changes.'));
|
||||
o.rmempty = false;
|
||||
|
||||
o = addOption('sftp', form.Value, 'sftp_port', _('SFTP Port'));
|
||||
@@ -764,7 +768,7 @@ return view.extend({
|
||||
|
||||
|
||||
o = addOption('mcp', form.DummyValue, '_mcp_endpoint', _('MCP endpoint'),
|
||||
_('Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList user login token; retain MCP-Session-Id for subsequent requests.'));
|
||||
_('Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList administrator login token; retain MCP-Session-Id for subsequent requests.'));
|
||||
o.depends('mcp', '1');
|
||||
o.renderWidget = () => E('div', {}, [
|
||||
E('code', {}, backendUrl('mcp') || _('Configure a web port or Site URL.')),
|
||||
@@ -793,26 +797,48 @@ return view.extend({
|
||||
if (dist && (containsPath(dist, data) || containsPath(dist, cache) ||
|
||||
containsPath(cache, dist) || containsPath(dist, index) || containsPath(index, dist)))
|
||||
return _('Frontend files must be separate from private data, cache and index files.');
|
||||
if (tlsRequired(section_id) && !fieldValue(section_id, 'ssl_cert') && !fieldValue(section_id, 'ssl_key')) {
|
||||
const tls = data + '/tls';
|
||||
for (const directory of [cache, index, dist].filter(Boolean))
|
||||
if (containsPath(tls, directory) || containsPath(directory, tls))
|
||||
return _('Automatic TLS directory must be separate from cache, index and public frontend directories.');
|
||||
}
|
||||
return true;
|
||||
};
|
||||
for (const name of ['data_dir', 'temp_dir', 'bleve_dir', 'dist_dir'])
|
||||
fields[name].validate = (section_id, value) => validateDirectories(section_id, name, value);
|
||||
|
||||
const tlsRequired = section_id => isEnabledPort(fieldValue(section_id, 'listen_https_port', '-1')) ||
|
||||
(fieldValue(section_id, 's3') === '1' && fieldValue(section_id, 's3_ssl') === '1');
|
||||
for (const name of ['ssl_cert', 'ssl_key']) {
|
||||
fields[name].validate = (section_id, value) => {
|
||||
if (tlsRequired(section_id) && !String(value || '').trim())
|
||||
return _('Certificate and key paths are required for HTTPS or S3 SSL.');
|
||||
return validateAbsolutePath(value, false);
|
||||
};
|
||||
}
|
||||
const tlsRequired = section_id => {
|
||||
const httpsPort = fieldValue(section_id, 'listen_https_port', '-1');
|
||||
const s3Enabled = fieldValue(section_id, 's3') === '1';
|
||||
const s3Ssl = fieldValue(section_id, 's3_ssl') === '1';
|
||||
return isEnabledPort(httpsPort) || (s3Enabled && s3Ssl);
|
||||
};
|
||||
const validateCertificatePaths = (section_id, changed, value) => {
|
||||
if (!tlsRequired(section_id))
|
||||
return true;
|
||||
const cert = changed === 'ssl_cert' ? value : fieldValue(section_id, 'ssl_cert');
|
||||
const key = changed === 'ssl_key' ? value : fieldValue(section_id, 'ssl_key');
|
||||
if (!cert && !key)
|
||||
return true;
|
||||
if (!cert || !key)
|
||||
return _('Leave both certificate paths empty for automatic TLS, or provide both custom certificate and key paths.');
|
||||
for (const path of [cert, key]) {
|
||||
const valid = validateAbsolutePath(path, true);
|
||||
if (valid !== true)
|
||||
return valid;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
for (const name of ['ssl_cert', 'ssl_key'])
|
||||
fields[name].validate = (section_id, value) => validateCertificatePaths(section_id, name, value);
|
||||
// LuCI passes input.value (always "1") for checkbox validation.
|
||||
// Read formvalue() to distinguish checked and unchecked flags.
|
||||
for (const name of ['force_https', 'listen_enable_h3'])
|
||||
fields[name].validate = (section_id, value) => value !== '1' || isEnabledPort(fieldValue(section_id, 'listen_https_port', '-1'))
|
||||
fields[name].validate = section_id => fieldValue(section_id, name) !== '1' || isEnabledPort(fieldValue(section_id, 'listen_https_port', '-1'))
|
||||
? true : _('Force HTTPS and HTTP/3 require an enabled HTTPS port.');
|
||||
fields.s3_ssl.validate = (section_id, value) => value !== '1' || fieldValue(section_id, 's3') !== '1' ||
|
||||
(fieldValue(section_id, 'ssl_cert').trim() && fieldValue(section_id, 'ssl_key').trim())
|
||||
? true : _('Certificate and key paths are required for HTTPS or S3 SSL.');
|
||||
fields.s3_ssl.validate = section_id => fieldValue(section_id, 's3') !== '1' || fieldValue(section_id, 's3_ssl') !== '1'
|
||||
? true : validateCertificatePaths(section_id);
|
||||
fields.listen_unix_file.validate = (section_id, value) => validateAbsolutePath(value, false);
|
||||
fields.listen_unix_file_perm.validate = (section_id, value) => !value || /^[0-7]{3,4}$/.test(value)
|
||||
? true : _('Use 3 or 4 octal digits, for example 660 or 0660.');
|
||||
@@ -857,6 +883,17 @@ return view.extend({
|
||||
};
|
||||
for (const name of ['listen_http_port', 'listen_https_port', 's3_port', 'ftp_port', 'sftp_port', 'ftp_pasv_ports'])
|
||||
fields[name].validate = (section_id, value) => validatePorts(section_id, name, value);
|
||||
const protocolFields = ['listen_http_port', 'listen_https_port', 'force_https', 'listen_enable_h3',
|
||||
'ssl_cert', 'ssl_key', 's3', 's3_ssl', 's3_port', 'ftp', 'ftp_port', 'sftp', 'sftp_port',
|
||||
'ftp_pasv_ports', 'allow_wan', 'data_dir', 'temp_dir', 'bleve_dir', 'dist_dir'];
|
||||
const revalidateProtocolFields = (event, section_id) => {
|
||||
for (const name of protocolFields)
|
||||
if (fields[name].isActive(section_id))
|
||||
fields[name].triggerValidation(section_id);
|
||||
ui.tabs.updateTabs(event, m.root);
|
||||
};
|
||||
for (const name of protocolFields)
|
||||
fields[name].onchange = revalidateProtocolFields;
|
||||
for (const name of ['ftp_pasv_ports', 'log_path', 'log_max_size', 'log_max_backups', 'log_max_age',
|
||||
'log_compress', 'log_filter', 'log_filter_cidr', 'log_filter_path', 'log_filter_method'])
|
||||
fields[name].retain = true;
|
||||
|
||||
@@ -54,7 +54,7 @@ return view.extend({
|
||||
const clearButton = E('button', {
|
||||
'class': 'btn cbi-button-action',
|
||||
'type': 'button',
|
||||
'disabled': !L.hasViewPermission(),
|
||||
'disabled': !L.hasViewPermission() || null,
|
||||
'click': ui.createHandlerFn(this, 'handleCleanLogs')
|
||||
}, _('Clear current log'));
|
||||
|
||||
|
||||
@@ -439,19 +439,23 @@ msgid "HTTPS listen port"
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:548
|
||||
msgid "The upstream default is -1 (disabled). Set a valid port number to enable HTTPS."
|
||||
msgid "Set to -1 to disable HTTPS, or 1-65535 to enable it. Leave both certificate paths empty to use an automatically generated self-signed certificate."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:557
|
||||
msgid "Force HTTPS"
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Redirect HTTP requests to HTTPS. The HTTPS listen port enables HTTPS independently of this option."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:560
|
||||
msgid "SSL cert"
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:561
|
||||
msgid "SSL certificate file path"
|
||||
msgid "Leave both paths empty to manage a self-signed certificate in the TLS subdirectory of the data directory. It is reused and renewed at startup when fewer than 30 days remain. Browsers do not trust self-signed certificates automatically."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:563
|
||||
@@ -459,7 +463,7 @@ msgid "SSL key"
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:564
|
||||
msgid "SSL key file path"
|
||||
msgid "For custom TLS, specify both certificate and private key paths. The certificate must be currently valid and match its private key. Custom files are never overwritten automatically."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:566
|
||||
@@ -483,7 +487,7 @@ msgid "Enable HTTP/3/QUIC"
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:575
|
||||
msgid "Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled and certificate files must be configured."
|
||||
msgid "Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled. Certificate settings are shared with HTTPS."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:579
|
||||
@@ -632,6 +636,10 @@ msgstr ""
|
||||
msgid "Enabled FTP"
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Enable FTP/SFTP access for the OpenList account in Management > Users. Also grant FTP/SFTP management permission to allow uploads and changes."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:714
|
||||
msgid "FTP Port"
|
||||
msgstr ""
|
||||
@@ -689,7 +697,7 @@ msgid "MCP endpoint"
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:767
|
||||
msgid "Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList user login token; retain MCP-Session-Id for subsequent requests."
|
||||
msgid "Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList administrator login token; retain MCP-Session-Id for subsequent requests."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:770
|
||||
@@ -718,7 +726,15 @@ msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:806
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:815
|
||||
msgid "Certificate and key paths are required for HTTPS or S3 SSL."
|
||||
msgid "Leave both certificate paths empty for automatic TLS, or provide both custom certificate and key paths."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Automatic TLS directory must be separate from cache, index and public frontend directories."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Use the same custom or automatically generated certificate as HTTPS. Configure certificate paths on the Web Protocol tab."
|
||||
msgstr ""
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:812
|
||||
|
||||
@@ -440,28 +440,32 @@ msgid "HTTPS listen port"
|
||||
msgstr "HTTPS 监听端口"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:548
|
||||
msgid "The upstream default is -1 (disabled). Set a valid port number to enable HTTPS."
|
||||
msgstr "上游默认值为 -1(禁用)。设为有效端口号可启用 HTTPS。"
|
||||
msgid "Set to -1 to disable HTTPS, or 1-65535 to enable it. Leave both certificate paths empty to use an automatically generated self-signed certificate."
|
||||
msgstr "设为 -1 可禁用 HTTPS,设为 1–65535 可启用 HTTPS。证书和私钥路径同时留空时,使用自动生成的自签名证书。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:557
|
||||
msgid "Force HTTPS"
|
||||
msgstr "强制 HTTPS"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Redirect HTTP requests to HTTPS. The HTTPS listen port enables HTTPS independently of this option."
|
||||
msgstr "将 HTTP 请求重定向到 HTTPS。是否启用 HTTPS 由 HTTPS 监听端口决定,与此选项独立。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:560
|
||||
msgid "SSL cert"
|
||||
msgstr "SSL 证书"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:561
|
||||
msgid "SSL certificate file path"
|
||||
msgstr "SSL 证书文件路径"
|
||||
msgid "Leave both paths empty to manage a self-signed certificate in the TLS subdirectory of the data directory. It is reused and renewed at startup when fewer than 30 days remain. Browsers do not trust self-signed certificates automatically."
|
||||
msgstr "两项路径同时留空时,在数据目录的 tls 子目录中自动管理自签名证书。有效证书会复用,剩余有效期不足 30 天时在启动时更新。浏览器不会自动信任自签名证书。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:563
|
||||
msgid "SSL key"
|
||||
msgstr "SSL 密钥"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:564
|
||||
msgid "SSL key file path"
|
||||
msgstr "SSL 密钥文件路径"
|
||||
msgid "For custom TLS, specify both certificate and private key paths. The certificate must be currently valid and match its private key. Custom files are never overwritten automatically."
|
||||
msgstr "使用自定义证书时,请同时填写证书和私钥路径。证书必须在有效期内且与私钥匹配。自定义文件不会被自动覆盖。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:566
|
||||
msgid "Unix socket file"
|
||||
@@ -484,8 +488,8 @@ msgid "Enable HTTP/3/QUIC"
|
||||
msgstr "启用 HTTP/3/QUIC"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:575
|
||||
msgid "Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled and certificate files must be configured."
|
||||
msgstr "在 HTTPS 监听端口上启用基于 QUIC 的 HTTP/3。必须先启用 HTTPS 并配置证书文件。"
|
||||
msgid "Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled. Certificate settings are shared with HTTPS."
|
||||
msgstr "在 HTTPS 监听端口上启用基于 QUIC 的 HTTP/3。必须先启用 HTTPS,并与 HTTPS 共用证书设置。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:579
|
||||
msgid "Open traffic settings"
|
||||
@@ -633,6 +637,10 @@ msgstr "允许从 WAN 访问的端口或范围,例如 50000-50100,必须与
|
||||
msgid "Enabled FTP"
|
||||
msgstr "启用 FTP"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Enable FTP/SFTP access for the OpenList account in Management > Users. Also grant FTP/SFTP management permission to allow uploads and changes."
|
||||
msgstr "还需在 OpenList 管理后台的“用户”中为账号开启 FTP/SFTP 访问权限;上传和修改文件还需要 FTP/SFTP 管理权限。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:714
|
||||
msgid "FTP Port"
|
||||
msgstr "FTP 端口"
|
||||
@@ -690,8 +698,8 @@ msgid "MCP endpoint"
|
||||
msgstr "MCP 端点"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:767
|
||||
msgid "Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList user login token; retain MCP-Session-Id for subsequent requests."
|
||||
msgstr "使用 Streamable HTTP,认证头为 Authorization: TOKEN,不添加 Bearer 前缀。TOKEN 为 OpenList 用户登录令牌,后续请求需保留 MCP-Session-Id。"
|
||||
msgid "Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList administrator login token; retain MCP-Session-Id for subsequent requests."
|
||||
msgstr "使用 Streamable HTTP,认证头为 Authorization: TOKEN,不添加 Bearer 前缀。TOKEN 必须为 OpenList 管理员登录令牌,后续请求需保留 MCP-Session-Id。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:770
|
||||
msgid "Configure a web port or Site URL."
|
||||
@@ -719,8 +727,16 @@ msgstr "前端文件必须与私有数据、缓存和索引分开。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:806
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:815
|
||||
msgid "Certificate and key paths are required for HTTPS or S3 SSL."
|
||||
msgstr "启用 HTTPS 或 S3 SSL 时必须填写证书和私钥路径。"
|
||||
msgid "Leave both certificate paths empty for automatic TLS, or provide both custom certificate and key paths."
|
||||
msgstr "请将证书和私钥路径同时留空以自动生成证书,或同时填写自定义证书和私钥路径。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Automatic TLS directory must be separate from cache, index and public frontend directories."
|
||||
msgstr "自动 TLS 目录必须与缓存、索引和公开前端目录分开。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Use the same custom or automatically generated certificate as HTTPS. Configure certificate paths on the Web Protocol tab."
|
||||
msgstr "与 HTTPS 共用自定义或自动生成的证书。请在“Web 协议”选项卡配置证书路径。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:812
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:855
|
||||
|
||||
@@ -440,28 +440,32 @@ msgid "HTTPS listen port"
|
||||
msgstr "HTTPS 監聽埠"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:548
|
||||
msgid "The upstream default is -1 (disabled). Set a valid port number to enable HTTPS."
|
||||
msgstr "上游預設值為 -1(停用)。設為有效埠號可啟用 HTTPS。"
|
||||
msgid "Set to -1 to disable HTTPS, or 1-65535 to enable it. Leave both certificate paths empty to use an automatically generated self-signed certificate."
|
||||
msgstr "設為 -1 可停用 HTTPS,設為 1–65535 可啟用 HTTPS。憑證與私密金鑰路徑同時留空時,使用自動產生的自簽憑證。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:557
|
||||
msgid "Force HTTPS"
|
||||
msgstr "強制 HTTPS"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Redirect HTTP requests to HTTPS. The HTTPS listen port enables HTTPS independently of this option."
|
||||
msgstr "將 HTTP 請求重新導向至 HTTPS。是否啟用 HTTPS 由 HTTPS 監聽埠決定,與此選項獨立。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:560
|
||||
msgid "SSL cert"
|
||||
msgstr "SSL 證書"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:561
|
||||
msgid "SSL certificate file path"
|
||||
msgstr "SSL 證書檔案路徑"
|
||||
msgid "Leave both paths empty to manage a self-signed certificate in the TLS subdirectory of the data directory. It is reused and renewed at startup when fewer than 30 days remain. Browsers do not trust self-signed certificates automatically."
|
||||
msgstr "兩項路徑同時留空時,在資料目錄的 tls 子目錄中自動管理自簽憑證。有效憑證會重複使用,剩餘有效期不足 30 天時於啟動時更新。瀏覽器不會自動信任自簽憑證。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:563
|
||||
msgid "SSL key"
|
||||
msgstr "SSL 金鑰"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:564
|
||||
msgid "SSL key file path"
|
||||
msgstr "SSL 金鑰檔案路徑"
|
||||
msgid "For custom TLS, specify both certificate and private key paths. The certificate must be currently valid and match its private key. Custom files are never overwritten automatically."
|
||||
msgstr "使用自訂憑證時,請同時填寫憑證與私密金鑰路徑。憑證必須在有效期內且與私密金鑰相符。自訂檔案不會被自動覆寫。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:566
|
||||
msgid "Unix socket file"
|
||||
@@ -484,8 +488,8 @@ msgid "Enable HTTP/3/QUIC"
|
||||
msgstr "啟用 HTTP/3/QUIC"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:575
|
||||
msgid "Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled and certificate files must be configured."
|
||||
msgstr "在 HTTPS 監聽連接埠上啟用基於 QUIC 的 HTTP/3。必須先啟用 HTTPS 並配置憑證檔案。"
|
||||
msgid "Enable HTTP/3 over QUIC on the HTTPS listen port. HTTPS must be enabled. Certificate settings are shared with HTTPS."
|
||||
msgstr "在 HTTPS 監聽埠上啟用基於 QUIC 的 HTTP/3。必須先啟用 HTTPS,並與 HTTPS 共用憑證設定。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:579
|
||||
msgid "Open traffic settings"
|
||||
@@ -633,6 +637,10 @@ msgstr "允許從 WAN 存取的連接埠或範圍,例如 50000-50100,必須
|
||||
msgid "Enabled FTP"
|
||||
msgstr "啟用 FTP"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Enable FTP/SFTP access for the OpenList account in Management > Users. Also grant FTP/SFTP management permission to allow uploads and changes."
|
||||
msgstr "還需在 OpenList 管理後台的「使用者」中為帳號開啟 FTP/SFTP 存取權限;上傳和修改檔案還需要 FTP/SFTP 管理權限。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:714
|
||||
msgid "FTP Port"
|
||||
msgstr "FTP 埠"
|
||||
@@ -690,8 +698,8 @@ msgid "MCP endpoint"
|
||||
msgstr "MCP 端點"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:767
|
||||
msgid "Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList user login token; retain MCP-Session-Id for subsequent requests."
|
||||
msgstr "使用 Streamable HTTP,認證標頭為 Authorization: TOKEN,不加 Bearer 前綴。TOKEN 為 OpenList 使用者登入權杖,後續請求須保留 MCP-Session-Id。"
|
||||
msgid "Use Streamable HTTP with Authorization: TOKEN, without a Bearer prefix. Use an OpenList administrator login token; retain MCP-Session-Id for subsequent requests."
|
||||
msgstr "使用 Streamable HTTP,認證標頭為 Authorization: TOKEN,不加 Bearer 前綴。TOKEN 必須為 OpenList 管理員登入權杖,後續請求須保留 MCP-Session-Id。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:770
|
||||
msgid "Configure a web port or Site URL."
|
||||
@@ -719,8 +727,16 @@ msgstr "前端檔案必須與私人資料、快取及索引分開。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:806
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:815
|
||||
msgid "Certificate and key paths are required for HTTPS or S3 SSL."
|
||||
msgstr "啟用 HTTPS 或 S3 SSL 時必須填寫憑證及私密金鑰路徑。"
|
||||
msgid "Leave both certificate paths empty for automatic TLS, or provide both custom certificate and key paths."
|
||||
msgstr "請將憑證與私密金鑰路徑同時留空以自動產生憑證,或同時填寫自訂憑證與私密金鑰路徑。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Automatic TLS directory must be separate from cache, index and public frontend directories."
|
||||
msgstr "自動 TLS 目錄必須與快取、索引及公開前端目錄分開。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js
|
||||
msgid "Use the same custom or automatically generated certificate as HTTPS. Configure certificate paths on the Web Protocol tab."
|
||||
msgstr "與 HTTPS 共用自訂或自動產生的憑證。請在「Web 協定」分頁設定憑證路徑。"
|
||||
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:812
|
||||
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:855
|
||||
|
||||
Reference in new issue
Block a user