mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-03 15:33:56 +08:00
🌴 Sync 2026-05-13 20:46:46
This commit is contained in:
1 parent
6bb23e315c
commit
a15c25c73e
16 files changed
+886
-315
No files matched your search
@@ -16,8 +16,8 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-amlogic
|
PKG_NAME:=luci-app-amlogic
|
||||||
PKG_VERSION:=3.1.309
|
PKG_VERSION:=3.1.312
|
||||||
PKG_RELEASE:=9
|
PKG_RELEASE:=10
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0 License
|
PKG_LICENSE:=GPL-2.0 License
|
||||||
PKG_MAINTAINER:=ophub <https://github.com/ophub/luci-app-amlogic>
|
PKG_MAINTAINER:=ophub <https://github.com/ophub/luci-app-amlogic>
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="85" height="20" role="img" aria-label="JavaScript"><title>JavaScript</title><g shape-rendering="crispEdges"><rect width="0" height="20" fill="#555"/><rect x="0" width="85" height="20" fill="#323330"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" href="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjZjdkZjFlIiByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+SmF2YVNjcmlwdDwvdGl0bGU+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6bTIyLjAzNCAxOC4yNzZjLS4xNzUtMS4wOTUtLjg4OC0yLjAxNS0zLjAwMy0yLjg3My0uNzM2LS4zNDUtMS41NTQtLjU4NS0xLjc5Ny0xLjE0LS4wOTEtLjMzLS4xMDUtLjUxLS4wNDYtLjcwNS4xNS0uNjQ2LjkxNS0uODQgMS41MTUtLjY2LjM5LjEyLjc1LjQyLjk3Ni45IDEuMDM0LS42NzYgMS4wMzQtLjY3NiAxLjc1NS0xLjEyNS0uMjctLjQyLS40MDQtLjYwMS0uNTg2LS43OC0uNjMtLjcwNS0xLjQ2OS0xLjA2NS0yLjgzNC0xLjAzNGwtLjcwNS4wODljLS42NzYuMTY1LTEuMzIuNTI1LTEuNzEgMS4wMDUtMS4xNCAxLjI5MS0uODExIDMuNTQxLjU2OSA0LjQ3MSAxLjM2NSAxLjAyIDMuMzYxIDEuMjQ0IDMuNjE2IDIuMjA1LjI0IDEuMTctLjg3IDEuNTQ1LTEuOTY2IDEuNDEtLjgxMS0uMTgtMS4yNi0uNTg2LTEuNzU1LTEuMzM2bC0xLjgzIDEuMDUxYy4yMS40OC40NS42ODkuODEgMS4xMDkgMS43NCAxLjc1NiA2LjA5IDEuNjY2IDYuODcxLTEuMDA0LjAyOS0uMDkuMjQtLjcwNS4wNzQtMS42NWwuMDQ2LjA2N3ptLTguOTgzLTcuMjQ1aC0yLjI0OGMwIDEuOTM4LS4wMDkgMy44NjQtLjAwOSA1LjgwNSAwIDEuMjMyLjA2MyAyLjM2My0uMTM4IDIuNzExLS4zMy42ODktMS4xOC42MDEtMS41NjYuNDgtLjM5Ni0uMTk2LS41OTctLjQ2Ni0uODMtLjg1NS0uMDYzLS4xMDUtLjExLS4xOTYtLjEyNy0uMTk2bC0xLjgyNSAxLjEyNWMuMzA1LjYzLjc1IDEuMTcyIDEuMzI0IDEuNTE3Ljg1NS41MSAyLjAwNC42NzUgMy4yMDcuNDA1Ljc4My0uMjI2IDEuNDU4LS42OTEgMS44MTEtMS40MTEuNTEtLjkzLjQwMi0yLjA3LjM5Ny0zLjM0Ni4wMTItMi4wNTQgMC00LjEwOSAwLTYuMTc5bC4wMDQtLjA1NnoiLz48L3N2Zz4="/><text x="515" y="140" transform="scale(.1)" fill="#fff" textLength="570">JavaScript</text></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="47" height="20" role="img" aria-label="Lua"><title>Lua</title><g shape-rendering="crispEdges"><rect width="0" height="20" fill="#555"/><rect x="0" width="47" height="20" fill="#2c2d72"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><image x="5" y="3" width="14" height="14" href="data:image/svg+xml;base64,PHN2ZyBmaWxsPSJ3aGl0ZSIgcm9sZT0iaW1nIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHRpdGxlPkx1YTwvdGl0bGU+PHBhdGggZD0iTS4zOCAxMC4zNzdsLS4yNzItLjAzN2MtLjA0OC4zNDQtLjA4Mi42OTUtLjEwMSAxLjA0MWwuMjc1LjAxNmMuMDE4LS4zNC4wNTEtLjY4Mi4wOTgtMS4wMnpNNC4xMzYgMy4yODlsLS4xODQtLjIwNWMtLjI1OC4yMzItLjUwOS40OC0uNzQ2LjczNGwuMjAyLjE4OGMuMjMxLS4yNDguNDc2LS40OS43MjgtLjcxN3pNNS43NjkgMi4wNTlsLS4xNDYtLjIzNWMtLjI5Ni4xODYtLjU4Ni4zODUtLjg2My41OTRsLjE2Ni4yMTljLjI3LS4yMDMuNTU0LS4zOTkuODQzLS41Nzh6TTEuODI0IDE4LjM2OWMuMTg1LjI5Ny4zODQuNTg2LjU5My44NjNsLjIyLS4xNjRjLS4yMDUtLjI3MS0uMzk5LS41NTUtLjU4LS44NDRsLS4yMzMuMTQ1ek0xLjEyNyAxNi40MDJsLS4yNTUuMTA0Yy4xMjkuMzE4LjI3NC42MzUuNDMxLjk0M2wuMDA1LjAxLjI0NS0uMTI1LS4wMDUtLjAxYy0uMTUzLS4zMDEtLjI5NS0uNjExLS40MjEtLjkyMnpNLjI5OCA5LjMwOWwuMjY5LjA2M2MuMDc2LS4zMzIuMTY4LS42NjQuMjcyLS45ODZsLS4yNjEtLjA4N2MtLjEwOC4zMzItLjIwMi42NzItLjI4IDEuMDF6TS4yNzQgMTIuNDJsLS4yNzUuMDFjLjAxMi4zNDguMDQuNjk5LjA4MyAxLjA0M2wuMjczLS4wMzNjLS4wNDItLjMzNi0uMDY5LS42OC0uMDgxLTEuMDJ6TS4yNTYgMTQuNTA2Yy4wNzMuMzQuMTYyLjY4Mi4yNjQgMS4wMTRsLjI2My0uMDhjLS4xLS4zMjYtLjE4Ny0uNjU4LS4yNTgtLjk5bC0uMjY5LjA1NnpNMTEuNTczLjI3NUwxMS41NjMgMGMtLjM0OC4wMTItLjY5OS4wMzktMS4wNDQuMDgybC4wMzQuMjczYy4zMzgtLjA0MS42OC0uMDY4IDEuMDItLjA4ek0yMy4yMjEgOC41NjZjLjEuMzI2LjE4Ni42Ni4yNTYuOTkybC4yNy0uMDU5Yy0uMDcyLS4zNC0uMTYtLjY4Mi0uMjYyLTEuMDE0bC0uMjY0LjA4MXpNMTcuNjIxIDEuMzg5Yy0uMzA5LS4xNjQtLjYyNy0uMzE0LS45NDctLjQ0OWwtLjEwNy4yNTJjLjMxNC4xMzMuNjI1LjI4MS45MjYuNDM5bC4xMjgtLjI0MnpNMTUuNjkzLjU3MmMtLjMzMi0uMTA1LS42Ny0uMTk5LTEuMDEtLjI3N2wtLjA2My4yNjhjLjMzMi4wNzYuNjY0LjE2OC45ODguMjczbC4wODUtLjI2NHpNNi42NzQgMS41NDVjLjI5OC0uMTUuNjA2LS4yOTEuOTE2LS40MThMNy40ODYuODczYy0uMzE3LjEyNy0uNjMyLjI3Mi0uOTM3LjQyOGwtLjAxNS4wMDguMTI1LjI0NC4wMTUtLjAwOHpNMjMuNzI3IDExLjU4OGwuMjc1LS4wMWExMS43OTcgMTEuNzk3IDAgMCAwLS4wODItMS4wNDVsLS4yNzMuMDMzYy4wNDEuMzM4LjA2OC42ODIuMDggMS4wMjJ6TTEzLjY1NC4xMDVjLS4zNDYtLjA0Ny0uNjk2LS4wOC0xLjA0My0uMDk4bC0uMDE0LjI3M2MuMzM5LjAxOC42ODMuMDUxIDEuMDE5LjA5OGwuMDM4LS4yNzN6TTkuNTQ0LjUyN2wtLjA1OC0uMjdjLS4zNC4wNzItLjY4MS4xNi0xLjAxNC4yNjRsLjA4MS4yNjJjLjMyNS0uMDk5LjY1OS0uMTg1Ljk5MS0uMjU2ek0xLjkyMSA1LjQ2OWwuMjMxLjE1Yy4xODUtLjI4NS4zODQtLjU2Ni41OTItLjgzNGwtLjIxNy0uMTdjLS4yMTMuMjc2LS40MTcuNTYzLS42MDYuODU0ek0uOTQzIDcuMzE4bC4yNTMuMTA3Yy4xMzItLjMxMy4yOC0uNjI1LjQzOS0uOTI0bC0uMjQzLS4xMjhjLS4xNjMuMzA3LS4zMTQuNjI1LS40NDkuOTQ1ek0xOC4yMjMgMjEuOTQzbC4xNDUuMjM0Yy4yOTUtLjE4Ni41ODYtLjM4NS44NjMtLjU5NGwtLjE2NC0uMjE5Yy0uMjcyLjIwNC0uNTU3LjQtLjg0NC41Nzl6TTIxLjI0OCAxOS4yMTlsLjIxNy4xN2MuMjE1LS4yNzMuNDE4LS41NjEuNjA3LS44NTRsLS4yMy0uMTQ4Yy0uMTg2LjI4NS0uMzg1LjU2NC0uNTk0LjgzMnpNMTkuODU1IDIwLjcxNWwuMTg0LjIwM2MuMjU4LS4yMy41MS0uNDc5Ljc0Ni0uNzMybC0uMjAxLS4xODhjLS4yMy4yNDgtLjQ3Ny40ODgtLjcyOS43MTd6TTIyLjM1OSAxNy41MDRsLjI0NC4xMjljLjE2Mi0uMzA3LjMxNC0uNjI1LjQ0OS0uOTQ1bC0uMjU0LS4xMDdhMTEuMjcgMTEuMjcgMCAwIDEtLjQzOS45MjN6TTIzLjYxNyAxMy42MjlsLjI3My4wMzljLjA0OS0uMzQ2LjA4Mi0uNjk1LjEwMi0xLjA0M2wtLjI3NS0uMDE0Yy0uMDE4LjMzOC0uMDUxLjY4Mi0uMSAxLjAxOHpNMjMuMTU2IDE1LjYyMWwuMjY0LjA4NmMuMTA3LS4zMzIuMjAxLS42Ny4yNzktMS4wMWwtLjI2OC0uMDYzYy0uMDc3LjMzMy0uMTY5LjY2NS0uMjc1Ljk4N3pNMjIuNDUzIDYuNjcyYy4xNTQuMzAzLjI5Ny42MTcuNDI0LjkzMmwuMjU2LS4xMDRjLS4xMzEtLjMyMi0uMjc3LS42NDMtLjQzNi0uOTUzbC0uMjQ0LjEyNXpNOC4yOTYgMjMuNDE4Yy4zMzEuMTA3LjY3LjIwMSAxLjAwOS4yNzlsLjA2Mi0uMjY4Yy0uMzMxLS4wNzYtLjY2My0uMTY4LS45ODYtLjI3M2wtLjA4NS4yNjJ6TTEwLjMzNSAyMy44ODljLjM0NS4wNDkuNjk2LjA4MiAxLjA0My4xMDJsLjAxNC0uMjc1Yy0uMzM5LS4wMTgtLjY4Mi0uMDUxLTEuMDE5LS4wOThsLS4wMzguMjcxek0xNy4zMjYgMjIuNDQ5Yy0uMzAzLjE1NC0uNjEzLjI5Ny0uOTI2LjQyNGwuMTA0LjI1NmMuMzE4LS4xMzEuNjM5LS4yNzUuOTQ3LS40MzRsLjAwNC0uMDAyLS4xMjMtLjI0Ni0uMDA2LjAwMnpNNC42MTMgMjEuNDY3Yy4yNzQuMjEzLjU2Mi40MTguODU0LjYwNWwuMTQ5LS4yM2MtLjI4NS0uMTg0LS41NjUtLjM4NS0uODMzLS41OTJsLS4xNy4yMTd6TTEyLjQxNyAyMy43MjVsLjAwOS4yNzVjLjM0OC0uMDE0LjY5OS0uMDQxIDEuMDQ1LS4wODRsLS4wMzUtLjI3MWMtLjMzNi4wNDEtLjY4LjA2OC0xLjAxOS4wOHpNNi4zNyAyMi42MDRjLjMwNy4xNjIuNjI1LjMxNC45NDYuNDQ5bC4xMDctLjI1NGMtLjMxMy0uMTMzLS42MjQtLjI3OS0uOTI0LS40MzlsLS4xMjkuMjQ0ek0zLjA4MyAyMC4wNDFjLjIzMy4yNTguNDguNTEuNzM0Ljc0NmwuMTg4LS4yMDFjLS4yNDktLjIzLS40OS0uNDc3LS43MTctLjcyOWwtLjIwNS4xODR6TTE0LjQ0NSAyMy40NzVsLjA1OS4yN2MuMzQtLjA3NC42OC0uMTYyIDEuMDE0LS4yNjZsLS4wODItLjI2MmMtLjMyNS4wOTktLjY1OS4xODUtLjk5MS4yNTh6TTIxLjE4LjEyOUEyLjY4OSAyLjY4OSAwIDEgMCAyMS4xOCA1LjUwNyAyLjY4OSAyLjY4OSAwIDEgMCAyMS4xOC4xMjl6TTE1LjMyNCAxNS40NDdjMCAuNDcxLjMxNC42Ni44NTIuNjYuNjcgMCAxLjI5Ny0uMzk2IDEuMjk3LTEuMDE2di0uNjQ1Yy0uMjMuMTA3LS4zNzkuMTQxLTEuMTA3LjI0LS43MzUuMTA5LTEuMDQyLjMwNi0xLjA0Mi43NjF6TTEyIDIuODE4Yy01LjA3IDAtOS4xOCA0LjEwOS05LjE4IDkuMTggMCA1LjA2OCA0LjExIDkuMTggOS4xOCA5LjE4IDUuMDcgMCA5LjE4LTQuMTExIDkuMTgtOS4xOCAwLTUuMDctNC4xMS05LjE4LTkuMTgtOS4xOHptLTIuLine truncated
|
||||||
|
After Width: | Height: | Size: 5.9 KiB |
@@ -283,7 +283,6 @@ return view.extend({
|
|||||||
var verPlugin = E('span', _('Collecting data...'));
|
var verPlugin = E('span', _('Collecting data...'));
|
||||||
var verKernel = E('span', _('Collecting data...'));
|
var verKernel = E('span', _('Collecting data...'));
|
||||||
var verRescue = E('span', _('Collecting data...'));
|
var verRescue = E('span', _('Collecting data...'));
|
||||||
var branchSpan = E('span');
|
|
||||||
|
|
||||||
// Per-action status spans (right side, updated by poll)
|
// Per-action status spans (right side, updated by poll)
|
||||||
var statusFw = E('span');
|
var statusFw = E('span');
|
||||||
@@ -419,8 +418,7 @@ return view.extend({
|
|||||||
E('p', _('Provide OpenWrt Firmware, Kernel and Plugin online check, download and update service.')),
|
E('p', _('Provide OpenWrt Firmware, Kernel and Plugin online check, download and update service.')),
|
||||||
E('div', { class: 'cbi-section' }, [
|
E('div', { class: 'cbi-section' }, [
|
||||||
E('p', { style: 'text-align:center' }, [
|
E('p', { style: 'text-align:center' }, [
|
||||||
_('Update plugins first, then update the kernel or firmware. More options can be configured in [Plugin Settings].'),
|
_('Update plugins first, then update the kernel or firmware. More options can be configured in [Plugin Settings].')
|
||||||
' ', branchSpan
|
|
||||||
]),
|
]),
|
||||||
E('table', { class: 'amlogic-row-table' }, [
|
E('table', { class: 'amlogic-row-table' }, [
|
||||||
E('tr', [
|
E('tr', [
|
||||||
@@ -461,10 +459,6 @@ return view.extend({
|
|||||||
dom.content(verKernel, s && s.current_kernel_version
|
dom.content(verKernel, s && s.current_kernel_version
|
||||||
? E('span', { class: 'amlogic-status-ok' }, _('Current Version') + ' [ ' + s.current_kernel_version + ' ] ')
|
? E('span', { class: 'amlogic-status-ok' }, _('Current Version') + ' [ ' + s.current_kernel_version + ' ] ')
|
||||||
: E('span', { class: 'amlogic-status-err' }, _('Invalid value.')));
|
: E('span', { class: 'amlogic-status-err' }, _('Invalid value.')));
|
||||||
var branchLabel = s && s.plugin_branch
|
|
||||||
? (s.plugin_branch === 'lua' ? 'Lua' : 'JavaScript')
|
|
||||||
: (s && s.has_luci_js ? 'JavaScript' : 'Lua');
|
|
||||||
dom.content(branchSpan, ' [ ' + branchLabel + ' ] ');
|
|
||||||
|
|
||||||
// Rescue row: show same kernel version directly via the verRescue span
|
// Rescue row: show same kernel version directly via the verRescue span
|
||||||
dom.content(verRescue, s && s.current_kernel_version
|
dom.content(verRescue, s && s.current_kernel_version
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ const callAuthor = rpc.declare({
|
|||||||
// Called on every info page load so the sidebar menu is correct from first visit.
|
// Called on every info page load so the sidebar menu is correct from first visit.
|
||||||
const callSyncMenu = rpc.declare({ object: 'luci.amlogic', method: 'sync_menu' });
|
const callSyncMenu = rpc.declare({ object: 'luci.amlogic', method: 'sync_menu' });
|
||||||
|
|
||||||
|
// Get runtime state to determine plugin_branch for the language badge.
|
||||||
|
const callState = rpc.declare({ object: 'luci.amlogic', method: 'state' });
|
||||||
|
|
||||||
// Static list of supported boxes (display only, not used in any logic).
|
// Static list of supported boxes (display only, not used in any logic).
|
||||||
const SUPPORTED_BOXES = [
|
const SUPPORTED_BOXES = [
|
||||||
_('Amlogic s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas-VIM3, Ali-CT2000 ]'),
|
_('Amlogic s922x --- [ Beelink, Beelink-Pro, Ugoos-AM6-Plus, ODROID-N2, Khadas-VIM3, Ali-CT2000 ]'),
|
||||||
@@ -57,9 +60,27 @@ return view.extend({
|
|||||||
handleReset: null,
|
handleReset: null,
|
||||||
|
|
||||||
load: function () {
|
load: function () {
|
||||||
// Fire sync_menu in background (don't block render on it).
|
// Call sync_menu and wait for it. sync_menu writes menu_install /
|
||||||
callSyncMenu().catch(function () {});
|
// menu_armcpu into UCI and clears the LuCI index cache on the server.
|
||||||
return callAuthor();
|
// On first boot from USB the install menu may be missing from the
|
||||||
|
// browser-side navigation (built before sync_menu ran). After the RPC
|
||||||
|
// returns we check if the sidebar already has an install link; if not,
|
||||||
|
// reload once so the browser re-fetches the updated menu tree.
|
||||||
|
// A URL hash flag (#menu-synced) prevents an infinite reload loop.
|
||||||
|
const alreadyReloaded = window.location.hash === '#menu-synced';
|
||||||
|
const syncMenuPromise = callSyncMenu().then(function (res) {
|
||||||
|
if (alreadyReloaded) return;
|
||||||
|
if (res && res.show_install === 'yes') {
|
||||||
|
// Check if the sidebar navigation already contains the install link.
|
||||||
|
const installLink = document.querySelector('a[href*="amlogic/install"]');
|
||||||
|
if (!installLink) {
|
||||||
|
// Server has updated the index cache; reload to pick up new nav.
|
||||||
|
window.location.replace(window.location.pathname + '#menu-synced');
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).catch(function () {});
|
||||||
|
return Promise.all([callAuthor(), syncMenuPromise]).then(function (r) { return r[0]; });
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function (authorUrl) {
|
render: function (authorUrl) {
|
||||||
@@ -67,6 +88,23 @@ return view.extend({
|
|||||||
amlogicShared.ensureCss();
|
amlogicShared.ensureCss();
|
||||||
const res = L.resource('amlogic');
|
const res = L.resource('amlogic');
|
||||||
|
|
||||||
|
// Language badge image — default to javascript.svg (JS version),
|
||||||
|
// will be confirmed/corrected after the state RPC resolves.
|
||||||
|
var langsImg = E('img', {
|
||||||
|
id: 'Langs',
|
||||||
|
src: res + '/javascript.svg', alt: 'javascript',
|
||||||
|
width: '86', height: '20',
|
||||||
|
style: 'margin:0 5px; vertical-align:middle; border-radius:3px'
|
||||||
|
});
|
||||||
|
|
||||||
|
// Fetch plugin_branch from state and update the language badge.
|
||||||
|
callState().then(function (s) {
|
||||||
|
var isLua = s && s.plugin_branch === 'lua';
|
||||||
|
langsImg.src = res + (isLua ? '/lua.svg' : '/javascript.svg');
|
||||||
|
langsImg.alt = isLua ? 'lua' : 'javascript';
|
||||||
|
langsImg.setAttribute('width', isLua ? '46' : '86');
|
||||||
|
}).catch(function () {});
|
||||||
|
|
||||||
// Flatten the supported-boxes list to [text, <br>, text, <br>, ...].
|
// Flatten the supported-boxes list to [text, <br>, text, <br>, ...].
|
||||||
const boxRows = [];
|
const boxRows = [];
|
||||||
for (let i = 0; i < SUPPORTED_BOXES.length; i++)
|
for (let i = 0; i < SUPPORTED_BOXES.length; i++)
|
||||||
@@ -86,13 +124,13 @@ return view.extend({
|
|||||||
E('img', {
|
E('img', {
|
||||||
src: res + '/packit.svg', alt: 'Packit',
|
src: res + '/packit.svg', alt: 'Packit',
|
||||||
width: '168', height: '20',
|
width: '168', height: '20',
|
||||||
style: 'cursor:pointer; margin:0 5px',
|
style: 'cursor:pointer; margin:0 5px; vertical-align:middle; border-radius:3px',
|
||||||
click: function () { openExternal('https://github.com/unifreq/openwrt_packit'); }
|
click: function () { openExternal('https://github.com/unifreq/openwrt_packit'); }
|
||||||
}),
|
}),
|
||||||
E('img', {
|
E('img', {
|
||||||
src: res + '/author.svg', alt: 'Author',
|
src: res + '/author.svg', alt: 'Author',
|
||||||
width: '168', height: '20',
|
width: '168', height: '20',
|
||||||
style: 'cursor:pointer; margin:0 5px',
|
style: 'cursor:pointer; margin:0 5px; vertical-align:middle; border-radius:3px',
|
||||||
click: function () {
|
click: function () {
|
||||||
callAuthor().then(function (repo) {
|
callAuthor().then(function (repo) {
|
||||||
let url = String(repo || '').trim();
|
let url = String(repo || '').trim();
|
||||||
@@ -106,9 +144,10 @@ return view.extend({
|
|||||||
E('img', {
|
E('img', {
|
||||||
src: res + '/plugin.svg', alt: 'luci-app-amlogic',
|
src: res + '/plugin.svg', alt: 'luci-app-amlogic',
|
||||||
width: '160', height: '20',
|
width: '160', height: '20',
|
||||||
style: 'cursor:pointer; margin:0 5px',
|
style: 'cursor:pointer; margin:0 5px; vertical-align:middle; border-radius:3px',
|
||||||
click: function () { openExternal('https://github.com/ophub/luci-app-amlogic'); }
|
click: function () { openExternal('https://github.com/ophub/luci-app-amlogic'); }
|
||||||
})
|
}),
|
||||||
|
langsImg
|
||||||
])
|
])
|
||||||
]),
|
]),
|
||||||
E('tr', [
|
E('tr', [
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ return view.extend({
|
|||||||
value: _('Update OpenWrt firmware'), style: 'display:none',
|
value: _('Update OpenWrt firmware'), style: 'display:none',
|
||||||
click: ui.createHandlerFn(this, function (ev) {
|
click: ui.createHandlerFn(this, function (ev) {
|
||||||
return doButton(ev.currentTarget,
|
return doButton(ev.currentTarget,
|
||||||
_('Updating...'), _('Successful Update'), _('Update Failed'),
|
_('Updating...'), _('Update Failed'),
|
||||||
function () { return callStartUpd('auto@updated@/tmp'); });
|
function () { return callStartUpd('auto@updated@/tmp'); });
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -78,7 +78,7 @@ return view.extend({
|
|||||||
value: _('Replace OpenWrt Kernel'), style: 'display:none; margin-left:5px',
|
value: _('Replace OpenWrt Kernel'), style: 'display:none; margin-left:5px',
|
||||||
click: ui.createHandlerFn(this, function (ev) {
|
click: ui.createHandlerFn(this, function (ev) {
|
||||||
return doButton(ev.currentTarget,
|
return doButton(ev.currentTarget,
|
||||||
_('Updating...'), _('Successful Update'), _('Update Failed'),
|
_('Updating...'), _('Update Failed'),
|
||||||
function () { return callStartKnl(); });
|
function () { return callStartKnl(); });
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -86,13 +86,23 @@ return view.extend({
|
|||||||
const knLog = E('span');
|
const knLog = E('span');
|
||||||
const fwVer = E('span', _('Collecting data...'));
|
const fwVer = E('span', _('Collecting data...'));
|
||||||
|
|
||||||
function doButton(btn, busyText, ok, fail, fn) {
|
function doButton(btn, busyText, fail, fn) {
|
||||||
// Shared button state machine: disabled -> RPC -> success/fail label.
|
// Shared button state machine: disabled -> RPC -> updating/fail label.
|
||||||
|
// On success (code==0) the button stays in busyText state and
|
||||||
|
// remains disabled — the device is about to reboot, so there is
|
||||||
|
// nothing to restore. Only on failure do we surface an error and
|
||||||
|
// re-enable the button so the user can retry.
|
||||||
btn.disabled = true; btn.value = busyText;
|
btn.disabled = true; btn.value = busyText;
|
||||||
return Promise.resolve(fn()).then(function (r) {
|
return Promise.resolve(fn()).then(function (r) {
|
||||||
btn.value = (r && r.code == 0) ? ok : fail;
|
if (!r || r.code !== 0) {
|
||||||
}).catch(function () { btn.value = fail; })
|
btn.value = fail;
|
||||||
.finally(function () { btn.disabled = false; });
|
btn.disabled = false;
|
||||||
|
}
|
||||||
|
// code == 0 → keep busyText + disabled (update in progress)
|
||||||
|
}).catch(function () {
|
||||||
|
btn.value = fail;
|
||||||
|
btn.disabled = false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshList() {
|
function refreshList() {
|
||||||
|
|||||||
@@ -475,7 +475,12 @@ function m_start_plugin() {
|
|||||||
+ ' uci set amlogic.config.amlogic_plugin_branch=\'lua\' 2>/dev/null\n'
|
+ ' uci set amlogic.config.amlogic_plugin_branch=\'lua\' 2>/dev/null\n'
|
||||||
+ ' fi\n'
|
+ ' fi\n'
|
||||||
+ ' uci commit amlogic 2>/dev/null\n'
|
+ ' uci commit amlogic 2>/dev/null\n'
|
||||||
+ ' fi) &\n'
|
+ ' fi\n'
|
||||||
|
+ ' # Restart services so the newly installed files take effect immediately,\n'
|
||||||
|
+ ' # avoiding the need for users to manually clear browser cache.\n'
|
||||||
|
+ ' /etc/init.d/rpcd restart >> "$LOG" 2>&1\n'
|
||||||
|
+ ' /etc/init.d/uhttpd restart >> "$LOG" 2>&1\n'
|
||||||
|
+ ' ) &\n'
|
||||||
+ 'else\n'
|
+ 'else\n'
|
||||||
+ ' echo "--- INSTALLATION FAILED! ---" >> "$LOG"\n'
|
+ ' echo "--- INSTALLATION FAILED! ---" >> "$LOG"\n'
|
||||||
+ ' [ -f "$cfg_bak" ] && cp -f "$cfg_bak" "$cfg"\n'
|
+ ' [ -f "$cfg_bak" ] && cp -f "$cfg_bak" "$cfg"\n'
|
||||||
@@ -747,7 +752,8 @@ function m_sync_menu() {
|
|||||||
const show_armcpu = (index(p, 'qemu') < 0) ? 'yes' : 'no';
|
const show_armcpu = (index(p, 'qemu') < 0) ? 'yes' : 'no';
|
||||||
shcall('uci -q set amlogic.config.menu_install=' + shq(show_install) +
|
shcall('uci -q set amlogic.config.menu_install=' + shq(show_install) +
|
||||||
' && uci -q set amlogic.config.menu_armcpu=' + shq(show_armcpu) +
|
' && uci -q set amlogic.config.menu_armcpu=' + shq(show_armcpu) +
|
||||||
' && uci commit amlogic');
|
' && uci commit amlogic' +
|
||||||
|
' && rm -f /tmp/luci-indexcache* && rm -rf /tmp/luci-modulecache/*');
|
||||||
return { code: 0, show_install, show_armcpu };
|
return { code: 0, show_install, show_armcpu };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=luci-app-openlist2
|
PKG_NAME:=luci-app-openlist2
|
||||||
PKG_VERSION:=1.0.2
|
PKG_VERSION:=1.0.2
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
LUCI_TITLE:=LuCI support for openlist
|
LUCI_TITLE:=LuCI support for openlist
|
||||||
LUCI_DEPENDS:=+openlist2
|
LUCI_DEPENDS:=+openlist2
|
||||||
|
|||||||
@@ -6,34 +6,34 @@
|
|||||||
'require uci';
|
'require uci';
|
||||||
'require view';
|
'require view';
|
||||||
|
|
||||||
var callServiceList = rpc.declare({
|
const callServiceList = rpc.declare({
|
||||||
object: 'service',
|
object: 'service',
|
||||||
method: 'list',
|
method: 'list',
|
||||||
params: ['name'],
|
params: ['name'],
|
||||||
expect: { '': {} }
|
expect: { '': {} }
|
||||||
});
|
});
|
||||||
|
|
||||||
function getServiceStatus() {
|
const getServiceStatus = () => {
|
||||||
return L.resolveDefault(callServiceList('openlist2'), {}).then(function (res) {
|
return L.resolveDefault(callServiceList('openlist2'), {}).then(res => {
|
||||||
var isRunning = false;
|
let isRunning = false;
|
||||||
try {
|
try {
|
||||||
isRunning = res['openlist2']['instances']['openlist2']['running'];
|
isRunning = res['openlist2']['instances']['openlist2']['running'];
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
return isRunning;
|
return isRunning;
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
function renderStatus(isRunning, protocol, webport, site_url) {
|
const renderStatus = (isRunning, protocol, webport, site_url) => {
|
||||||
var spanTemp = '<em><span style="color:%s"><strong>%s %s</strong></span></em>';
|
const spanTemp = '<em><span style="color:%s"><strong>%s %s</strong></span></em>';
|
||||||
var renderHTML;
|
let renderHTML;
|
||||||
if (isRunning) {
|
if (isRunning) {
|
||||||
var buttonUrl = '';
|
let buttonUrl = '';
|
||||||
if (site_url && site_url.trim() !== '') {
|
if (site_url && site_url.trim() !== '') {
|
||||||
buttonUrl = site_url;
|
buttonUrl = site_url;
|
||||||
} else {
|
} else {
|
||||||
buttonUrl = String.format('%s//%s:%s/', protocol, window.location.hostname, webport);
|
buttonUrl = `${protocol}//${window.location.hostname}:${webport}/`;
|
||||||
}
|
}
|
||||||
var button = String.format('<input class="cbi-button-reload" type="button" style="margin-left: 50px" value="%s" onclick="window.open(\'%s\')">',
|
const button = String.format('<input class="cbi-button-reload" type="button" style="margin-left: 50px" value="%s" onclick="window.open(\'%s\')">',
|
||||||
_('Open Web Interface'), buttonUrl);
|
_('Open Web Interface'), buttonUrl);
|
||||||
renderHTML = spanTemp.format('green', 'OpenList', _('RUNNING')) + button;
|
renderHTML = spanTemp.format('green', 'OpenList', _('RUNNING')) + button;
|
||||||
} else {
|
} else {
|
||||||
@@ -41,20 +41,20 @@ function renderStatus(isRunning, protocol, webport, site_url) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return renderHTML;
|
return renderHTML;
|
||||||
}
|
};
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
load: function () {
|
load() {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
uci.load('openlist2')
|
uci.load('openlist2')
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
handleResetPassword: async function (data) {
|
async handleResetPassword(data) {
|
||||||
var data_dir = uci.get(data[0], '@openlist2[0]', 'data_dir') || '/etc/openlist2';
|
const data_dir = uci.get(data[0], '@openlist2[0]', 'data_dir') || '/etc/openlist2';
|
||||||
try {
|
try {
|
||||||
var newpassword = await fs.exec('/usr/bin/openlist2', ['admin', 'random', '--data', data_dir]);
|
const newpassword = await fs.exec('/usr/bin/openlist2', ['admin', 'random', '--data', data_dir]);
|
||||||
var new_password = newpassword.stdout.match(/password:\s*(\S+)/)[1];
|
const new_password = newpassword.stdout.match(/password:\s*(\S+)/)[1];
|
||||||
|
|
||||||
const textArea = document.createElement('textarea');
|
const textArea = document.createElement('textarea');
|
||||||
textArea.value = new_password;
|
textArea.value = new_password;
|
||||||
@@ -62,23 +62,23 @@ return view.extend({
|
|||||||
textArea.select();
|
textArea.select();
|
||||||
document.execCommand('copy');
|
document.execCommand('copy');
|
||||||
document.body.removeChild(textArea);
|
document.body.removeChild(textArea);
|
||||||
alert(_('Username:') + 'admin\n' + _('New Password:') + new_password + '\n\n' + _('New password has been copied to clipboard.'));
|
alert(`${_('Username:')}admin\n${_('New Password:')}${new_password}\n\n${_('New password has been copied to clipboard.')}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to reset password: ', error);
|
console.error('Failed to reset password: ', error);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function (data) {
|
render(data) {
|
||||||
var m, s, o;
|
let m, s, o;
|
||||||
var webport = uci.get(data[0], '@openlist2[0]', 'port') || '5244';
|
const webport = uci.get(data[0], '@openlist2[0]', 'port') || '5244';
|
||||||
var ssl = uci.get(data[0], '@openlist2[0]', 'ssl') || '0';
|
const ssl = uci.get(data[0], '@openlist2[0]', 'ssl') || '0';
|
||||||
var protocol;
|
let protocol;
|
||||||
if (ssl === '0') {
|
if (ssl === '0') {
|
||||||
protocol = 'http:';
|
protocol = 'http:';
|
||||||
} else if (ssl === '1') {
|
} else if (ssl === '1') {
|
||||||
protocol = 'https:';
|
protocol = 'https:';
|
||||||
}
|
}
|
||||||
var site_url = uci.get(data[0], '@openlist2[0]', 'site_url') || '';
|
const site_url = uci.get(data[0], '@openlist2[0]', 'site_url') || '';
|
||||||
|
|
||||||
m = new form.Map('openlist2', _('OpenList'),
|
m = new form.Map('openlist2', _('OpenList'),
|
||||||
_('A file list program that supports multiple storage.'));
|
_('A file list program that supports multiple storage.'));
|
||||||
@@ -87,26 +87,27 @@ return view.extend({
|
|||||||
s.anonymous = true;
|
s.anonymous = true;
|
||||||
s.addremove = false;
|
s.addremove = false;
|
||||||
|
|
||||||
s.render = function () {
|
s.render = () => {
|
||||||
poll.add(function () {
|
poll.add(() => {
|
||||||
return L.resolveDefault(getServiceStatus()).then(function (res) {
|
return L.resolveDefault(getServiceStatus()).then(res => {
|
||||||
var view = document.getElementById('service_status');
|
const view = document.getElementById('service_status');
|
||||||
view.innerHTML = renderStatus(res, protocol, webport, site_url);
|
if (view)
|
||||||
|
view.innerHTML = renderStatus(res, protocol, webport, site_url);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
return E('div', { class: 'cbi-section', id: 'status_bar' }, [
|
return E('div', { class: 'cbi-section', id: 'status_bar' }, [
|
||||||
E('p', { id: 'service_status' }, _('Collecting data...'))
|
E('p', { id: 'service_status' }, _('Collecting data...'))
|
||||||
]);
|
]);
|
||||||
}
|
};
|
||||||
|
|
||||||
s = m.section(form.NamedSection, '@openlist2[0]', 'openlist2');
|
s = m.section(form.NamedSection, '@openlist2[0]', 'openlist2');
|
||||||
|
|
||||||
s.tab('basic', _('Basic Settings'));
|
s.tab('basic', _('Basic Settings'));
|
||||||
s.tab('global', _('Global Settings'));
|
s.tab('global', _('Global Settings'));
|
||||||
s.tab("log", _("Logs"));
|
s.tab('log', _('Logs'));
|
||||||
s.tab("database", _("Database"));
|
s.tab('database', _('Database'));
|
||||||
s.tab("scheme", _("Web Protocol"));
|
s.tab('scheme', _('Web Protocol'));
|
||||||
s.tab('tasks', _('Task threads'));
|
s.tab('tasks', _('Task threads'));
|
||||||
s.tab('cors', _('CORS Settings'));
|
s.tab('cors', _('CORS Settings'));
|
||||||
s.tab('s3', _('Object Storage'));
|
s.tab('s3', _('Object Storage'));
|
||||||
|
|||||||
@@ -5,21 +5,21 @@
|
|||||||
'require uci';
|
'require uci';
|
||||||
'require view';
|
'require view';
|
||||||
|
|
||||||
var scrollPosition = 0;
|
let scrollPosition = 0;
|
||||||
var userScrolled = false;
|
let userScrolled = false;
|
||||||
var logTextarea;
|
let logTextarea;
|
||||||
var log_path;
|
let log_path;
|
||||||
|
|
||||||
uci.load('openlist2').then(function() {
|
uci.load('openlist2').then(() => {
|
||||||
log_path = uci.get('openlist2', '@openlist2[0]', 'log_path') || '/var/log/openlist2.log';
|
log_path = uci.get('openlist2', '@openlist2[0]', 'log_path') || '/var/log/openlist2.log';
|
||||||
});
|
});
|
||||||
|
|
||||||
function pollLog() {
|
const pollLog = () => {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
fs.read_direct(log_path, 'text').then(function (res) {
|
fs.read_direct(log_path, 'text').then(res => {
|
||||||
return res.trim().split(/\n/).join('\n').replace(/\u001b\[33mWARN\u001b\[0m/g, '').replace(/\u001b\[36mINFO\u001b\[0m/g, '').replace(/\u001b\[31mERRO\u001b\[0m/g, '');
|
return res.trim().split(/\n/).join('\n').replace(/\u001b\[33mWARN\u001b\[0m/g, '').replace(/\u001b\[36mINFO\u001b\[0m/g, '').replace(/\u001b\[31mERRO\u001b\[0m/g, '');
|
||||||
}),
|
}),
|
||||||
]).then(function (data) {
|
]).then(data => {
|
||||||
logTextarea.value = data[0] || _('No log data.');
|
logTextarea.value = data[0] || _('No log data.');
|
||||||
|
|
||||||
if (!userScrolled) {
|
if (!userScrolled) {
|
||||||
@@ -31,32 +31,33 @@ function pollLog() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
handleCleanLogs: function () {
|
handleCleanLogs() {
|
||||||
return fs.write(log_path, '')
|
return fs.write(log_path, '')
|
||||||
.catch(function (e) { ui.addNotification(null, E('p', e.message)) });
|
.catch(e => { ui.addNotification(null, E('p', e.message)) });
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function () {
|
render() {
|
||||||
logTextarea = E('textarea', {
|
logTextarea = E('textarea', {
|
||||||
|
'id': 'log_content',
|
||||||
'class': 'cbi-input-textarea',
|
'class': 'cbi-input-textarea',
|
||||||
'wrap': 'off',
|
'wrap': 'off',
|
||||||
'readonly': 'readonly',
|
'readonly': 'readonly',
|
||||||
'style': 'width: calc(100% - 20px);height: 535px;margin: 10px;overflow-y: scroll;',
|
'style': 'width: calc(100% - 20px);height: 535px;margin: 10px;overflow-y: scroll;',
|
||||||
});
|
});
|
||||||
|
|
||||||
logTextarea.addEventListener('scroll', function () {
|
logTextarea.addEventListener('scroll', () => {
|
||||||
userScrolled = true;
|
userScrolled = true;
|
||||||
scrollPosition = logTextarea.scrollTop;
|
scrollPosition = logTextarea.scrollTop;
|
||||||
});
|
});
|
||||||
|
|
||||||
var log_textarea_wrapper = E('div', { 'id': 'log_textarea' }, logTextarea);
|
const log_textarea_wrapper = E('div', { 'id': 'log_textarea' }, logTextarea);
|
||||||
|
|
||||||
setTimeout(function () {
|
setTimeout(() => {
|
||||||
poll.add(pollLog);
|
poll.add(pollLog);
|
||||||
}, 100);
|
}, 100);
|
||||||
|
|
||||||
var clear_logs_button = E('input', { 'class': 'btn cbi-button-action', 'type': 'button', 'style': 'margin-left: 10px; margin-top: 10px;', 'value': _('Clear logs') });
|
const clear_logs_button = E('input', { 'class': 'btn cbi-button-action', 'type': 'button', 'style': 'margin-left: 10px; margin-top: 10px;', 'value': _('Clear logs') });
|
||||||
clear_logs_button.addEventListener('click', this.handleCleanLogs.bind(this));
|
clear_logs_button.addEventListener('click', L.bind(this.handleCleanLogs, this));
|
||||||
|
|
||||||
return E([
|
return E([
|
||||||
E('div', { 'class': 'cbi-map' }, [
|
E('div', { 'class': 'cbi-map' }, [
|
||||||
|
|||||||
@@ -0,0 +1,384 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:169
|
||||||
|
msgid ""
|
||||||
|
"0 is unlimited, It is recommend to set a low number of concurrency (10-20) "
|
||||||
|
"for poor performance device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:175
|
||||||
|
msgid ""
|
||||||
|
"0 is unlimited, Limit the maximum concurrency of local agents. The default "
|
||||||
|
"value is 64"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:84
|
||||||
|
msgid "A file list program that supports multiple storage."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:327
|
||||||
|
msgid "Allow Headers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:323
|
||||||
|
msgid "Allow Methods"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:319
|
||||||
|
msgid "Allow Origins"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:106
|
||||||
|
msgid "Basic Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:157
|
||||||
|
msgid "CDN URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:112
|
||||||
|
msgid "CORS Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:138
|
||||||
|
msgid "Cache directory"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/logs.js:59
|
||||||
|
msgid "Clear logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:376
|
||||||
|
msgid "Client IP check in active transfer mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:379
|
||||||
|
msgid "Client IP check in passive transfer mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:360
|
||||||
|
msgid "Client idle timeout (seconds)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:100
|
||||||
|
msgid "Collecting data..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:365
|
||||||
|
msgid "Connection timeout (seconds)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:313
|
||||||
|
msgid "Copy Max Retry"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:308
|
||||||
|
msgid "Copy Workers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:135
|
||||||
|
msgid "Data directory"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:109
|
||||||
|
msgid "Database"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:255
|
||||||
|
msgid "Database DSN"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:224
|
||||||
|
msgid "Database Host"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:242
|
||||||
|
msgid "Database Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:238
|
||||||
|
msgid "Database Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:228
|
||||||
|
msgid "Database Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:251
|
||||||
|
msgid "Database SSL Mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:246
|
||||||
|
msgid "Database Table Prefix"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:218
|
||||||
|
msgid "Database Type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:234
|
||||||
|
msgid "Database Username"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:127
|
||||||
|
msgid "Delayed Start (seconds)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:180
|
||||||
|
msgid "Disable TLS Verify"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:370
|
||||||
|
msgid "Disable active transfer mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:283
|
||||||
|
msgid "Download Max Retry"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:278
|
||||||
|
msgid "Download Workers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:185
|
||||||
|
msgid "Enable Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:260
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:340
|
||||||
|
msgid "Enable SSL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:373
|
||||||
|
msgid "Enable binary transfer mode"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:357
|
||||||
|
msgid "Enable non-20 port for active transfer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:118
|
||||||
|
msgid "Enabled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:344
|
||||||
|
msgid "Enabled FTP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:332
|
||||||
|
msgid "Enabled S3"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:383
|
||||||
|
msgid "Enabled SFTP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:114
|
||||||
|
msgid "FTP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:347
|
||||||
|
msgid "FTP Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:263
|
||||||
|
msgid "Force HTTPS"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:149
|
||||||
|
msgid "Force read config"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:143
|
||||||
|
msgid "Generate a new random password."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:107
|
||||||
|
msgid "Global Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/root/usr/share/rpcd/acl.d/luci-app-openlist2.json:3
|
||||||
|
msgid "Grant UCI access for luci-app-openlist2"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:160
|
||||||
|
msgid "JWT Key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:212
|
||||||
|
msgid "Log Compress"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:189
|
||||||
|
msgid "Log path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:163
|
||||||
|
msgid "Login Validity Period (hours)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:108
|
||||||
|
#: luci-app-openlist2/root/usr/share/luci/menu.d/luci-app-openlist2.json:21
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:168
|
||||||
|
msgid "Max Connections"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:194
|
||||||
|
msgid "Max Size (MB)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:206
|
||||||
|
msgid "Max age"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:200
|
||||||
|
msgid "Max backups"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:174
|
||||||
|
msgid "Max concurrency of local proxies"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:352
|
||||||
|
msgid "Max retries on port conflict during passive transfer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:221
|
||||||
|
msgid "MySQL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:40
|
||||||
|
msgid "NOT RUNNING"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:65
|
||||||
|
msgid "New Password:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:65
|
||||||
|
msgid "New password has been copied to clipboard."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/logs.js:23
|
||||||
|
msgid "No log data."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:113
|
||||||
|
msgid "Object Storage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:37
|
||||||
|
msgid "Open Web Interface"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:132
|
||||||
|
msgid "Open firewall port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:83
|
||||||
|
#: luci-app-openlist2/root/usr/share/luci/menu.d/luci-app-openlist2.json:3
|
||||||
|
msgid "OpenList"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:122
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:335
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:222
|
||||||
|
msgid "PostgreSQL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:38
|
||||||
|
msgid "RUNNING"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/logs.js:68
|
||||||
|
msgid "Refresh every %s seconds."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:142
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:144
|
||||||
|
msgid "Reset Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:115
|
||||||
|
msgid "SFTP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:386
|
||||||
|
msgid "SFTP Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:220
|
||||||
|
msgid "SQLite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:267
|
||||||
|
msgid "SSL cert"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:268
|
||||||
|
msgid "SSL certificate file path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:272
|
||||||
|
msgid "SSL key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:273
|
||||||
|
msgid "SSL key file path"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/root/usr/share/luci/menu.d/luci-app-openlist2.json:13
|
||||||
|
msgid "Setting"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:150
|
||||||
|
msgid ""
|
||||||
|
"Setting this to true will force the program to read the configuration file, "
|
||||||
|
"ignoring environment variables."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:154
|
||||||
|
msgid "Site URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:111
|
||||||
|
msgid "Task threads"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:293
|
||||||
|
msgid "Transfer Max Retry"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:288
|
||||||
|
msgid "Transfer Workers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:303
|
||||||
|
msgid "Upload Max Retry"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:298
|
||||||
|
msgid "Upload Workers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:65
|
||||||
|
msgid "Username:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:110
|
||||||
|
msgid "Web Protocol"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:155
|
||||||
|
msgid ""
|
||||||
|
"When the web is reverse proxied to a subdirectory, this option must be "
|
||||||
|
"filled out to ensure proper functioning of the web. Do not include '/' at "
|
||||||
|
"the end of the URL"
|
||||||
|
msgstr ""
|
||||||
@@ -1,267 +1,393 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Last-Translator: Automatically generated\n"
|
"Last-Translator: Automatically generated\n"
|
||||||
"Language-Team: none\n"
|
"Language-Team: none\n"
|
||||||
"Language: zh_Hans\n"
|
"Language: zh_Hans\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
msgid "OpenList"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:169
|
||||||
msgstr "OpenList"
|
msgid ""
|
||||||
|
"0 is unlimited, It is recommend to set a low number of concurrency (10-20) "
|
||||||
|
"for poor performance device"
|
||||||
|
msgstr "默认 0 不限制,低性能设备建议设置较低的并发数(10-20)"
|
||||||
|
|
||||||
msgid "Open Web Interface"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:175
|
||||||
msgstr "打开 Web 界面"
|
msgid ""
|
||||||
|
"0 is unlimited, Limit the maximum concurrency of local agents. The default "
|
||||||
|
"value is 64"
|
||||||
|
msgstr "限制本地代理最大并发数,值为 0 表示不限制,默认值 64"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:84
|
||||||
msgid "A file list program that supports multiple storage."
|
msgid "A file list program that supports multiple storage."
|
||||||
msgstr "一款支持多种存储的目录文件列表程序。"
|
msgstr "一款支持多种存储的目录文件列表程序。"
|
||||||
|
|
||||||
msgid "Setting"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:327
|
||||||
msgstr "设置"
|
|
||||||
|
|
||||||
msgid "Basic Settings"
|
|
||||||
msgstr "基本设置"
|
|
||||||
|
|
||||||
msgid "Global Settings"
|
|
||||||
msgstr "全局设置"
|
|
||||||
|
|
||||||
msgid "Logs"
|
|
||||||
msgstr "日志"
|
|
||||||
|
|
||||||
msgid "Enabled"
|
|
||||||
msgstr "启用"
|
|
||||||
|
|
||||||
msgid "Port"
|
|
||||||
msgstr "端口"
|
|
||||||
|
|
||||||
msgid "Web Protocol"
|
|
||||||
msgstr "Web 协议"
|
|
||||||
|
|
||||||
msgid "Enable SSL"
|
|
||||||
msgstr "启用 SSL"
|
|
||||||
|
|
||||||
msgid "Force HTTPS"
|
|
||||||
msgstr "强制 HTTPS"
|
|
||||||
|
|
||||||
msgid "SSL cert"
|
|
||||||
msgstr "SSL 证书"
|
|
||||||
|
|
||||||
msgid "SSL certificate file path"
|
|
||||||
msgstr "SSL 证书文件路径"
|
|
||||||
|
|
||||||
msgid "SSL key"
|
|
||||||
msgstr "SSL 密钥"
|
|
||||||
|
|
||||||
msgid "SSL key file path"
|
|
||||||
msgstr "SSL 密钥文件路径"
|
|
||||||
|
|
||||||
msgid "Data directory"
|
|
||||||
msgstr "数据目录"
|
|
||||||
|
|
||||||
msgid "Cache directory"
|
|
||||||
msgstr "缓存目录"
|
|
||||||
|
|
||||||
msgid "RUNNING"
|
|
||||||
msgstr "运行中"
|
|
||||||
|
|
||||||
msgid "NOT RUNNING"
|
|
||||||
msgstr "未运行"
|
|
||||||
|
|
||||||
msgid "Collecting data..."
|
|
||||||
msgstr "收集数据..."
|
|
||||||
|
|
||||||
msgid "NAS"
|
|
||||||
msgstr "网络存储"
|
|
||||||
|
|
||||||
msgid "User Manual"
|
|
||||||
msgstr "用户手册"
|
|
||||||
|
|
||||||
msgid "Open firewall port"
|
|
||||||
msgstr "打开防火墙端口"
|
|
||||||
|
|
||||||
msgid "Enable Logs"
|
|
||||||
msgstr "启用日志"
|
|
||||||
|
|
||||||
msgid "Log path"
|
|
||||||
msgstr "日志文件路径"
|
|
||||||
|
|
||||||
msgid "Max Size (MB)"
|
|
||||||
msgstr "日志文件大小(MB)"
|
|
||||||
|
|
||||||
msgid "Max backups"
|
|
||||||
msgstr "日志备份数量"
|
|
||||||
|
|
||||||
msgid "Max age"
|
|
||||||
msgstr "日志保存天数"
|
|
||||||
|
|
||||||
msgid "Log Compress"
|
|
||||||
msgstr "日志压缩"
|
|
||||||
|
|
||||||
msgid "Clear logs"
|
|
||||||
msgstr "清空日志"
|
|
||||||
|
|
||||||
msgid "Reset Password"
|
|
||||||
msgstr "重置密码"
|
|
||||||
|
|
||||||
msgid "Generate a new random password."
|
|
||||||
msgstr "随机生成一个新密码。"
|
|
||||||
|
|
||||||
msgid "Username:"
|
|
||||||
msgstr "用户名:"
|
|
||||||
|
|
||||||
msgid "New Password:"
|
|
||||||
msgstr "新密码:"
|
|
||||||
|
|
||||||
msgid "New password has been copied to clipboard."
|
|
||||||
msgstr "新密码已复制到剪贴板。"
|
|
||||||
|
|
||||||
msgid "Force read config"
|
|
||||||
msgstr "强制读取配置"
|
|
||||||
|
|
||||||
msgid "Setting this to true will force the program to read the configuration file, ignoring environment variables."
|
|
||||||
msgstr "将此设置为 true 可以强制程序读取配置文件,而忽略环境变量"
|
|
||||||
|
|
||||||
msgid "Login Validity Period (hours)"
|
|
||||||
msgstr "登录有效期(小时)"
|
|
||||||
|
|
||||||
msgid "Max Connections"
|
|
||||||
msgstr "最大并发连接数"
|
|
||||||
|
|
||||||
msgid "0 is unlimited, It is recommend to set a low number of concurrency (10-20) for poor performance device"
|
|
||||||
msgstr "默认 0 不限制,低性能设备建议设置较低的并发数(10-20)"
|
|
||||||
|
|
||||||
msgid "Max concurrency of local proxies"
|
|
||||||
msgstr "本地代理最大并发数"
|
|
||||||
|
|
||||||
msgid "0 is unlimited, Limit the maximum concurrency of local agents. The default value is 64"
|
|
||||||
msgstr "限制本地代理最大并发数,值为 0 表示不限制,默认值 64"
|
|
||||||
|
|
||||||
msgid "Site URL"
|
|
||||||
msgstr "站点地址"
|
|
||||||
|
|
||||||
msgid "CDN URL"
|
|
||||||
msgstr "CDN 地址"
|
|
||||||
|
|
||||||
msgid "JWT Key"
|
|
||||||
msgstr "JWT 密钥"
|
|
||||||
|
|
||||||
msgid "Disable TLS Verify"
|
|
||||||
msgstr "禁用 TLS 验证"
|
|
||||||
|
|
||||||
msgid "When the web is reverse proxied to a subdirectory, this option must be filled out to ensure proper functioning of the web. Do not include '/' at the end of the URL"
|
|
||||||
msgstr "Web 被反向代理到二级目录时,必须填写该选项以确保 Web 正常工作。URL 结尾请勿携带 '/'"
|
|
||||||
|
|
||||||
msgid "Delayed Start (seconds)"
|
|
||||||
msgstr "开机延时启动(秒)"
|
|
||||||
|
|
||||||
msgid "Database"
|
|
||||||
msgstr "数据库"
|
|
||||||
|
|
||||||
msgid "Database Type"
|
|
||||||
msgstr "数据库类型"
|
|
||||||
|
|
||||||
msgid "Database Host"
|
|
||||||
msgstr "主机"
|
|
||||||
|
|
||||||
msgid "Database Port"
|
|
||||||
msgstr "端口"
|
|
||||||
|
|
||||||
msgid "Database Username"
|
|
||||||
msgstr "用户名"
|
|
||||||
|
|
||||||
msgid "Database Password"
|
|
||||||
msgstr "密码"
|
|
||||||
|
|
||||||
msgid "Database Name"
|
|
||||||
msgstr "数据库名"
|
|
||||||
|
|
||||||
msgid "Database Table Prefix"
|
|
||||||
msgstr "数据库表前缀"
|
|
||||||
|
|
||||||
msgid "Database SSL Mode"
|
|
||||||
msgstr "SSL模式"
|
|
||||||
|
|
||||||
msgid "Database DSN"
|
|
||||||
msgstr "DSN"
|
|
||||||
|
|
||||||
msgid "Task threads"
|
|
||||||
msgstr "任务线程"
|
|
||||||
|
|
||||||
msgid "Download Workers"
|
|
||||||
msgstr "下载任务线程数"
|
|
||||||
|
|
||||||
msgid "Download Max Retry"
|
|
||||||
msgstr "下载任务重试次数"
|
|
||||||
|
|
||||||
msgid "Transfer Workers"
|
|
||||||
msgstr "中转任务线程数"
|
|
||||||
|
|
||||||
msgid "Transfer Max Retry"
|
|
||||||
msgstr "中转任务下载重试次数"
|
|
||||||
|
|
||||||
msgid "Upload Workers"
|
|
||||||
msgstr "上传任务线程数"
|
|
||||||
|
|
||||||
msgid "Upload Max Retry"
|
|
||||||
msgstr "上传任务重试次数"
|
|
||||||
|
|
||||||
msgid "Copy Workers"
|
|
||||||
msgstr "复制任务线程数"
|
|
||||||
|
|
||||||
msgid "Copy Max Retry"
|
|
||||||
msgstr "复制任务重试次数"
|
|
||||||
|
|
||||||
msgid "CORS Settings"
|
|
||||||
msgstr "跨域设置"
|
|
||||||
|
|
||||||
msgid "Allow Origins"
|
|
||||||
msgstr "允许来源(Origins)"
|
|
||||||
|
|
||||||
msgid "Allow Methods"
|
|
||||||
msgstr "允许方法(Methods)"
|
|
||||||
|
|
||||||
msgid "Allow Headers"
|
msgid "Allow Headers"
|
||||||
msgstr "允许标头(Headers)"
|
msgstr "允许标头(Headers)"
|
||||||
|
|
||||||
msgid "Object Storage"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:323
|
||||||
msgstr "对象存储"
|
msgid "Allow Methods"
|
||||||
|
msgstr "允许方法(Methods)"
|
||||||
|
|
||||||
msgid "Enabled S3"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:319
|
||||||
msgstr "启用 S3"
|
msgid "Allow Origins"
|
||||||
|
msgstr "允许来源(Origins)"
|
||||||
|
|
||||||
msgid "Enabled FTP"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:106
|
||||||
msgstr "启用 FTP"
|
msgid "Basic Settings"
|
||||||
|
msgstr "基本设置"
|
||||||
|
|
||||||
msgid "FTP Port"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:157
|
||||||
msgstr "FTP 端口"
|
msgid "CDN URL"
|
||||||
|
msgstr "CDN 地址"
|
||||||
|
|
||||||
msgid "Max retries on port conflict during passive transfer"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:112
|
||||||
msgstr "被动传输端口冲突时最大重试次数"
|
msgid "CORS Settings"
|
||||||
|
msgstr "跨域设置"
|
||||||
|
|
||||||
msgid "Enable non-20 port for active transfer"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:138
|
||||||
msgstr "启用非 20 端口进行主动传输"
|
msgid "Cache directory"
|
||||||
|
msgstr "缓存目录"
|
||||||
|
|
||||||
msgid "Client idle timeout (seconds)"
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/logs.js:59
|
||||||
msgstr "客户端空闲超时(秒)"
|
msgid "Clear logs"
|
||||||
|
msgstr "清空日志"
|
||||||
msgid "Connection timeout (seconds)"
|
|
||||||
msgstr "连接超时(秒)"
|
|
||||||
|
|
||||||
msgid "Disable active transfer mode"
|
|
||||||
msgstr "禁用主动传输模式"
|
|
||||||
|
|
||||||
msgid "Enable binary transfer mode"
|
|
||||||
msgstr "启用二进制传输模式"
|
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:376
|
||||||
msgid "Client IP check in active transfer mode"
|
msgid "Client IP check in active transfer mode"
|
||||||
msgstr "主动传输模式下对客户端进行 IP 检查"
|
msgstr "主动传输模式下对客户端进行 IP 检查"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:379
|
||||||
msgid "Client IP check in passive transfer mode"
|
msgid "Client IP check in passive transfer mode"
|
||||||
msgstr "被动传输模式下对客户端进行 IP 检查"
|
msgstr "被动传输模式下对客户端进行 IP 检查"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:360
|
||||||
|
msgid "Client idle timeout (seconds)"
|
||||||
|
msgstr "客户端空闲超时(秒)"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:100
|
||||||
|
msgid "Collecting data..."
|
||||||
|
msgstr "收集数据..."
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:365
|
||||||
|
msgid "Connection timeout (seconds)"
|
||||||
|
msgstr "连接超时(秒)"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:313
|
||||||
|
msgid "Copy Max Retry"
|
||||||
|
msgstr "复制任务重试次数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:308
|
||||||
|
msgid "Copy Workers"
|
||||||
|
msgstr "复制任务线程数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:135
|
||||||
|
msgid "Data directory"
|
||||||
|
msgstr "数据目录"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:109
|
||||||
|
msgid "Database"
|
||||||
|
msgstr "数据库"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:255
|
||||||
|
msgid "Database DSN"
|
||||||
|
msgstr "DSN"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:224
|
||||||
|
msgid "Database Host"
|
||||||
|
msgstr "主机"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:242
|
||||||
|
msgid "Database Name"
|
||||||
|
msgstr "数据库名"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:238
|
||||||
|
msgid "Database Password"
|
||||||
|
msgstr "密码"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:228
|
||||||
|
msgid "Database Port"
|
||||||
|
msgstr "端口"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:251
|
||||||
|
msgid "Database SSL Mode"
|
||||||
|
msgstr "SSL模式"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:246
|
||||||
|
msgid "Database Table Prefix"
|
||||||
|
msgstr "数据库表前缀"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:218
|
||||||
|
msgid "Database Type"
|
||||||
|
msgstr "数据库类型"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:234
|
||||||
|
msgid "Database Username"
|
||||||
|
msgstr "用户名"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:127
|
||||||
|
msgid "Delayed Start (seconds)"
|
||||||
|
msgstr "开机延时启动(秒)"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:180
|
||||||
|
msgid "Disable TLS Verify"
|
||||||
|
msgstr "禁用 TLS 验证"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:370
|
||||||
|
msgid "Disable active transfer mode"
|
||||||
|
msgstr "禁用主动传输模式"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:283
|
||||||
|
msgid "Download Max Retry"
|
||||||
|
msgstr "下载任务重试次数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:278
|
||||||
|
msgid "Download Workers"
|
||||||
|
msgstr "下载任务线程数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:185
|
||||||
|
msgid "Enable Logs"
|
||||||
|
msgstr "启用日志"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:260
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:340
|
||||||
|
msgid "Enable SSL"
|
||||||
|
msgstr "启用 SSL"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:373
|
||||||
|
msgid "Enable binary transfer mode"
|
||||||
|
msgstr "启用二进制传输模式"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:357
|
||||||
|
msgid "Enable non-20 port for active transfer"
|
||||||
|
msgstr "启用非 20 端口进行主动传输"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:118
|
||||||
|
msgid "Enabled"
|
||||||
|
msgstr "启用"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:344
|
||||||
|
msgid "Enabled FTP"
|
||||||
|
msgstr "启用 FTP"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:332
|
||||||
|
msgid "Enabled S3"
|
||||||
|
msgstr "启用 S3"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:383
|
||||||
msgid "Enabled SFTP"
|
msgid "Enabled SFTP"
|
||||||
msgstr "启用 SFTP"
|
msgstr "启用 SFTP"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:114
|
||||||
|
msgid "FTP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:347
|
||||||
|
msgid "FTP Port"
|
||||||
|
msgstr "FTP 端口"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:263
|
||||||
|
msgid "Force HTTPS"
|
||||||
|
msgstr "强制 HTTPS"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:149
|
||||||
|
msgid "Force read config"
|
||||||
|
msgstr "强制读取配置"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:143
|
||||||
|
msgid "Generate a new random password."
|
||||||
|
msgstr "随机生成一个新密码。"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:107
|
||||||
|
msgid "Global Settings"
|
||||||
|
msgstr "全局设置"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/root/usr/share/rpcd/acl.d/luci-app-openlist2.json:3
|
||||||
|
msgid "Grant UCI access for luci-app-openlist2"
|
||||||
|
msgstr "授予 luci-app-openlist2 的 UCI 访问权限"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:160
|
||||||
|
msgid "JWT Key"
|
||||||
|
msgstr "JWT 密钥"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:212
|
||||||
|
msgid "Log Compress"
|
||||||
|
msgstr "日志压缩"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:189
|
||||||
|
msgid "Log path"
|
||||||
|
msgstr "日志文件路径"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:163
|
||||||
|
msgid "Login Validity Period (hours)"
|
||||||
|
msgstr "登录有效期(小时)"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:108
|
||||||
|
#: luci-app-openlist2/root/usr/share/luci/menu.d/luci-app-openlist2.json:21
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr "日志"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:168
|
||||||
|
msgid "Max Connections"
|
||||||
|
msgstr "最大并发连接数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:194
|
||||||
|
msgid "Max Size (MB)"
|
||||||
|
msgstr "日志文件大小(MB)"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:206
|
||||||
|
msgid "Max age"
|
||||||
|
msgstr "日志保存天数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:200
|
||||||
|
msgid "Max backups"
|
||||||
|
msgstr "日志备份数量"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:174
|
||||||
|
msgid "Max concurrency of local proxies"
|
||||||
|
msgstr "本地代理最大并发数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:352
|
||||||
|
msgid "Max retries on port conflict during passive transfer"
|
||||||
|
msgstr "被动传输端口冲突时最大重试次数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:221
|
||||||
|
msgid "MySQL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:40
|
||||||
|
msgid "NOT RUNNING"
|
||||||
|
msgstr "未运行"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:65
|
||||||
|
msgid "New Password:"
|
||||||
|
msgstr "新密码:"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:65
|
||||||
|
msgid "New password has been copied to clipboard."
|
||||||
|
msgstr "新密码已复制到剪贴板。"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/logs.js:23
|
||||||
|
msgid "No log data."
|
||||||
|
msgstr "无日志数据。"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:113
|
||||||
|
msgid "Object Storage"
|
||||||
|
msgstr "对象存储"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:37
|
||||||
|
msgid "Open Web Interface"
|
||||||
|
msgstr "打开 Web 界面"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:132
|
||||||
|
msgid "Open firewall port"
|
||||||
|
msgstr "打开防火墙端口"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:83
|
||||||
|
#: luci-app-openlist2/root/usr/share/luci/menu.d/luci-app-openlist2.json:3
|
||||||
|
msgid "OpenList"
|
||||||
|
msgstr "OpenList"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:122
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:335
|
||||||
|
msgid "Port"
|
||||||
|
msgstr "端口"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:222
|
||||||
|
msgid "PostgreSQL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:38
|
||||||
|
msgid "RUNNING"
|
||||||
|
msgstr "运行中"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/logs.js:68
|
||||||
|
msgid "Refresh every %s seconds."
|
||||||
|
msgstr "每 %s 秒刷新。"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:142
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:144
|
||||||
|
msgid "Reset Password"
|
||||||
|
msgstr "重置密码"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:115
|
||||||
|
msgid "SFTP"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:386
|
||||||
msgid "SFTP Port"
|
msgid "SFTP Port"
|
||||||
msgstr "SFTP 端口"
|
msgstr "SFTP 端口"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:220
|
||||||
|
msgid "SQLite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:267
|
||||||
|
msgid "SSL cert"
|
||||||
|
msgstr "SSL 证书"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:268
|
||||||
|
msgid "SSL certificate file path"
|
||||||
|
msgstr "SSL 证书文件路径"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:272
|
||||||
|
msgid "SSL key"
|
||||||
|
msgstr "SSL 密钥"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:273
|
||||||
|
msgid "SSL key file path"
|
||||||
|
msgstr "SSL 密钥文件路径"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/root/usr/share/luci/menu.d/luci-app-openlist2.json:13
|
||||||
|
msgid "Setting"
|
||||||
|
msgstr "设置"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:150
|
||||||
|
msgid ""
|
||||||
|
"Setting this to true will force the program to read the configuration file, "
|
||||||
|
"ignoring environment variables."
|
||||||
|
msgstr "将此设置为 true 可以强制程序读取配置文件,而忽略环境变量"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:154
|
||||||
|
msgid "Site URL"
|
||||||
|
msgstr "站点地址"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:111
|
||||||
|
msgid "Task threads"
|
||||||
|
msgstr "任务线程"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:293
|
||||||
|
msgid "Transfer Max Retry"
|
||||||
|
msgstr "中转任务下载重试次数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:288
|
||||||
|
msgid "Transfer Workers"
|
||||||
|
msgstr "中转任务线程数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:303
|
||||||
|
msgid "Upload Max Retry"
|
||||||
|
msgstr "上传任务重试次数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:298
|
||||||
|
msgid "Upload Workers"
|
||||||
|
msgstr "上传任务线程数"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:65
|
||||||
|
msgid "Username:"
|
||||||
|
msgstr "用户名:"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:110
|
||||||
|
msgid "Web Protocol"
|
||||||
|
msgstr "Web 协议"
|
||||||
|
|
||||||
|
#: luci-app-openlist2/htdocs/luci-static/resources/view/openlist2/basic.js:155
|
||||||
|
msgid ""
|
||||||
|
"When the web is reverse proxied to a subdirectory, this option must be "
|
||||||
|
"filled out to ensure proper functioning of the web. Do not include '/' at "
|
||||||
|
"the end of the URL"
|
||||||
|
msgstr ""
|
||||||
|
"Web 被反向代理到二级目录时,必须填写该选项以确保 Web 正常工作。URL 结尾请勿携"
|
||||||
|
"带 '/'"
|
||||||
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=luci-app-passwall
|
PKG_NAME:=luci-app-passwall
|
||||||
PKG_VERSION:=26.5.11
|
PKG_VERSION:=26.5.11
|
||||||
PKG_RELEASE:=119
|
PKG_RELEASE:=120
|
||||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
|
|||||||
@@ -775,6 +775,9 @@ function gen_config_server(node)
|
|||||||
config.outbounds[index][k] = nil
|
config.outbounds[index][k] = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if value.protocol == "freedom" and api.compare_versions(xray_version, "<", "26.5.3") then -- Todo is to remove it
|
||||||
|
value.settings = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return config
|
return config
|
||||||
@@ -1245,9 +1248,9 @@ function gen_config(var)
|
|||||||
interface = node.iface
|
interface = node.iface
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
settings = {
|
settings = (api.compare_versions(xray_version, ">", "26.4.25")) and { -- Todo: Remove version check
|
||||||
finalRules = {{ action = "allow" }}
|
finalRules = {{ action = "allow" }}
|
||||||
}
|
} or nil
|
||||||
}
|
}
|
||||||
sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface))
|
sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.iface))
|
||||||
end
|
end
|
||||||
@@ -2023,7 +2026,12 @@ function gen_proto_config(var)
|
|||||||
|
|
||||||
-- 额外传出连接
|
-- 额外传出连接
|
||||||
table.insert(outbounds, {
|
table.insert(outbounds, {
|
||||||
protocol = "freedom", tag = "direct", settings = {finalRules = {{ action = "allow" }}}, sockopt = {mark = 255}
|
protocol = "freedom",
|
||||||
|
tag = "direct",
|
||||||
|
settings = (api.compare_versions(xray_version, ">", "26.4.25")) and { -- Todo: Remove version check
|
||||||
|
finalRules = {{ action = "allow" }}
|
||||||
|
} or nil,
|
||||||
|
sockopt = {mark = 255}
|
||||||
})
|
})
|
||||||
|
|
||||||
local config = {
|
local config = {
|
||||||
|
|||||||
@@ -8,12 +8,12 @@ PKG_NAME:=alwaysonline
|
|||||||
PKG_UPSTREAM_VERSION:=1.2.1
|
PKG_UPSTREAM_VERSION:=1.2.1
|
||||||
PKG_UPSTREAM_GITHASH:=206292ca68e4d6c81b215163a7bbd0cd2eb36860
|
PKG_UPSTREAM_GITHASH:=206292ca68e4d6c81b215163a7bbd0cd2eb36860
|
||||||
PKG_VERSION:=$(PKG_UPSTREAM_VERSION)~$(call version_abbrev,$(PKG_UPSTREAM_GITHASH))
|
PKG_VERSION:=$(PKG_UPSTREAM_VERSION)~$(call version_abbrev,$(PKG_UPSTREAM_GITHASH))
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
UCI_VERSION:=0.2025.01.25
|
UCI_VERSION:=0.2025.01.25
|
||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://github.com/Jamesits/alwaysonline.git
|
PKG_SOURCE_URL:=https://github.com/Jamesits/alwaysonline.git
|
||||||
PKG_SOURCE_VERSION:=fc4faba4a73ffdb93745b02a816ea5c883bfbb34
|
PKG_SOURCE_VERSION:=c328927a0fac3ffc869a3dc04c33256cf0f3365c
|
||||||
PKG_MIRROR_HASH:=skip
|
PKG_MIRROR_HASH:=skip
|
||||||
|
|
||||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION)
|
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION)
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=fastfetch
|
PKG_NAME:=fastfetch
|
||||||
PKG_VERSION:=2.62.1
|
PKG_VERSION:=2.63.1
|
||||||
PKG_RELEASE:=5
|
PKG_RELEASE:=6
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://codeload.github.com/fastfetch-cli/fastfetch/tar.gz/$(PKG_VERSION)?
|
PKG_SOURCE_URL:=https://codeload.github.com/fastfetch-cli/fastfetch/tar.gz/$(PKG_VERSION)?
|
||||||
|
|||||||
Reference in new issue
Block a user