From 71224864ff75735ce7314823e691cb0968d8e1c3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 14 Aug 2026 17:37:24 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=A4=20Sync=202026-08-14=2017:37:24?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-daede/Makefile | 2 +- .../resources/view/daede/clash-converter.js | 2 +- .../luci-static/resources/view/fchomo/node.js | 5 + luci-app-fchomo/po/templates/fchomo.pot | 933 +++++++++--------- luci-app-fchomo/po/zh_Hans/fchomo.po | 933 +++++++++--------- luci-app-fchomo/po/zh_Hant/fchomo.po | 933 +++++++++--------- .../root/usr/share/fchomo/generate_client.uc | 1 + luci-app-frpc/po/sv/frpc.po | 45 +- luci-app-frps/po/sv/frps.po | 43 +- luci-app-passwall/Makefile | 2 +- .../root/usr/share/passwall/app.sh | 5 +- .../usr/share/passwall/helper_dnsmasq.lua | 8 +- luci-app-passwall2/Makefile | 4 +- .../luasrc/controller/passwall2.lua | 232 ++--- .../luasrc/model/cbi/passwall2/client/acl.lua | 19 +- .../model/cbi/passwall2/client/acl_config.lua | 22 +- .../model/cbi/passwall2/client/app_update.lua | 17 +- .../model/cbi/passwall2/client/geoview.lua | 12 +- .../model/cbi/passwall2/client/global.lua | 44 +- .../model/cbi/passwall2/client/haproxy.lua | 35 +- .../client/include/shunt_options.lua | 18 +- .../cbi/passwall2/client/node_config.lua | 36 +- .../model/cbi/passwall2/client/node_list.lua | 15 +- .../cbi/passwall2/client/node_subscribe.lua | 34 +- .../client/node_subscribe_config.lua | 19 +- .../model/cbi/passwall2/client/other.lua | 37 +- .../model/cbi/passwall2/client/rule.lua | 16 +- .../cbi/passwall2/client/shunt_rules.lua | 14 +- .../cbi/passwall2/client/socks_config.lua | 19 +- .../model/cbi/passwall2/client/type/ray.lua | 10 +- .../cbi/passwall2/client/type/sing-box.lua | 8 +- .../model/cbi/passwall2/server/index.lua | 29 +- .../cbi/passwall2/server/server_config.lua | 28 +- .../model/cbi/passwall2/server/type/ray.lua | 2 +- .../cbi/passwall2/server/type/sing-box.lua | 2 +- .../cbi/passwall2/server/user_config.lua | 21 +- luci-app-passwall2/luasrc/passwall2/api.lua | 177 ++-- .../luasrc/passwall2/server_app.lua | 2 +- .../luasrc/passwall2/util_hysteria2.lua | 4 +- .../luasrc/passwall2/util_naiveproxy.lua | 2 +- .../luasrc/passwall2/util_shadowsocks.lua | 4 +- .../luasrc/passwall2/util_sing-box.lua | 22 +- .../luasrc/passwall2/util_xray.lua | 24 +- .../view/passwall2/app_update/app_version.htm | 3 +- .../luasrc/view/passwall2/cbi/footer.htm | 3 + .../luasrc/view/passwall2/cbi/header.htm | 10 +- .../luasrc/view/passwall2/cbi/sortable.htm | 11 +- .../luasrc/view/passwall2/global/backup.htm | 3 +- .../luasrc/view/passwall2/global/faq.htm | 3 +- .../luasrc/view/passwall2/global/footer.htm | 42 +- .../luasrc/view/passwall2/global/status.htm | 3 +- .../luasrc/view/passwall2/haproxy/js.htm | 4 +- .../luasrc/view/passwall2/haproxy/status.htm | 7 +- .../view/passwall2/include/shunt_options.htm | 13 +- .../view/passwall2/node_config/footer.htm | 26 +- .../view/passwall2/node_config/header.htm | 7 +- .../view/passwall2/node_list/node_list.htm | 18 +- .../view/passwall2/node_subscribe/js.htm | 3 +- .../luasrc/view/passwall2/rule/geoview.htm | 2 +- .../view/passwall2/rule/rule_version.htm | 3 +- .../view/passwall2/rule/shunt_rule_list.htm | 5 +- .../view/passwall2/server/config_footer.htm | 15 +- .../view/passwall2/server/config_header.htm | 7 +- .../luasrc/view/passwall2/server/log.htm | 3 +- .../passwall2/server/server_list_status.htm | 7 +- .../view/passwall2/socks_auto_switch/btn.htm | 3 +- luci-app-passwall2/po/fa/passwall2.po | 33 +- luci-app-passwall2/po/ru/passwall2.po | 33 +- luci-app-passwall2/po/zh-cn/passwall2.po | 33 +- luci-app-passwall2/po/zh-tw/passwall2.po | 33 +- .../{luci-passwall2 => luci-app-passwall2} | 16 - .../uci-defaults/luci-app-passwall2_server | 39 + .../root/usr/share/passwall2/app.sh | 2 +- .../root/usr/share/passwall2/haproxy.lua | 28 +- .../usr/share/passwall2/helper_dnsmasq.lua | 8 +- .../root/usr/share/passwall2/rule_update.lua | 26 +- .../root/usr/share/passwall2/subscribe.lua | 147 +-- luci-app-xwan/Makefile | 4 +- luci-theme-footstrap/Makefile | 2 +- .../htdocs/luci-static/resources/fs-router.js | 6 +- .../htdocs/luci-static/resources/fs-select.js | 33 +- .../styles/theme/10-chrome.css | 19 +- .../styles/theme/20-shell.css | 25 +- mihomo-alpha/Makefile | 8 +- openwrt-fastfetch/Makefile | 4 +- 85 files changed, 2298 insertions(+), 2242 deletions(-) rename luci-app-passwall2/root/etc/uci-defaults/{luci-passwall2 => luci-app-passwall2} (83%) create mode 100644 luci-app-passwall2/root/etc/uci-defaults/luci-app-passwall2_server diff --git a/luci-app-daede/Makefile b/luci-app-daede/Makefile index 7b323563..395393e0 100644 --- a/luci-app-daede/Makefile +++ b/luci-app-daede/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-daede PKG_VERSION:=1.14.7 -PKG_RELEASE:=39 +PKG_RELEASE:=40 PKG_MAINTAINER:=kenzok8 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) diff --git a/luci-app-daede/htdocs/luci-static/resources/view/daede/clash-converter.js b/luci-app-daede/htdocs/luci-static/resources/view/daede/clash-converter.js index 27cf8e94..fe8b29ff 100644 --- a/luci-app-daede/htdocs/luci-static/resources/view/daede/clash-converter.js +++ b/luci-app-daede/htdocs/luci-static/resources/view/daede/clash-converter.js @@ -213,7 +213,7 @@ function convertAnytls(node) { setIf(params, 'alpn', arrayValue(node.alpn)); setIf(params, 'client-fingerprint', node['client-fingerprint'] || node.fingerprint); if (node['skip-cert-verify']) - params.set('allowInsecure', '1'); + params.set('insecure', '1'); if (node.udp) params.set('udp', '1'); return 'anytls://' + encodeURIComponent(node.password) + '@' + endpoint(node.server, node.port) + diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js index 8126f133..c8c5280b 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js @@ -597,6 +597,11 @@ return view.extend({ so.modalonly = true; /* AnyTLS fields */ + so = ss.taboption('field_general', form.Value, 'anytls_client_metadata', _('Client metadata'), + _('The client metadata sent to the server.')); + so.depends('type', 'anytls'); + so.modalonly = true; + so = ss.taboption('field_general', form.Value, 'anytls_idle_session_check_interval', _('Idle session check interval'), _('In seconds.')); so.placeholder = '30'; diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot index 6d0b528c..ea0c6553 100644 --- a/luci-app-fchomo/po/templates/fchomo.pot +++ b/luci-app-fchomo/po/templates/fchomo.pot @@ -1,12 +1,12 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "%s Hostname" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1508 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1521 +#: htdocs/luci-static/resources/view/fchomo/node.js:1551 msgid "%s UDP port. 0 selects an available port." msgstr "" @@ -14,7 +14,7 @@ msgstr "" msgid "%s log" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:807 +#: htdocs/luci-static/resources/view/fchomo/node.js:812 msgid "%s of the %s used to receiving remote debugging log." msgstr "" @@ -38,10 +38,10 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1173 #: htdocs/luci-static/resources/view/fchomo/global.js:564 #: htdocs/luci-static/resources/view/fchomo/global.js:570 -#: htdocs/luci-static/resources/view/fchomo/node.js:1397 -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 -#: htdocs/luci-static/resources/view/fchomo/node.js:1411 -#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1410 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1424 +#: htdocs/luci-static/resources/view/fchomo/node.js:1430 msgid "(mTLS)" msgstr "" @@ -68,10 +68,10 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1117 #: htdocs/luci-static/resources/view/fchomo/client.js:1373 #: htdocs/luci-static/resources/view/fchomo/node.js:302 -#: htdocs/luci-static/resources/view/fchomo/node.js:2492 -#: htdocs/luci-static/resources/view/fchomo/node.js:2503 -#: htdocs/luci-static/resources/view/fchomo/node.js:2522 -#: htdocs/luci-static/resources/view/fchomo/node.js:2533 +#: htdocs/luci-static/resources/view/fchomo/node.js:2505 +#: htdocs/luci-static/resources/view/fchomo/node.js:2516 +#: htdocs/luci-static/resources/view/fchomo/node.js:2535 +#: htdocs/luci-static/resources/view/fchomo/node.js:2546 msgid "-- Please choose --" msgstr "" @@ -112,7 +112,7 @@ msgstr "" msgid "2022-blake3-chacha20-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1539 +#: htdocs/luci-static/resources/view/fchomo/node.js:1552 msgid "-1 disables it." msgstr "" @@ -123,8 +123,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1134 #: htdocs/luci-static/resources/fchomo/listeners.js:1149 #: htdocs/luci-static/resources/fchomo/listeners.js:1174 -#: htdocs/luci-static/resources/view/fchomo/node.js:1404 -#: htdocs/luci-static/resources/view/fchomo/node.js:1418 +#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1431 msgid "Save your configuration before uploading files!" msgstr "" @@ -197,7 +197,7 @@ msgstr "" msgid "ASN version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:977 +#: htdocs/luci-static/resources/view/fchomo/node.js:974 msgid "Accept routes" msgstr "" @@ -226,11 +226,11 @@ msgstr "" msgid "Add a inbound" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1978 +#: htdocs/luci-static/resources/view/fchomo/node.js:1991 msgid "Add a provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2466 +#: htdocs/luci-static/resources/view/fchomo/node.js:2479 msgid "Add a proxy chain" msgstr "" @@ -254,15 +254,15 @@ msgstr "" msgid "Add a sub rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2275 +#: htdocs/luci-static/resources/view/fchomo/node.js:2288 msgid "Add prefix" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2279 +#: htdocs/luci-static/resources/view/fchomo/node.js:2292 msgid "Add suffix" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:856 +#: htdocs/luci-static/resources/view/fchomo/node.js:861 msgid "Add the base64 text of the planet file here." msgstr "" @@ -295,7 +295,7 @@ msgstr "" msgid "All ports" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:988 +#: htdocs/luci-static/resources/view/fchomo/node.js:985 msgid "Allow LAN access" msgstr "" @@ -305,7 +305,7 @@ msgid "" "network from a public website, it must be enabled." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:989 +#: htdocs/luci-static/resources/view/fchomo/node.js:986 msgid "Allow access to the local LAN via the exit node." msgstr "" @@ -313,7 +313,7 @@ msgstr "" msgid "Allow insecure connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:937 +#: htdocs/luci-static/resources/view/fchomo/node.js:934 msgid "Allowed IPs" msgstr "" @@ -339,7 +339,7 @@ msgstr "" msgid "Application version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:972 +#: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "As ephemeral node" msgstr "" @@ -360,7 +360,7 @@ msgstr "" msgid "Authenticated length" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:967 +#: htdocs/luci-static/resources/view/fchomo/node.js:964 msgid "Authentication key" msgstr "" @@ -369,14 +369,14 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:423 #: htdocs/luci-static/resources/view/fchomo/node.js:464 #: htdocs/luci-static/resources/view/fchomo/node.js:488 -#: htdocs/luci-static/resources/view/fchomo/node.js:842 -#: htdocs/luci-static/resources/view/fchomo/node.js:895 -#: htdocs/luci-static/resources/view/fchomo/node.js:1784 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 +#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +#: htdocs/luci-static/resources/view/fchomo/node.js:1797 msgid "Auto" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:139 -#: htdocs/luci-static/resources/view/fchomo/node.js:1488 +#: htdocs/luci-static/resources/view/fchomo/node.js:1501 msgid "Auto configure firewall" msgstr "" @@ -389,7 +389,7 @@ msgid "Auto update resources." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:638 -#: htdocs/luci-static/resources/view/fchomo/node.js:1061 +#: htdocs/luci-static/resources/view/fchomo/node.js:1074 msgid "BBR profile" msgstr "" @@ -397,11 +397,11 @@ msgstr "" msgid "Baidu" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:996 +#: htdocs/luci-static/resources/view/fchomo/node.js:993 msgid "Base64 encoded ECDSA private key on the NIST P-256 curve." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1004 +#: htdocs/luci-static/resources/view/fchomo/node.js:1001 msgid "Base64 encoded ECDSA public key on the NIST P-256 curve." msgstr "" @@ -423,13 +423,13 @@ msgid "Binary mrs" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:758 -#: htdocs/luci-static/resources/view/fchomo/node.js:1945 -#: htdocs/luci-static/resources/view/fchomo/node.js:2364 +#: htdocs/luci-static/resources/view/fchomo/node.js:1958 +#: htdocs/luci-static/resources/view/fchomo/node.js:2377 msgid "Bind interface" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1946 -#: htdocs/luci-static/resources/view/fchomo/node.js:2365 +#: htdocs/luci-static/resources/view/fchomo/node.js:1959 +#: htdocs/luci-static/resources/view/fchomo/node.js:2378 msgid "Bind outbound interface.
" msgstr "" @@ -498,17 +498,17 @@ msgstr "" msgid "Cancel" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1370 +#: htdocs/luci-static/resources/view/fchomo/node.js:1383 msgid "Cert fingerprint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 +#: htdocs/luci-static/resources/view/fchomo/node.js:1384 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1111 -#: htdocs/luci-static/resources/view/fchomo/node.js:1397 +#: htdocs/luci-static/resources/view/fchomo/node.js:1410 msgid "Certificate path" msgstr "" @@ -569,9 +569,9 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:853 #: htdocs/luci-static/resources/fchomo/listeners.js:1165 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 -#: htdocs/luci-static/resources/view/fchomo/node.js:1398 -#: htdocs/luci-static/resources/view/fchomo/node.js:1412 +#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1425 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "" @@ -584,7 +584,7 @@ msgstr "" msgid "Client Auth type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1443 +#: htdocs/luci-static/resources/view/fchomo/node.js:1456 msgid "Client fingerprint" msgstr "" @@ -592,12 +592,20 @@ msgstr "" msgid "Client key" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:600 +msgid "Client metadata" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:601 +msgid "The client metadata sent to the server." +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/global.js:176 msgid "Client status" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1583 -#: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1596 +#: htdocs/luci-static/resources/view/fchomo/node.js:1621 msgid "Cloudflare WARP" msgstr "" @@ -615,7 +623,8 @@ msgid "Complete" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:630 -#: htdocs/luci-static/resources/view/fchomo/node.js:1051 +#: htdocs/luci-static/resources/view/fchomo/node.js:1056 +#: htdocs/luci-static/resources/view/fchomo/node.js:1065 msgid "Congestion controller" msgstr "" @@ -628,7 +637,7 @@ msgid "Connection reuse" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:575 -#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:781 msgid "Connection-level receive window size" msgstr "" @@ -641,14 +650,14 @@ msgid "Content copied to clipboard!" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:699 -#: htdocs/luci-static/resources/view/fchomo/node.js:2135 -#: htdocs/luci-static/resources/view/fchomo/node.js:2161 +#: htdocs/luci-static/resources/view/fchomo/node.js:2148 +#: htdocs/luci-static/resources/view/fchomo/node.js:2174 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:348 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:374 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2134 +#: htdocs/luci-static/resources/view/fchomo/node.js:2147 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:347 msgid "Contents" msgstr "" @@ -657,7 +666,7 @@ msgstr "" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:961 +#: htdocs/luci-static/resources/view/fchomo/node.js:958 msgid "Control server" msgstr "" @@ -673,7 +682,7 @@ msgstr "" msgid "Cron expression" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Custom %s control server." msgstr "" @@ -681,7 +690,7 @@ msgstr "" msgid "Custom Direct List" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2266 +#: htdocs/luci-static/resources/view/fchomo/node.js:2279 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:420 msgid "Custom HTTP header." msgstr "" @@ -717,7 +726,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:911 #: htdocs/luci-static/resources/view/fchomo/client.js:1528 #: htdocs/luci-static/resources/view/fchomo/client.js:1537 -#: htdocs/luci-static/resources/view/fchomo/node.js:1651 +#: htdocs/luci-static/resources/view/fchomo/node.js:1664 msgid "DNS server" msgstr "" @@ -734,7 +743,7 @@ msgid "Dashboard version" msgstr "" #: htdocs/luci-static/resources/fchomo.js:94 -#: htdocs/luci-static/resources/view/fchomo/node.js:817 +#: htdocs/luci-static/resources/view/fchomo/node.js:822 msgid "Debug" msgstr "" @@ -760,15 +769,15 @@ msgstr "" msgid "Derive from priv-key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:938 +#: htdocs/luci-static/resources/view/fchomo/node.js:935 msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2489 +#: htdocs/luci-static/resources/view/fchomo/node.js:2502 msgid "Destination provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2500 +#: htdocs/luci-static/resources/view/fchomo/node.js:2513 msgid "Destination proxy node" msgstr "" @@ -776,8 +785,8 @@ msgstr "" msgid "Dial fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2512 -#: htdocs/luci-static/resources/view/fchomo/node.js:2542 +#: htdocs/luci-static/resources/view/fchomo/node.js:2525 +#: htdocs/luci-static/resources/view/fchomo/node.js:2555 msgid "Different chain head/tail" msgstr "" @@ -799,8 +808,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:485 #: htdocs/luci-static/resources/view/fchomo/global.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:710 -#: htdocs/luci-static/resources/view/fchomo/node.js:844 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 +#: htdocs/luci-static/resources/view/fchomo/node.js:849 msgid "Disable" msgstr "" @@ -816,7 +825,7 @@ msgstr "" msgid "Disable ICMP Forwarding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1311 +#: htdocs/luci-static/resources/view/fchomo/node.js:1324 msgid "Disable SNI" msgstr "" @@ -842,23 +851,23 @@ msgstr "" msgid "Domain" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1312 +#: htdocs/luci-static/resources/view/fchomo/node.js:1325 msgid "Donot send server name in ClientHello." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1680 -#: htdocs/luci-static/resources/view/fchomo/node.js:1390 -#: htdocs/luci-static/resources/view/fchomo/node.js:2348 +#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:2361 msgid "Donot verifying server certificate." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1395 -#: htdocs/luci-static/resources/view/fchomo/node.js:1922 +#: htdocs/luci-static/resources/view/fchomo/node.js:1935 msgid "Download bandwidth" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1396 -#: htdocs/luci-static/resources/view/fchomo/node.js:1923 +#: htdocs/luci-static/resources/view/fchomo/node.js:1936 msgid "Download bandwidth in Mbps." msgstr "" @@ -874,12 +883,12 @@ msgstr "" msgid "Dual stack" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1437 +#: htdocs/luci-static/resources/view/fchomo/node.js:1450 msgid "ECH HTTPS record query servername" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1431 +#: htdocs/luci-static/resources/view/fchomo/node.js:1444 msgid "ECH config" msgstr "" @@ -899,11 +908,11 @@ msgstr "" msgid "ETag support" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1762 +#: htdocs/luci-static/resources/view/fchomo/node.js:1775 msgid "Early Data first packet length limit." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1768 +#: htdocs/luci-static/resources/view/fchomo/node.js:1781 msgid "Early Data header name" msgstr "" @@ -919,7 +928,7 @@ msgstr "" msgid "Edit ruleset" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2132 +#: htdocs/luci-static/resources/view/fchomo/node.js:2145 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:345 msgid "Editer" msgstr "" @@ -943,22 +952,22 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:422 #: htdocs/luci-static/resources/view/fchomo/global.js:704 #: htdocs/luci-static/resources/view/fchomo/node.js:264 -#: htdocs/luci-static/resources/view/fchomo/node.js:2105 -#: htdocs/luci-static/resources/view/fchomo/node.js:2387 -#: htdocs/luci-static/resources/view/fchomo/node.js:2476 +#: htdocs/luci-static/resources/view/fchomo/node.js:2118 +#: htdocs/luci-static/resources/view/fchomo/node.js:2400 +#: htdocs/luci-static/resources/view/fchomo/node.js:2489 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:272 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:664 +#: htdocs/luci-static/resources/view/fchomo/node.js:669 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
Disabling this is highly recommended, as it is vulnerable to replay attacks." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:663 +#: htdocs/luci-static/resources/view/fchomo/node.js:668 msgid "Enable 0-RTT handshake" msgstr "" @@ -968,25 +977,25 @@ msgid "" "conversion for outbound connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1425 +#: htdocs/luci-static/resources/view/fchomo/node.js:1438 msgid "Enable ECH" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1383 -#: htdocs/luci-static/resources/view/fchomo/node.js:1910 +#: htdocs/luci-static/resources/view/fchomo/node.js:1923 msgid "Enable TCP Brutal" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1384 -#: htdocs/luci-static/resources/view/fchomo/node.js:1911 +#: htdocs/luci-static/resources/view/fchomo/node.js:1924 msgid "Enable TCP Brutal congestion control algorithm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:658 +#: htdocs/luci-static/resources/view/fchomo/node.js:663 msgid "Enable fast open" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1899 +#: htdocs/luci-static/resources/view/fchomo/node.js:1912 msgid "Enable multiplexing only for TCP." msgstr "" @@ -996,28 +1005,28 @@ msgid "Enable obfuscate for downlink" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1378 -#: htdocs/luci-static/resources/view/fchomo/node.js:1893 +#: htdocs/luci-static/resources/view/fchomo/node.js:1906 msgid "Enable padding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1904 +#: htdocs/luci-static/resources/view/fchomo/node.js:1917 msgid "Enable statistic" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:2324 +#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:2337 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:492 -#: htdocs/luci-static/resources/view/fchomo/node.js:717 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:840 msgid "Encrypted Hello" msgstr "" @@ -1025,10 +1034,6 @@ msgstr "" msgid "Encryption method" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1003 -msgid "Server public key" -msgstr "" - #: htdocs/luci-static/resources/view/fchomo/global.js:540 msgid "Endpoint-Independent NAT" msgstr "" @@ -1048,7 +1053,7 @@ msgid "" "if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2445 +#: htdocs/luci-static/resources/view/fchomo/node.js:2458 msgid "Exclude matched node types." msgstr "" @@ -1059,11 +1064,11 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1255 -#: htdocs/luci-static/resources/view/fchomo/node.js:2438 +#: htdocs/luci-static/resources/view/fchomo/node.js:2451 msgid "Exclude nodes that meet keywords or regexps." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:983 +#: htdocs/luci-static/resources/view/fchomo/node.js:980 msgid "Exit node" msgstr "" @@ -1072,12 +1077,12 @@ msgid "Expand/Collapse result" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1198 -#: htdocs/luci-static/resources/view/fchomo/node.js:2423 +#: htdocs/luci-static/resources/view/fchomo/node.js:2436 msgid "Expected HTTP code. 204 will be used if empty." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1200 -#: htdocs/luci-static/resources/view/fchomo/node.js:2425 +#: htdocs/luci-static/resources/view/fchomo/node.js:2438 msgid "Expected status" msgstr "" @@ -1119,11 +1124,11 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:441 #: htdocs/luci-static/resources/view/fchomo/node.js:494 #: htdocs/luci-static/resources/view/fchomo/node.js:496 -#: htdocs/luci-static/resources/view/fchomo/node.js:886 -#: htdocs/luci-static/resources/view/fchomo/node.js:1249 -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 -#: htdocs/luci-static/resources/view/fchomo/node.js:2512 -#: htdocs/luci-static/resources/view/fchomo/node.js:2542 +#: htdocs/luci-static/resources/view/fchomo/node.js:891 +#: htdocs/luci-static/resources/view/fchomo/node.js:1262 +#: htdocs/luci-static/resources/view/fchomo/node.js:1389 +#: htdocs/luci-static/resources/view/fchomo/node.js:2525 +#: htdocs/luci-static/resources/view/fchomo/node.js:2555 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:300 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:314 msgid "Expecting: %s" @@ -1134,7 +1139,7 @@ msgid "Expecting: Cannot be empty." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1236 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1472 msgid "Expecting: Cannot be enabled when %s is enabled." msgstr "" @@ -1151,11 +1156,11 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:690 #: htdocs/luci-static/resources/fchomo/listeners.js:1304 #: htdocs/luci-static/resources/fchomo/listeners.js:1311 -#: htdocs/luci-static/resources/view/fchomo/node.js:1123 -#: htdocs/luci-static/resources/view/fchomo/node.js:1129 -#: htdocs/luci-static/resources/view/fchomo/node.js:1677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1136 +#: htdocs/luci-static/resources/view/fchomo/node.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 +#: htdocs/luci-static/resources/view/fchomo/node.js:1705 msgid "Expecting: Only support %s." msgstr "" @@ -1207,16 +1212,16 @@ msgstr "" msgid "Fallback filter" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:841 +#: htdocs/luci-static/resources/view/fchomo/node.js:846 msgid "Fallback mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:848 +#: htdocs/luci-static/resources/view/fchomo/node.js:853 msgid "Fallback relay" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1250 -#: htdocs/luci-static/resources/view/fchomo/node.js:2432 +#: htdocs/luci-static/resources/view/fchomo/node.js:2445 msgid "Filter nodes that meet keywords or regexps." msgstr "" @@ -1242,7 +1247,7 @@ msgid "Final DNS server (For poisoned domains)" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:138 -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 +#: htdocs/luci-static/resources/view/fchomo/node.js:1500 msgid "Firewall" msgstr "" @@ -1258,19 +1263,19 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1199 -#: htdocs/luci-static/resources/view/fchomo/node.js:2285 -#: htdocs/luci-static/resources/view/fchomo/node.js:2293 -#: htdocs/luci-static/resources/view/fchomo/node.js:2424 +#: htdocs/luci-static/resources/view/fchomo/node.js:2298 +#: htdocs/luci-static/resources/view/fchomo/node.js:2306 +#: htdocs/luci-static/resources/view/fchomo/node.js:2437 msgid "" "For format see %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:843 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Force" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1646 +#: htdocs/luci-static/resources/view/fchomo/node.js:1659 msgid "Force DNS remote resolution." msgstr "" @@ -1293,7 +1298,7 @@ msgstr "" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1717 +#: htdocs/luci-static/resources/view/fchomo/node.js:1730 msgid "GET" msgstr "" @@ -1302,7 +1307,7 @@ msgid "GFW list version" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:712 +#: htdocs/luci-static/resources/view/fchomo/node.js:717 msgid "Gecko" msgstr "" @@ -1313,7 +1318,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:119 #: htdocs/luci-static/resources/view/fchomo/client.js:1054 #: htdocs/luci-static/resources/view/fchomo/node.js:249 -#: htdocs/luci-static/resources/view/fchomo/node.js:2095 +#: htdocs/luci-static/resources/view/fchomo/node.js:2108 msgid "General fields" msgstr "" @@ -1331,7 +1336,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:949 #: htdocs/luci-static/resources/fchomo/listeners.js:1214 #: htdocs/luci-static/resources/view/fchomo/global.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:2253 +#: htdocs/luci-static/resources/view/fchomo/node.js:2266 msgid "Generate" msgstr "" @@ -1401,16 +1406,16 @@ msgstr "" #: htdocs/luci-static/resources/fchomo.js:154 #: htdocs/luci-static/resources/fchomo.js:191 #: htdocs/luci-static/resources/fchomo/listeners.js:702 -#: htdocs/luci-static/resources/view/fchomo/node.js:1141 -#: htdocs/luci-static/resources/view/fchomo/node.js:1664 +#: htdocs/luci-static/resources/view/fchomo/node.js:1154 #: htdocs/luci-static/resources/view/fchomo/node.js:1677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:330 -#: htdocs/luci-static/resources/view/fchomo/node.js:1739 -#: htdocs/luci-static/resources/view/fchomo/node.js:2265 +#: htdocs/luci-static/resources/view/fchomo/node.js:1752 +#: htdocs/luci-static/resources/view/fchomo/node.js:2278 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:419 msgid "HTTP header" msgstr "" @@ -1436,7 +1441,7 @@ msgstr "" msgid "HTTP mask: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1716 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "HTTP request method" msgstr "" @@ -1455,9 +1460,9 @@ msgid "" "returned if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1665 #: htdocs/luci-static/resources/view/fchomo/node.js:1678 -#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1691 +#: htdocs/luci-static/resources/view/fchomo/node.js:1698 msgid "HTTPUpgrade" msgstr "" @@ -1478,7 +1483,7 @@ msgid "Handshake target that supports TLS 1.3" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:338 -#: htdocs/luci-static/resources/view/fchomo/node.js:1076 +#: htdocs/luci-static/resources/view/fchomo/node.js:1089 msgid "Handshake timeout" msgstr "" @@ -1486,41 +1491,41 @@ msgstr "" msgid "Header to read real client IP from (e.g. X-Forwarded-For)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Headscale/Tailscale" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:788 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 msgid "Health check" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1168 -#: htdocs/luci-static/resources/view/fchomo/node.js:2392 +#: htdocs/luci-static/resources/view/fchomo/node.js:2405 msgid "Health check URL" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1197 -#: htdocs/luci-static/resources/view/fchomo/node.js:2422 +#: htdocs/luci-static/resources/view/fchomo/node.js:2435 msgid "Health check expected status" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1177 -#: htdocs/luci-static/resources/view/fchomo/node.js:2402 +#: htdocs/luci-static/resources/view/fchomo/node.js:2415 msgid "Health check interval" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1184 -#: htdocs/luci-static/resources/view/fchomo/node.js:2409 +#: htdocs/luci-static/resources/view/fchomo/node.js:2422 msgid "Health check timeout" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1056 -#: htdocs/luci-static/resources/view/fchomo/node.js:2097 +#: htdocs/luci-static/resources/view/fchomo/node.js:2110 msgid "Health fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:670 -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:675 +#: htdocs/luci-static/resources/view/fchomo/node.js:756 msgid "Heartbeat interval" msgstr "" @@ -1529,15 +1534,15 @@ msgid "Hidden" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:715 -#: htdocs/luci-static/resources/view/fchomo/node.js:1146 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 msgid "Host that supports TLS 1.3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1045 +#: htdocs/luci-static/resources/view/fchomo/node.js:1042 msgid "Host-key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1040 +#: htdocs/luci-static/resources/view/fchomo/node.js:1037 msgid "Host-key algorithms" msgstr "" @@ -1545,7 +1550,7 @@ msgstr "" msgid "Host/SNI override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1318 +#: htdocs/luci-static/resources/view/fchomo/node.js:1331 msgid "" "Hostname that the client attempts to connect to at the start of the TLS " "handshake process." @@ -1579,22 +1584,23 @@ msgstr "" msgid "IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:627 +#: htdocs/luci-static/resources/view/fchomo/node.js:632 msgid "IP override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:893 +#: htdocs/luci-static/resources/view/fchomo/node.js:1048 +#: htdocs/luci-static/resources/view/fchomo/node.js:1056 msgid "IP stack" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1959 -#: htdocs/luci-static/resources/view/fchomo/node.js:2378 +#: htdocs/luci-static/resources/view/fchomo/node.js:1972 +#: htdocs/luci-static/resources/view/fchomo/node.js:2391 msgid "IP version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 -#: htdocs/luci-static/resources/view/fchomo/node.js:1583 +#: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1592 +#: htdocs/luci-static/resources/view/fchomo/node.js:1596 msgid "IPv4" msgstr "" @@ -1602,9 +1608,9 @@ msgstr "" msgid "IPv4 only" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 #: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1617 +#: htdocs/luci-static/resources/view/fchomo/node.js:1621 msgid "IPv6" msgstr "" @@ -1621,11 +1627,11 @@ msgstr "" msgid "Icon" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:600 +#: htdocs/luci-static/resources/view/fchomo/node.js:605 msgid "Idle session check interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:607 +#: htdocs/luci-static/resources/view/fchomo/node.js:612 msgid "Idle session timeout" msgstr "" @@ -1661,8 +1667,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1816 #: htdocs/luci-static/resources/view/fchomo/client.js:1851 #: htdocs/luci-static/resources/view/fchomo/client.js:1872 -#: htdocs/luci-static/resources/view/fchomo/node.js:1985 -#: htdocs/luci-static/resources/view/fchomo/node.js:2083 +#: htdocs/luci-static/resources/view/fchomo/node.js:1998 +#: htdocs/luci-static/resources/view/fchomo/node.js:2096 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:249 msgid "Import mihomo config" @@ -1676,10 +1682,10 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:466 #: htdocs/luci-static/resources/fchomo/listeners.js:472 -#: htdocs/luci-static/resources/view/fchomo/node.js:686 -#: htdocs/luci-static/resources/view/fchomo/node.js:692 -#: htdocs/luci-static/resources/view/fchomo/node.js:2330 -#: htdocs/luci-static/resources/view/fchomo/node.js:2336 +#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:697 +#: htdocs/luci-static/resources/view/fchomo/node.js:2343 +#: htdocs/luci-static/resources/view/fchomo/node.js:2349 msgid "In Mbps." msgstr "" @@ -1687,33 +1693,33 @@ msgstr "" msgid "In bps. 0 means no speed limit." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2173 +#: htdocs/luci-static/resources/view/fchomo/node.js:2186 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:392 msgid "In bytes. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:671 -#: htdocs/luci-static/resources/view/fchomo/node.js:678 -#: htdocs/luci-static/resources/view/fchomo/node.js:752 +#: htdocs/luci-static/resources/view/fchomo/node.js:676 +#: htdocs/luci-static/resources/view/fchomo/node.js:683 +#: htdocs/luci-static/resources/view/fchomo/node.js:757 msgid "In millisecond." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1185 #: htdocs/luci-static/resources/view/fchomo/client.js:1231 -#: htdocs/luci-static/resources/view/fchomo/node.js:2410 +#: htdocs/luci-static/resources/view/fchomo/node.js:2423 msgid "In millisecond. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1808 +#: htdocs/luci-static/resources/view/fchomo/node.js:1821 msgid "In milliseconds." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:339 #: htdocs/luci-static/resources/fchomo/listeners.js:458 #: htdocs/luci-static/resources/fchomo/listeners.js:648 -#: htdocs/luci-static/resources/view/fchomo/node.js:601 -#: htdocs/luci-static/resources/view/fchomo/node.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:1755 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 +#: htdocs/luci-static/resources/view/fchomo/node.js:613 +#: htdocs/luci-static/resources/view/fchomo/node.js:1768 msgid "In seconds." msgstr "" @@ -1721,21 +1727,21 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:446 #: htdocs/luci-static/resources/view/fchomo/global.js:451 #: htdocs/luci-static/resources/view/fchomo/global.js:536 -#: htdocs/luci-static/resources/view/fchomo/node.js:704 -#: htdocs/luci-static/resources/view/fchomo/node.js:2179 -#: htdocs/luci-static/resources/view/fchomo/node.js:2403 +#: htdocs/luci-static/resources/view/fchomo/node.js:709 +#: htdocs/luci-static/resources/view/fchomo/node.js:2192 +#: htdocs/luci-static/resources/view/fchomo/node.js:2416 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:398 msgid "In seconds. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1077 +#: htdocs/luci-static/resources/view/fchomo/node.js:1090 msgid "" "In seconds. After configuration, the handshake is not affected by the outer " "connection timeout." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1238 +#: htdocs/luci-static/resources/view/fchomo/node.js:1251 msgid "" "In the order of one Padding-Length and one Padding-" "Interval, infinite concatenation." @@ -1776,16 +1782,16 @@ msgid "Info" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:557 -#: htdocs/luci-static/resources/view/fchomo/node.js:758 +#: htdocs/luci-static/resources/view/fchomo/node.js:763 msgid "Initial congestion window size" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2112 +#: htdocs/luci-static/resources/view/fchomo/node.js:2125 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:288 msgid "Inline" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:818 +#: htdocs/luci-static/resources/view/fchomo/node.js:823 msgid "Insane" msgstr "" @@ -1798,14 +1804,14 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:692 #: htdocs/luci-static/resources/fchomo/listeners.js:1122 #: htdocs/luci-static/resources/fchomo/listeners.js:1238 -#: htdocs/luci-static/resources/view/fchomo/node.js:1116 -#: htdocs/luci-static/resources/view/fchomo/node.js:1126 -#: htdocs/luci-static/resources/view/fchomo/node.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1461 +#: htdocs/luci-static/resources/view/fchomo/node.js:1129 +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:1474 msgid "JLS" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:884 msgid "Join %s. Format: %s" msgstr "" @@ -1813,12 +1819,13 @@ msgstr "" #: htdocs/luci-static/resources/fchomo.js:60 #: htdocs/luci-static/resources/fchomo.js:174 #: htdocs/luci-static/resources/fchomo.js:381 -#: htdocs/luci-static/resources/view/fchomo/node.js:894 -#: htdocs/luci-static/resources/view/fchomo/node.js:2352 +#: htdocs/luci-static/resources/view/fchomo/node.js:1049 +#: htdocs/luci-static/resources/view/fchomo/node.js:1057 +#: htdocs/luci-static/resources/view/fchomo/node.js:2365 msgid "Keep default" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1857 msgid "Keep-alive period" msgstr "" @@ -1828,7 +1835,7 @@ msgid "Key" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1141 -#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1424 msgid "Key path" msgstr "" @@ -1848,14 +1855,14 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1822 #: htdocs/luci-static/resources/view/fchomo/client.js:1878 #: htdocs/luci-static/resources/view/fchomo/node.js:259 -#: htdocs/luci-static/resources/view/fchomo/node.js:2100 -#: htdocs/luci-static/resources/view/fchomo/node.js:2471 +#: htdocs/luci-static/resources/view/fchomo/node.js:2113 +#: htdocs/luci-static/resources/view/fchomo/node.js:2484 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:267 msgid "Label" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1191 -#: htdocs/luci-static/resources/view/fchomo/node.js:2416 +#: htdocs/luci-static/resources/view/fchomo/node.js:2429 msgid "Lazy" msgstr "" @@ -1883,7 +1890,7 @@ msgid "Less compatibility and sometimes better performance." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1064 -#: htdocs/luci-static/resources/view/fchomo/node.js:1324 +#: htdocs/luci-static/resources/view/fchomo/node.js:1337 msgid "List of supported application level protocols, in order of preference." msgstr "" @@ -1901,8 +1908,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:154 #: htdocs/luci-static/resources/view/fchomo/client.js:1471 -#: htdocs/luci-static/resources/view/fchomo/node.js:1507 -#: htdocs/luci-static/resources/view/fchomo/node.js:1537 +#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 msgid "Listen port" msgstr "" @@ -1918,7 +1925,7 @@ msgstr "" msgid "Load balance" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2110 +#: htdocs/luci-static/resources/view/fchomo/node.js:2123 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:286 msgid "Local" msgstr "" @@ -1939,7 +1946,7 @@ msgstr "" msgid "Log level" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:829 +#: htdocs/luci-static/resources/view/fchomo/node.js:834 msgid "Low Bandwidth Mode" msgstr "" @@ -1959,7 +1966,7 @@ msgid "Lowercase only" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:523 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1631 msgid "MTU" msgstr "" @@ -1999,12 +2006,12 @@ msgstr "" msgid "Match rule set." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1761 +#: htdocs/luci-static/resources/view/fchomo/node.js:1774 msgid "Max Early Data" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:451 -#: htdocs/luci-static/resources/view/fchomo/node.js:652 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "Max UDP relay packet size" msgstr "" @@ -2012,11 +2019,11 @@ msgstr "" msgid "Max buffered posts" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1819 +#: htdocs/luci-static/resources/view/fchomo/node.js:1832 msgid "Max concurrency" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1824 +#: htdocs/luci-static/resources/view/fchomo/node.js:1837 msgid "Max connections" msgstr "" @@ -2025,21 +2032,21 @@ msgid "Max count of failures" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:764 +#: htdocs/luci-static/resources/view/fchomo/node.js:769 msgid "Max datagram frame size" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:471 -#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "Max download speed" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1366 -#: htdocs/luci-static/resources/view/fchomo/node.js:1801 +#: htdocs/luci-static/resources/view/fchomo/node.js:1814 msgid "Max each POST bytes" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1070 +#: htdocs/luci-static/resources/view/fchomo/node.js:1083 msgid "Max open streams" msgstr "" @@ -2051,29 +2058,29 @@ msgstr "" msgid "Max realms per client IP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1834 +#: htdocs/luci-static/resources/view/fchomo/node.js:1847 msgid "Max request times" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 +#: htdocs/luci-static/resources/view/fchomo/node.js:1852 msgid "Max reusable seconds" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1829 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 msgid "Max reuse times" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:465 -#: htdocs/luci-static/resources/view/fchomo/node.js:685 +#: htdocs/luci-static/resources/view/fchomo/node.js:690 msgid "Max upload speed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1885 +#: htdocs/luci-static/resources/view/fchomo/node.js:1878 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Maximum connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1883 +#: htdocs/luci-static/resources/view/fchomo/node.js:1896 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -2091,7 +2098,7 @@ msgid "" "rate." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1882 +#: htdocs/luci-static/resources/view/fchomo/node.js:1895 msgid "Maximum streams" msgstr "" @@ -2112,15 +2119,15 @@ msgstr "" msgid "Mihomo server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:614 +#: htdocs/luci-static/resources/view/fchomo/node.js:619 msgid "Min of idle sessions to keep" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1807 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 msgid "Min posts interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1874 +#: htdocs/luci-static/resources/view/fchomo/node.js:1887 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "" @@ -2130,8 +2137,8 @@ msgstr "" msgid "Minimum padding rate" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1873 -#: htdocs/luci-static/resources/view/fchomo/node.js:1885 +#: htdocs/luci-static/resources/view/fchomo/node.js:1886 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Minimum streams" msgstr "" @@ -2149,7 +2156,7 @@ msgid "Mixed port" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1373 -#: htdocs/luci-static/resources/view/fchomo/node.js:1851 +#: htdocs/luci-static/resources/view/fchomo/node.js:1864 msgid "Multiplex" msgstr "" @@ -2171,7 +2178,7 @@ msgstr "" msgid "Name of the Proxy group as outbound." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2185 +#: htdocs/luci-static/resources/view/fchomo/node.js:2198 msgid "Name of the Proxy group to download provider." msgstr "" @@ -2183,7 +2190,7 @@ msgstr "" msgid "Name of the Sub rule used for inbound matching." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:636 +#: htdocs/luci-static/resources/view/fchomo/node.js:641 msgid "Native UDP" msgstr "" @@ -2191,7 +2198,7 @@ msgstr "" msgid "Native appearance" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1010 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Network" msgstr "" @@ -2199,7 +2206,7 @@ msgstr "" msgid "Network type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2354 +#: htdocs/luci-static/resources/view/fchomo/node.js:2367 msgid "No" msgstr "" @@ -2215,12 +2222,12 @@ msgstr "" msgid "No add'l params" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1791 +#: htdocs/luci-static/resources/view/fchomo/node.js:1804 msgid "No gRPC header" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1192 -#: htdocs/luci-static/resources/view/fchomo/node.js:2417 +#: htdocs/luci-static/resources/view/fchomo/node.js:2430 msgid "No testing is performed when this provider node is not in use." msgstr "" @@ -2238,17 +2245,17 @@ msgid "Node" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1254 -#: htdocs/luci-static/resources/view/fchomo/node.js:2437 +#: htdocs/luci-static/resources/view/fchomo/node.js:2450 msgid "Node exclude filter" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1259 -#: htdocs/luci-static/resources/view/fchomo/node.js:2444 +#: htdocs/luci-static/resources/view/fchomo/node.js:2457 msgid "Node exclude type" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1249 -#: htdocs/luci-static/resources/view/fchomo/node.js:2431 +#: htdocs/luci-static/resources/view/fchomo/node.js:2444 msgid "Node filter" msgstr "" @@ -2260,7 +2267,7 @@ msgstr "" msgid "None" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:814 +#: htdocs/luci-static/resources/view/fchomo/node.js:819 msgid "Normal" msgstr "" @@ -2281,29 +2288,29 @@ msgid "ON" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:701 -#: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1153 msgid "Obfs Mode" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:729 +#: htdocs/luci-static/resources/view/fchomo/node.js:734 msgid "Obfuscate maximum packet size" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:499 -#: htdocs/luci-static/resources/view/fchomo/node.js:724 +#: htdocs/luci-static/resources/view/fchomo/node.js:729 msgid "Obfuscate minimum packet size" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:491 -#: htdocs/luci-static/resources/view/fchomo/node.js:716 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 msgid "Obfuscate password" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:291 #: htdocs/luci-static/resources/fchomo/listeners.js:484 #: htdocs/luci-static/resources/view/fchomo/node.js:412 -#: htdocs/luci-static/resources/view/fchomo/node.js:709 +#: htdocs/luci-static/resources/view/fchomo/node.js:714 msgid "Obfuscate type" msgstr "" @@ -2343,7 +2350,7 @@ msgstr "" msgid "Option is deprecated. Please use %s instead." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2302 +#: htdocs/luci-static/resources/view/fchomo/node.js:2315 msgid "Other configuration items" msgstr "" @@ -2351,8 +2358,8 @@ msgstr "" msgid "Outbound" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1383 -#: htdocs/luci-static/resources/view/fchomo/node.js:2341 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 +#: htdocs/luci-static/resources/view/fchomo/node.js:2354 msgid "Override cert DNSName" msgstr "" @@ -2362,11 +2369,11 @@ msgid "Override destination" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1055 -#: htdocs/luci-static/resources/view/fchomo/node.js:2096 +#: htdocs/luci-static/resources/view/fchomo/node.js:2109 msgid "Override fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:628 +#: htdocs/luci-static/resources/view/fchomo/node.js:633 msgid "Override the IP address of the server that DNS response." msgstr "" @@ -2382,7 +2389,7 @@ msgstr "" msgid "Override the existing ECS in original request." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1438 +#: htdocs/luci-static/resources/view/fchomo/node.js:1451 msgid "Overrides the domain name used for HTTPS record queries." msgstr "" @@ -2390,11 +2397,11 @@ msgstr "" msgid "Overview" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1718 +#: htdocs/luci-static/resources/view/fchomo/node.js:1731 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1719 +#: htdocs/luci-static/resources/view/fchomo/node.js:1732 msgid "PUT" msgstr "" @@ -2402,7 +2409,7 @@ msgstr "" msgid "Packet encoding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1796 +#: htdocs/luci-static/resources/view/fchomo/node.js:1809 msgid "Padding bytes" msgstr "" @@ -2411,7 +2418,7 @@ msgid "Padding scheme" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:863 -#: htdocs/luci-static/resources/view/fchomo/node.js:1236 +#: htdocs/luci-static/resources/view/fchomo/node.js:1249 msgid "Paddings" msgstr "" @@ -2420,12 +2427,12 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:730 #: htdocs/luci-static/resources/view/fchomo/node.js:324 #: htdocs/luci-static/resources/view/fchomo/node.js:345 -#: htdocs/luci-static/resources/view/fchomo/node.js:1161 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 msgid "Password" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:581 -#: htdocs/luci-static/resources/view/fchomo/node.js:782 +#: htdocs/luci-static/resources/view/fchomo/node.js:787 msgid "Path MTU Discovery" msgstr "" @@ -2438,12 +2445,12 @@ msgid "Path in bundle: %s" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:803 -#: htdocs/luci-static/resources/view/fchomo/node.js:2160 +#: htdocs/luci-static/resources/view/fchomo/node.js:2173 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:373 msgid "Payload" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:923 +#: htdocs/luci-static/resources/view/fchomo/node.js:920 msgid "Peer public key" msgstr "" @@ -2453,15 +2460,15 @@ msgid "" "it is not needed." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:950 +#: htdocs/luci-static/resources/view/fchomo/node.js:947 msgid "Periodically sends data packets to maintain connection persistence." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:949 +#: htdocs/luci-static/resources/view/fchomo/node.js:946 msgid "Persistent keepalive" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:822 +#: htdocs/luci-static/resources/view/fchomo/node.js:827 msgid "Physical MTU" msgstr "" @@ -2482,8 +2489,8 @@ msgid "" "standards." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2133 -#: htdocs/luci-static/resources/view/fchomo/node.js:2159 +#: htdocs/luci-static/resources/view/fchomo/node.js:2146 +#: htdocs/luci-static/resources/view/fchomo/node.js:2172 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:346 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:372 msgid "" @@ -2497,13 +2504,13 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1545 #: htdocs/luci-static/resources/view/fchomo/client.js:1800 #: htdocs/luci-static/resources/view/fchomo/client.js:1852 -#: htdocs/luci-static/resources/view/fchomo/node.js:1986 +#: htdocs/luci-static/resources/view/fchomo/node.js:1999 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:155 msgid "Please type %s fields of mihomo config.
" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:667 -#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:1117 msgid "Plugin" msgstr "" @@ -2513,7 +2520,7 @@ msgid "Plugin fields" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:673 -#: htdocs/luci-static/resources/view/fchomo/node.js:1110 +#: htdocs/luci-static/resources/view/fchomo/node.js:1123 msgid "Plugin type" msgstr "" @@ -2525,7 +2532,7 @@ msgstr "" msgid "Port %s alrealy exists!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:703 +#: htdocs/luci-static/resources/view/fchomo/node.js:708 msgid "Port hop interval" msgstr "" @@ -2538,19 +2545,19 @@ msgid "Ports" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:154 -#: htdocs/luci-static/resources/view/fchomo/node.js:698 +#: htdocs/luci-static/resources/view/fchomo/node.js:703 msgid "Ports pool" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:377 #: htdocs/luci-static/resources/fchomo/listeners.js:516 #: htdocs/luci-static/resources/view/fchomo/node.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:930 +#: htdocs/luci-static/resources/view/fchomo/node.js:927 msgid "Pre-shared key" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1001 -#: htdocs/luci-static/resources/view/fchomo/node.js:1271 +#: htdocs/luci-static/resources/view/fchomo/node.js:1284 msgid "Pre-shared key of rendezvous server" msgstr "" @@ -2567,30 +2574,30 @@ msgid "" "Prevent ICMP loopback issues in some cases. Ping will not show real delay." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1507 -#: htdocs/luci-static/resources/view/fchomo/node.js:1508 +#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1521 msgid "Primary" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:760 #: htdocs/luci-static/resources/view/fchomo/global.js:777 -#: htdocs/luci-static/resources/view/fchomo/node.js:1947 -#: htdocs/luci-static/resources/view/fchomo/node.js:1954 -#: htdocs/luci-static/resources/view/fchomo/node.js:2366 -#: htdocs/luci-static/resources/view/fchomo/node.js:2373 +#: htdocs/luci-static/resources/view/fchomo/node.js:1960 +#: htdocs/luci-static/resources/view/fchomo/node.js:1967 +#: htdocs/luci-static/resources/view/fchomo/node.js:2379 +#: htdocs/luci-static/resources/view/fchomo/node.js:2386 msgid "Priority: Proxy Node > Global." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1031 +#: htdocs/luci-static/resources/view/fchomo/node.js:1028 msgid "Priv-key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1035 +#: htdocs/luci-static/resources/view/fchomo/node.js:1032 msgid "Priv-key passphrase" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:902 -#: htdocs/luci-static/resources/view/fchomo/node.js:995 +#: htdocs/luci-static/resources/view/fchomo/node.js:899 +#: htdocs/luci-static/resources/view/fchomo/node.js:992 msgid "Private key" msgstr "" @@ -2598,12 +2605,12 @@ msgstr "" msgid "Process matching mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2292 +#: htdocs/luci-static/resources/view/fchomo/node.js:2305 msgid "Programmable replacement" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:708 -#: htdocs/luci-static/resources/view/fchomo/node.js:1857 +#: htdocs/luci-static/resources/view/fchomo/node.js:1870 msgid "Protocol" msgstr "" @@ -2618,13 +2625,13 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1112 -#: htdocs/luci-static/resources/view/fchomo/node.js:1969 -#: htdocs/luci-static/resources/view/fchomo/node.js:1978 -#: htdocs/luci-static/resources/view/fchomo/node.js:2482 +#: htdocs/luci-static/resources/view/fchomo/node.js:1982 +#: htdocs/luci-static/resources/view/fchomo/node.js:1991 +#: htdocs/luci-static/resources/view/fchomo/node.js:2495 msgid "Provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2166 +#: htdocs/luci-static/resources/view/fchomo/node.js:2179 msgid "Provider URL" msgstr "" @@ -2647,19 +2654,19 @@ msgid "Proxy MAC-s" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:222 -#: htdocs/luci-static/resources/view/fchomo/node.js:2481 +#: htdocs/luci-static/resources/view/fchomo/node.js:2494 msgid "Proxy Node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2457 -#: htdocs/luci-static/resources/view/fchomo/node.js:2466 +#: htdocs/luci-static/resources/view/fchomo/node.js:2470 +#: htdocs/luci-static/resources/view/fchomo/node.js:2479 msgid "Proxy chain" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:614 #: htdocs/luci-static/resources/view/fchomo/client.js:813 #: htdocs/luci-static/resources/view/fchomo/client.js:1643 -#: htdocs/luci-static/resources/view/fchomo/node.js:2184 +#: htdocs/luci-static/resources/view/fchomo/node.js:2197 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:403 msgid "Proxy group" msgstr "" @@ -2676,22 +2683,22 @@ msgstr "" msgid "Proxy routerself" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:919 +#: htdocs/luci-static/resources/view/fchomo/node.js:916 msgid "Public key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:637 -#: htdocs/luci-static/resources/view/fchomo/node.js:793 +#: htdocs/luci-static/resources/view/fchomo/node.js:642 +#: htdocs/luci-static/resources/view/fchomo/node.js:798 msgid "QUIC" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:552 -#: htdocs/luci-static/resources/view/fchomo/node.js:746 +#: htdocs/luci-static/resources/view/fchomo/node.js:751 msgid "QUIC based 0-RTT" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:546 -#: htdocs/luci-static/resources/view/fchomo/node.js:735 +#: htdocs/luci-static/resources/view/fchomo/node.js:740 msgid "QUIC versions" msgstr "" @@ -2702,11 +2709,11 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1123 #: htdocs/luci-static/resources/fchomo/listeners.js:1229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1452 +#: htdocs/luci-static/resources/view/fchomo/node.js:1465 msgid "REALITY" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1478 +#: htdocs/luci-static/resources/view/fchomo/node.js:1491 msgid "REALITY X25519MLKEM768 PQC support" msgstr "" @@ -2723,12 +2730,12 @@ msgid "REALITY private key" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1468 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "REALITY public key" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1271 -#: htdocs/luci-static/resources/view/fchomo/node.js:1473 +#: htdocs/luci-static/resources/view/fchomo/node.js:1486 msgid "REALITY short ID" msgstr "" @@ -2740,7 +2747,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:834 #: htdocs/luci-static/resources/fchomo/listeners.js:853 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 +#: htdocs/luci-static/resources/view/fchomo/node.js:1239 msgid "RTT" msgstr "" @@ -2757,12 +2764,12 @@ msgid "Randomized traffic characteristics" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:990 -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1273 msgid "Realm" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1006 -#: htdocs/luci-static/resources/view/fchomo/node.js:1276 +#: htdocs/luci-static/resources/view/fchomo/node.js:1289 msgid "Realm ID" msgstr "" @@ -2786,7 +2793,7 @@ msgstr "" msgid "Redirect TCP + Tun UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:830 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 msgid "Reduces background traffic and network configuration refresh frequency." msgstr "" @@ -2813,20 +2820,20 @@ msgstr "" msgid "Rematching routing rules" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2111 +#: htdocs/luci-static/resources/view/fchomo/node.js:2124 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:287 msgid "Remote" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1645 +#: htdocs/luci-static/resources/view/fchomo/node.js:1658 msgid "Remote DNS resolve" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:813 +#: htdocs/luci-static/resources/view/fchomo/node.js:818 msgid "Remote trace level" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:806 +#: htdocs/luci-static/resources/view/fchomo/node.js:811 msgid "Remote trace target" msgstr "" @@ -2837,23 +2844,23 @@ msgstr "" #: htdocs/luci-static/resources/fchomo.js:1741 #: htdocs/luci-static/resources/view/fchomo/node.js:241 #: htdocs/luci-static/resources/view/fchomo/node.js:243 -#: htdocs/luci-static/resources/view/fchomo/node.js:2087 -#: htdocs/luci-static/resources/view/fchomo/node.js:2089 +#: htdocs/luci-static/resources/view/fchomo/node.js:2100 +#: htdocs/luci-static/resources/view/fchomo/node.js:2102 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "Remove idles" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:995 -#: htdocs/luci-static/resources/view/fchomo/node.js:1265 +#: htdocs/luci-static/resources/view/fchomo/node.js:1278 msgid "Rendezvous server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2283 +#: htdocs/luci-static/resources/view/fchomo/node.js:2296 msgid "Replace name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2284 +#: htdocs/luci-static/resources/view/fchomo/node.js:2297 msgid "Replace node name." msgstr "" @@ -2862,12 +2869,12 @@ msgid "Request" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1329 -#: htdocs/luci-static/resources/view/fchomo/node.js:1725 -#: htdocs/luci-static/resources/view/fchomo/node.js:1732 +#: htdocs/luci-static/resources/view/fchomo/node.js:1738 +#: htdocs/luci-static/resources/view/fchomo/node.js:1745 msgid "Request path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:677 +#: htdocs/luci-static/resources/view/fchomo/node.js:682 msgid "Request timeout" msgstr "" @@ -2880,11 +2887,11 @@ msgid "Require any" msgstr "" #: htdocs/luci-static/resources/fchomo.js:408 -#: htdocs/luci-static/resources/view/fchomo/node.js:1479 +#: htdocs/luci-static/resources/view/fchomo/node.js:1492 msgid "Requires server support." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:944 +#: htdocs/luci-static/resources/view/fchomo/node.js:941 msgid "Reserved field bytes" msgstr "" @@ -2897,15 +2904,15 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:691 #: htdocs/luci-static/resources/fchomo/listeners.js:1121 #: htdocs/luci-static/resources/fchomo/listeners.js:1237 -#: htdocs/luci-static/resources/view/fchomo/node.js:1115 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1460 +#: htdocs/luci-static/resources/view/fchomo/node.js:1128 +#: htdocs/luci-static/resources/view/fchomo/node.js:1138 +#: htdocs/luci-static/resources/view/fchomo/node.js:1143 +#: htdocs/luci-static/resources/view/fchomo/node.js:1473 msgid "Restls" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:745 -#: htdocs/luci-static/resources/view/fchomo/node.js:1184 +#: htdocs/luci-static/resources/view/fchomo/node.js:1197 msgid "Restls script" msgstr "" @@ -2943,8 +2950,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:597 #: htdocs/luci-static/resources/view/fchomo/global.js:776 -#: htdocs/luci-static/resources/view/fchomo/node.js:1953 -#: htdocs/luci-static/resources/view/fchomo/node.js:2372 +#: htdocs/luci-static/resources/view/fchomo/node.js:1966 +#: htdocs/luci-static/resources/view/fchomo/node.js:2385 msgid "Routing mark (Fwmark)" msgstr "" @@ -2992,7 +2999,7 @@ msgstr "" msgid "Rule set URL" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 msgid "Rules" msgstr "" @@ -3029,7 +3036,7 @@ msgid "STUN" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1012 -#: htdocs/luci-static/resources/view/fchomo/node.js:1282 +#: htdocs/luci-static/resources/view/fchomo/node.js:1295 msgid "STUN servers" msgstr "" @@ -3037,12 +3044,12 @@ msgstr "" msgid "SUB-RULE" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1096 +#: htdocs/luci-static/resources/view/fchomo/node.js:1109 msgid "SUoT version" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:486 -#: htdocs/luci-static/resources/view/fchomo/node.js:711 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Salamander" msgstr "" @@ -3059,8 +3066,8 @@ msgstr "" msgid "Save" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1537 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 +#: htdocs/luci-static/resources/view/fchomo/node.js:1551 msgid "Secondary" msgstr "" @@ -3102,11 +3109,15 @@ msgid "Server address" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1323 -#: htdocs/luci-static/resources/view/fchomo/node.js:1704 -#: htdocs/luci-static/resources/view/fchomo/node.js:1710 +#: htdocs/luci-static/resources/view/fchomo/node.js:1717 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 msgid "Server hostname" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1000 +msgid "Server public key" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/global.js:184 msgid "Server status" msgstr "" @@ -3125,10 +3136,10 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:690 #: htdocs/luci-static/resources/fchomo/listeners.js:1120 #: htdocs/luci-static/resources/fchomo/listeners.js:1236 -#: htdocs/luci-static/resources/view/fchomo/node.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1129 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1127 +#: htdocs/luci-static/resources/view/fchomo/node.js:1137 +#: htdocs/luci-static/resources/view/fchomo/node.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1472 msgid "ShadowTLS" msgstr "" @@ -3152,7 +3163,7 @@ msgstr "" msgid "Shadowsocks password" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1905 +#: htdocs/luci-static/resources/view/fchomo/node.js:1918 msgid "Show connections in the dashboard for breaking connections easier." msgstr "" @@ -3164,14 +3175,14 @@ msgstr "" msgid "Simple round-robin all nodes" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2172 +#: htdocs/luci-static/resources/view/fchomo/node.js:2185 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:391 msgid "Size limit" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1679 -#: htdocs/luci-static/resources/view/fchomo/node.js:1389 -#: htdocs/luci-static/resources/view/fchomo/node.js:2347 +#: htdocs/luci-static/resources/view/fchomo/node.js:1402 +#: htdocs/luci-static/resources/view/fchomo/node.js:2360 msgid "Skip cert verify" msgstr "" @@ -3237,7 +3248,7 @@ msgid "Strategy" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:569 -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:775 msgid "Stream-level receive window size" msgstr "" @@ -3269,7 +3280,7 @@ msgstr "" msgid "Sudoku" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:741 msgid "Support %s, default %s." msgstr "" @@ -3312,7 +3323,7 @@ msgstr "" msgid "TCP concurrency" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1898 +#: htdocs/luci-static/resources/view/fchomo/node.js:1911 msgid "TCP only" msgstr "" @@ -3339,8 +3350,8 @@ msgstr "" msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1929 -#: htdocs/luci-static/resources/view/fchomo/node.js:2308 +#: htdocs/luci-static/resources/view/fchomo/node.js:1942 +#: htdocs/luci-static/resources/view/fchomo/node.js:2321 msgid "TFO" msgstr "" @@ -3348,17 +3359,17 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1022 #: htdocs/luci-static/resources/view/fchomo/global.js:550 #: htdocs/luci-static/resources/view/fchomo/node.js:469 -#: htdocs/luci-static/resources/view/fchomo/node.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1292 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 +#: htdocs/luci-static/resources/view/fchomo/node.js:1305 msgid "TLS" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1063 -#: htdocs/luci-static/resources/view/fchomo/node.js:1323 +#: htdocs/luci-static/resources/view/fchomo/node.js:1336 msgid "TLS ALPN" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1317 +#: htdocs/luci-static/resources/view/fchomo/node.js:1330 msgid "TLS SNI" msgstr "" @@ -3377,7 +3388,7 @@ msgid "TURN" msgstr "" #: htdocs/luci-static/resources/fchomo.js:209 -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "Tailscale" msgstr "" @@ -3390,28 +3401,28 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1578 #: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1591 #: htdocs/luci-static/resources/view/fchomo/node.js:1595 -#: htdocs/luci-static/resources/view/fchomo/node.js:1603 -#: htdocs/luci-static/resources/view/fchomo/node.js:1607 +#: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1616 +#: htdocs/luci-static/resources/view/fchomo/node.js:1620 msgid "The %s address used by local machine in the %s network." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1412 +#: htdocs/luci-static/resources/view/fchomo/node.js:1425 msgid "The %s private key, in PEM format." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1112 #: htdocs/luci-static/resources/fchomo/listeners.js:1165 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1398 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 msgid "The %s public key, in PEM format." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1432 +#: htdocs/luci-static/resources/view/fchomo/node.js:1445 msgid "" "The ECH parameter of the HTTPS record for the domain. Leave empty to resolve " "via DNS." @@ -3429,14 +3440,14 @@ msgstr "" msgid "The default value is 2:00 every day." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1078 +#: htdocs/luci-static/resources/view/fchomo/node.js:1091 msgid "" "The default value is %s, indicating that only the outer " "connection timeout is used." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:866 -#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1252 msgid "" "The first padding must have a probability of 100% and at least 35 bytes." msgstr "" @@ -3456,7 +3467,7 @@ msgid "The proxy used to connect to the handshake target." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:864 -#: htdocs/luci-static/resources/view/fchomo/node.js:1237 +#: htdocs/luci-static/resources/view/fchomo/node.js:1250 msgid "The server and client can set different padding parameters." msgstr "" @@ -3466,14 +3477,14 @@ msgid "This ECH parameter needs to be added to the HTTPS record of the domain." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1682 -#: htdocs/luci-static/resources/view/fchomo/node.js:1392 -#: htdocs/luci-static/resources/view/fchomo/node.js:2350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1405 +#: htdocs/luci-static/resources/view/fchomo/node.js:2363 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:642 +#: htdocs/luci-static/resources/view/fchomo/node.js:647 msgid "" "This is the TUIC port of the SUoT protocol, designed to provide a QUIC " "stream based UDP relay mode that TUIC does not provide." @@ -3507,18 +3518,18 @@ msgstr "" msgid "Traffic pattern" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2519 +#: htdocs/luci-static/resources/view/fchomo/node.js:2532 msgid "Transit proxy group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2530 +#: htdocs/luci-static/resources/view/fchomo/node.js:2543 msgid "Transit proxy node" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:194 #: htdocs/luci-static/resources/fchomo/listeners.js:1287 #: htdocs/luci-static/resources/view/fchomo/node.js:360 -#: htdocs/luci-static/resources/view/fchomo/node.js:1657 +#: htdocs/luci-static/resources/view/fchomo/node.js:1670 msgid "Transport" msgstr "" @@ -3528,7 +3539,7 @@ msgid "Transport fields" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1662 +#: htdocs/luci-static/resources/view/fchomo/node.js:1675 msgid "Transport type" msgstr "" @@ -3570,7 +3581,7 @@ msgstr "" msgid "Tunnel" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:844 +#: htdocs/luci-static/resources/view/fchomo/node.js:849 msgid "Turns TCP relay off." msgstr "" @@ -3581,8 +3592,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:875 #: htdocs/luci-static/resources/view/fchomo/client.js:1073 #: htdocs/luci-static/resources/view/fchomo/node.js:268 -#: htdocs/luci-static/resources/view/fchomo/node.js:2109 -#: htdocs/luci-static/resources/view/fchomo/node.js:2480 +#: htdocs/luci-static/resources/view/fchomo/node.js:2122 +#: htdocs/luci-static/resources/view/fchomo/node.js:2493 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:285 msgid "Type" msgstr "" @@ -3601,8 +3612,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:661 #: htdocs/luci-static/resources/view/fchomo/client.js:617 #: htdocs/luci-static/resources/view/fchomo/client.js:709 -#: htdocs/luci-static/resources/view/fchomo/node.js:1084 -#: htdocs/luci-static/resources/view/fchomo/node.js:2318 +#: htdocs/luci-static/resources/view/fchomo/node.js:1097 +#: htdocs/luci-static/resources/view/fchomo/node.js:2331 msgid "UDP" msgstr "" @@ -3610,20 +3621,20 @@ msgstr "" msgid "UDP NAT expiration time" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:641 -#: htdocs/luci-static/resources/view/fchomo/node.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:646 +#: htdocs/luci-static/resources/view/fchomo/node.js:746 msgid "UDP over stream" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:647 +#: htdocs/luci-static/resources/view/fchomo/node.js:652 msgid "UDP over stream version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:634 +#: htdocs/luci-static/resources/view/fchomo/node.js:639 msgid "UDP packet relay mode." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:638 msgid "UDP relay mode" msgstr "" @@ -3642,7 +3653,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:395 #: htdocs/luci-static/resources/fchomo/listeners.js:445 #: htdocs/luci-static/resources/view/fchomo/node.js:527 -#: htdocs/luci-static/resources/view/fchomo/node.js:621 +#: htdocs/luci-static/resources/view/fchomo/node.js:626 msgid "UUID" msgstr "" @@ -3671,8 +3682,8 @@ msgstr "" msgid "Unknown error: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1090 -#: htdocs/luci-static/resources/view/fchomo/node.js:2323 +#: htdocs/luci-static/resources/view/fchomo/node.js:1103 +#: htdocs/luci-static/resources/view/fchomo/node.js:2336 msgid "UoT" msgstr "" @@ -3680,24 +3691,24 @@ msgstr "" msgid "Update failed." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2178 +#: htdocs/luci-static/resources/view/fchomo/node.js:2191 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:397 msgid "Update interval" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1389 -#: htdocs/luci-static/resources/view/fchomo/node.js:1916 +#: htdocs/luci-static/resources/view/fchomo/node.js:1929 msgid "Upload bandwidth" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1390 -#: htdocs/luci-static/resources/view/fchomo/node.js:1917 +#: htdocs/luci-static/resources/view/fchomo/node.js:1930 msgid "Upload bandwidth in Mbps." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1133 #: htdocs/luci-static/resources/fchomo/listeners.js:1173 -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 msgid "Upload certificate" msgstr "" @@ -3706,7 +3717,7 @@ msgid "Upload initial package" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1148 -#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1430 msgid "Upload key" msgstr "" @@ -3714,12 +3725,12 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1151 #: htdocs/luci-static/resources/fchomo/listeners.js:1176 #: htdocs/luci-static/resources/view/fchomo/global.js:306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1406 -#: htdocs/luci-static/resources/view/fchomo/node.js:1420 +#: htdocs/luci-static/resources/view/fchomo/node.js:1419 +#: htdocs/luci-static/resources/view/fchomo/node.js:1433 msgid "Upload..." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:841 msgid "Use protocol-13 extended encryption for outgoing HELLO packets." msgstr "" @@ -3729,7 +3740,7 @@ msgstr "" msgid "Use sub rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:855 +#: htdocs/luci-static/resources/view/fchomo/node.js:860 msgid "Used to replace the built-in official %s." msgstr "" @@ -3753,8 +3764,8 @@ msgstr "" msgid "Used to resolve the domain of the Proxy node." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1384 -#: htdocs/luci-static/resources/view/fchomo/node.js:2342 +#: htdocs/luci-static/resources/view/fchomo/node.js:1397 +#: htdocs/luci-static/resources/view/fchomo/node.js:2355 msgid "Used to verify the hostname on the returned certificates." msgstr "" @@ -3769,7 +3780,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:162 #: htdocs/luci-static/resources/fchomo/listeners.js:723 #: htdocs/luci-static/resources/view/fchomo/node.js:319 -#: htdocs/luci-static/resources/view/fchomo/node.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1167 msgid "Username" msgstr "" @@ -3777,19 +3788,19 @@ msgstr "" msgid "Users filter mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:843 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Uses TCP relay only." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:842 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 msgid "Uses relay after UDP direct failure." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1773 +#: htdocs/luci-static/resources/view/fchomo/node.js:1786 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1778 +#: htdocs/luci-static/resources/view/fchomo/node.js:1791 msgid "V2ray HTTPUpgrade fast open" msgstr "" @@ -3803,8 +3814,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 +#: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1608 msgid "VPN" msgstr "" @@ -3812,17 +3823,17 @@ msgstr "" msgid "VPN fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:886 +#: htdocs/luci-static/resources/view/fchomo/node.js:891 msgid "Valid 16-digit Moon World ID and 10-digit Node ID of Moon Root server." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2115 -#: htdocs/luci-static/resources/view/fchomo/node.js:2486 +#: htdocs/luci-static/resources/view/fchomo/node.js:2128 +#: htdocs/luci-static/resources/view/fchomo/node.js:2499 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:328 msgid "Value" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:815 +#: htdocs/luci-static/resources/view/fchomo/node.js:820 msgid "Verbose" msgstr "" @@ -3833,19 +3844,19 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:384 #: htdocs/luci-static/resources/fchomo/listeners.js:737 #: htdocs/luci-static/resources/view/fchomo/node.js:511 -#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1181 msgid "Version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1176 +#: htdocs/luci-static/resources/view/fchomo/node.js:1189 msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1594 +#: htdocs/luci-static/resources/view/fchomo/node.js:1607 msgid "Virtual IPv6 address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1568 +#: htdocs/luci-static/resources/view/fchomo/node.js:1581 msgid "Virtual address" msgstr "" @@ -3868,10 +3879,10 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1312 #: htdocs/luci-static/resources/view/fchomo/node.js:465 #: htdocs/luci-static/resources/view/fchomo/node.js:494 -#: htdocs/luci-static/resources/view/fchomo/node.js:1667 #: htdocs/luci-static/resources/view/fchomo/node.js:1680 -#: htdocs/luci-static/resources/view/fchomo/node.js:1687 #: htdocs/luci-static/resources/view/fchomo/node.js:1693 +#: htdocs/luci-static/resources/view/fchomo/node.js:1700 +#: htdocs/luci-static/resources/view/fchomo/node.js:1706 msgid "WebSocket" msgstr "" @@ -3879,7 +3890,7 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:978 +#: htdocs/luci-static/resources/view/fchomo/node.js:975 msgid "Whether to accept routes advertised by other nodes." msgstr "" @@ -3891,45 +3902,45 @@ msgstr "" msgid "WireGuard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:924 +#: htdocs/luci-static/resources/view/fchomo/node.js:921 msgid "WireGuard peer public key." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:931 +#: htdocs/luci-static/resources/view/fchomo/node.js:928 msgid "WireGuard pre-shared key." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:900 msgid "WireGuard requires base64-encoded private keys." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 +#: htdocs/luci-static/resources/view/fchomo/node.js:1592 +#: htdocs/luci-static/resources/view/fchomo/node.js:1617 msgid "Wireguard" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1295 #: htdocs/luci-static/resources/fchomo/listeners.js:1306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1668 -#: htdocs/luci-static/resources/view/fchomo/node.js:1688 +#: htdocs/luci-static/resources/view/fchomo/node.js:1681 +#: htdocs/luci-static/resources/view/fchomo/node.js:1701 msgid "XHTTP" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1342 -#: htdocs/luci-static/resources/view/fchomo/node.js:1783 +#: htdocs/luci-static/resources/view/fchomo/node.js:1796 msgid "XHTTP mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1814 +#: htdocs/luci-static/resources/view/fchomo/node.js:1827 msgid "XMUX" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1819 -#: htdocs/luci-static/resources/view/fchomo/node.js:1824 -#: htdocs/luci-static/resources/view/fchomo/node.js:1829 -#: htdocs/luci-static/resources/view/fchomo/node.js:1834 -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1832 +#: htdocs/luci-static/resources/view/fchomo/node.js:1837 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 +#: htdocs/luci-static/resources/view/fchomo/node.js:1847 +#: htdocs/luci-static/resources/view/fchomo/node.js:1852 +#: htdocs/luci-static/resources/view/fchomo/node.js:1857 msgid "XMUX:" msgstr "" @@ -3945,7 +3956,7 @@ msgstr "" msgid "Yaml text" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2353 +#: htdocs/luci-static/resources/view/fchomo/node.js:2366 msgid "Yes" msgstr "" @@ -3961,7 +3972,7 @@ msgstr "" msgid "ZeroTier" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:823 +#: htdocs/luci-static/resources/view/fchomo/node.js:828 msgid "ZeroTier UDP payload MTU." msgstr "" @@ -3981,11 +3992,11 @@ msgstr "" msgid "aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2200 +#: htdocs/luci-static/resources/view/fchomo/node.js:2213 msgid "age private key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2261 +#: htdocs/luci-static/resources/view/fchomo/node.js:2274 msgid "age public key" msgstr "" @@ -4002,12 +4013,17 @@ msgid "auto" msgstr "" #: htdocs/luci-static/resources/fchomo.js:56 +#: htdocs/luci-static/resources/view/fchomo/node.js:1060 msgid "bbr" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1061 +msgid "bbr3" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:1138 #: htdocs/luci-static/resources/fchomo/listeners.js:1178 -#: htdocs/luci-static/resources/view/fchomo/node.js:1408 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "certificate" msgstr "" @@ -4022,6 +4038,7 @@ msgid "chacha20-poly1305" msgstr "" #: htdocs/luci-static/resources/fchomo.js:54 +#: htdocs/luci-static/resources/view/fchomo/node.js:1058 msgid "cubic" msgstr "" @@ -4034,13 +4051,13 @@ msgstr "" msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2335 +#: htdocs/luci-static/resources/view/fchomo/node.js:2348 msgid "down" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:812 -#: htdocs/luci-static/resources/view/fchomo/node.js:1191 -#: htdocs/luci-static/resources/view/fchomo/node.js:1214 +#: htdocs/luci-static/resources/view/fchomo/node.js:1204 +#: htdocs/luci-static/resources/view/fchomo/node.js:1227 msgid "encryption" msgstr "" @@ -4052,44 +4069,44 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1293 #: htdocs/luci-static/resources/fchomo/listeners.js:1304 #: htdocs/luci-static/resources/fchomo/listeners.js:1311 -#: htdocs/luci-static/resources/view/fchomo/node.js:1666 #: htdocs/luci-static/resources/view/fchomo/node.js:1679 -#: htdocs/luci-static/resources/view/fchomo/node.js:1686 #: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1699 +#: htdocs/luci-static/resources/view/fchomo/node.js:1705 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1749 +#: htdocs/luci-static/resources/view/fchomo/node.js:1762 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1754 +#: htdocs/luci-static/resources/view/fchomo/node.js:1767 msgid "gRPC ping interval" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1336 -#: htdocs/luci-static/resources/view/fchomo/node.js:1745 +#: htdocs/luci-static/resources/view/fchomo/node.js:1758 msgid "gRPC service name" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:517 -#: htdocs/luci-static/resources/view/fchomo/node.js:896 +#: htdocs/luci-static/resources/view/fchomo/node.js:1051 msgid "gVisor" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1014 +#: htdocs/luci-static/resources/view/fchomo/node.js:1011 msgid "h2" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1861 +#: htdocs/luci-static/resources/view/fchomo/node.js:1874 msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1012 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "h3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1013 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "h3-l4proxy" msgstr "" @@ -4101,7 +4118,7 @@ msgstr "" msgid "metacubexd" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:897 +#: htdocs/luci-static/resources/view/fchomo/node.js:1052 msgid "mihomo IP stack (MIPS)" msgstr "" @@ -4111,7 +4128,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1580 #: htdocs/luci-static/resources/view/fchomo/client.js:1814 #: htdocs/luci-static/resources/view/fchomo/client.js:1870 -#: htdocs/luci-static/resources/view/fchomo/node.js:2081 +#: htdocs/luci-static/resources/view/fchomo/node.js:2094 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:247 msgid "mihomo config" msgstr "" @@ -4120,8 +4137,8 @@ msgstr "" msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1934 -#: htdocs/luci-static/resources/view/fchomo/node.js:2313 +#: htdocs/luci-static/resources/view/fchomo/node.js:1947 +#: htdocs/luci-static/resources/view/fchomo/node.js:2326 msgid "mpTCP" msgstr "" @@ -4165,8 +4182,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:674 #: htdocs/luci-static/resources/fchomo/listeners.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1111 -#: htdocs/luci-static/resources/view/fchomo/node.js:1123 +#: htdocs/luci-static/resources/view/fchomo/node.js:1124 +#: htdocs/luci-static/resources/view/fchomo/node.js:1136 msgid "obfs-simple" msgstr "" @@ -4178,11 +4195,11 @@ msgstr "" msgid "only applies when %s is not %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2294 +#: htdocs/luci-static/resources/view/fchomo/node.js:2307 msgid "override.override-expr" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2286 +#: htdocs/luci-static/resources/view/fchomo/node.js:2299 msgid "override.proxy-name" msgstr "" @@ -4191,7 +4208,7 @@ msgid "packet addr (v2ray-core v5+)" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1346 -#: htdocs/luci-static/resources/view/fchomo/node.js:1787 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 msgid "packet-up" msgstr "" @@ -4201,7 +4218,7 @@ msgid "poll" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1153 -#: htdocs/luci-static/resources/view/fchomo/node.js:1422 +#: htdocs/luci-static/resources/view/fchomo/node.js:1435 msgid "private key" msgstr "" @@ -4209,6 +4226,10 @@ msgstr "" msgid "razord-meta" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1059 +msgid "reno" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/client.js:1267 #: htdocs/luci-static/resources/view/fchomo/client.js:1273 msgid "requires front-end adaptation using the API." @@ -4218,7 +4239,7 @@ msgstr "" msgid "rule-set" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1859 +#: htdocs/luci-static/resources/view/fchomo/node.js:1872 msgid "smux" msgstr "" @@ -4232,12 +4253,12 @@ msgid "src" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1344 -#: htdocs/luci-static/resources/view/fchomo/node.js:1785 +#: htdocs/luci-static/resources/view/fchomo/node.js:1798 msgid "stream-one" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1345 -#: htdocs/luci-static/resources/view/fchomo/node.js:1786 +#: htdocs/luci-static/resources/view/fchomo/node.js:1799 msgid "stream-up" msgstr "" @@ -4253,11 +4274,11 @@ msgstr "" msgid "sudoku-keypair" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1178 +#: htdocs/luci-static/resources/view/fchomo/node.js:1191 msgid "tls12" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1179 +#: htdocs/luci-static/resources/view/fchomo/node.js:1192 msgid "tls13" msgstr "" @@ -4277,31 +4298,31 @@ msgstr "" msgid "unique value" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2329 +#: htdocs/luci-static/resources/view/fchomo/node.js:2342 msgid "up" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:385 #: htdocs/luci-static/resources/fchomo/listeners.js:738 #: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:648 -#: htdocs/luci-static/resources/view/fchomo/node.js:1097 -#: htdocs/luci-static/resources/view/fchomo/node.js:1169 +#: htdocs/luci-static/resources/view/fchomo/node.js:653 +#: htdocs/luci-static/resources/view/fchomo/node.js:1110 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "v1" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:386 #: htdocs/luci-static/resources/fchomo/listeners.js:739 #: htdocs/luci-static/resources/view/fchomo/node.js:513 -#: htdocs/luci-static/resources/view/fchomo/node.js:1098 -#: htdocs/luci-static/resources/view/fchomo/node.js:1170 +#: htdocs/luci-static/resources/view/fchomo/node.js:1111 +#: htdocs/luci-static/resources/view/fchomo/node.js:1183 msgid "v2" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:387 #: htdocs/luci-static/resources/fchomo/listeners.js:740 #: htdocs/luci-static/resources/view/fchomo/node.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:1171 +#: htdocs/luci-static/resources/view/fchomo/node.js:1184 msgid "v3" msgstr "" @@ -4320,7 +4341,7 @@ msgstr "" msgid "valid JSON format" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 +#: htdocs/luci-static/resources/view/fchomo/node.js:1389 msgid "valid SHA256 string with %d characters" msgstr "" @@ -4370,7 +4391,7 @@ msgstr "" msgid "yacd-meta" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1860 +#: htdocs/luci-static/resources/view/fchomo/node.js:1873 msgid "yamux" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po index a1edc995..1d7f46b9 100644 --- a/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -8,12 +8,12 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "%s Hostname" msgstr "%s 主机名称" -#: htdocs/luci-static/resources/view/fchomo/node.js:1508 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1521 +#: htdocs/luci-static/resources/view/fchomo/node.js:1551 msgid "%s UDP port. 0 selects an available port." msgstr "%s UDP 端口。0 自动选择一个可用端口。" @@ -21,7 +21,7 @@ msgstr "%s UDP 端口。0 自动选择一个可用端口。" msgid "%s log" msgstr "%s 日志" -#: htdocs/luci-static/resources/view/fchomo/node.js:807 +#: htdocs/luci-static/resources/view/fchomo/node.js:812 msgid "%s of the %s used to receiving remote debugging log." msgstr "%s,用于接收远程调试日志的 %s 的。" @@ -45,10 +45,10 @@ msgstr "(已导入)" #: htdocs/luci-static/resources/fchomo/listeners.js:1173 #: htdocs/luci-static/resources/view/fchomo/global.js:564 #: htdocs/luci-static/resources/view/fchomo/global.js:570 -#: htdocs/luci-static/resources/view/fchomo/node.js:1397 -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 -#: htdocs/luci-static/resources/view/fchomo/node.js:1411 -#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1410 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1424 +#: htdocs/luci-static/resources/view/fchomo/node.js:1430 msgid "(mTLS)" msgstr "" @@ -75,10 +75,10 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1117 #: htdocs/luci-static/resources/view/fchomo/client.js:1373 #: htdocs/luci-static/resources/view/fchomo/node.js:302 -#: htdocs/luci-static/resources/view/fchomo/node.js:2492 -#: htdocs/luci-static/resources/view/fchomo/node.js:2503 -#: htdocs/luci-static/resources/view/fchomo/node.js:2522 -#: htdocs/luci-static/resources/view/fchomo/node.js:2533 +#: htdocs/luci-static/resources/view/fchomo/node.js:2505 +#: htdocs/luci-static/resources/view/fchomo/node.js:2516 +#: htdocs/luci-static/resources/view/fchomo/node.js:2535 +#: htdocs/luci-static/resources/view/fchomo/node.js:2546 msgid "-- Please choose --" msgstr "-- 请选择 --" @@ -119,7 +119,7 @@ msgstr "" msgid "2022-blake3-chacha20-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1539 +#: htdocs/luci-static/resources/view/fchomo/node.js:1552 msgid "-1 disables it." msgstr "-1 表示禁用它。" @@ -130,8 +130,8 @@ msgstr "仅限 01。" #: htdocs/luci-static/resources/fchomo/listeners.js:1134 #: htdocs/luci-static/resources/fchomo/listeners.js:1149 #: htdocs/luci-static/resources/fchomo/listeners.js:1174 -#: htdocs/luci-static/resources/view/fchomo/node.js:1404 -#: htdocs/luci-static/resources/view/fchomo/node.js:1418 +#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1431 msgid "Save your configuration before uploading files!" msgstr "上传文件前请先保存配置!" @@ -206,7 +206,7 @@ msgstr "ASCII 数据流" msgid "ASN version" msgstr "ASN 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:977 +#: htdocs/luci-static/resources/view/fchomo/node.js:974 msgid "Accept routes" msgstr "接受路由" @@ -235,11 +235,11 @@ msgstr "新增 节点" msgid "Add a inbound" msgstr "新增 入站" -#: htdocs/luci-static/resources/view/fchomo/node.js:1978 +#: htdocs/luci-static/resources/view/fchomo/node.js:1991 msgid "Add a provider" msgstr "新增 供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:2466 +#: htdocs/luci-static/resources/view/fchomo/node.js:2479 msgid "Add a proxy chain" msgstr "新增 代理链" @@ -263,15 +263,15 @@ msgstr "新增 服务器" msgid "Add a sub rule" msgstr "新增 子规则" -#: htdocs/luci-static/resources/view/fchomo/node.js:2275 +#: htdocs/luci-static/resources/view/fchomo/node.js:2288 msgid "Add prefix" msgstr "添加前缀" -#: htdocs/luci-static/resources/view/fchomo/node.js:2279 +#: htdocs/luci-static/resources/view/fchomo/node.js:2292 msgid "Add suffix" msgstr "添加后缀" -#: htdocs/luci-static/resources/view/fchomo/node.js:856 +#: htdocs/luci-static/resources/view/fchomo/node.js:861 msgid "Add the base64 text of the planet file here." msgstr "在此处添加行星文件的 base64 文本。" @@ -305,7 +305,7 @@ msgstr "允许所有" msgid "All ports" msgstr "所有端口" -#: htdocs/luci-static/resources/view/fchomo/node.js:988 +#: htdocs/luci-static/resources/view/fchomo/node.js:985 msgid "Allow LAN access" msgstr "允许局域网访问" @@ -316,7 +316,7 @@ msgid "" msgstr "" "允许从私有网络访问。
要从公共网站访问私有网络上的 API,则必须启用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:989 +#: htdocs/luci-static/resources/view/fchomo/node.js:986 msgid "Allow access to the local LAN via the exit node." msgstr "允许通过出口节点访问本地局域网。" @@ -324,7 +324,7 @@ msgstr "允许通过出口节点访问本地局域网。" msgid "Allow insecure connections" msgstr "允许不安全的连接" -#: htdocs/luci-static/resources/view/fchomo/node.js:937 +#: htdocs/luci-static/resources/view/fchomo/node.js:934 msgid "Allowed IPs" msgstr "允许的 IP" @@ -350,7 +350,7 @@ msgstr "" msgid "Application version" msgstr "应用版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:972 +#: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "As ephemeral node" msgstr "作为临时节点" @@ -371,7 +371,7 @@ msgstr "认证超时" msgid "Authenticated length" msgstr "认证长度" -#: htdocs/luci-static/resources/view/fchomo/node.js:967 +#: htdocs/luci-static/resources/view/fchomo/node.js:964 msgid "Authentication key" msgstr "验证密钥" @@ -380,14 +380,14 @@ msgstr "验证密钥" #: htdocs/luci-static/resources/view/fchomo/global.js:423 #: htdocs/luci-static/resources/view/fchomo/node.js:464 #: htdocs/luci-static/resources/view/fchomo/node.js:488 -#: htdocs/luci-static/resources/view/fchomo/node.js:842 -#: htdocs/luci-static/resources/view/fchomo/node.js:895 -#: htdocs/luci-static/resources/view/fchomo/node.js:1784 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 +#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +#: htdocs/luci-static/resources/view/fchomo/node.js:1797 msgid "Auto" msgstr "自动" #: htdocs/luci-static/resources/fchomo/listeners.js:139 -#: htdocs/luci-static/resources/view/fchomo/node.js:1488 +#: htdocs/luci-static/resources/view/fchomo/node.js:1501 msgid "Auto configure firewall" msgstr "自动配置防火墙" @@ -400,7 +400,7 @@ msgid "Auto update resources." msgstr "自动更新资源文件。" #: htdocs/luci-static/resources/fchomo/listeners.js:638 -#: htdocs/luci-static/resources/view/fchomo/node.js:1061 +#: htdocs/luci-static/resources/view/fchomo/node.js:1074 msgid "BBR profile" msgstr "BBR 配置文件" @@ -408,11 +408,11 @@ msgstr "BBR 配置文件" msgid "Baidu" msgstr "百度" -#: htdocs/luci-static/resources/view/fchomo/node.js:996 +#: htdocs/luci-static/resources/view/fchomo/node.js:993 msgid "Base64 encoded ECDSA private key on the NIST P-256 curve." msgstr "基于 NIST P-256 曲线的 Base64 编码 ECDSA 私钥。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1004 +#: htdocs/luci-static/resources/view/fchomo/node.js:1001 msgid "Base64 encoded ECDSA public key on the NIST P-256 curve." msgstr "基于 NIST P-256 曲线的 Base64 编码 ECDSA 公钥。" @@ -434,13 +434,13 @@ msgid "Binary mrs" msgstr "二进制 mrs" #: htdocs/luci-static/resources/view/fchomo/global.js:758 -#: htdocs/luci-static/resources/view/fchomo/node.js:1945 -#: htdocs/luci-static/resources/view/fchomo/node.js:2364 +#: htdocs/luci-static/resources/view/fchomo/node.js:1958 +#: htdocs/luci-static/resources/view/fchomo/node.js:2377 msgid "Bind interface" msgstr "绑定接口" -#: htdocs/luci-static/resources/view/fchomo/node.js:1946 -#: htdocs/luci-static/resources/view/fchomo/node.js:2365 +#: htdocs/luci-static/resources/view/fchomo/node.js:1959 +#: htdocs/luci-static/resources/view/fchomo/node.js:2378 msgid "Bind outbound interface.
" msgstr "绑定出站接口。
" @@ -509,17 +509,17 @@ msgstr "CORS 允许的来源,留空则使用 *。" msgid "Cancel" msgstr "取消" -#: htdocs/luci-static/resources/view/fchomo/node.js:1370 +#: htdocs/luci-static/resources/view/fchomo/node.js:1383 msgid "Cert fingerprint" msgstr "证书指纹" -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 +#: htdocs/luci-static/resources/view/fchomo/node.js:1384 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。" #: htdocs/luci-static/resources/fchomo/listeners.js:1111 -#: htdocs/luci-static/resources/view/fchomo/node.js:1397 +#: htdocs/luci-static/resources/view/fchomo/node.js:1410 msgid "Certificate path" msgstr "证书路径" @@ -583,9 +583,9 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:853 #: htdocs/luci-static/resources/fchomo/listeners.js:1165 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 -#: htdocs/luci-static/resources/view/fchomo/node.js:1398 -#: htdocs/luci-static/resources/view/fchomo/node.js:1412 +#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1425 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "客户端" @@ -598,7 +598,7 @@ msgstr "客户端认证证书路径" msgid "Client Auth type" msgstr "客户端认证类型" -#: htdocs/luci-static/resources/view/fchomo/node.js:1443 +#: htdocs/luci-static/resources/view/fchomo/node.js:1456 msgid "Client fingerprint" msgstr "客户端指纹" @@ -606,12 +606,20 @@ msgstr "客户端指纹" msgid "Client key" msgstr "客户端密钥" +#: htdocs/luci-static/resources/view/fchomo/node.js:600 +msgid "Client metadata" +msgstr "客户端元数据" + +#: htdocs/luci-static/resources/view/fchomo/node.js:601 +msgid "The client metadata sent to the server." +msgstr "发送到服务器的客户端元数据。" + #: htdocs/luci-static/resources/view/fchomo/global.js:176 msgid "Client status" msgstr "客户端状态" -#: htdocs/luci-static/resources/view/fchomo/node.js:1583 -#: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1596 +#: htdocs/luci-static/resources/view/fchomo/node.js:1621 msgid "Cloudflare WARP" msgstr "" @@ -629,7 +637,8 @@ msgid "Complete" msgstr "完成" #: htdocs/luci-static/resources/fchomo/listeners.js:630 -#: htdocs/luci-static/resources/view/fchomo/node.js:1051 +#: htdocs/luci-static/resources/view/fchomo/node.js:1056 +#: htdocs/luci-static/resources/view/fchomo/node.js:1065 msgid "Congestion controller" msgstr "拥塞控制器" @@ -642,7 +651,7 @@ msgid "Connection reuse" msgstr "连接复用" #: htdocs/luci-static/resources/fchomo/listeners.js:575 -#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:781 msgid "Connection-level receive window size" msgstr "连接级接收窗口大小" @@ -655,14 +664,14 @@ msgid "Content copied to clipboard!" msgstr "内容已复制到剪贴板!" #: htdocs/luci-static/resources/view/fchomo/client.js:699 -#: htdocs/luci-static/resources/view/fchomo/node.js:2135 -#: htdocs/luci-static/resources/view/fchomo/node.js:2161 +#: htdocs/luci-static/resources/view/fchomo/node.js:2148 +#: htdocs/luci-static/resources/view/fchomo/node.js:2174 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:348 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:374 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "内容将不会被验证,请确保输入正确。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2134 +#: htdocs/luci-static/resources/view/fchomo/node.js:2147 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:347 msgid "Contents" msgstr "内容" @@ -671,7 +680,7 @@ msgstr "内容" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:961 +#: htdocs/luci-static/resources/view/fchomo/node.js:958 msgid "Control server" msgstr "控制服务器" @@ -687,7 +696,7 @@ msgstr "核心版本" msgid "Cron expression" msgstr "Cron 表达式" -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Custom %s control server." msgstr "自定义 %s 控制服务器。" @@ -695,7 +704,7 @@ msgstr "自定义 %s 控制服务器。" msgid "Custom Direct List" msgstr "自定义直连列表" -#: htdocs/luci-static/resources/view/fchomo/node.js:2266 +#: htdocs/luci-static/resources/view/fchomo/node.js:2279 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:420 msgid "Custom HTTP header." msgstr "自定义 HTTP header。" @@ -731,7 +740,7 @@ msgstr " DNS 端口" #: htdocs/luci-static/resources/view/fchomo/client.js:911 #: htdocs/luci-static/resources/view/fchomo/client.js:1528 #: htdocs/luci-static/resources/view/fchomo/client.js:1537 -#: htdocs/luci-static/resources/view/fchomo/node.js:1651 +#: htdocs/luci-static/resources/view/fchomo/node.js:1664 msgid "DNS server" msgstr "DNS 服务器" @@ -748,7 +757,7 @@ msgid "Dashboard version" msgstr "面板版本" #: htdocs/luci-static/resources/fchomo.js:94 -#: htdocs/luci-static/resources/view/fchomo/node.js:817 +#: htdocs/luci-static/resources/view/fchomo/node.js:822 msgid "Debug" msgstr "调试" @@ -774,15 +783,15 @@ msgstr "默认版本,支持 %s。" msgid "Derive from priv-key" msgstr "从私钥派生" -#: htdocs/luci-static/resources/view/fchomo/node.js:938 +#: htdocs/luci-static/resources/view/fchomo/node.js:935 msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "允许通过 WireGuard 转发的目的地址" -#: htdocs/luci-static/resources/view/fchomo/node.js:2489 +#: htdocs/luci-static/resources/view/fchomo/node.js:2502 msgid "Destination provider" msgstr "落地供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:2500 +#: htdocs/luci-static/resources/view/fchomo/node.js:2513 msgid "Destination proxy node" msgstr "落地代理节点" @@ -790,8 +799,8 @@ msgstr "落地代理节点" msgid "Dial fields" msgstr "拨号字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:2512 -#: htdocs/luci-static/resources/view/fchomo/node.js:2542 +#: htdocs/luci-static/resources/view/fchomo/node.js:2525 +#: htdocs/luci-static/resources/view/fchomo/node.js:2555 msgid "Different chain head/tail" msgstr "不同的链头/链尾" @@ -813,8 +822,8 @@ msgstr "直连 MAC 地址" #: htdocs/luci-static/resources/fchomo/listeners.js:485 #: htdocs/luci-static/resources/view/fchomo/global.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:710 -#: htdocs/luci-static/resources/view/fchomo/node.js:844 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 +#: htdocs/luci-static/resources/view/fchomo/node.js:849 msgid "Disable" msgstr "禁用" @@ -830,7 +839,7 @@ msgstr "禁用 quic-go 的 通用分段卸载(GSO)" msgid "Disable ICMP Forwarding" msgstr "禁用 ICMP 转发" -#: htdocs/luci-static/resources/view/fchomo/node.js:1311 +#: htdocs/luci-static/resources/view/fchomo/node.js:1324 msgid "Disable SNI" msgstr "禁用 SNI" @@ -858,23 +867,23 @@ msgstr "" msgid "Domain" msgstr "域名" -#: htdocs/luci-static/resources/view/fchomo/node.js:1312 +#: htdocs/luci-static/resources/view/fchomo/node.js:1325 msgid "Donot send server name in ClientHello." msgstr "不要在 ClientHello 中发送服务器名称。" #: htdocs/luci-static/resources/view/fchomo/client.js:1680 -#: htdocs/luci-static/resources/view/fchomo/node.js:1390 -#: htdocs/luci-static/resources/view/fchomo/node.js:2348 +#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:2361 msgid "Donot verifying server certificate." msgstr "不验证服务器证书。" #: htdocs/luci-static/resources/fchomo/listeners.js:1395 -#: htdocs/luci-static/resources/view/fchomo/node.js:1922 +#: htdocs/luci-static/resources/view/fchomo/node.js:1935 msgid "Download bandwidth" msgstr "下载带宽" #: htdocs/luci-static/resources/fchomo/listeners.js:1396 -#: htdocs/luci-static/resources/view/fchomo/node.js:1923 +#: htdocs/luci-static/resources/view/fchomo/node.js:1936 msgid "Download bandwidth in Mbps." msgstr "下载带宽(单位:Mbps)。" @@ -890,12 +899,12 @@ msgstr "下载成功。" msgid "Dual stack" msgstr "双栈" -#: htdocs/luci-static/resources/view/fchomo/node.js:1437 +#: htdocs/luci-static/resources/view/fchomo/node.js:1450 msgid "ECH HTTPS record query servername" msgstr "ECH HTTPS 记录查询域名" #: htdocs/luci-static/resources/fchomo/listeners.js:1222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1431 +#: htdocs/luci-static/resources/view/fchomo/node.js:1444 msgid "ECH config" msgstr "ECH 配置" @@ -915,11 +924,11 @@ msgstr "EDNS 客户端子网" msgid "ETag support" msgstr "ETag 支持" -#: htdocs/luci-static/resources/view/fchomo/node.js:1762 +#: htdocs/luci-static/resources/view/fchomo/node.js:1775 msgid "Early Data first packet length limit." msgstr "前置数据长度阈值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1768 +#: htdocs/luci-static/resources/view/fchomo/node.js:1781 msgid "Early Data header name" msgstr "前置数据标头" @@ -935,7 +944,7 @@ msgstr "编辑出站" msgid "Edit ruleset" msgstr "编辑规则集" -#: htdocs/luci-static/resources/view/fchomo/node.js:2132 +#: htdocs/luci-static/resources/view/fchomo/node.js:2145 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:345 msgid "Editer" msgstr "编辑器" @@ -959,15 +968,15 @@ msgstr "为空时回退" #: htdocs/luci-static/resources/view/fchomo/global.js:422 #: htdocs/luci-static/resources/view/fchomo/global.js:704 #: htdocs/luci-static/resources/view/fchomo/node.js:264 -#: htdocs/luci-static/resources/view/fchomo/node.js:2105 -#: htdocs/luci-static/resources/view/fchomo/node.js:2387 -#: htdocs/luci-static/resources/view/fchomo/node.js:2476 +#: htdocs/luci-static/resources/view/fchomo/node.js:2118 +#: htdocs/luci-static/resources/view/fchomo/node.js:2400 +#: htdocs/luci-static/resources/view/fchomo/node.js:2489 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:272 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" msgstr "启用" -#: htdocs/luci-static/resources/view/fchomo/node.js:664 +#: htdocs/luci-static/resources/view/fchomo/node.js:669 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
强烈建议禁用此功能,因为它容易受到重放攻击。" -#: htdocs/luci-static/resources/view/fchomo/node.js:663 +#: htdocs/luci-static/resources/view/fchomo/node.js:668 msgid "Enable 0-RTT handshake" msgstr "启用 0-RTT 握手" @@ -988,25 +997,25 @@ msgstr "" "为出站连接启用 IP4P 转换" -#: htdocs/luci-static/resources/view/fchomo/node.js:1425 +#: htdocs/luci-static/resources/view/fchomo/node.js:1438 msgid "Enable ECH" msgstr "启用 ECH" #: htdocs/luci-static/resources/fchomo/listeners.js:1383 -#: htdocs/luci-static/resources/view/fchomo/node.js:1910 +#: htdocs/luci-static/resources/view/fchomo/node.js:1923 msgid "Enable TCP Brutal" msgstr "启用 TCP Brutal" #: htdocs/luci-static/resources/fchomo/listeners.js:1384 -#: htdocs/luci-static/resources/view/fchomo/node.js:1911 +#: htdocs/luci-static/resources/view/fchomo/node.js:1924 msgid "Enable TCP Brutal congestion control algorithm" msgstr "启用 TCP Brutal 拥塞控制算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:658 +#: htdocs/luci-static/resources/view/fchomo/node.js:663 msgid "Enable fast open" msgstr "启用 Fast open" -#: htdocs/luci-static/resources/view/fchomo/node.js:1899 +#: htdocs/luci-static/resources/view/fchomo/node.js:1912 msgid "Enable multiplexing only for TCP." msgstr "仅为 TCP 启用多路复用。" @@ -1016,28 +1025,28 @@ msgid "Enable obfuscate for downlink" msgstr "启用下行链路混淆" #: htdocs/luci-static/resources/fchomo/listeners.js:1378 -#: htdocs/luci-static/resources/view/fchomo/node.js:1893 +#: htdocs/luci-static/resources/view/fchomo/node.js:1906 msgid "Enable padding" msgstr "启用填充" -#: htdocs/luci-static/resources/view/fchomo/node.js:1904 +#: htdocs/luci-static/resources/view/fchomo/node.js:1917 msgid "Enable statistic" msgstr "启用统计" -#: htdocs/luci-static/resources/view/fchomo/node.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:2324 +#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:2337 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。" #: htdocs/luci-static/resources/fchomo/listeners.js:492 -#: htdocs/luci-static/resources/view/fchomo/node.js:717 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "启用混淆将使服务器与标准的 QUIC 连接不兼容,失去 HTTP/3 伪装的能力。" -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:840 msgid "Encrypted Hello" msgstr "加密 Hello" @@ -1045,10 +1054,6 @@ msgstr "加密 Hello" msgid "Encryption method" msgstr "加密方法" -#: htdocs/luci-static/resources/view/fchomo/node.js:1003 -msgid "Server public key" -msgstr "服务器公钥" - #: htdocs/luci-static/resources/view/fchomo/global.js:540 msgid "Endpoint-Independent NAT" msgstr "端点独立 NAT" @@ -1068,7 +1073,7 @@ msgid "" "if empty." msgstr "超过此限制将会触发强制健康检查。留空则使用 5。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2445 +#: htdocs/luci-static/resources/view/fchomo/node.js:2458 msgid "Exclude matched node types." msgstr "排除匹配的节点类型。" @@ -1081,11 +1086,11 @@ msgstr "" "rel=\"noreferrer noopener\">此处。" #: htdocs/luci-static/resources/view/fchomo/client.js:1255 -#: htdocs/luci-static/resources/view/fchomo/node.js:2438 +#: htdocs/luci-static/resources/view/fchomo/node.js:2451 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配关键词或表达式的节点。" -#: htdocs/luci-static/resources/view/fchomo/node.js:983 +#: htdocs/luci-static/resources/view/fchomo/node.js:980 msgid "Exit node" msgstr "出口节点" @@ -1094,12 +1099,12 @@ msgid "Expand/Collapse result" msgstr "展开/收起 结果" #: htdocs/luci-static/resources/view/fchomo/client.js:1198 -#: htdocs/luci-static/resources/view/fchomo/node.js:2423 +#: htdocs/luci-static/resources/view/fchomo/node.js:2436 msgid "Expected HTTP code. 204 will be used if empty." msgstr "预期的 HTTP code。留空则使用 204。" #: htdocs/luci-static/resources/view/fchomo/client.js:1200 -#: htdocs/luci-static/resources/view/fchomo/node.js:2425 +#: htdocs/luci-static/resources/view/fchomo/node.js:2438 msgid "Expected status" msgstr "预期状态" @@ -1141,11 +1146,11 @@ msgstr "预期状态" #: htdocs/luci-static/resources/view/fchomo/node.js:441 #: htdocs/luci-static/resources/view/fchomo/node.js:494 #: htdocs/luci-static/resources/view/fchomo/node.js:496 -#: htdocs/luci-static/resources/view/fchomo/node.js:886 -#: htdocs/luci-static/resources/view/fchomo/node.js:1249 -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 -#: htdocs/luci-static/resources/view/fchomo/node.js:2512 -#: htdocs/luci-static/resources/view/fchomo/node.js:2542 +#: htdocs/luci-static/resources/view/fchomo/node.js:891 +#: htdocs/luci-static/resources/view/fchomo/node.js:1262 +#: htdocs/luci-static/resources/view/fchomo/node.js:1389 +#: htdocs/luci-static/resources/view/fchomo/node.js:2525 +#: htdocs/luci-static/resources/view/fchomo/node.js:2555 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:300 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:314 msgid "Expecting: %s" @@ -1156,7 +1161,7 @@ msgid "Expecting: Cannot be empty." msgstr "请输入:不能为空。" #: htdocs/luci-static/resources/fchomo/listeners.js:1236 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1472 msgid "Expecting: Cannot be enabled when %s is enabled." msgstr "请输入:当 %s 启用时,无法启用。" @@ -1173,11 +1178,11 @@ msgstr "请输入:至少包含 %s 或 %s 中的一个。" #: htdocs/luci-static/resources/fchomo/listeners.js:690 #: htdocs/luci-static/resources/fchomo/listeners.js:1304 #: htdocs/luci-static/resources/fchomo/listeners.js:1311 -#: htdocs/luci-static/resources/view/fchomo/node.js:1123 -#: htdocs/luci-static/resources/view/fchomo/node.js:1129 -#: htdocs/luci-static/resources/view/fchomo/node.js:1677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1136 +#: htdocs/luci-static/resources/view/fchomo/node.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 +#: htdocs/luci-static/resources/view/fchomo/node.js:1705 msgid "Expecting: Only support %s." msgstr "请输入:仅支援 %s。" @@ -1229,16 +1234,16 @@ msgstr "後備 DNS 服务器" msgid "Fallback filter" msgstr "後備过滤器" -#: htdocs/luci-static/resources/view/fchomo/node.js:841 +#: htdocs/luci-static/resources/view/fchomo/node.js:846 msgid "Fallback mode" msgstr "自动回退模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:848 +#: htdocs/luci-static/resources/view/fchomo/node.js:853 msgid "Fallback relay" msgstr "自动回退中继" #: htdocs/luci-static/resources/view/fchomo/client.js:1250 -#: htdocs/luci-static/resources/view/fchomo/node.js:2432 +#: htdocs/luci-static/resources/view/fchomo/node.js:2445 msgid "Filter nodes that meet keywords or regexps." msgstr "过滤匹配关键字或表达式的节点。" @@ -1264,7 +1269,7 @@ msgid "Final DNS server (For poisoned domains)" msgstr "兜底 DNS 服务器 (用于已被投毒污染的域名)" #: htdocs/luci-static/resources/fchomo/listeners.js:138 -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 +#: htdocs/luci-static/resources/view/fchomo/node.js:1500 msgid "Firewall" msgstr "防火墙" @@ -1282,9 +1287,9 @@ msgstr "" "noopener\">%s." #: htdocs/luci-static/resources/view/fchomo/client.js:1199 -#: htdocs/luci-static/resources/view/fchomo/node.js:2285 -#: htdocs/luci-static/resources/view/fchomo/node.js:2293 -#: htdocs/luci-static/resources/view/fchomo/node.js:2424 +#: htdocs/luci-static/resources/view/fchomo/node.js:2298 +#: htdocs/luci-static/resources/view/fchomo/node.js:2306 +#: htdocs/luci-static/resources/view/fchomo/node.js:2437 msgid "" "For format see %s." @@ -1292,11 +1297,11 @@ msgstr "" "格式请参阅 %s." -#: htdocs/luci-static/resources/view/fchomo/node.js:843 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Force" msgstr "强制" -#: htdocs/luci-static/resources/view/fchomo/node.js:1646 +#: htdocs/luci-static/resources/view/fchomo/node.js:1659 msgid "Force DNS remote resolution." msgstr "强制 DNS 远程解析。" @@ -1319,7 +1324,7 @@ msgstr "转发速率限制" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1717 +#: htdocs/luci-static/resources/view/fchomo/node.js:1730 msgid "GET" msgstr "" @@ -1328,7 +1333,7 @@ msgid "GFW list version" msgstr "GFW 域名列表版本" #: htdocs/luci-static/resources/fchomo/listeners.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:712 +#: htdocs/luci-static/resources/view/fchomo/node.js:717 msgid "Gecko" msgstr "" @@ -1339,7 +1344,7 @@ msgstr "常规" #: htdocs/luci-static/resources/fchomo/listeners.js:119 #: htdocs/luci-static/resources/view/fchomo/client.js:1054 #: htdocs/luci-static/resources/view/fchomo/node.js:249 -#: htdocs/luci-static/resources/view/fchomo/node.js:2095 +#: htdocs/luci-static/resources/view/fchomo/node.js:2108 msgid "General fields" msgstr "常规字段" @@ -1357,7 +1362,7 @@ msgstr "常规设置" #: htdocs/luci-static/resources/fchomo/listeners.js:949 #: htdocs/luci-static/resources/fchomo/listeners.js:1214 #: htdocs/luci-static/resources/view/fchomo/global.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:2253 +#: htdocs/luci-static/resources/view/fchomo/node.js:2266 msgid "Generate" msgstr "生成" @@ -1427,16 +1432,16 @@ msgstr "组" #: htdocs/luci-static/resources/fchomo.js:154 #: htdocs/luci-static/resources/fchomo.js:191 #: htdocs/luci-static/resources/fchomo/listeners.js:702 -#: htdocs/luci-static/resources/view/fchomo/node.js:1141 -#: htdocs/luci-static/resources/view/fchomo/node.js:1664 +#: htdocs/luci-static/resources/view/fchomo/node.js:1154 #: htdocs/luci-static/resources/view/fchomo/node.js:1677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:330 -#: htdocs/luci-static/resources/view/fchomo/node.js:1739 -#: htdocs/luci-static/resources/view/fchomo/node.js:2265 +#: htdocs/luci-static/resources/view/fchomo/node.js:1752 +#: htdocs/luci-static/resources/view/fchomo/node.js:2278 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:419 msgid "HTTP header" msgstr "HTTP header" @@ -1462,7 +1467,7 @@ msgstr "HTTP 伪装多路复用" msgid "HTTP mask: %s" msgstr "HTTP 伪装: %s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1716 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "HTTP request method" msgstr "HTTP 请求方法" @@ -1481,9 +1486,9 @@ msgid "" "returned if empty." msgstr "身份验证失败时的 HTTP3 服务器响应。默认返回 404 页面。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1665 #: htdocs/luci-static/resources/view/fchomo/node.js:1678 -#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1691 +#: htdocs/luci-static/resources/view/fchomo/node.js:1698 msgid "HTTPUpgrade" msgstr "" @@ -1504,7 +1509,7 @@ msgid "Handshake target that supports TLS 1.3" msgstr "握手目标 (支援 TLS 1.3)" #: htdocs/luci-static/resources/fchomo/listeners.js:338 -#: htdocs/luci-static/resources/view/fchomo/node.js:1076 +#: htdocs/luci-static/resources/view/fchomo/node.js:1089 msgid "Handshake timeout" msgstr "握手超时" @@ -1512,41 +1517,41 @@ msgstr "握手超时" msgid "Header to read real client IP from (e.g. X-Forwarded-For)" msgstr "用于读取客户端真实 IP 的 Header(例如 X-Forwarded-For)" -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Headscale/Tailscale" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:788 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 msgid "Health check" msgstr "健康检查" #: htdocs/luci-static/resources/view/fchomo/client.js:1168 -#: htdocs/luci-static/resources/view/fchomo/node.js:2392 +#: htdocs/luci-static/resources/view/fchomo/node.js:2405 msgid "Health check URL" msgstr "健康检查 URL" #: htdocs/luci-static/resources/view/fchomo/client.js:1197 -#: htdocs/luci-static/resources/view/fchomo/node.js:2422 +#: htdocs/luci-static/resources/view/fchomo/node.js:2435 msgid "Health check expected status" msgstr "健康检查预期状态" #: htdocs/luci-static/resources/view/fchomo/client.js:1177 -#: htdocs/luci-static/resources/view/fchomo/node.js:2402 +#: htdocs/luci-static/resources/view/fchomo/node.js:2415 msgid "Health check interval" msgstr "健康检查间隔" #: htdocs/luci-static/resources/view/fchomo/client.js:1184 -#: htdocs/luci-static/resources/view/fchomo/node.js:2409 +#: htdocs/luci-static/resources/view/fchomo/node.js:2422 msgid "Health check timeout" msgstr "健康检查超时" #: htdocs/luci-static/resources/view/fchomo/client.js:1056 -#: htdocs/luci-static/resources/view/fchomo/node.js:2097 +#: htdocs/luci-static/resources/view/fchomo/node.js:2110 msgid "Health fields" msgstr "健康字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:670 -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:675 +#: htdocs/luci-static/resources/view/fchomo/node.js:756 msgid "Heartbeat interval" msgstr "心跳间隔" @@ -1555,15 +1560,15 @@ msgid "Hidden" msgstr "隐藏" #: htdocs/luci-static/resources/fchomo/listeners.js:715 -#: htdocs/luci-static/resources/view/fchomo/node.js:1146 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 msgid "Host that supports TLS 1.3" msgstr "主机名称 (支援 TLS 1.3)" -#: htdocs/luci-static/resources/view/fchomo/node.js:1045 +#: htdocs/luci-static/resources/view/fchomo/node.js:1042 msgid "Host-key" msgstr "主机密钥" -#: htdocs/luci-static/resources/view/fchomo/node.js:1040 +#: htdocs/luci-static/resources/view/fchomo/node.js:1037 msgid "Host-key algorithms" msgstr "主机密钥算法" @@ -1571,7 +1576,7 @@ msgstr "主机密钥算法" msgid "Host/SNI override" msgstr "主机/SNI 覆盖" -#: htdocs/luci-static/resources/view/fchomo/node.js:1318 +#: htdocs/luci-static/resources/view/fchomo/node.js:1331 msgid "" "Hostname that the client attempts to connect to at the start of the TLS " "handshake process." @@ -1605,22 +1610,23 @@ msgstr "" msgid "IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:627 +#: htdocs/luci-static/resources/view/fchomo/node.js:632 msgid "IP override" msgstr "IP 覆写" -#: htdocs/luci-static/resources/view/fchomo/node.js:893 +#: htdocs/luci-static/resources/view/fchomo/node.js:1048 +#: htdocs/luci-static/resources/view/fchomo/node.js:1056 msgid "IP stack" msgstr "IP 协议栈" -#: htdocs/luci-static/resources/view/fchomo/node.js:1959 -#: htdocs/luci-static/resources/view/fchomo/node.js:2378 +#: htdocs/luci-static/resources/view/fchomo/node.js:1972 +#: htdocs/luci-static/resources/view/fchomo/node.js:2391 msgid "IP version" msgstr "IP 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 -#: htdocs/luci-static/resources/view/fchomo/node.js:1583 +#: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1592 +#: htdocs/luci-static/resources/view/fchomo/node.js:1596 msgid "IPv4" msgstr "IPv4" @@ -1628,9 +1634,9 @@ msgstr "IPv4" msgid "IPv4 only" msgstr "仅 IPv4" -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 #: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1617 +#: htdocs/luci-static/resources/view/fchomo/node.js:1621 msgid "IPv6" msgstr "IPv6" @@ -1647,11 +1653,11 @@ msgstr "IPv6 支持" msgid "Icon" msgstr "图标" -#: htdocs/luci-static/resources/view/fchomo/node.js:600 +#: htdocs/luci-static/resources/view/fchomo/node.js:605 msgid "Idle session check interval" msgstr "闲置会话检查间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:607 +#: htdocs/luci-static/resources/view/fchomo/node.js:612 msgid "Idle session timeout" msgstr "闲置会话超时" @@ -1687,8 +1693,8 @@ msgstr "导入" #: htdocs/luci-static/resources/view/fchomo/client.js:1816 #: htdocs/luci-static/resources/view/fchomo/client.js:1851 #: htdocs/luci-static/resources/view/fchomo/client.js:1872 -#: htdocs/luci-static/resources/view/fchomo/node.js:1985 -#: htdocs/luci-static/resources/view/fchomo/node.js:2083 +#: htdocs/luci-static/resources/view/fchomo/node.js:1998 +#: htdocs/luci-static/resources/view/fchomo/node.js:2096 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:249 msgid "Import mihomo config" @@ -1702,10 +1708,10 @@ msgstr "导入规则集链接" #: htdocs/luci-static/resources/fchomo/listeners.js:466 #: htdocs/luci-static/resources/fchomo/listeners.js:472 -#: htdocs/luci-static/resources/view/fchomo/node.js:686 -#: htdocs/luci-static/resources/view/fchomo/node.js:692 -#: htdocs/luci-static/resources/view/fchomo/node.js:2330 -#: htdocs/luci-static/resources/view/fchomo/node.js:2336 +#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:697 +#: htdocs/luci-static/resources/view/fchomo/node.js:2343 +#: htdocs/luci-static/resources/view/fchomo/node.js:2349 msgid "In Mbps." msgstr "单位为 Mbps。" @@ -1713,33 +1719,33 @@ msgstr "单位为 Mbps。" msgid "In bps. 0 means no speed limit." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2173 +#: htdocs/luci-static/resources/view/fchomo/node.js:2186 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:392 msgid "In bytes. %s will be used if empty." msgstr "单位为字节。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:671 -#: htdocs/luci-static/resources/view/fchomo/node.js:678 -#: htdocs/luci-static/resources/view/fchomo/node.js:752 +#: htdocs/luci-static/resources/view/fchomo/node.js:676 +#: htdocs/luci-static/resources/view/fchomo/node.js:683 +#: htdocs/luci-static/resources/view/fchomo/node.js:757 msgid "In millisecond." msgstr "单位为毫秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:1185 #: htdocs/luci-static/resources/view/fchomo/client.js:1231 -#: htdocs/luci-static/resources/view/fchomo/node.js:2410 +#: htdocs/luci-static/resources/view/fchomo/node.js:2423 msgid "In millisecond. %s will be used if empty." msgstr "单位为毫秒。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1808 +#: htdocs/luci-static/resources/view/fchomo/node.js:1821 msgid "In milliseconds." msgstr "单位为毫秒。" #: htdocs/luci-static/resources/fchomo/listeners.js:339 #: htdocs/luci-static/resources/fchomo/listeners.js:458 #: htdocs/luci-static/resources/fchomo/listeners.js:648 -#: htdocs/luci-static/resources/view/fchomo/node.js:601 -#: htdocs/luci-static/resources/view/fchomo/node.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:1755 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 +#: htdocs/luci-static/resources/view/fchomo/node.js:613 +#: htdocs/luci-static/resources/view/fchomo/node.js:1768 msgid "In seconds." msgstr "单位为秒。" @@ -1747,21 +1753,21 @@ msgstr "单位为秒。" #: htdocs/luci-static/resources/view/fchomo/global.js:446 #: htdocs/luci-static/resources/view/fchomo/global.js:451 #: htdocs/luci-static/resources/view/fchomo/global.js:536 -#: htdocs/luci-static/resources/view/fchomo/node.js:704 -#: htdocs/luci-static/resources/view/fchomo/node.js:2179 -#: htdocs/luci-static/resources/view/fchomo/node.js:2403 +#: htdocs/luci-static/resources/view/fchomo/node.js:709 +#: htdocs/luci-static/resources/view/fchomo/node.js:2192 +#: htdocs/luci-static/resources/view/fchomo/node.js:2416 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:398 msgid "In seconds. %s will be used if empty." msgstr "单位为秒。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1077 +#: htdocs/luci-static/resources/view/fchomo/node.js:1090 msgid "" "In seconds. After configuration, the handshake is not affected by the outer " "connection timeout." msgstr "单位为秒。配置后握手时不受外层连接超时影响。" #: htdocs/luci-static/resources/fchomo/listeners.js:865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1238 +#: htdocs/luci-static/resources/view/fchomo/node.js:1251 msgid "" "In the order of one Padding-Length and one Padding-" "Interval, infinite concatenation." @@ -1804,16 +1810,16 @@ msgid "Info" msgstr "信息" #: htdocs/luci-static/resources/fchomo/listeners.js:557 -#: htdocs/luci-static/resources/view/fchomo/node.js:758 +#: htdocs/luci-static/resources/view/fchomo/node.js:763 msgid "Initial congestion window size" msgstr "初始拥塞窗口大小" -#: htdocs/luci-static/resources/view/fchomo/node.js:2112 +#: htdocs/luci-static/resources/view/fchomo/node.js:2125 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:288 msgid "Inline" msgstr "内嵌" -#: htdocs/luci-static/resources/view/fchomo/node.js:818 +#: htdocs/luci-static/resources/view/fchomo/node.js:823 msgid "Insane" msgstr "噩梦" @@ -1826,14 +1832,14 @@ msgstr "接口控制" #: htdocs/luci-static/resources/fchomo/listeners.js:692 #: htdocs/luci-static/resources/fchomo/listeners.js:1122 #: htdocs/luci-static/resources/fchomo/listeners.js:1238 -#: htdocs/luci-static/resources/view/fchomo/node.js:1116 -#: htdocs/luci-static/resources/view/fchomo/node.js:1126 -#: htdocs/luci-static/resources/view/fchomo/node.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1461 +#: htdocs/luci-static/resources/view/fchomo/node.js:1129 +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:1474 msgid "JLS" msgstr "JLS" -#: htdocs/luci-static/resources/view/fchomo/node.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:884 msgid "Join %s. Format: %s" msgstr "加入 %s。格式:%s" @@ -1841,12 +1847,13 @@ msgstr "加入 %s。格式:%s" #: htdocs/luci-static/resources/fchomo.js:60 #: htdocs/luci-static/resources/fchomo.js:174 #: htdocs/luci-static/resources/fchomo.js:381 -#: htdocs/luci-static/resources/view/fchomo/node.js:894 -#: htdocs/luci-static/resources/view/fchomo/node.js:2352 +#: htdocs/luci-static/resources/view/fchomo/node.js:1049 +#: htdocs/luci-static/resources/view/fchomo/node.js:1057 +#: htdocs/luci-static/resources/view/fchomo/node.js:2365 msgid "Keep default" msgstr "保持缺省" -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1857 msgid "Keep-alive period" msgstr "Keep-alive 周期" @@ -1856,7 +1863,7 @@ msgid "Key" msgstr "密钥" #: htdocs/luci-static/resources/fchomo/listeners.js:1141 -#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1424 msgid "Key path" msgstr "证书路径" @@ -1876,14 +1883,14 @@ msgstr "L2" #: htdocs/luci-static/resources/view/fchomo/client.js:1822 #: htdocs/luci-static/resources/view/fchomo/client.js:1878 #: htdocs/luci-static/resources/view/fchomo/node.js:259 -#: htdocs/luci-static/resources/view/fchomo/node.js:2100 -#: htdocs/luci-static/resources/view/fchomo/node.js:2471 +#: htdocs/luci-static/resources/view/fchomo/node.js:2113 +#: htdocs/luci-static/resources/view/fchomo/node.js:2484 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:267 msgid "Label" msgstr "标签" #: htdocs/luci-static/resources/view/fchomo/client.js:1191 -#: htdocs/luci-static/resources/view/fchomo/node.js:2416 +#: htdocs/luci-static/resources/view/fchomo/node.js:2429 msgid "Lazy" msgstr "怠惰状态" @@ -1913,7 +1920,7 @@ msgid "Less compatibility and sometimes better performance." msgstr "有时性能更好。" #: htdocs/luci-static/resources/fchomo/listeners.js:1064 -#: htdocs/luci-static/resources/view/fchomo/node.js:1324 +#: htdocs/luci-static/resources/view/fchomo/node.js:1337 msgid "List of supported application level protocols, in order of preference." msgstr "支持的应用层协议协商列表,按顺序排列。" @@ -1931,8 +1938,8 @@ msgstr "监听接口" #: htdocs/luci-static/resources/fchomo/listeners.js:154 #: htdocs/luci-static/resources/view/fchomo/client.js:1471 -#: htdocs/luci-static/resources/view/fchomo/node.js:1507 -#: htdocs/luci-static/resources/view/fchomo/node.js:1537 +#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 msgid "Listen port" msgstr "监听端口" @@ -1948,7 +1955,7 @@ msgstr "监听路由标记 (Fwmark)" msgid "Load balance" msgstr "负载均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:2110 +#: htdocs/luci-static/resources/view/fchomo/node.js:2123 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:286 msgid "Local" msgstr "本地" @@ -1969,7 +1976,7 @@ msgstr "日志为空。" msgid "Log level" msgstr "日志等级" -#: htdocs/luci-static/resources/view/fchomo/node.js:829 +#: htdocs/luci-static/resources/view/fchomo/node.js:834 msgid "Low Bandwidth Mode" msgstr "低带宽模式" @@ -1989,7 +1996,7 @@ msgid "Lowercase only" msgstr "仅限小写" #: htdocs/luci-static/resources/view/fchomo/global.js:523 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1631 msgid "MTU" msgstr "MTU" @@ -2029,12 +2036,12 @@ msgstr "匹配响应通过 ipcidr
" msgid "Match rule set." msgstr "匹配规则集。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1761 +#: htdocs/luci-static/resources/view/fchomo/node.js:1774 msgid "Max Early Data" msgstr "前置数据最大值" #: htdocs/luci-static/resources/fchomo/listeners.js:451 -#: htdocs/luci-static/resources/view/fchomo/node.js:652 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "Max UDP relay packet size" msgstr "UDP 中继数据包最大尺寸" @@ -2042,11 +2049,11 @@ msgstr "UDP 中继数据包最大尺寸" msgid "Max buffered posts" msgstr "POST 最大缓冲" -#: htdocs/luci-static/resources/view/fchomo/node.js:1819 +#: htdocs/luci-static/resources/view/fchomo/node.js:1832 msgid "Max concurrency" msgstr "最大并发" -#: htdocs/luci-static/resources/view/fchomo/node.js:1824 +#: htdocs/luci-static/resources/view/fchomo/node.js:1837 msgid "Max connections" msgstr "最大连接数" @@ -2055,21 +2062,21 @@ msgid "Max count of failures" msgstr "最大失败次数" #: htdocs/luci-static/resources/fchomo/listeners.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:764 +#: htdocs/luci-static/resources/view/fchomo/node.js:769 msgid "Max datagram frame size" msgstr "最大数据报帧大小" #: htdocs/luci-static/resources/fchomo/listeners.js:471 -#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "Max download speed" msgstr "最大下载速度" #: htdocs/luci-static/resources/fchomo/listeners.js:1366 -#: htdocs/luci-static/resources/view/fchomo/node.js:1801 +#: htdocs/luci-static/resources/view/fchomo/node.js:1814 msgid "Max each POST bytes" msgstr "POST 最大字节数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1070 +#: htdocs/luci-static/resources/view/fchomo/node.js:1083 msgid "Max open streams" msgstr "限制打开流的数量" @@ -2081,29 +2088,29 @@ msgstr "最大 Realms 总数" msgid "Max realms per client IP" msgstr "每客户端 IP 最大 Realms 总数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1834 +#: htdocs/luci-static/resources/view/fchomo/node.js:1847 msgid "Max request times" msgstr "最大请求次数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 +#: htdocs/luci-static/resources/view/fchomo/node.js:1852 msgid "Max reusable seconds" msgstr "最大可复用秒数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1829 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 msgid "Max reuse times" msgstr "最大复用次数" #: htdocs/luci-static/resources/fchomo/listeners.js:465 -#: htdocs/luci-static/resources/view/fchomo/node.js:685 +#: htdocs/luci-static/resources/view/fchomo/node.js:690 msgid "Max upload speed" msgstr "最大上传速度" -#: htdocs/luci-static/resources/view/fchomo/node.js:1865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1885 +#: htdocs/luci-static/resources/view/fchomo/node.js:1878 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Maximum connections" msgstr "最大连接数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1883 +#: htdocs/luci-static/resources/view/fchomo/node.js:1896 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -2123,7 +2130,7 @@ msgid "" "rate." msgstr "最大填充率必须大于等于最小填充率。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1882 +#: htdocs/luci-static/resources/view/fchomo/node.js:1895 msgid "Maximum streams" msgstr "最大流数量" @@ -2144,15 +2151,15 @@ msgstr "Mihomo 客户端" msgid "Mihomo server" msgstr "Mihomo 服务端" -#: htdocs/luci-static/resources/view/fchomo/node.js:614 +#: htdocs/luci-static/resources/view/fchomo/node.js:619 msgid "Min of idle sessions to keep" msgstr "要保留的最少闲置会话数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1807 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 msgid "Min posts interval" msgstr "POST 请求最小间隔时间" -#: htdocs/luci-static/resources/view/fchomo/node.js:1874 +#: htdocs/luci-static/resources/view/fchomo/node.js:1887 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在打开新连接之前,连接中的最小多路复用流数量。" @@ -2162,8 +2169,8 @@ msgstr "在打开新连接之前,连接中的最小多路复用流数量。" msgid "Minimum padding rate" msgstr "最小填充率" -#: htdocs/luci-static/resources/view/fchomo/node.js:1873 -#: htdocs/luci-static/resources/view/fchomo/node.js:1885 +#: htdocs/luci-static/resources/view/fchomo/node.js:1886 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Minimum streams" msgstr "最小流数量" @@ -2181,7 +2188,7 @@ msgid "Mixed port" msgstr "混合端口" #: htdocs/luci-static/resources/fchomo/listeners.js:1373 -#: htdocs/luci-static/resources/view/fchomo/node.js:1851 +#: htdocs/luci-static/resources/view/fchomo/node.js:1864 msgid "Multiplex" msgstr "多路复用" @@ -2203,7 +2210,7 @@ msgstr "NOT" msgid "Name of the Proxy group as outbound." msgstr "出站代理组的名称。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2185 +#: htdocs/luci-static/resources/view/fchomo/node.js:2198 msgid "Name of the Proxy group to download provider." msgstr "用于下载供应商订阅的代理组名称。" @@ -2215,7 +2222,7 @@ msgstr "用于下载规则集订阅的代理组名称。" msgid "Name of the Sub rule used for inbound matching." msgstr "用于入站匹配的子规则名称。" -#: htdocs/luci-static/resources/view/fchomo/node.js:636 +#: htdocs/luci-static/resources/view/fchomo/node.js:641 msgid "Native UDP" msgstr "原生 UDP" @@ -2223,7 +2230,7 @@ msgstr "原生 UDP" msgid "Native appearance" msgstr "原生外观" -#: htdocs/luci-static/resources/view/fchomo/node.js:1010 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Network" msgstr "" @@ -2231,7 +2238,7 @@ msgstr "" msgid "Network type" msgstr "网络类型" -#: htdocs/luci-static/resources/view/fchomo/node.js:2354 +#: htdocs/luci-static/resources/view/fchomo/node.js:2367 msgid "No" msgstr "" @@ -2247,12 +2254,12 @@ msgstr "无 SSE header" msgid "No add'l params" msgstr "无附加参数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1791 +#: htdocs/luci-static/resources/view/fchomo/node.js:1804 msgid "No gRPC header" msgstr "无 gRPC header" #: htdocs/luci-static/resources/view/fchomo/client.js:1192 -#: htdocs/luci-static/resources/view/fchomo/node.js:2417 +#: htdocs/luci-static/resources/view/fchomo/node.js:2430 msgid "No testing is performed when this provider node is not in use." msgstr "当此供应商的节点未使用时,不执行任何测试。" @@ -2270,17 +2277,17 @@ msgid "Node" msgstr "节点" #: htdocs/luci-static/resources/view/fchomo/client.js:1254 -#: htdocs/luci-static/resources/view/fchomo/node.js:2437 +#: htdocs/luci-static/resources/view/fchomo/node.js:2450 msgid "Node exclude filter" msgstr "排除节点" #: htdocs/luci-static/resources/view/fchomo/client.js:1259 -#: htdocs/luci-static/resources/view/fchomo/node.js:2444 +#: htdocs/luci-static/resources/view/fchomo/node.js:2457 msgid "Node exclude type" msgstr "排除节点类型" #: htdocs/luci-static/resources/view/fchomo/client.js:1249 -#: htdocs/luci-static/resources/view/fchomo/node.js:2431 +#: htdocs/luci-static/resources/view/fchomo/node.js:2444 msgid "Node filter" msgstr "过滤节点" @@ -2292,7 +2299,7 @@ msgstr "节点切换容差" msgid "None" msgstr "无" -#: htdocs/luci-static/resources/view/fchomo/node.js:814 +#: htdocs/luci-static/resources/view/fchomo/node.js:819 msgid "Normal" msgstr "正常" @@ -2313,29 +2320,29 @@ msgid "ON" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:701 -#: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1153 msgid "Obfs Mode" msgstr "Obfs 模式" #: htdocs/luci-static/resources/fchomo/listeners.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:729 +#: htdocs/luci-static/resources/view/fchomo/node.js:734 msgid "Obfuscate maximum packet size" msgstr "混淆最大数据包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:499 -#: htdocs/luci-static/resources/view/fchomo/node.js:724 +#: htdocs/luci-static/resources/view/fchomo/node.js:729 msgid "Obfuscate minimum packet size" msgstr "混淆最小数据包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:491 -#: htdocs/luci-static/resources/view/fchomo/node.js:716 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 msgid "Obfuscate password" msgstr "混淆密码" #: htdocs/luci-static/resources/fchomo/listeners.js:291 #: htdocs/luci-static/resources/fchomo/listeners.js:484 #: htdocs/luci-static/resources/view/fchomo/node.js:412 -#: htdocs/luci-static/resources/view/fchomo/node.js:709 +#: htdocs/luci-static/resources/view/fchomo/node.js:714 msgid "Obfuscate type" msgstr "混淆类型" @@ -2375,7 +2382,7 @@ msgstr "运行模式" msgid "Option is deprecated. Please use %s instead." msgstr "该选项已弃用,请使用%s作为代替。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2302 +#: htdocs/luci-static/resources/view/fchomo/node.js:2315 msgid "Other configuration items" msgstr "其他配置项" @@ -2383,8 +2390,8 @@ msgstr "其他配置项" msgid "Outbound" msgstr "出站" -#: htdocs/luci-static/resources/view/fchomo/node.js:1383 -#: htdocs/luci-static/resources/view/fchomo/node.js:2341 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 +#: htdocs/luci-static/resources/view/fchomo/node.js:2354 msgid "Override cert DNSName" msgstr "覆盖证书 DNSName" @@ -2394,11 +2401,11 @@ msgid "Override destination" msgstr "覆盖目标地址" #: htdocs/luci-static/resources/view/fchomo/client.js:1055 -#: htdocs/luci-static/resources/view/fchomo/node.js:2096 +#: htdocs/luci-static/resources/view/fchomo/node.js:2109 msgid "Override fields" msgstr "覆盖字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:628 +#: htdocs/luci-static/resources/view/fchomo/node.js:633 msgid "Override the IP address of the server that DNS response." msgstr "覆盖 DNS 回应的服务器的 IP 地址。" @@ -2414,7 +2421,7 @@ msgstr "使用嗅探到的域名覆盖连接目标。" msgid "Override the existing ECS in original request." msgstr "覆盖原始请求中已有的 ECS。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1438 +#: htdocs/luci-static/resources/view/fchomo/node.js:1451 msgid "Overrides the domain name used for HTTPS record queries." msgstr "覆盖用于 HTTPS 记录查询的域名。" @@ -2422,11 +2429,11 @@ msgstr "覆盖用于 HTTPS 记录查询的域名。" msgid "Overview" msgstr "概览" -#: htdocs/luci-static/resources/view/fchomo/node.js:1718 +#: htdocs/luci-static/resources/view/fchomo/node.js:1731 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1719 +#: htdocs/luci-static/resources/view/fchomo/node.js:1732 msgid "PUT" msgstr "" @@ -2434,7 +2441,7 @@ msgstr "" msgid "Packet encoding" msgstr "数据包编码" -#: htdocs/luci-static/resources/view/fchomo/node.js:1796 +#: htdocs/luci-static/resources/view/fchomo/node.js:1809 msgid "Padding bytes" msgstr "填充字节" @@ -2443,7 +2450,7 @@ msgid "Padding scheme" msgstr "填充方案" #: htdocs/luci-static/resources/fchomo/listeners.js:863 -#: htdocs/luci-static/resources/view/fchomo/node.js:1236 +#: htdocs/luci-static/resources/view/fchomo/node.js:1249 msgid "Paddings" msgstr "填充 (Paddings)" @@ -2452,12 +2459,12 @@ msgstr "填充 (Paddings)" #: htdocs/luci-static/resources/fchomo/listeners.js:730 #: htdocs/luci-static/resources/view/fchomo/node.js:324 #: htdocs/luci-static/resources/view/fchomo/node.js:345 -#: htdocs/luci-static/resources/view/fchomo/node.js:1161 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 msgid "Password" msgstr "密码" #: htdocs/luci-static/resources/fchomo/listeners.js:581 -#: htdocs/luci-static/resources/view/fchomo/node.js:782 +#: htdocs/luci-static/resources/view/fchomo/node.js:787 msgid "Path MTU Discovery" msgstr "路径 MTU 发现" @@ -2470,12 +2477,12 @@ msgid "Path in bundle: %s" msgstr "在捆绑包%s中的路径" #: htdocs/luci-static/resources/fchomo/listeners.js:803 -#: htdocs/luci-static/resources/view/fchomo/node.js:2160 +#: htdocs/luci-static/resources/view/fchomo/node.js:2173 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:373 msgid "Payload" msgstr "Payload" -#: htdocs/luci-static/resources/view/fchomo/node.js:923 +#: htdocs/luci-static/resources/view/fchomo/node.js:920 msgid "Peer public key" msgstr "对端公钥" @@ -2485,15 +2492,15 @@ msgid "" "it is not needed." msgstr "性能可能会略有下降,建议仅在需要时开启。" -#: htdocs/luci-static/resources/view/fchomo/node.js:950 +#: htdocs/luci-static/resources/view/fchomo/node.js:947 msgid "Periodically sends data packets to maintain connection persistence." msgstr "定期发送数据包以维持连接持久性。" -#: htdocs/luci-static/resources/view/fchomo/node.js:949 +#: htdocs/luci-static/resources/view/fchomo/node.js:946 msgid "Persistent keepalive" msgstr "持久连接" -#: htdocs/luci-static/resources/view/fchomo/node.js:822 +#: htdocs/luci-static/resources/view/fchomo/node.js:827 msgid "Physical MTU" msgstr "物理 MTU" @@ -2516,8 +2523,8 @@ msgid "" "standards." msgstr "链接格式标准请参考
%s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2133 -#: htdocs/luci-static/resources/view/fchomo/node.js:2159 +#: htdocs/luci-static/resources/view/fchomo/node.js:2146 +#: htdocs/luci-static/resources/view/fchomo/node.js:2172 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:346 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:372 msgid "" @@ -2532,13 +2539,13 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1545 #: htdocs/luci-static/resources/view/fchomo/client.js:1800 #: htdocs/luci-static/resources/view/fchomo/client.js:1852 -#: htdocs/luci-static/resources/view/fchomo/node.js:1986 +#: htdocs/luci-static/resources/view/fchomo/node.js:1999 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:155 msgid "Please type %s fields of mihomo config.
" msgstr "请输入 mihomo 配置的 %s 字段。
" #: htdocs/luci-static/resources/fchomo/listeners.js:667 -#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:1117 msgid "Plugin" msgstr "插件" @@ -2548,7 +2555,7 @@ msgid "Plugin fields" msgstr "插件字段" #: htdocs/luci-static/resources/fchomo/listeners.js:673 -#: htdocs/luci-static/resources/view/fchomo/node.js:1110 +#: htdocs/luci-static/resources/view/fchomo/node.js:1123 msgid "Plugin type" msgstr "插件类型" @@ -2560,7 +2567,7 @@ msgstr "端口" msgid "Port %s alrealy exists!" msgstr "端口 %s 已存在!" -#: htdocs/luci-static/resources/view/fchomo/node.js:703 +#: htdocs/luci-static/resources/view/fchomo/node.js:708 msgid "Port hop interval" msgstr "端口跳跃间隔" @@ -2573,19 +2580,19 @@ msgid "Ports" msgstr "端口" #: htdocs/luci-static/resources/fchomo/listeners.js:154 -#: htdocs/luci-static/resources/view/fchomo/node.js:698 +#: htdocs/luci-static/resources/view/fchomo/node.js:703 msgid "Ports pool" msgstr "端口池" #: htdocs/luci-static/resources/fchomo/listeners.js:377 #: htdocs/luci-static/resources/fchomo/listeners.js:516 #: htdocs/luci-static/resources/view/fchomo/node.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:930 +#: htdocs/luci-static/resources/view/fchomo/node.js:927 msgid "Pre-shared key" msgstr "预共享密钥" #: htdocs/luci-static/resources/fchomo/listeners.js:1001 -#: htdocs/luci-static/resources/view/fchomo/node.js:1271 +#: htdocs/luci-static/resources/view/fchomo/node.js:1284 msgid "Pre-shared key of rendezvous server" msgstr "牵线服务器的预共享密钥" @@ -2602,30 +2609,30 @@ msgid "" "Prevent ICMP loopback issues in some cases. Ping will not show real delay." msgstr "防止某些情况下的 ICMP 环回问题。Ping 不会显示实际延迟。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1507 -#: htdocs/luci-static/resources/view/fchomo/node.js:1508 +#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1521 msgid "Primary" msgstr "主要" #: htdocs/luci-static/resources/view/fchomo/global.js:760 #: htdocs/luci-static/resources/view/fchomo/global.js:777 -#: htdocs/luci-static/resources/view/fchomo/node.js:1947 -#: htdocs/luci-static/resources/view/fchomo/node.js:1954 -#: htdocs/luci-static/resources/view/fchomo/node.js:2366 -#: htdocs/luci-static/resources/view/fchomo/node.js:2373 +#: htdocs/luci-static/resources/view/fchomo/node.js:1960 +#: htdocs/luci-static/resources/view/fchomo/node.js:1967 +#: htdocs/luci-static/resources/view/fchomo/node.js:2379 +#: htdocs/luci-static/resources/view/fchomo/node.js:2386 msgid "Priority: Proxy Node > Global." msgstr "优先级: 代理节点 > 全局。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1031 +#: htdocs/luci-static/resources/view/fchomo/node.js:1028 msgid "Priv-key" msgstr "密钥" -#: htdocs/luci-static/resources/view/fchomo/node.js:1035 +#: htdocs/luci-static/resources/view/fchomo/node.js:1032 msgid "Priv-key passphrase" msgstr "密钥密码" -#: htdocs/luci-static/resources/view/fchomo/node.js:902 -#: htdocs/luci-static/resources/view/fchomo/node.js:995 +#: htdocs/luci-static/resources/view/fchomo/node.js:899 +#: htdocs/luci-static/resources/view/fchomo/node.js:992 msgid "Private key" msgstr "私钥" @@ -2633,12 +2640,12 @@ msgstr "私钥" msgid "Process matching mode" msgstr "进程匹配模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:2292 +#: htdocs/luci-static/resources/view/fchomo/node.js:2305 msgid "Programmable replacement" msgstr "可编程替换" #: htdocs/luci-static/resources/view/fchomo/global.js:708 -#: htdocs/luci-static/resources/view/fchomo/node.js:1857 +#: htdocs/luci-static/resources/view/fchomo/node.js:1870 msgid "Protocol" msgstr "协议" @@ -2653,13 +2660,13 @@ msgid "" msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。" #: htdocs/luci-static/resources/view/fchomo/client.js:1112 -#: htdocs/luci-static/resources/view/fchomo/node.js:1969 -#: htdocs/luci-static/resources/view/fchomo/node.js:1978 -#: htdocs/luci-static/resources/view/fchomo/node.js:2482 +#: htdocs/luci-static/resources/view/fchomo/node.js:1982 +#: htdocs/luci-static/resources/view/fchomo/node.js:1991 +#: htdocs/luci-static/resources/view/fchomo/node.js:2495 msgid "Provider" msgstr "供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:2166 +#: htdocs/luci-static/resources/view/fchomo/node.js:2179 msgid "Provider URL" msgstr "供应商订阅 URL" @@ -2682,19 +2689,19 @@ msgid "Proxy MAC-s" msgstr "代理 MAC 地址" #: htdocs/luci-static/resources/view/fchomo/node.js:222 -#: htdocs/luci-static/resources/view/fchomo/node.js:2481 +#: htdocs/luci-static/resources/view/fchomo/node.js:2494 msgid "Proxy Node" msgstr "代理节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:2457 -#: htdocs/luci-static/resources/view/fchomo/node.js:2466 +#: htdocs/luci-static/resources/view/fchomo/node.js:2470 +#: htdocs/luci-static/resources/view/fchomo/node.js:2479 msgid "Proxy chain" msgstr "代理链" #: htdocs/luci-static/resources/fchomo/listeners.js:614 #: htdocs/luci-static/resources/view/fchomo/client.js:813 #: htdocs/luci-static/resources/view/fchomo/client.js:1643 -#: htdocs/luci-static/resources/view/fchomo/node.js:2184 +#: htdocs/luci-static/resources/view/fchomo/node.js:2197 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:403 msgid "Proxy group" msgstr "代理组" @@ -2711,22 +2718,22 @@ msgstr "代理模式" msgid "Proxy routerself" msgstr "代理路由器自身" -#: htdocs/luci-static/resources/view/fchomo/node.js:919 +#: htdocs/luci-static/resources/view/fchomo/node.js:916 msgid "Public key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:637 -#: htdocs/luci-static/resources/view/fchomo/node.js:793 +#: htdocs/luci-static/resources/view/fchomo/node.js:642 +#: htdocs/luci-static/resources/view/fchomo/node.js:798 msgid "QUIC" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:552 -#: htdocs/luci-static/resources/view/fchomo/node.js:746 +#: htdocs/luci-static/resources/view/fchomo/node.js:751 msgid "QUIC based 0-RTT" msgstr "基于 QUIC 的 0-RTT" #: htdocs/luci-static/resources/fchomo/listeners.js:546 -#: htdocs/luci-static/resources/view/fchomo/node.js:735 +#: htdocs/luci-static/resources/view/fchomo/node.js:740 msgid "QUIC versions" msgstr "QUIC 版本" @@ -2737,11 +2744,11 @@ msgstr "快速重载" #: htdocs/luci-static/resources/fchomo/listeners.js:1123 #: htdocs/luci-static/resources/fchomo/listeners.js:1229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1452 +#: htdocs/luci-static/resources/view/fchomo/node.js:1465 msgid "REALITY" msgstr "REALITY" -#: htdocs/luci-static/resources/view/fchomo/node.js:1478 +#: htdocs/luci-static/resources/view/fchomo/node.js:1491 msgid "REALITY X25519MLKEM768 PQC support" msgstr "REALITY X25519MLKEM768 后量子加密支持" @@ -2758,12 +2765,12 @@ msgid "REALITY private key" msgstr "REALITY 私钥" #: htdocs/luci-static/resources/fchomo/listeners.js:1267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1468 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "REALITY public key" msgstr "REALITY 公钥" #: htdocs/luci-static/resources/fchomo/listeners.js:1271 -#: htdocs/luci-static/resources/view/fchomo/node.js:1473 +#: htdocs/luci-static/resources/view/fchomo/node.js:1486 msgid "REALITY short ID" msgstr "REALITY 标识符" @@ -2775,7 +2782,7 @@ msgstr "REMATCH-NAME 打标" #: htdocs/luci-static/resources/fchomo/listeners.js:834 #: htdocs/luci-static/resources/fchomo/listeners.js:853 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 +#: htdocs/luci-static/resources/view/fchomo/node.js:1239 msgid "RTT" msgstr "" @@ -2792,12 +2799,12 @@ msgid "Randomized traffic characteristics" msgstr "随机化流量特征" #: htdocs/luci-static/resources/fchomo/listeners.js:990 -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1273 msgid "Realm" msgstr "Realm" #: htdocs/luci-static/resources/fchomo/listeners.js:1006 -#: htdocs/luci-static/resources/view/fchomo/node.js:1276 +#: htdocs/luci-static/resources/view/fchomo/node.js:1289 msgid "Realm ID" msgstr "Realm ID" @@ -2821,7 +2828,7 @@ msgstr "Redirect TCP + TProxy UDP" msgid "Redirect TCP + Tun UDP" msgstr "Redirect TCP + Tun UDP" -#: htdocs/luci-static/resources/view/fchomo/node.js:830 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 msgid "Reduces background traffic and network configuration refresh frequency." msgstr "降低后台流量和网络配置刷新频率。" @@ -2848,20 +2855,20 @@ msgstr "再路由" msgid "Rematching routing rules" msgstr "重新匹配路由规则" -#: htdocs/luci-static/resources/view/fchomo/node.js:2111 +#: htdocs/luci-static/resources/view/fchomo/node.js:2124 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:287 msgid "Remote" msgstr "远程" -#: htdocs/luci-static/resources/view/fchomo/node.js:1645 +#: htdocs/luci-static/resources/view/fchomo/node.js:1658 msgid "Remote DNS resolve" msgstr "远程 DNS 解析" -#: htdocs/luci-static/resources/view/fchomo/node.js:813 +#: htdocs/luci-static/resources/view/fchomo/node.js:818 msgid "Remote trace level" msgstr "远程跟踪级别" -#: htdocs/luci-static/resources/view/fchomo/node.js:806 +#: htdocs/luci-static/resources/view/fchomo/node.js:811 msgid "Remote trace target" msgstr "远程跟踪目标" @@ -2872,23 +2879,23 @@ msgstr "移除" #: htdocs/luci-static/resources/fchomo.js:1741 #: htdocs/luci-static/resources/view/fchomo/node.js:241 #: htdocs/luci-static/resources/view/fchomo/node.js:243 -#: htdocs/luci-static/resources/view/fchomo/node.js:2087 -#: htdocs/luci-static/resources/view/fchomo/node.js:2089 +#: htdocs/luci-static/resources/view/fchomo/node.js:2100 +#: htdocs/luci-static/resources/view/fchomo/node.js:2102 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "Remove idles" msgstr "移除闲置" #: htdocs/luci-static/resources/fchomo/listeners.js:995 -#: htdocs/luci-static/resources/view/fchomo/node.js:1265 +#: htdocs/luci-static/resources/view/fchomo/node.js:1278 msgid "Rendezvous server" msgstr "牵线服务器" -#: htdocs/luci-static/resources/view/fchomo/node.js:2283 +#: htdocs/luci-static/resources/view/fchomo/node.js:2296 msgid "Replace name" msgstr "名称替换" -#: htdocs/luci-static/resources/view/fchomo/node.js:2284 +#: htdocs/luci-static/resources/view/fchomo/node.js:2297 msgid "Replace node name." msgstr "替换节点名称" @@ -2897,12 +2904,12 @@ msgid "Request" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1329 -#: htdocs/luci-static/resources/view/fchomo/node.js:1725 -#: htdocs/luci-static/resources/view/fchomo/node.js:1732 +#: htdocs/luci-static/resources/view/fchomo/node.js:1738 +#: htdocs/luci-static/resources/view/fchomo/node.js:1745 msgid "Request path" msgstr "请求路径" -#: htdocs/luci-static/resources/view/fchomo/node.js:677 +#: htdocs/luci-static/resources/view/fchomo/node.js:682 msgid "Request timeout" msgstr "请求超时" @@ -2915,11 +2922,11 @@ msgid "Require any" msgstr "" #: htdocs/luci-static/resources/fchomo.js:408 -#: htdocs/luci-static/resources/view/fchomo/node.js:1479 +#: htdocs/luci-static/resources/view/fchomo/node.js:1492 msgid "Requires server support." msgstr "需要服务器支持。" -#: htdocs/luci-static/resources/view/fchomo/node.js:944 +#: htdocs/luci-static/resources/view/fchomo/node.js:941 msgid "Reserved field bytes" msgstr "保留字段字节" @@ -2932,15 +2939,15 @@ msgstr "资源管理" #: htdocs/luci-static/resources/fchomo/listeners.js:691 #: htdocs/luci-static/resources/fchomo/listeners.js:1121 #: htdocs/luci-static/resources/fchomo/listeners.js:1237 -#: htdocs/luci-static/resources/view/fchomo/node.js:1115 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1460 +#: htdocs/luci-static/resources/view/fchomo/node.js:1128 +#: htdocs/luci-static/resources/view/fchomo/node.js:1138 +#: htdocs/luci-static/resources/view/fchomo/node.js:1143 +#: htdocs/luci-static/resources/view/fchomo/node.js:1473 msgid "Restls" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:745 -#: htdocs/luci-static/resources/view/fchomo/node.js:1184 +#: htdocs/luci-static/resources/view/fchomo/node.js:1197 msgid "Restls script" msgstr "Restls 剧本" @@ -2978,8 +2985,8 @@ msgstr "路由 GFW 流量" #: htdocs/luci-static/resources/fchomo/listeners.js:597 #: htdocs/luci-static/resources/view/fchomo/global.js:776 -#: htdocs/luci-static/resources/view/fchomo/node.js:1953 -#: htdocs/luci-static/resources/view/fchomo/node.js:2372 +#: htdocs/luci-static/resources/view/fchomo/node.js:1966 +#: htdocs/luci-static/resources/view/fchomo/node.js:2385 msgid "Routing mark (Fwmark)" msgstr "路由标记 (Fwmark)" @@ -3027,7 +3034,7 @@ msgstr "规则集" msgid "Rule set URL" msgstr "规则集订阅 URL" -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 msgid "Rules" msgstr "规则" @@ -3064,7 +3071,7 @@ msgid "STUN" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1012 -#: htdocs/luci-static/resources/view/fchomo/node.js:1282 +#: htdocs/luci-static/resources/view/fchomo/node.js:1295 msgid "STUN servers" msgstr "STUN 服务器" @@ -3072,12 +3079,12 @@ msgstr "STUN 服务器" msgid "SUB-RULE" msgstr "SUB-RULE" -#: htdocs/luci-static/resources/view/fchomo/node.js:1096 +#: htdocs/luci-static/resources/view/fchomo/node.js:1109 msgid "SUoT version" msgstr "SUoT 版本" #: htdocs/luci-static/resources/fchomo/listeners.js:486 -#: htdocs/luci-static/resources/view/fchomo/node.js:711 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Salamander" msgstr "Salamander" @@ -3094,8 +3101,8 @@ msgstr "相同 来源地址 和 目标地址 请求。相同节点" msgid "Save" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1537 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 +#: htdocs/luci-static/resources/view/fchomo/node.js:1551 msgid "Secondary" msgstr "次要" @@ -3137,11 +3144,15 @@ msgid "Server address" msgstr "服务器地址" #: htdocs/luci-static/resources/fchomo/listeners.js:1323 -#: htdocs/luci-static/resources/view/fchomo/node.js:1704 -#: htdocs/luci-static/resources/view/fchomo/node.js:1710 +#: htdocs/luci-static/resources/view/fchomo/node.js:1717 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 msgid "Server hostname" msgstr "服务器主机名称" +#: htdocs/luci-static/resources/view/fchomo/node.js:1000 +msgid "Server public key" +msgstr "服务器公钥" + #: htdocs/luci-static/resources/view/fchomo/global.js:184 msgid "Server status" msgstr "服务端状态" @@ -3160,10 +3171,10 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:690 #: htdocs/luci-static/resources/fchomo/listeners.js:1120 #: htdocs/luci-static/resources/fchomo/listeners.js:1236 -#: htdocs/luci-static/resources/view/fchomo/node.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1129 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1127 +#: htdocs/luci-static/resources/view/fchomo/node.js:1137 +#: htdocs/luci-static/resources/view/fchomo/node.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1472 msgid "ShadowTLS" msgstr "" @@ -3187,7 +3198,7 @@ msgstr "Shadowsocks 加密" msgid "Shadowsocks password" msgstr "Shadowsocks 密码" -#: htdocs/luci-static/resources/view/fchomo/node.js:1905 +#: htdocs/luci-static/resources/view/fchomo/node.js:1918 msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中显示连接以便于打断连接。" @@ -3199,14 +3210,14 @@ msgstr "静音" msgid "Simple round-robin all nodes" msgstr "简单轮替所有节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:2172 +#: htdocs/luci-static/resources/view/fchomo/node.js:2185 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:391 msgid "Size limit" msgstr "大小限制" #: htdocs/luci-static/resources/view/fchomo/client.js:1679 -#: htdocs/luci-static/resources/view/fchomo/node.js:1389 -#: htdocs/luci-static/resources/view/fchomo/node.js:2347 +#: htdocs/luci-static/resources/view/fchomo/node.js:1402 +#: htdocs/luci-static/resources/view/fchomo/node.js:2360 msgid "Skip cert verify" msgstr "跳过证书验证" @@ -3272,7 +3283,7 @@ msgid "Strategy" msgstr "策略" #: htdocs/luci-static/resources/fchomo/listeners.js:569 -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:775 msgid "Stream-level receive window size" msgstr "流级接收窗口大小" @@ -3304,7 +3315,7 @@ msgstr "已成功上传。" msgid "Sudoku" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:741 msgid "Support %s, default %s." msgstr "支持 %s,默认 %s。" @@ -3349,7 +3360,7 @@ msgstr "TCP" msgid "TCP concurrency" msgstr "TCP 并发" -#: htdocs/luci-static/resources/view/fchomo/node.js:1898 +#: htdocs/luci-static/resources/view/fchomo/node.js:1911 msgid "TCP only" msgstr "仅 TCP" @@ -3376,8 +3387,8 @@ msgstr "TCP-Keep-Alive 间隔" msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1929 -#: htdocs/luci-static/resources/view/fchomo/node.js:2308 +#: htdocs/luci-static/resources/view/fchomo/node.js:1942 +#: htdocs/luci-static/resources/view/fchomo/node.js:2321 msgid "TFO" msgstr "TCP 快速打开 (TFO)" @@ -3385,17 +3396,17 @@ msgstr "TCP 快速打开 (TFO)" #: htdocs/luci-static/resources/fchomo/listeners.js:1022 #: htdocs/luci-static/resources/view/fchomo/global.js:550 #: htdocs/luci-static/resources/view/fchomo/node.js:469 -#: htdocs/luci-static/resources/view/fchomo/node.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1292 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 +#: htdocs/luci-static/resources/view/fchomo/node.js:1305 msgid "TLS" msgstr "TLS" #: htdocs/luci-static/resources/fchomo/listeners.js:1063 -#: htdocs/luci-static/resources/view/fchomo/node.js:1323 +#: htdocs/luci-static/resources/view/fchomo/node.js:1336 msgid "TLS ALPN" msgstr "TLS ALPN" -#: htdocs/luci-static/resources/view/fchomo/node.js:1317 +#: htdocs/luci-static/resources/view/fchomo/node.js:1330 msgid "TLS SNI" msgstr "" @@ -3414,7 +3425,7 @@ msgid "TURN" msgstr "" #: htdocs/luci-static/resources/fchomo.js:209 -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "Tailscale" msgstr "" @@ -3427,28 +3438,28 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "让客户端使用 BBR 流控算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1578 #: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1591 #: htdocs/luci-static/resources/view/fchomo/node.js:1595 -#: htdocs/luci-static/resources/view/fchomo/node.js:1603 -#: htdocs/luci-static/resources/view/fchomo/node.js:1607 +#: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1616 +#: htdocs/luci-static/resources/view/fchomo/node.js:1620 msgid "The %s address used by local machine in the %s network." msgstr "本机 %s 地址,用于在 %s 网络中使用。" #: htdocs/luci-static/resources/fchomo/listeners.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1412 +#: htdocs/luci-static/resources/view/fchomo/node.js:1425 msgid "The %s private key, in PEM format." msgstr "%s私钥,需要 PEM 格式。" #: htdocs/luci-static/resources/fchomo/listeners.js:1112 #: htdocs/luci-static/resources/fchomo/listeners.js:1165 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1398 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 msgid "The %s public key, in PEM format." msgstr "%s公钥,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1432 +#: htdocs/luci-static/resources/view/fchomo/node.js:1445 msgid "" "The ECH parameter of the HTTPS record for the domain. Leave empty to resolve " "via DNS." @@ -3466,14 +3477,14 @@ msgstr "Sudoku 生成的 ED25519 主公钥 或 UUID。" msgid "The default value is 2:00 every day." msgstr "默认值为每天 2:00。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1078 +#: htdocs/luci-static/resources/view/fchomo/node.js:1091 msgid "" "The default value is %s, indicating that only the outer " "connection timeout is used." msgstr "默认值为%s,表示仅使用外层连接超时。" #: htdocs/luci-static/resources/fchomo/listeners.js:866 -#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1252 msgid "" "The first padding must have a probability of 100% and at least 35 bytes." msgstr "首个填充必须为 100% 的概率并且至少 35 字节。" @@ -3493,7 +3504,7 @@ msgid "The proxy used to connect to the handshake target." msgstr "用于连接握手目标的代理。" #: htdocs/luci-static/resources/fchomo/listeners.js:864 -#: htdocs/luci-static/resources/view/fchomo/node.js:1237 +#: htdocs/luci-static/resources/view/fchomo/node.js:1250 msgid "The server and client can set different padding parameters." msgstr "服务器和客户端可以设置不同的填充参数。" @@ -3503,15 +3514,15 @@ msgid "This ECH parameter needs to be added to the HTTPS record of the domain." msgstr "此 ECH 参数需要添加到域名的 HTTPS 记录中。" #: htdocs/luci-static/resources/view/fchomo/client.js:1682 -#: htdocs/luci-static/resources/view/fchomo/node.js:1392 -#: htdocs/luci-static/resources/view/fchomo/node.js:2350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1405 +#: htdocs/luci-static/resources/view/fchomo/node.js:2363 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" "这是危险行为,您的流量将几乎等同于明文!使用风险自负!" -#: htdocs/luci-static/resources/view/fchomo/node.js:642 +#: htdocs/luci-static/resources/view/fchomo/node.js:647 msgid "" "This is the TUIC port of the SUoT protocol, designed to provide a QUIC " "stream based UDP relay mode that TUIC does not provide." @@ -3548,18 +3559,18 @@ msgstr "Tproxy 端口" msgid "Traffic pattern" msgstr "流量模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:2519 +#: htdocs/luci-static/resources/view/fchomo/node.js:2532 msgid "Transit proxy group" msgstr "中转代理组" -#: htdocs/luci-static/resources/view/fchomo/node.js:2530 +#: htdocs/luci-static/resources/view/fchomo/node.js:2543 msgid "Transit proxy node" msgstr "中转代理节点" #: htdocs/luci-static/resources/fchomo/listeners.js:194 #: htdocs/luci-static/resources/fchomo/listeners.js:1287 #: htdocs/luci-static/resources/view/fchomo/node.js:360 -#: htdocs/luci-static/resources/view/fchomo/node.js:1657 +#: htdocs/luci-static/resources/view/fchomo/node.js:1670 msgid "Transport" msgstr "传输层" @@ -3569,7 +3580,7 @@ msgid "Transport fields" msgstr "传输层字段" #: htdocs/luci-static/resources/fchomo/listeners.js:1292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1662 +#: htdocs/luci-static/resources/view/fchomo/node.js:1675 msgid "Transport type" msgstr "传输层类型" @@ -3611,7 +3622,7 @@ msgstr "Tun 堆栈" msgid "Tunnel" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:844 +#: htdocs/luci-static/resources/view/fchomo/node.js:849 msgid "Turns TCP relay off." msgstr "关闭 TCP 中继。" @@ -3622,8 +3633,8 @@ msgstr "关闭 TCP 中继。" #: htdocs/luci-static/resources/view/fchomo/client.js:875 #: htdocs/luci-static/resources/view/fchomo/client.js:1073 #: htdocs/luci-static/resources/view/fchomo/node.js:268 -#: htdocs/luci-static/resources/view/fchomo/node.js:2109 -#: htdocs/luci-static/resources/view/fchomo/node.js:2480 +#: htdocs/luci-static/resources/view/fchomo/node.js:2122 +#: htdocs/luci-static/resources/view/fchomo/node.js:2493 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:285 msgid "Type" msgstr "类型" @@ -3642,8 +3653,8 @@ msgstr "类型" #: htdocs/luci-static/resources/fchomo/listeners.js:661 #: htdocs/luci-static/resources/view/fchomo/client.js:617 #: htdocs/luci-static/resources/view/fchomo/client.js:709 -#: htdocs/luci-static/resources/view/fchomo/node.js:1084 -#: htdocs/luci-static/resources/view/fchomo/node.js:2318 +#: htdocs/luci-static/resources/view/fchomo/node.js:1097 +#: htdocs/luci-static/resources/view/fchomo/node.js:2331 msgid "UDP" msgstr "UDP" @@ -3651,20 +3662,20 @@ msgstr "UDP" msgid "UDP NAT expiration time" msgstr "UDP NAT 过期时间" -#: htdocs/luci-static/resources/view/fchomo/node.js:641 -#: htdocs/luci-static/resources/view/fchomo/node.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:646 +#: htdocs/luci-static/resources/view/fchomo/node.js:746 msgid "UDP over stream" msgstr "UDP over stream" -#: htdocs/luci-static/resources/view/fchomo/node.js:647 +#: htdocs/luci-static/resources/view/fchomo/node.js:652 msgid "UDP over stream version" msgstr "UDP over stream 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:634 +#: htdocs/luci-static/resources/view/fchomo/node.js:639 msgid "UDP packet relay mode." msgstr "UDP 包中继模式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:638 msgid "UDP relay mode" msgstr "UDP 中继模式" @@ -3683,7 +3694,7 @@ msgstr "自动选择" #: htdocs/luci-static/resources/fchomo/listeners.js:395 #: htdocs/luci-static/resources/fchomo/listeners.js:445 #: htdocs/luci-static/resources/view/fchomo/node.js:527 -#: htdocs/luci-static/resources/view/fchomo/node.js:621 +#: htdocs/luci-static/resources/view/fchomo/node.js:626 msgid "UUID" msgstr "UUID" @@ -3712,8 +3723,8 @@ msgstr "未知错误。" msgid "Unknown error: %s" msgstr "未知错误:%s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1090 -#: htdocs/luci-static/resources/view/fchomo/node.js:2323 +#: htdocs/luci-static/resources/view/fchomo/node.js:1103 +#: htdocs/luci-static/resources/view/fchomo/node.js:2336 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -3721,24 +3732,24 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失败。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2178 +#: htdocs/luci-static/resources/view/fchomo/node.js:2191 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:397 msgid "Update interval" msgstr "更新间隔" #: htdocs/luci-static/resources/fchomo/listeners.js:1389 -#: htdocs/luci-static/resources/view/fchomo/node.js:1916 +#: htdocs/luci-static/resources/view/fchomo/node.js:1929 msgid "Upload bandwidth" msgstr "上传带宽" #: htdocs/luci-static/resources/fchomo/listeners.js:1390 -#: htdocs/luci-static/resources/view/fchomo/node.js:1917 +#: htdocs/luci-static/resources/view/fchomo/node.js:1930 msgid "Upload bandwidth in Mbps." msgstr "上传带宽(单位:Mbps)。" #: htdocs/luci-static/resources/fchomo/listeners.js:1133 #: htdocs/luci-static/resources/fchomo/listeners.js:1173 -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 msgid "Upload certificate" msgstr "上传证书" @@ -3747,7 +3758,7 @@ msgid "Upload initial package" msgstr "上传初始资源包" #: htdocs/luci-static/resources/fchomo/listeners.js:1148 -#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1430 msgid "Upload key" msgstr "上传密钥" @@ -3755,12 +3766,12 @@ msgstr "上传密钥" #: htdocs/luci-static/resources/fchomo/listeners.js:1151 #: htdocs/luci-static/resources/fchomo/listeners.js:1176 #: htdocs/luci-static/resources/view/fchomo/global.js:306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1406 -#: htdocs/luci-static/resources/view/fchomo/node.js:1420 +#: htdocs/luci-static/resources/view/fchomo/node.js:1419 +#: htdocs/luci-static/resources/view/fchomo/node.js:1433 msgid "Upload..." msgstr "上传..." -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:841 msgid "Use protocol-13 extended encryption for outgoing HELLO packets." msgstr "对传出的 HELLO 数据包使用 协议-13 扩展加密。" @@ -3770,7 +3781,7 @@ msgstr "对传出的 HELLO 数据包使用 协议-13 扩展加密。" msgid "Use sub rule" msgstr "使用子规则" -#: htdocs/luci-static/resources/view/fchomo/node.js:855 +#: htdocs/luci-static/resources/view/fchomo/node.js:860 msgid "Used to replace the built-in official %s." msgstr "用于替换内置的官方 %s。" @@ -3794,8 +3805,8 @@ msgstr "用于解析 DNS 服务器的域名。必须是 IP。" msgid "Used to resolve the domain of the Proxy node." msgstr "用于解析代理节点的域名。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1384 -#: htdocs/luci-static/resources/view/fchomo/node.js:2342 +#: htdocs/luci-static/resources/view/fchomo/node.js:1397 +#: htdocs/luci-static/resources/view/fchomo/node.js:2355 msgid "Used to verify the hostname on the returned certificates." msgstr "用于验证返回的证书上的主机名。" @@ -3810,7 +3821,7 @@ msgstr "User-hint 是必填项" #: htdocs/luci-static/resources/fchomo/listeners.js:162 #: htdocs/luci-static/resources/fchomo/listeners.js:723 #: htdocs/luci-static/resources/view/fchomo/node.js:319 -#: htdocs/luci-static/resources/view/fchomo/node.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1167 msgid "Username" msgstr "用户名" @@ -3818,19 +3829,19 @@ msgstr "用户名" msgid "Users filter mode" msgstr "使用者过滤模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:843 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Uses TCP relay only." msgstr "仅使用 TCP 中继。" -#: htdocs/luci-static/resources/view/fchomo/node.js:842 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 msgid "Uses relay after UDP direct failure." msgstr "UDP 直连失败后使用中继。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1773 +#: htdocs/luci-static/resources/view/fchomo/node.js:1786 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1778 +#: htdocs/luci-static/resources/view/fchomo/node.js:1791 msgid "V2ray HTTPUpgrade fast open" msgstr "" @@ -3844,8 +3855,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 +#: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1608 msgid "VPN" msgstr "" @@ -3853,17 +3864,17 @@ msgstr "" msgid "VPN fields" msgstr "VPN 字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:886 +#: htdocs/luci-static/resources/view/fchomo/node.js:891 msgid "Valid 16-digit Moon World ID and 10-digit Node ID of Moon Root server." msgstr "有效的 16-位数 Moon World ID 和 10-位数 Moon Root 服务器 Node ID。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2115 -#: htdocs/luci-static/resources/view/fchomo/node.js:2486 +#: htdocs/luci-static/resources/view/fchomo/node.js:2128 +#: htdocs/luci-static/resources/view/fchomo/node.js:2499 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:328 msgid "Value" msgstr "可视化值" -#: htdocs/luci-static/resources/view/fchomo/node.js:815 +#: htdocs/luci-static/resources/view/fchomo/node.js:820 msgid "Verbose" msgstr "详细" @@ -3874,19 +3885,19 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:384 #: htdocs/luci-static/resources/fchomo/listeners.js:737 #: htdocs/luci-static/resources/view/fchomo/node.js:511 -#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1181 msgid "Version" msgstr "版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:1176 +#: htdocs/luci-static/resources/view/fchomo/node.js:1189 msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1594 +#: htdocs/luci-static/resources/view/fchomo/node.js:1607 msgid "Virtual IPv6 address" msgstr "虚拟 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1568 +#: htdocs/luci-static/resources/view/fchomo/node.js:1581 msgid "Virtual address" msgstr "虚拟地址" @@ -3909,10 +3920,10 @@ msgstr "警告" #: htdocs/luci-static/resources/fchomo/listeners.js:1312 #: htdocs/luci-static/resources/view/fchomo/node.js:465 #: htdocs/luci-static/resources/view/fchomo/node.js:494 -#: htdocs/luci-static/resources/view/fchomo/node.js:1667 #: htdocs/luci-static/resources/view/fchomo/node.js:1680 -#: htdocs/luci-static/resources/view/fchomo/node.js:1687 #: htdocs/luci-static/resources/view/fchomo/node.js:1693 +#: htdocs/luci-static/resources/view/fchomo/node.js:1700 +#: htdocs/luci-static/resources/view/fchomo/node.js:1706 msgid "WebSocket" msgstr "" @@ -3920,7 +3931,7 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "用作服务端时,HomeProxy 是更好的选择。" -#: htdocs/luci-static/resources/view/fchomo/node.js:978 +#: htdocs/luci-static/resources/view/fchomo/node.js:975 msgid "Whether to accept routes advertised by other nodes." msgstr "是否接受其他节点发布的路由。" @@ -3932,45 +3943,45 @@ msgstr "白名单" msgid "WireGuard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:924 +#: htdocs/luci-static/resources/view/fchomo/node.js:921 msgid "WireGuard peer public key." msgstr "WireGuard 对端公钥。" -#: htdocs/luci-static/resources/view/fchomo/node.js:931 +#: htdocs/luci-static/resources/view/fchomo/node.js:928 msgid "WireGuard pre-shared key." msgstr "WireGuard 预共享密钥。" -#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:900 msgid "WireGuard requires base64-encoded private keys." msgstr "WireGuard 要求 base64 编码的私钥。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 +#: htdocs/luci-static/resources/view/fchomo/node.js:1592 +#: htdocs/luci-static/resources/view/fchomo/node.js:1617 msgid "Wireguard" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1295 #: htdocs/luci-static/resources/fchomo/listeners.js:1306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1668 -#: htdocs/luci-static/resources/view/fchomo/node.js:1688 +#: htdocs/luci-static/resources/view/fchomo/node.js:1681 +#: htdocs/luci-static/resources/view/fchomo/node.js:1701 msgid "XHTTP" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1342 -#: htdocs/luci-static/resources/view/fchomo/node.js:1783 +#: htdocs/luci-static/resources/view/fchomo/node.js:1796 msgid "XHTTP mode" msgstr "XHTTP 模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1814 +#: htdocs/luci-static/resources/view/fchomo/node.js:1827 msgid "XMUX" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1819 -#: htdocs/luci-static/resources/view/fchomo/node.js:1824 -#: htdocs/luci-static/resources/view/fchomo/node.js:1829 -#: htdocs/luci-static/resources/view/fchomo/node.js:1834 -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1832 +#: htdocs/luci-static/resources/view/fchomo/node.js:1837 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 +#: htdocs/luci-static/resources/view/fchomo/node.js:1847 +#: htdocs/luci-static/resources/view/fchomo/node.js:1852 +#: htdocs/luci-static/resources/view/fchomo/node.js:1857 msgid "XMUX:" msgstr "" @@ -3986,7 +3997,7 @@ msgstr "" msgid "Yaml text" msgstr "Yaml 格式文本" -#: htdocs/luci-static/resources/view/fchomo/node.js:2353 +#: htdocs/luci-static/resources/view/fchomo/node.js:2366 msgid "Yes" msgstr "" @@ -4002,7 +4013,7 @@ msgstr "您的 %s 已成功上传。大小:%sB。" msgid "ZeroTier" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:823 +#: htdocs/luci-static/resources/view/fchomo/node.js:828 msgid "ZeroTier UDP payload MTU." msgstr "ZeroTier UDP 有效载荷 MTU。" @@ -4022,11 +4033,11 @@ msgstr "" msgid "aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2200 +#: htdocs/luci-static/resources/view/fchomo/node.js:2213 msgid "age private key" msgstr "age 私钥" -#: htdocs/luci-static/resources/view/fchomo/node.js:2261 +#: htdocs/luci-static/resources/view/fchomo/node.js:2274 msgid "age public key" msgstr "age 公钥" @@ -4043,12 +4054,17 @@ msgid "auto" msgstr "自动" #: htdocs/luci-static/resources/fchomo.js:56 +#: htdocs/luci-static/resources/view/fchomo/node.js:1060 msgid "bbr" msgstr "bbr" +#: htdocs/luci-static/resources/view/fchomo/node.js:1061 +msgid "bbr3" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:1138 #: htdocs/luci-static/resources/fchomo/listeners.js:1178 -#: htdocs/luci-static/resources/view/fchomo/node.js:1408 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "certificate" msgstr "证书" @@ -4063,6 +4079,7 @@ msgid "chacha20-poly1305" msgstr "" #: htdocs/luci-static/resources/fchomo.js:54 +#: htdocs/luci-static/resources/view/fchomo/node.js:1058 msgid "cubic" msgstr "cubic" @@ -4075,13 +4092,13 @@ msgstr "decryption" msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "dnsmasq 自行选择上游服务器。 (可能影响 CDN 准确性)" -#: htdocs/luci-static/resources/view/fchomo/node.js:2335 +#: htdocs/luci-static/resources/view/fchomo/node.js:2348 msgid "down" msgstr "Hysteria 下载速率" #: htdocs/luci-static/resources/fchomo/listeners.js:812 -#: htdocs/luci-static/resources/view/fchomo/node.js:1191 -#: htdocs/luci-static/resources/view/fchomo/node.js:1214 +#: htdocs/luci-static/resources/view/fchomo/node.js:1204 +#: htdocs/luci-static/resources/view/fchomo/node.js:1227 msgid "encryption" msgstr "encryption" @@ -4093,44 +4110,44 @@ msgstr "false = 带宽优化下行 true = 纯 Sudoku 下行。" #: htdocs/luci-static/resources/fchomo/listeners.js:1293 #: htdocs/luci-static/resources/fchomo/listeners.js:1304 #: htdocs/luci-static/resources/fchomo/listeners.js:1311 -#: htdocs/luci-static/resources/view/fchomo/node.js:1666 #: htdocs/luci-static/resources/view/fchomo/node.js:1679 -#: htdocs/luci-static/resources/view/fchomo/node.js:1686 #: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1699 +#: htdocs/luci-static/resources/view/fchomo/node.js:1705 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1749 +#: htdocs/luci-static/resources/view/fchomo/node.js:1762 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1754 +#: htdocs/luci-static/resources/view/fchomo/node.js:1767 msgid "gRPC ping interval" msgstr "gRPC ping 间隔" #: htdocs/luci-static/resources/fchomo/listeners.js:1336 -#: htdocs/luci-static/resources/view/fchomo/node.js:1745 +#: htdocs/luci-static/resources/view/fchomo/node.js:1758 msgid "gRPC service name" msgstr "gRPC 服务名称" #: htdocs/luci-static/resources/view/fchomo/global.js:517 -#: htdocs/luci-static/resources/view/fchomo/node.js:896 +#: htdocs/luci-static/resources/view/fchomo/node.js:1051 msgid "gVisor" msgstr "gVisor" -#: htdocs/luci-static/resources/view/fchomo/node.js:1014 +#: htdocs/luci-static/resources/view/fchomo/node.js:1011 msgid "h2" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1861 +#: htdocs/luci-static/resources/view/fchomo/node.js:1874 msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1012 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "h3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1013 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "h3-l4proxy" msgstr "" @@ -4142,7 +4159,7 @@ msgstr "至少需要一对密钥" msgid "metacubexd" msgstr "metacubexd" -#: htdocs/luci-static/resources/view/fchomo/node.js:897 +#: htdocs/luci-static/resources/view/fchomo/node.js:1052 msgid "mihomo IP stack (MIPS)" msgstr "mihomo IP 协议栈(MIPS)" @@ -4152,7 +4169,7 @@ msgstr "mihomo IP 协议栈(MIPS)" #: htdocs/luci-static/resources/view/fchomo/client.js:1580 #: htdocs/luci-static/resources/view/fchomo/client.js:1814 #: htdocs/luci-static/resources/view/fchomo/client.js:1870 -#: htdocs/luci-static/resources/view/fchomo/node.js:2081 +#: htdocs/luci-static/resources/view/fchomo/node.js:2094 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:247 msgid "mihomo config" msgstr "mihomo 配置" @@ -4161,8 +4178,8 @@ msgstr "mihomo 配置" msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1934 -#: htdocs/luci-static/resources/view/fchomo/node.js:2313 +#: htdocs/luci-static/resources/view/fchomo/node.js:1947 +#: htdocs/luci-static/resources/view/fchomo/node.js:2326 msgid "mpTCP" msgstr "多路径 TCP (mpTCP)" @@ -4206,8 +4223,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:674 #: htdocs/luci-static/resources/fchomo/listeners.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1111 -#: htdocs/luci-static/resources/view/fchomo/node.js:1123 +#: htdocs/luci-static/resources/view/fchomo/node.js:1124 +#: htdocs/luci-static/resources/view/fchomo/node.js:1136 msgid "obfs-simple" msgstr "" @@ -4219,11 +4236,11 @@ msgstr "仅当 %s 为 %s 时适用。" msgid "only applies when %s is not %s." msgstr "仅当 %s 不为 %s 时适用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2294 +#: htdocs/luci-static/resources/view/fchomo/node.js:2307 msgid "override.override-expr" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2286 +#: htdocs/luci-static/resources/view/fchomo/node.js:2299 msgid "override.proxy-name" msgstr "" @@ -4232,7 +4249,7 @@ msgid "packet addr (v2ray-core v5+)" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1346 -#: htdocs/luci-static/resources/view/fchomo/node.js:1787 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 msgid "packet-up" msgstr "" @@ -4242,7 +4259,7 @@ msgid "poll" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1153 -#: htdocs/luci-static/resources/view/fchomo/node.js:1422 +#: htdocs/luci-static/resources/view/fchomo/node.js:1435 msgid "private key" msgstr "私钥" @@ -4250,6 +4267,10 @@ msgstr "私钥" msgid "razord-meta" msgstr "razord-meta" +#: htdocs/luci-static/resources/view/fchomo/node.js:1059 +msgid "reno" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/client.js:1267 #: htdocs/luci-static/resources/view/fchomo/client.js:1273 msgid "requires front-end adaptation using the API." @@ -4259,7 +4280,7 @@ msgstr "需要使用 API 的前端适配。" msgid "rule-set" msgstr "规则集" -#: htdocs/luci-static/resources/view/fchomo/node.js:1859 +#: htdocs/luci-static/resources/view/fchomo/node.js:1872 msgid "smux" msgstr "" @@ -4273,12 +4294,12 @@ msgid "src" msgstr "src" #: htdocs/luci-static/resources/fchomo/listeners.js:1344 -#: htdocs/luci-static/resources/view/fchomo/node.js:1785 +#: htdocs/luci-static/resources/view/fchomo/node.js:1798 msgid "stream-one" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1345 -#: htdocs/luci-static/resources/view/fchomo/node.js:1786 +#: htdocs/luci-static/resources/view/fchomo/node.js:1799 msgid "stream-up" msgstr "" @@ -4294,11 +4315,11 @@ msgstr "" msgid "sudoku-keypair" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1178 +#: htdocs/luci-static/resources/view/fchomo/node.js:1191 msgid "tls12" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1179 +#: htdocs/luci-static/resources/view/fchomo/node.js:1192 msgid "tls13" msgstr "" @@ -4318,31 +4339,31 @@ msgstr "独立标识" msgid "unique value" msgstr "独立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:2329 +#: htdocs/luci-static/resources/view/fchomo/node.js:2342 msgid "up" msgstr "Hysteria 上传速率" #: htdocs/luci-static/resources/fchomo/listeners.js:385 #: htdocs/luci-static/resources/fchomo/listeners.js:738 #: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:648 -#: htdocs/luci-static/resources/view/fchomo/node.js:1097 -#: htdocs/luci-static/resources/view/fchomo/node.js:1169 +#: htdocs/luci-static/resources/view/fchomo/node.js:653 +#: htdocs/luci-static/resources/view/fchomo/node.js:1110 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "v1" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:386 #: htdocs/luci-static/resources/fchomo/listeners.js:739 #: htdocs/luci-static/resources/view/fchomo/node.js:513 -#: htdocs/luci-static/resources/view/fchomo/node.js:1098 -#: htdocs/luci-static/resources/view/fchomo/node.js:1170 +#: htdocs/luci-static/resources/view/fchomo/node.js:1111 +#: htdocs/luci-static/resources/view/fchomo/node.js:1183 msgid "v2" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:387 #: htdocs/luci-static/resources/fchomo/listeners.js:740 #: htdocs/luci-static/resources/view/fchomo/node.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:1171 +#: htdocs/luci-static/resources/view/fchomo/node.js:1184 msgid "v3" msgstr "" @@ -4361,7 +4382,7 @@ msgstr "" msgid "valid JSON format" msgstr "有效的 JSON 格式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 +#: htdocs/luci-static/resources/view/fchomo/node.js:1389 msgid "valid SHA256 string with %d characters" msgstr "包含 %d 个字符的有效 SHA256 字符串" @@ -4411,7 +4432,7 @@ msgstr "" msgid "yacd-meta" msgstr "yacd-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:1860 +#: htdocs/luci-static/resources/view/fchomo/node.js:1873 msgid "yamux" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hant/fchomo.po b/luci-app-fchomo/po/zh_Hant/fchomo.po index ca00a525..2ebbd85e 100644 --- a/luci-app-fchomo/po/zh_Hant/fchomo.po +++ b/luci-app-fchomo/po/zh_Hant/fchomo.po @@ -8,12 +8,12 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "%s Hostname" msgstr "%s 主機名稱" -#: htdocs/luci-static/resources/view/fchomo/node.js:1508 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1521 +#: htdocs/luci-static/resources/view/fchomo/node.js:1551 msgid "%s UDP port. 0 selects an available port." msgstr "%s UDP 連接埠。 0 自動選擇一個可用連接埠。" @@ -21,7 +21,7 @@ msgstr "%s UDP 連接埠。 0 自動選擇一個可用連接埠。" msgid "%s log" msgstr "%s 日誌" -#: htdocs/luci-static/resources/view/fchomo/node.js:807 +#: htdocs/luci-static/resources/view/fchomo/node.js:812 msgid "%s of the %s used to receiving remote debugging log." msgstr "%s,用於接收遠端偵錯日誌的 %s 的。" @@ -45,10 +45,10 @@ msgstr "(已導入)" #: htdocs/luci-static/resources/fchomo/listeners.js:1173 #: htdocs/luci-static/resources/view/fchomo/global.js:564 #: htdocs/luci-static/resources/view/fchomo/global.js:570 -#: htdocs/luci-static/resources/view/fchomo/node.js:1397 -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 -#: htdocs/luci-static/resources/view/fchomo/node.js:1411 -#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1410 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1424 +#: htdocs/luci-static/resources/view/fchomo/node.js:1430 msgid "(mTLS)" msgstr "" @@ -75,10 +75,10 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1117 #: htdocs/luci-static/resources/view/fchomo/client.js:1373 #: htdocs/luci-static/resources/view/fchomo/node.js:302 -#: htdocs/luci-static/resources/view/fchomo/node.js:2492 -#: htdocs/luci-static/resources/view/fchomo/node.js:2503 -#: htdocs/luci-static/resources/view/fchomo/node.js:2522 -#: htdocs/luci-static/resources/view/fchomo/node.js:2533 +#: htdocs/luci-static/resources/view/fchomo/node.js:2505 +#: htdocs/luci-static/resources/view/fchomo/node.js:2516 +#: htdocs/luci-static/resources/view/fchomo/node.js:2535 +#: htdocs/luci-static/resources/view/fchomo/node.js:2546 msgid "-- Please choose --" msgstr "-- 請選擇 --" @@ -119,7 +119,7 @@ msgstr "" msgid "2022-blake3-chacha20-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1539 +#: htdocs/luci-static/resources/view/fchomo/node.js:1552 msgid "-1 disables it." msgstr "-1 表示停用它。" @@ -130,8 +130,8 @@ msgstr "僅限 01。" #: htdocs/luci-static/resources/fchomo/listeners.js:1134 #: htdocs/luci-static/resources/fchomo/listeners.js:1149 #: htdocs/luci-static/resources/fchomo/listeners.js:1174 -#: htdocs/luci-static/resources/view/fchomo/node.js:1404 -#: htdocs/luci-static/resources/view/fchomo/node.js:1418 +#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1431 msgid "Save your configuration before uploading files!" msgstr "上傳文件前請先保存配置!" @@ -206,7 +206,7 @@ msgstr "ASCII 資料流" msgid "ASN version" msgstr "ASN 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:977 +#: htdocs/luci-static/resources/view/fchomo/node.js:974 msgid "Accept routes" msgstr "接受路由" @@ -235,11 +235,11 @@ msgstr "新增 節點" msgid "Add a inbound" msgstr "新增 入站" -#: htdocs/luci-static/resources/view/fchomo/node.js:1978 +#: htdocs/luci-static/resources/view/fchomo/node.js:1991 msgid "Add a provider" msgstr "新增 供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:2466 +#: htdocs/luci-static/resources/view/fchomo/node.js:2479 msgid "Add a proxy chain" msgstr "新增 代理鏈" @@ -263,15 +263,15 @@ msgstr "新增 伺服器" msgid "Add a sub rule" msgstr "新增 子規則" -#: htdocs/luci-static/resources/view/fchomo/node.js:2275 +#: htdocs/luci-static/resources/view/fchomo/node.js:2288 msgid "Add prefix" msgstr "添加前綴" -#: htdocs/luci-static/resources/view/fchomo/node.js:2279 +#: htdocs/luci-static/resources/view/fchomo/node.js:2292 msgid "Add suffix" msgstr "添加後綴" -#: htdocs/luci-static/resources/view/fchomo/node.js:856 +#: htdocs/luci-static/resources/view/fchomo/node.js:861 msgid "Add the base64 text of the planet file here." msgstr "在此處新增行星檔案的 base64 文本。" @@ -305,7 +305,7 @@ msgstr "允許所有" msgid "All ports" msgstr "所有連接埠" -#: htdocs/luci-static/resources/view/fchomo/node.js:988 +#: htdocs/luci-static/resources/view/fchomo/node.js:985 msgid "Allow LAN access" msgstr "允許區域網路訪問" @@ -316,7 +316,7 @@ msgid "" msgstr "" "允許從私有網路訪問。
要從公共網站訪問私有網路上的 API,則必須啟用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:989 +#: htdocs/luci-static/resources/view/fchomo/node.js:986 msgid "Allow access to the local LAN via the exit node." msgstr "允許透過出口節點存取本地區域網路。" @@ -324,7 +324,7 @@ msgstr "允許透過出口節點存取本地區域網路。" msgid "Allow insecure connections" msgstr "允許不安全的連線" -#: htdocs/luci-static/resources/view/fchomo/node.js:937 +#: htdocs/luci-static/resources/view/fchomo/node.js:934 msgid "Allowed IPs" msgstr "允許的 IP" @@ -350,7 +350,7 @@ msgstr "" msgid "Application version" msgstr "應用版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:972 +#: htdocs/luci-static/resources/view/fchomo/node.js:969 msgid "As ephemeral node" msgstr "作為臨時節點" @@ -371,7 +371,7 @@ msgstr "認證逾時" msgid "Authenticated length" msgstr "認證長度" -#: htdocs/luci-static/resources/view/fchomo/node.js:967 +#: htdocs/luci-static/resources/view/fchomo/node.js:964 msgid "Authentication key" msgstr "認證金鑰" @@ -380,14 +380,14 @@ msgstr "認證金鑰" #: htdocs/luci-static/resources/view/fchomo/global.js:423 #: htdocs/luci-static/resources/view/fchomo/node.js:464 #: htdocs/luci-static/resources/view/fchomo/node.js:488 -#: htdocs/luci-static/resources/view/fchomo/node.js:842 -#: htdocs/luci-static/resources/view/fchomo/node.js:895 -#: htdocs/luci-static/resources/view/fchomo/node.js:1784 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 +#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +#: htdocs/luci-static/resources/view/fchomo/node.js:1797 msgid "Auto" msgstr "自動" #: htdocs/luci-static/resources/fchomo/listeners.js:139 -#: htdocs/luci-static/resources/view/fchomo/node.js:1488 +#: htdocs/luci-static/resources/view/fchomo/node.js:1501 msgid "Auto configure firewall" msgstr "自動配置防火牆" @@ -400,7 +400,7 @@ msgid "Auto update resources." msgstr "自動更新資源文件。" #: htdocs/luci-static/resources/fchomo/listeners.js:638 -#: htdocs/luci-static/resources/view/fchomo/node.js:1061 +#: htdocs/luci-static/resources/view/fchomo/node.js:1074 msgid "BBR profile" msgstr "BBR 設定檔" @@ -408,11 +408,11 @@ msgstr "BBR 設定檔" msgid "Baidu" msgstr "百度" -#: htdocs/luci-static/resources/view/fchomo/node.js:996 +#: htdocs/luci-static/resources/view/fchomo/node.js:993 msgid "Base64 encoded ECDSA private key on the NIST P-256 curve." msgstr "基於 NIST P-256 曲線的 Base64 編碼 ECDSA 私鑰。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1004 +#: htdocs/luci-static/resources/view/fchomo/node.js:1001 msgid "Base64 encoded ECDSA public key on the NIST P-256 curve." msgstr "基於 NIST P-256 曲線的 Base64 編碼 ECDSA 公鑰。" @@ -434,13 +434,13 @@ msgid "Binary mrs" msgstr "二進位 mrs" #: htdocs/luci-static/resources/view/fchomo/global.js:758 -#: htdocs/luci-static/resources/view/fchomo/node.js:1945 -#: htdocs/luci-static/resources/view/fchomo/node.js:2364 +#: htdocs/luci-static/resources/view/fchomo/node.js:1958 +#: htdocs/luci-static/resources/view/fchomo/node.js:2377 msgid "Bind interface" msgstr "綁定介面" -#: htdocs/luci-static/resources/view/fchomo/node.js:1946 -#: htdocs/luci-static/resources/view/fchomo/node.js:2365 +#: htdocs/luci-static/resources/view/fchomo/node.js:1959 +#: htdocs/luci-static/resources/view/fchomo/node.js:2378 msgid "Bind outbound interface.
" msgstr "綁定出站介面。
" @@ -509,17 +509,17 @@ msgstr "CORS 允許的來源,留空則使用 *。" msgid "Cancel" msgstr "取消" -#: htdocs/luci-static/resources/view/fchomo/node.js:1370 +#: htdocs/luci-static/resources/view/fchomo/node.js:1383 msgid "Cert fingerprint" msgstr "憑證指紋" -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 +#: htdocs/luci-static/resources/view/fchomo/node.js:1384 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "憑證指紋。用於實現 SSL憑證固定 並防止 MitM。" #: htdocs/luci-static/resources/fchomo/listeners.js:1111 -#: htdocs/luci-static/resources/view/fchomo/node.js:1397 +#: htdocs/luci-static/resources/view/fchomo/node.js:1410 msgid "Certificate path" msgstr "憑證路徑" @@ -583,9 +583,9 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:853 #: htdocs/luci-static/resources/fchomo/listeners.js:1165 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 -#: htdocs/luci-static/resources/view/fchomo/node.js:1398 -#: htdocs/luci-static/resources/view/fchomo/node.js:1412 +#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1425 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "客戶端" @@ -598,7 +598,7 @@ msgstr "客戶端認證憑證路徑" msgid "Client Auth type" msgstr "客戶端認證類型" -#: htdocs/luci-static/resources/view/fchomo/node.js:1443 +#: htdocs/luci-static/resources/view/fchomo/node.js:1456 msgid "Client fingerprint" msgstr "客戶端指紋" @@ -606,12 +606,20 @@ msgstr "客戶端指紋" msgid "Client key" msgstr "客戶端密鑰" +#: htdocs/luci-static/resources/view/fchomo/node.js:600 +msgid "Client metadata" +msgstr "客戶端元資料" + +#: htdocs/luci-static/resources/view/fchomo/node.js:601 +msgid "The client metadata sent to the server." +msgstr "發送到伺服器的客戶端元資料。" + #: htdocs/luci-static/resources/view/fchomo/global.js:176 msgid "Client status" msgstr "客戶端狀態" -#: htdocs/luci-static/resources/view/fchomo/node.js:1583 -#: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1596 +#: htdocs/luci-static/resources/view/fchomo/node.js:1621 msgid "Cloudflare WARP" msgstr "" @@ -629,7 +637,8 @@ msgid "Complete" msgstr "完成" #: htdocs/luci-static/resources/fchomo/listeners.js:630 -#: htdocs/luci-static/resources/view/fchomo/node.js:1051 +#: htdocs/luci-static/resources/view/fchomo/node.js:1056 +#: htdocs/luci-static/resources/view/fchomo/node.js:1065 msgid "Congestion controller" msgstr "擁塞控制器" @@ -642,7 +651,7 @@ msgid "Connection reuse" msgstr "連接重用" #: htdocs/luci-static/resources/fchomo/listeners.js:575 -#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:781 msgid "Connection-level receive window size" msgstr "連接級接收視窗大小" @@ -655,14 +664,14 @@ msgid "Content copied to clipboard!" msgstr "內容已複製到剪貼簿!" #: htdocs/luci-static/resources/view/fchomo/client.js:699 -#: htdocs/luci-static/resources/view/fchomo/node.js:2135 -#: htdocs/luci-static/resources/view/fchomo/node.js:2161 +#: htdocs/luci-static/resources/view/fchomo/node.js:2148 +#: htdocs/luci-static/resources/view/fchomo/node.js:2174 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:348 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:374 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "內容將不會被驗證,請確保輸入正確。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2134 +#: htdocs/luci-static/resources/view/fchomo/node.js:2147 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:347 msgid "Contents" msgstr "內容" @@ -671,7 +680,7 @@ msgstr "內容" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:961 +#: htdocs/luci-static/resources/view/fchomo/node.js:958 msgid "Control server" msgstr "控制伺服器" @@ -687,7 +696,7 @@ msgstr "核心版本" msgid "Cron expression" msgstr "Cron 表達式" -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Custom %s control server." msgstr "自訂 %s 控制伺服器。" @@ -695,7 +704,7 @@ msgstr "自訂 %s 控制伺服器。" msgid "Custom Direct List" msgstr "自訂直連清單" -#: htdocs/luci-static/resources/view/fchomo/node.js:2266 +#: htdocs/luci-static/resources/view/fchomo/node.js:2279 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:420 msgid "Custom HTTP header." msgstr "自訂 HTTP header。" @@ -731,7 +740,7 @@ msgstr " DNS 連接埠" #: htdocs/luci-static/resources/view/fchomo/client.js:911 #: htdocs/luci-static/resources/view/fchomo/client.js:1528 #: htdocs/luci-static/resources/view/fchomo/client.js:1537 -#: htdocs/luci-static/resources/view/fchomo/node.js:1651 +#: htdocs/luci-static/resources/view/fchomo/node.js:1664 msgid "DNS server" msgstr "DNS 伺服器" @@ -748,7 +757,7 @@ msgid "Dashboard version" msgstr "面板版本" #: htdocs/luci-static/resources/fchomo.js:94 -#: htdocs/luci-static/resources/view/fchomo/node.js:817 +#: htdocs/luci-static/resources/view/fchomo/node.js:822 msgid "Debug" msgstr "調試" @@ -774,15 +783,15 @@ msgstr "預設版本,支援 %s。" msgid "Derive from priv-key" msgstr "從私鑰派生" -#: htdocs/luci-static/resources/view/fchomo/node.js:938 +#: htdocs/luci-static/resources/view/fchomo/node.js:935 msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "允許通過 WireGuard 轉發的目的位址" -#: htdocs/luci-static/resources/view/fchomo/node.js:2489 +#: htdocs/luci-static/resources/view/fchomo/node.js:2502 msgid "Destination provider" msgstr "落地供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:2500 +#: htdocs/luci-static/resources/view/fchomo/node.js:2513 msgid "Destination proxy node" msgstr "落地代理節點" @@ -790,8 +799,8 @@ msgstr "落地代理節點" msgid "Dial fields" msgstr "撥號欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:2512 -#: htdocs/luci-static/resources/view/fchomo/node.js:2542 +#: htdocs/luci-static/resources/view/fchomo/node.js:2525 +#: htdocs/luci-static/resources/view/fchomo/node.js:2555 msgid "Different chain head/tail" msgstr "不同的鏈頭/鏈尾" @@ -813,8 +822,8 @@ msgstr "直連 MAC 位址" #: htdocs/luci-static/resources/fchomo/listeners.js:485 #: htdocs/luci-static/resources/view/fchomo/global.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:710 -#: htdocs/luci-static/resources/view/fchomo/node.js:844 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 +#: htdocs/luci-static/resources/view/fchomo/node.js:849 msgid "Disable" msgstr "停用" @@ -830,7 +839,7 @@ msgstr "停用 quic-go 的 通用分段卸載(GSO)" msgid "Disable ICMP Forwarding" msgstr "禁用 ICMP 轉發" -#: htdocs/luci-static/resources/view/fchomo/node.js:1311 +#: htdocs/luci-static/resources/view/fchomo/node.js:1324 msgid "Disable SNI" msgstr "停用 SNI" @@ -858,23 +867,23 @@ msgstr "" msgid "Domain" msgstr "網域" -#: htdocs/luci-static/resources/view/fchomo/node.js:1312 +#: htdocs/luci-static/resources/view/fchomo/node.js:1325 msgid "Donot send server name in ClientHello." msgstr "不要在 ClientHello 中傳送伺服器名稱。" #: htdocs/luci-static/resources/view/fchomo/client.js:1680 -#: htdocs/luci-static/resources/view/fchomo/node.js:1390 -#: htdocs/luci-static/resources/view/fchomo/node.js:2348 +#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:2361 msgid "Donot verifying server certificate." msgstr "不驗證伺服器憑證。" #: htdocs/luci-static/resources/fchomo/listeners.js:1395 -#: htdocs/luci-static/resources/view/fchomo/node.js:1922 +#: htdocs/luci-static/resources/view/fchomo/node.js:1935 msgid "Download bandwidth" msgstr "下載頻寬" #: htdocs/luci-static/resources/fchomo/listeners.js:1396 -#: htdocs/luci-static/resources/view/fchomo/node.js:1923 +#: htdocs/luci-static/resources/view/fchomo/node.js:1936 msgid "Download bandwidth in Mbps." msgstr "下載頻寬(單位:Mbps)。" @@ -890,12 +899,12 @@ msgstr "下載成功。" msgid "Dual stack" msgstr "雙棧" -#: htdocs/luci-static/resources/view/fchomo/node.js:1437 +#: htdocs/luci-static/resources/view/fchomo/node.js:1450 msgid "ECH HTTPS record query servername" msgstr "ECH HTTPS 記錄查詢網域" #: htdocs/luci-static/resources/fchomo/listeners.js:1222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1431 +#: htdocs/luci-static/resources/view/fchomo/node.js:1444 msgid "ECH config" msgstr "ECH 配置" @@ -915,11 +924,11 @@ msgstr "EDNS 客戶端子網" msgid "ETag support" msgstr "ETag 支援" -#: htdocs/luci-static/resources/view/fchomo/node.js:1762 +#: htdocs/luci-static/resources/view/fchomo/node.js:1775 msgid "Early Data first packet length limit." msgstr "前置數據長度閾值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1768 +#: htdocs/luci-static/resources/view/fchomo/node.js:1781 msgid "Early Data header name" msgstr "前置數據標頭" @@ -935,7 +944,7 @@ msgstr "編輯出站" msgid "Edit ruleset" msgstr "編輯規則集" -#: htdocs/luci-static/resources/view/fchomo/node.js:2132 +#: htdocs/luci-static/resources/view/fchomo/node.js:2145 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:345 msgid "Editer" msgstr "編輯器" @@ -959,15 +968,15 @@ msgstr "為空時回退" #: htdocs/luci-static/resources/view/fchomo/global.js:422 #: htdocs/luci-static/resources/view/fchomo/global.js:704 #: htdocs/luci-static/resources/view/fchomo/node.js:264 -#: htdocs/luci-static/resources/view/fchomo/node.js:2105 -#: htdocs/luci-static/resources/view/fchomo/node.js:2387 -#: htdocs/luci-static/resources/view/fchomo/node.js:2476 +#: htdocs/luci-static/resources/view/fchomo/node.js:2118 +#: htdocs/luci-static/resources/view/fchomo/node.js:2400 +#: htdocs/luci-static/resources/view/fchomo/node.js:2489 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:272 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" msgstr "啟用" -#: htdocs/luci-static/resources/view/fchomo/node.js:664 +#: htdocs/luci-static/resources/view/fchomo/node.js:669 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
強烈建議停用此功能,因為它容易受到重放攻擊。" -#: htdocs/luci-static/resources/view/fchomo/node.js:663 +#: htdocs/luci-static/resources/view/fchomo/node.js:668 msgid "Enable 0-RTT handshake" msgstr "啟用 0-RTT 握手" @@ -988,25 +997,25 @@ msgstr "" "為出站連線啟用 IP4P 轉換" -#: htdocs/luci-static/resources/view/fchomo/node.js:1425 +#: htdocs/luci-static/resources/view/fchomo/node.js:1438 msgid "Enable ECH" msgstr "啟用 ECH" #: htdocs/luci-static/resources/fchomo/listeners.js:1383 -#: htdocs/luci-static/resources/view/fchomo/node.js:1910 +#: htdocs/luci-static/resources/view/fchomo/node.js:1923 msgid "Enable TCP Brutal" msgstr "啟用 TCP Brutal" #: htdocs/luci-static/resources/fchomo/listeners.js:1384 -#: htdocs/luci-static/resources/view/fchomo/node.js:1911 +#: htdocs/luci-static/resources/view/fchomo/node.js:1924 msgid "Enable TCP Brutal congestion control algorithm" msgstr "啟用 TCP Brutal 擁塞控制演算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:658 +#: htdocs/luci-static/resources/view/fchomo/node.js:663 msgid "Enable fast open" msgstr "啟用 Fast open" -#: htdocs/luci-static/resources/view/fchomo/node.js:1899 +#: htdocs/luci-static/resources/view/fchomo/node.js:1912 msgid "Enable multiplexing only for TCP." msgstr "僅為 TCP 啟用多路復用。" @@ -1016,28 +1025,28 @@ msgid "Enable obfuscate for downlink" msgstr "啟用下行鏈路混淆" #: htdocs/luci-static/resources/fchomo/listeners.js:1378 -#: htdocs/luci-static/resources/view/fchomo/node.js:1893 +#: htdocs/luci-static/resources/view/fchomo/node.js:1906 msgid "Enable padding" msgstr "啟用填充" -#: htdocs/luci-static/resources/view/fchomo/node.js:1904 +#: htdocs/luci-static/resources/view/fchomo/node.js:1917 msgid "Enable statistic" msgstr "啟用統計" -#: htdocs/luci-static/resources/view/fchomo/node.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:2324 +#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:2337 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "啟用 SUoT 協議,需要服務端支援。與多路復用衝突。" #: htdocs/luci-static/resources/fchomo/listeners.js:492 -#: htdocs/luci-static/resources/view/fchomo/node.js:717 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "啟用混淆將使伺服器與標準的 QUIC 連線不相容,失去 HTTP/3 偽裝的能力。" -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:840 msgid "Encrypted Hello" msgstr "加密 Hello" @@ -1045,10 +1054,6 @@ msgstr "加密 Hello" msgid "Encryption method" msgstr "加密方法" -#: htdocs/luci-static/resources/view/fchomo/node.js:1003 -msgid "Server public key" -msgstr "伺服器公鑰" - #: htdocs/luci-static/resources/view/fchomo/global.js:540 msgid "Endpoint-Independent NAT" msgstr "端點獨立 NAT" @@ -1068,7 +1073,7 @@ msgid "" "if empty." msgstr "超過此限制將會觸發強制健康檢查。留空則使用 5。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2445 +#: htdocs/luci-static/resources/view/fchomo/node.js:2458 msgid "Exclude matched node types." msgstr "排除匹配的節點類型。" @@ -1081,11 +1086,11 @@ msgstr "" "rel=\"noreferrer noopener\">此處。" #: htdocs/luci-static/resources/view/fchomo/client.js:1255 -#: htdocs/luci-static/resources/view/fchomo/node.js:2438 +#: htdocs/luci-static/resources/view/fchomo/node.js:2451 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配關鍵字或表達式的節點。" -#: htdocs/luci-static/resources/view/fchomo/node.js:983 +#: htdocs/luci-static/resources/view/fchomo/node.js:980 msgid "Exit node" msgstr "出口節點" @@ -1094,12 +1099,12 @@ msgid "Expand/Collapse result" msgstr "展開/收起 結果" #: htdocs/luci-static/resources/view/fchomo/client.js:1198 -#: htdocs/luci-static/resources/view/fchomo/node.js:2423 +#: htdocs/luci-static/resources/view/fchomo/node.js:2436 msgid "Expected HTTP code. 204 will be used if empty." msgstr "預期的 HTTP code。留空則使用 204。" #: htdocs/luci-static/resources/view/fchomo/client.js:1200 -#: htdocs/luci-static/resources/view/fchomo/node.js:2425 +#: htdocs/luci-static/resources/view/fchomo/node.js:2438 msgid "Expected status" msgstr "預期狀態" @@ -1141,11 +1146,11 @@ msgstr "預期狀態" #: htdocs/luci-static/resources/view/fchomo/node.js:441 #: htdocs/luci-static/resources/view/fchomo/node.js:494 #: htdocs/luci-static/resources/view/fchomo/node.js:496 -#: htdocs/luci-static/resources/view/fchomo/node.js:886 -#: htdocs/luci-static/resources/view/fchomo/node.js:1249 -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 -#: htdocs/luci-static/resources/view/fchomo/node.js:2512 -#: htdocs/luci-static/resources/view/fchomo/node.js:2542 +#: htdocs/luci-static/resources/view/fchomo/node.js:891 +#: htdocs/luci-static/resources/view/fchomo/node.js:1262 +#: htdocs/luci-static/resources/view/fchomo/node.js:1389 +#: htdocs/luci-static/resources/view/fchomo/node.js:2525 +#: htdocs/luci-static/resources/view/fchomo/node.js:2555 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:300 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:314 msgid "Expecting: %s" @@ -1156,7 +1161,7 @@ msgid "Expecting: Cannot be empty." msgstr "請輸入:不能為空。" #: htdocs/luci-static/resources/fchomo/listeners.js:1236 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1472 msgid "Expecting: Cannot be enabled when %s is enabled." msgstr "請輸入:當 %s 啟用時,無法啟用。" @@ -1173,11 +1178,11 @@ msgstr "請輸入:至少包含 %s 或 %s 中的一個。" #: htdocs/luci-static/resources/fchomo/listeners.js:690 #: htdocs/luci-static/resources/fchomo/listeners.js:1304 #: htdocs/luci-static/resources/fchomo/listeners.js:1311 -#: htdocs/luci-static/resources/view/fchomo/node.js:1123 -#: htdocs/luci-static/resources/view/fchomo/node.js:1129 -#: htdocs/luci-static/resources/view/fchomo/node.js:1677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1136 +#: htdocs/luci-static/resources/view/fchomo/node.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 +#: htdocs/luci-static/resources/view/fchomo/node.js:1705 msgid "Expecting: Only support %s." msgstr "請輸入:僅支援 %s。" @@ -1229,16 +1234,16 @@ msgstr "後備 DNS 伺服器" msgid "Fallback filter" msgstr "後備過濾器" -#: htdocs/luci-static/resources/view/fchomo/node.js:841 +#: htdocs/luci-static/resources/view/fchomo/node.js:846 msgid "Fallback mode" msgstr "自動回退模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:848 +#: htdocs/luci-static/resources/view/fchomo/node.js:853 msgid "Fallback relay" msgstr "自動回退中繼" #: htdocs/luci-static/resources/view/fchomo/client.js:1250 -#: htdocs/luci-static/resources/view/fchomo/node.js:2432 +#: htdocs/luci-static/resources/view/fchomo/node.js:2445 msgid "Filter nodes that meet keywords or regexps." msgstr "過濾匹配關鍵字或表達式的節點。" @@ -1264,7 +1269,7 @@ msgid "Final DNS server (For poisoned domains)" msgstr "兜底 DNS 伺服器 (用於已被投毒汙染的網域)" #: htdocs/luci-static/resources/fchomo/listeners.js:138 -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 +#: htdocs/luci-static/resources/view/fchomo/node.js:1500 msgid "Firewall" msgstr "防火牆" @@ -1282,9 +1287,9 @@ msgstr "" "noopener\">%s." #: htdocs/luci-static/resources/view/fchomo/client.js:1199 -#: htdocs/luci-static/resources/view/fchomo/node.js:2285 -#: htdocs/luci-static/resources/view/fchomo/node.js:2293 -#: htdocs/luci-static/resources/view/fchomo/node.js:2424 +#: htdocs/luci-static/resources/view/fchomo/node.js:2298 +#: htdocs/luci-static/resources/view/fchomo/node.js:2306 +#: htdocs/luci-static/resources/view/fchomo/node.js:2437 msgid "" "For format see %s." @@ -1292,11 +1297,11 @@ msgstr "" "格式請參閱 %s." -#: htdocs/luci-static/resources/view/fchomo/node.js:843 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Force" msgstr "強制" -#: htdocs/luci-static/resources/view/fchomo/node.js:1646 +#: htdocs/luci-static/resources/view/fchomo/node.js:1659 msgid "Force DNS remote resolution." msgstr "強制 DNS 遠端解析。" @@ -1319,7 +1324,7 @@ msgstr "轉發速率限制" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1717 +#: htdocs/luci-static/resources/view/fchomo/node.js:1730 msgid "GET" msgstr "" @@ -1328,7 +1333,7 @@ msgid "GFW list version" msgstr "GFW 網域清單版本" #: htdocs/luci-static/resources/fchomo/listeners.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:712 +#: htdocs/luci-static/resources/view/fchomo/node.js:717 msgid "Gecko" msgstr "" @@ -1339,7 +1344,7 @@ msgstr "常規" #: htdocs/luci-static/resources/fchomo/listeners.js:119 #: htdocs/luci-static/resources/view/fchomo/client.js:1054 #: htdocs/luci-static/resources/view/fchomo/node.js:249 -#: htdocs/luci-static/resources/view/fchomo/node.js:2095 +#: htdocs/luci-static/resources/view/fchomo/node.js:2108 msgid "General fields" msgstr "常規欄位" @@ -1357,7 +1362,7 @@ msgstr "常規設定" #: htdocs/luci-static/resources/fchomo/listeners.js:949 #: htdocs/luci-static/resources/fchomo/listeners.js:1214 #: htdocs/luci-static/resources/view/fchomo/global.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:2253 +#: htdocs/luci-static/resources/view/fchomo/node.js:2266 msgid "Generate" msgstr "生成" @@ -1427,16 +1432,16 @@ msgstr "組" #: htdocs/luci-static/resources/fchomo.js:154 #: htdocs/luci-static/resources/fchomo.js:191 #: htdocs/luci-static/resources/fchomo/listeners.js:702 -#: htdocs/luci-static/resources/view/fchomo/node.js:1141 -#: htdocs/luci-static/resources/view/fchomo/node.js:1664 +#: htdocs/luci-static/resources/view/fchomo/node.js:1154 #: htdocs/luci-static/resources/view/fchomo/node.js:1677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:330 -#: htdocs/luci-static/resources/view/fchomo/node.js:1739 -#: htdocs/luci-static/resources/view/fchomo/node.js:2265 +#: htdocs/luci-static/resources/view/fchomo/node.js:1752 +#: htdocs/luci-static/resources/view/fchomo/node.js:2278 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:419 msgid "HTTP header" msgstr "HTTP header" @@ -1462,7 +1467,7 @@ msgstr "HTTP 偽裝多路復用" msgid "HTTP mask: %s" msgstr "HTTP 偽裝: %s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1716 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "HTTP request method" msgstr "HTTP 請求方法" @@ -1481,9 +1486,9 @@ msgid "" "returned if empty." msgstr "身份驗證失敗時的 HTTP3 伺服器回應。預設回傳 404 頁面。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1665 #: htdocs/luci-static/resources/view/fchomo/node.js:1678 -#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1691 +#: htdocs/luci-static/resources/view/fchomo/node.js:1698 msgid "HTTPUpgrade" msgstr "" @@ -1504,7 +1509,7 @@ msgid "Handshake target that supports TLS 1.3" msgstr "握手目標 (支援 TLS 1.3)" #: htdocs/luci-static/resources/fchomo/listeners.js:338 -#: htdocs/luci-static/resources/view/fchomo/node.js:1076 +#: htdocs/luci-static/resources/view/fchomo/node.js:1089 msgid "Handshake timeout" msgstr "握手逾時" @@ -1512,41 +1517,41 @@ msgstr "握手逾時" msgid "Header to read real client IP from (e.g. X-Forwarded-For)" msgstr "用於讀取客戶端真實 IP 的 Header(例如 X-Forwarded-For)" -#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:959 msgid "Headscale/Tailscale" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:788 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 msgid "Health check" msgstr "健康檢查" #: htdocs/luci-static/resources/view/fchomo/client.js:1168 -#: htdocs/luci-static/resources/view/fchomo/node.js:2392 +#: htdocs/luci-static/resources/view/fchomo/node.js:2405 msgid "Health check URL" msgstr "健康檢查 URL" #: htdocs/luci-static/resources/view/fchomo/client.js:1197 -#: htdocs/luci-static/resources/view/fchomo/node.js:2422 +#: htdocs/luci-static/resources/view/fchomo/node.js:2435 msgid "Health check expected status" msgstr "健康檢查预期状态" #: htdocs/luci-static/resources/view/fchomo/client.js:1177 -#: htdocs/luci-static/resources/view/fchomo/node.js:2402 +#: htdocs/luci-static/resources/view/fchomo/node.js:2415 msgid "Health check interval" msgstr "健康檢查間隔" #: htdocs/luci-static/resources/view/fchomo/client.js:1184 -#: htdocs/luci-static/resources/view/fchomo/node.js:2409 +#: htdocs/luci-static/resources/view/fchomo/node.js:2422 msgid "Health check timeout" msgstr "健康檢查逾時" #: htdocs/luci-static/resources/view/fchomo/client.js:1056 -#: htdocs/luci-static/resources/view/fchomo/node.js:2097 +#: htdocs/luci-static/resources/view/fchomo/node.js:2110 msgid "Health fields" msgstr "健康欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:670 -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:675 +#: htdocs/luci-static/resources/view/fchomo/node.js:756 msgid "Heartbeat interval" msgstr "心跳間隔" @@ -1555,15 +1560,15 @@ msgid "Hidden" msgstr "隱藏" #: htdocs/luci-static/resources/fchomo/listeners.js:715 -#: htdocs/luci-static/resources/view/fchomo/node.js:1146 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 msgid "Host that supports TLS 1.3" msgstr "主機名稱 (支援 TLS 1.3)" -#: htdocs/luci-static/resources/view/fchomo/node.js:1045 +#: htdocs/luci-static/resources/view/fchomo/node.js:1042 msgid "Host-key" msgstr "主機金鑰" -#: htdocs/luci-static/resources/view/fchomo/node.js:1040 +#: htdocs/luci-static/resources/view/fchomo/node.js:1037 msgid "Host-key algorithms" msgstr "主機金鑰演算法" @@ -1571,7 +1576,7 @@ msgstr "主機金鑰演算法" msgid "Host/SNI override" msgstr "主機/SNI 覆蓋" -#: htdocs/luci-static/resources/view/fchomo/node.js:1318 +#: htdocs/luci-static/resources/view/fchomo/node.js:1331 msgid "" "Hostname that the client attempts to connect to at the start of the TLS " "handshake process." @@ -1605,22 +1610,23 @@ msgstr "" msgid "IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:627 +#: htdocs/luci-static/resources/view/fchomo/node.js:632 msgid "IP override" msgstr "IP 覆寫" -#: htdocs/luci-static/resources/view/fchomo/node.js:893 +#: htdocs/luci-static/resources/view/fchomo/node.js:1048 +#: htdocs/luci-static/resources/view/fchomo/node.js:1056 msgid "IP stack" msgstr "IP 協定棧" -#: htdocs/luci-static/resources/view/fchomo/node.js:1959 -#: htdocs/luci-static/resources/view/fchomo/node.js:2378 +#: htdocs/luci-static/resources/view/fchomo/node.js:1972 +#: htdocs/luci-static/resources/view/fchomo/node.js:2391 msgid "IP version" msgstr "IP 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 -#: htdocs/luci-static/resources/view/fchomo/node.js:1583 +#: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1592 +#: htdocs/luci-static/resources/view/fchomo/node.js:1596 msgid "IPv4" msgstr "IPv4" @@ -1628,9 +1634,9 @@ msgstr "IPv4" msgid "IPv4 only" msgstr "僅 IPv4" -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 #: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1617 +#: htdocs/luci-static/resources/view/fchomo/node.js:1621 msgid "IPv6" msgstr "IPv6" @@ -1647,11 +1653,11 @@ msgstr "IPv6 支援" msgid "Icon" msgstr "圖標" -#: htdocs/luci-static/resources/view/fchomo/node.js:600 +#: htdocs/luci-static/resources/view/fchomo/node.js:605 msgid "Idle session check interval" msgstr "閒置會話檢查間隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:607 +#: htdocs/luci-static/resources/view/fchomo/node.js:612 msgid "Idle session timeout" msgstr "閒置會話逾時" @@ -1687,8 +1693,8 @@ msgstr "導入" #: htdocs/luci-static/resources/view/fchomo/client.js:1816 #: htdocs/luci-static/resources/view/fchomo/client.js:1851 #: htdocs/luci-static/resources/view/fchomo/client.js:1872 -#: htdocs/luci-static/resources/view/fchomo/node.js:1985 -#: htdocs/luci-static/resources/view/fchomo/node.js:2083 +#: htdocs/luci-static/resources/view/fchomo/node.js:1998 +#: htdocs/luci-static/resources/view/fchomo/node.js:2096 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:249 msgid "Import mihomo config" @@ -1702,10 +1708,10 @@ msgstr "導入規則集連結" #: htdocs/luci-static/resources/fchomo/listeners.js:466 #: htdocs/luci-static/resources/fchomo/listeners.js:472 -#: htdocs/luci-static/resources/view/fchomo/node.js:686 -#: htdocs/luci-static/resources/view/fchomo/node.js:692 -#: htdocs/luci-static/resources/view/fchomo/node.js:2330 -#: htdocs/luci-static/resources/view/fchomo/node.js:2336 +#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:697 +#: htdocs/luci-static/resources/view/fchomo/node.js:2343 +#: htdocs/luci-static/resources/view/fchomo/node.js:2349 msgid "In Mbps." msgstr "單位為 Mbps。" @@ -1713,33 +1719,33 @@ msgstr "單位為 Mbps。" msgid "In bps. 0 means no speed limit." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2173 +#: htdocs/luci-static/resources/view/fchomo/node.js:2186 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:392 msgid "In bytes. %s will be used if empty." msgstr "單位為位元組。留空則使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:671 -#: htdocs/luci-static/resources/view/fchomo/node.js:678 -#: htdocs/luci-static/resources/view/fchomo/node.js:752 +#: htdocs/luci-static/resources/view/fchomo/node.js:676 +#: htdocs/luci-static/resources/view/fchomo/node.js:683 +#: htdocs/luci-static/resources/view/fchomo/node.js:757 msgid "In millisecond." msgstr "單位為毫秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:1185 #: htdocs/luci-static/resources/view/fchomo/client.js:1231 -#: htdocs/luci-static/resources/view/fchomo/node.js:2410 +#: htdocs/luci-static/resources/view/fchomo/node.js:2423 msgid "In millisecond. %s will be used if empty." msgstr "單位為毫秒。留空則使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1808 +#: htdocs/luci-static/resources/view/fchomo/node.js:1821 msgid "In milliseconds." msgstr "單位為毫秒。" #: htdocs/luci-static/resources/fchomo/listeners.js:339 #: htdocs/luci-static/resources/fchomo/listeners.js:458 #: htdocs/luci-static/resources/fchomo/listeners.js:648 -#: htdocs/luci-static/resources/view/fchomo/node.js:601 -#: htdocs/luci-static/resources/view/fchomo/node.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:1755 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 +#: htdocs/luci-static/resources/view/fchomo/node.js:613 +#: htdocs/luci-static/resources/view/fchomo/node.js:1768 msgid "In seconds." msgstr "單位為秒。" @@ -1747,21 +1753,21 @@ msgstr "單位為秒。" #: htdocs/luci-static/resources/view/fchomo/global.js:446 #: htdocs/luci-static/resources/view/fchomo/global.js:451 #: htdocs/luci-static/resources/view/fchomo/global.js:536 -#: htdocs/luci-static/resources/view/fchomo/node.js:704 -#: htdocs/luci-static/resources/view/fchomo/node.js:2179 -#: htdocs/luci-static/resources/view/fchomo/node.js:2403 +#: htdocs/luci-static/resources/view/fchomo/node.js:709 +#: htdocs/luci-static/resources/view/fchomo/node.js:2192 +#: htdocs/luci-static/resources/view/fchomo/node.js:2416 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:398 msgid "In seconds. %s will be used if empty." msgstr "單位為秒。留空則使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1077 +#: htdocs/luci-static/resources/view/fchomo/node.js:1090 msgid "" "In seconds. After configuration, the handshake is not affected by the outer " "connection timeout." msgstr "單位為秒。配置後握手時不受外層連線逾時影響。" #: htdocs/luci-static/resources/fchomo/listeners.js:865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1238 +#: htdocs/luci-static/resources/view/fchomo/node.js:1251 msgid "" "In the order of one Padding-Length and one Padding-" "Interval, infinite concatenation." @@ -1804,16 +1810,16 @@ msgid "Info" msgstr "訊息" #: htdocs/luci-static/resources/fchomo/listeners.js:557 -#: htdocs/luci-static/resources/view/fchomo/node.js:758 +#: htdocs/luci-static/resources/view/fchomo/node.js:763 msgid "Initial congestion window size" msgstr "初始擁塞視窗大小" -#: htdocs/luci-static/resources/view/fchomo/node.js:2112 +#: htdocs/luci-static/resources/view/fchomo/node.js:2125 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:288 msgid "Inline" msgstr "內嵌" -#: htdocs/luci-static/resources/view/fchomo/node.js:818 +#: htdocs/luci-static/resources/view/fchomo/node.js:823 msgid "Insane" msgstr "噩夢" @@ -1826,14 +1832,14 @@ msgstr "介面控制" #: htdocs/luci-static/resources/fchomo/listeners.js:692 #: htdocs/luci-static/resources/fchomo/listeners.js:1122 #: htdocs/luci-static/resources/fchomo/listeners.js:1238 -#: htdocs/luci-static/resources/view/fchomo/node.js:1116 -#: htdocs/luci-static/resources/view/fchomo/node.js:1126 -#: htdocs/luci-static/resources/view/fchomo/node.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1461 +#: htdocs/luci-static/resources/view/fchomo/node.js:1129 +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:1474 msgid "JLS" msgstr "JLS" -#: htdocs/luci-static/resources/view/fchomo/node.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:884 msgid "Join %s. Format: %s" msgstr "加入 %s。格式:%s" @@ -1841,12 +1847,13 @@ msgstr "加入 %s。格式:%s" #: htdocs/luci-static/resources/fchomo.js:60 #: htdocs/luci-static/resources/fchomo.js:174 #: htdocs/luci-static/resources/fchomo.js:381 -#: htdocs/luci-static/resources/view/fchomo/node.js:894 -#: htdocs/luci-static/resources/view/fchomo/node.js:2352 +#: htdocs/luci-static/resources/view/fchomo/node.js:1049 +#: htdocs/luci-static/resources/view/fchomo/node.js:1057 +#: htdocs/luci-static/resources/view/fchomo/node.js:2365 msgid "Keep default" msgstr "保持預設" -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1857 msgid "Keep-alive period" msgstr "Keep-alive 週期" @@ -1856,7 +1863,7 @@ msgid "Key" msgstr "密鑰" #: htdocs/luci-static/resources/fchomo/listeners.js:1141 -#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1424 msgid "Key path" msgstr "憑證路徑" @@ -1876,14 +1883,14 @@ msgstr "L2" #: htdocs/luci-static/resources/view/fchomo/client.js:1822 #: htdocs/luci-static/resources/view/fchomo/client.js:1878 #: htdocs/luci-static/resources/view/fchomo/node.js:259 -#: htdocs/luci-static/resources/view/fchomo/node.js:2100 -#: htdocs/luci-static/resources/view/fchomo/node.js:2471 +#: htdocs/luci-static/resources/view/fchomo/node.js:2113 +#: htdocs/luci-static/resources/view/fchomo/node.js:2484 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:267 msgid "Label" msgstr "標籤" #: htdocs/luci-static/resources/view/fchomo/client.js:1191 -#: htdocs/luci-static/resources/view/fchomo/node.js:2416 +#: htdocs/luci-static/resources/view/fchomo/node.js:2429 msgid "Lazy" msgstr "怠惰狀態" @@ -1913,7 +1920,7 @@ msgid "Less compatibility and sometimes better performance." msgstr "有時效能較好。" #: htdocs/luci-static/resources/fchomo/listeners.js:1064 -#: htdocs/luci-static/resources/view/fchomo/node.js:1324 +#: htdocs/luci-static/resources/view/fchomo/node.js:1337 msgid "List of supported application level protocols, in order of preference." msgstr "支援的應用層協議協商清單,依序排列。" @@ -1931,8 +1938,8 @@ msgstr "監聽介面" #: htdocs/luci-static/resources/fchomo/listeners.js:154 #: htdocs/luci-static/resources/view/fchomo/client.js:1471 -#: htdocs/luci-static/resources/view/fchomo/node.js:1507 -#: htdocs/luci-static/resources/view/fchomo/node.js:1537 +#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 msgid "Listen port" msgstr "監聽埠" @@ -1948,7 +1955,7 @@ msgstr "監聽路由標記 (Fwmark)" msgid "Load balance" msgstr "負載均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:2110 +#: htdocs/luci-static/resources/view/fchomo/node.js:2123 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:286 msgid "Local" msgstr "本地" @@ -1969,7 +1976,7 @@ msgstr "日誌為空。" msgid "Log level" msgstr "日誌等級" -#: htdocs/luci-static/resources/view/fchomo/node.js:829 +#: htdocs/luci-static/resources/view/fchomo/node.js:834 msgid "Low Bandwidth Mode" msgstr "低頻寬模式" @@ -1989,7 +1996,7 @@ msgid "Lowercase only" msgstr "僅限小寫" #: htdocs/luci-static/resources/view/fchomo/global.js:523 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1631 msgid "MTU" msgstr "MTU" @@ -2029,12 +2036,12 @@ msgstr "匹配回應通過 ipcidr
" msgid "Match rule set." msgstr "匹配規則集。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1761 +#: htdocs/luci-static/resources/view/fchomo/node.js:1774 msgid "Max Early Data" msgstr "前置數據最大值" #: htdocs/luci-static/resources/fchomo/listeners.js:451 -#: htdocs/luci-static/resources/view/fchomo/node.js:652 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "Max UDP relay packet size" msgstr "UDP 中繼數據包最大尺寸" @@ -2042,11 +2049,11 @@ msgstr "UDP 中繼數據包最大尺寸" msgid "Max buffered posts" msgstr "POST 最大緩衝" -#: htdocs/luci-static/resources/view/fchomo/node.js:1819 +#: htdocs/luci-static/resources/view/fchomo/node.js:1832 msgid "Max concurrency" msgstr "最大並發" -#: htdocs/luci-static/resources/view/fchomo/node.js:1824 +#: htdocs/luci-static/resources/view/fchomo/node.js:1837 msgid "Max connections" msgstr "最大連線數" @@ -2055,21 +2062,21 @@ msgid "Max count of failures" msgstr "最大失敗次數" #: htdocs/luci-static/resources/fchomo/listeners.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:764 +#: htdocs/luci-static/resources/view/fchomo/node.js:769 msgid "Max datagram frame size" msgstr "最大資料封包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:471 -#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "Max download speed" msgstr "最大下載速度" #: htdocs/luci-static/resources/fchomo/listeners.js:1366 -#: htdocs/luci-static/resources/view/fchomo/node.js:1801 +#: htdocs/luci-static/resources/view/fchomo/node.js:1814 msgid "Max each POST bytes" msgstr "POST 最大位元組數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1070 +#: htdocs/luci-static/resources/view/fchomo/node.js:1083 msgid "Max open streams" msgstr "限制打開流的數量" @@ -2081,29 +2088,29 @@ msgstr "最大 Realms 數量" msgid "Max realms per client IP" msgstr "每客戶端 IP 最大 Realms 數量" -#: htdocs/luci-static/resources/view/fchomo/node.js:1834 +#: htdocs/luci-static/resources/view/fchomo/node.js:1847 msgid "Max request times" msgstr "最大請求次數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 +#: htdocs/luci-static/resources/view/fchomo/node.js:1852 msgid "Max reusable seconds" msgstr "最大可重用秒數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1829 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 msgid "Max reuse times" msgstr "最大重用次數" #: htdocs/luci-static/resources/fchomo/listeners.js:465 -#: htdocs/luci-static/resources/view/fchomo/node.js:685 +#: htdocs/luci-static/resources/view/fchomo/node.js:690 msgid "Max upload speed" msgstr "最大上傳速度" -#: htdocs/luci-static/resources/view/fchomo/node.js:1865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1885 +#: htdocs/luci-static/resources/view/fchomo/node.js:1878 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Maximum connections" msgstr "最大連線數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1883 +#: htdocs/luci-static/resources/view/fchomo/node.js:1896 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -2123,7 +2130,7 @@ msgid "" "rate." msgstr "最大填充率必須大於等于最小填充率。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1882 +#: htdocs/luci-static/resources/view/fchomo/node.js:1895 msgid "Maximum streams" msgstr "最大流數量" @@ -2144,15 +2151,15 @@ msgstr "Mihomo 客戶端" msgid "Mihomo server" msgstr "Mihomo 服務端" -#: htdocs/luci-static/resources/view/fchomo/node.js:614 +#: htdocs/luci-static/resources/view/fchomo/node.js:619 msgid "Min of idle sessions to keep" msgstr "要保留的最少閒置會話數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1807 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 msgid "Min posts interval" msgstr "POST 請求最小間隔時間" -#: htdocs/luci-static/resources/view/fchomo/node.js:1874 +#: htdocs/luci-static/resources/view/fchomo/node.js:1887 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在開啟新連線之前,連線中的最小多路復用流數量。" @@ -2162,8 +2169,8 @@ msgstr "在開啟新連線之前,連線中的最小多路復用流數量。" msgid "Minimum padding rate" msgstr "最小填充率" -#: htdocs/luci-static/resources/view/fchomo/node.js:1873 -#: htdocs/luci-static/resources/view/fchomo/node.js:1885 +#: htdocs/luci-static/resources/view/fchomo/node.js:1886 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Minimum streams" msgstr "最小流數量" @@ -2181,7 +2188,7 @@ msgid "Mixed port" msgstr "混合連接埠" #: htdocs/luci-static/resources/fchomo/listeners.js:1373 -#: htdocs/luci-static/resources/view/fchomo/node.js:1851 +#: htdocs/luci-static/resources/view/fchomo/node.js:1864 msgid "Multiplex" msgstr "多路復用" @@ -2203,7 +2210,7 @@ msgstr "NOT" msgid "Name of the Proxy group as outbound." msgstr "出站代理組的名稱。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2185 +#: htdocs/luci-static/resources/view/fchomo/node.js:2198 msgid "Name of the Proxy group to download provider." msgstr "用於下載供應商訂閱的代理組名稱。" @@ -2215,7 +2222,7 @@ msgstr "用於下載規則集訂閱的代理組名稱。" msgid "Name of the Sub rule used for inbound matching." msgstr "用於入站匹配的子規則名稱。" -#: htdocs/luci-static/resources/view/fchomo/node.js:636 +#: htdocs/luci-static/resources/view/fchomo/node.js:641 msgid "Native UDP" msgstr "原生 UDP" @@ -2223,7 +2230,7 @@ msgstr "原生 UDP" msgid "Native appearance" msgstr "原生外觀" -#: htdocs/luci-static/resources/view/fchomo/node.js:1010 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Network" msgstr "" @@ -2231,7 +2238,7 @@ msgstr "" msgid "Network type" msgstr "網路類型" -#: htdocs/luci-static/resources/view/fchomo/node.js:2354 +#: htdocs/luci-static/resources/view/fchomo/node.js:2367 msgid "No" msgstr "" @@ -2247,12 +2254,12 @@ msgstr "無 SSE header" msgid "No add'l params" msgstr "無附加參數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1791 +#: htdocs/luci-static/resources/view/fchomo/node.js:1804 msgid "No gRPC header" msgstr "無 gRPC header" #: htdocs/luci-static/resources/view/fchomo/client.js:1192 -#: htdocs/luci-static/resources/view/fchomo/node.js:2417 +#: htdocs/luci-static/resources/view/fchomo/node.js:2430 msgid "No testing is performed when this provider node is not in use." msgstr "當此供應商的節點未使用時,不執行任何測試。" @@ -2270,17 +2277,17 @@ msgid "Node" msgstr "節點" #: htdocs/luci-static/resources/view/fchomo/client.js:1254 -#: htdocs/luci-static/resources/view/fchomo/node.js:2437 +#: htdocs/luci-static/resources/view/fchomo/node.js:2450 msgid "Node exclude filter" msgstr "排除節點" #: htdocs/luci-static/resources/view/fchomo/client.js:1259 -#: htdocs/luci-static/resources/view/fchomo/node.js:2444 +#: htdocs/luci-static/resources/view/fchomo/node.js:2457 msgid "Node exclude type" msgstr "排除節點類型" #: htdocs/luci-static/resources/view/fchomo/client.js:1249 -#: htdocs/luci-static/resources/view/fchomo/node.js:2431 +#: htdocs/luci-static/resources/view/fchomo/node.js:2444 msgid "Node filter" msgstr "過濾節點" @@ -2292,7 +2299,7 @@ msgstr "節點切換容差" msgid "None" msgstr "無" -#: htdocs/luci-static/resources/view/fchomo/node.js:814 +#: htdocs/luci-static/resources/view/fchomo/node.js:819 msgid "Normal" msgstr "正常" @@ -2313,29 +2320,29 @@ msgid "ON" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:701 -#: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1153 msgid "Obfs Mode" msgstr "Obfs 模式" #: htdocs/luci-static/resources/fchomo/listeners.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:729 +#: htdocs/luci-static/resources/view/fchomo/node.js:734 msgid "Obfuscate maximum packet size" msgstr "混淆最大資料包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:499 -#: htdocs/luci-static/resources/view/fchomo/node.js:724 +#: htdocs/luci-static/resources/view/fchomo/node.js:729 msgid "Obfuscate minimum packet size" msgstr "混淆最小資料包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:491 -#: htdocs/luci-static/resources/view/fchomo/node.js:716 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 msgid "Obfuscate password" msgstr "混淆密碼" #: htdocs/luci-static/resources/fchomo/listeners.js:291 #: htdocs/luci-static/resources/fchomo/listeners.js:484 #: htdocs/luci-static/resources/view/fchomo/node.js:412 -#: htdocs/luci-static/resources/view/fchomo/node.js:709 +#: htdocs/luci-static/resources/view/fchomo/node.js:714 msgid "Obfuscate type" msgstr "混淆類型" @@ -2375,7 +2382,7 @@ msgstr "運作模式" msgid "Option is deprecated. Please use %s instead." msgstr "該選項已棄用,請使用%s作為代替。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2302 +#: htdocs/luci-static/resources/view/fchomo/node.js:2315 msgid "Other configuration items" msgstr "其他配置項" @@ -2383,8 +2390,8 @@ msgstr "其他配置項" msgid "Outbound" msgstr "出站" -#: htdocs/luci-static/resources/view/fchomo/node.js:1383 -#: htdocs/luci-static/resources/view/fchomo/node.js:2341 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 +#: htdocs/luci-static/resources/view/fchomo/node.js:2354 msgid "Override cert DNSName" msgstr "覆蓋憑證 DNSName" @@ -2394,11 +2401,11 @@ msgid "Override destination" msgstr "覆蓋目標位址" #: htdocs/luci-static/resources/view/fchomo/client.js:1055 -#: htdocs/luci-static/resources/view/fchomo/node.js:2096 +#: htdocs/luci-static/resources/view/fchomo/node.js:2109 msgid "Override fields" msgstr "覆蓋欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:628 +#: htdocs/luci-static/resources/view/fchomo/node.js:633 msgid "Override the IP address of the server that DNS response." msgstr "覆蓋 DNS 回應的伺服器的 IP 位址。" @@ -2414,7 +2421,7 @@ msgstr "使用嗅探到的網域覆寫連線目標。" msgid "Override the existing ECS in original request." msgstr "覆蓋原始請求中已有的 ECS。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1438 +#: htdocs/luci-static/resources/view/fchomo/node.js:1451 msgid "Overrides the domain name used for HTTPS record queries." msgstr "覆蓋用於 HTTPS 記錄查詢的網域。" @@ -2422,11 +2429,11 @@ msgstr "覆蓋用於 HTTPS 記錄查詢的網域。" msgid "Overview" msgstr "概覽" -#: htdocs/luci-static/resources/view/fchomo/node.js:1718 +#: htdocs/luci-static/resources/view/fchomo/node.js:1731 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1719 +#: htdocs/luci-static/resources/view/fchomo/node.js:1732 msgid "PUT" msgstr "" @@ -2434,7 +2441,7 @@ msgstr "" msgid "Packet encoding" msgstr "數據包編碼" -#: htdocs/luci-static/resources/view/fchomo/node.js:1796 +#: htdocs/luci-static/resources/view/fchomo/node.js:1809 msgid "Padding bytes" msgstr "填充位元組" @@ -2443,7 +2450,7 @@ msgid "Padding scheme" msgstr "填充方案" #: htdocs/luci-static/resources/fchomo/listeners.js:863 -#: htdocs/luci-static/resources/view/fchomo/node.js:1236 +#: htdocs/luci-static/resources/view/fchomo/node.js:1249 msgid "Paddings" msgstr "填充 (Paddings)" @@ -2452,12 +2459,12 @@ msgstr "填充 (Paddings)" #: htdocs/luci-static/resources/fchomo/listeners.js:730 #: htdocs/luci-static/resources/view/fchomo/node.js:324 #: htdocs/luci-static/resources/view/fchomo/node.js:345 -#: htdocs/luci-static/resources/view/fchomo/node.js:1161 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 msgid "Password" msgstr "密碼" #: htdocs/luci-static/resources/fchomo/listeners.js:581 -#: htdocs/luci-static/resources/view/fchomo/node.js:782 +#: htdocs/luci-static/resources/view/fchomo/node.js:787 msgid "Path MTU Discovery" msgstr "路徑 MTU 發現" @@ -2470,12 +2477,12 @@ msgid "Path in bundle: %s" msgstr "在捆綁包%s中的路徑" #: htdocs/luci-static/resources/fchomo/listeners.js:803 -#: htdocs/luci-static/resources/view/fchomo/node.js:2160 +#: htdocs/luci-static/resources/view/fchomo/node.js:2173 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:373 msgid "Payload" msgstr "Payload" -#: htdocs/luci-static/resources/view/fchomo/node.js:923 +#: htdocs/luci-static/resources/view/fchomo/node.js:920 msgid "Peer public key" msgstr "對端公鑰" @@ -2485,15 +2492,15 @@ msgid "" "it is not needed." msgstr "效能可能會略有下降,建議僅在需要時開啟。" -#: htdocs/luci-static/resources/view/fchomo/node.js:950 +#: htdocs/luci-static/resources/view/fchomo/node.js:947 msgid "Periodically sends data packets to maintain connection persistence." msgstr "定期發送資料包以維持連線持久性。" -#: htdocs/luci-static/resources/view/fchomo/node.js:949 +#: htdocs/luci-static/resources/view/fchomo/node.js:946 msgid "Persistent keepalive" msgstr "持久連接" -#: htdocs/luci-static/resources/view/fchomo/node.js:822 +#: htdocs/luci-static/resources/view/fchomo/node.js:827 msgid "Physical MTU" msgstr "物理 MTU" @@ -2516,8 +2523,8 @@ msgid "" "standards." msgstr "連結格式標準請參考
%s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2133 -#: htdocs/luci-static/resources/view/fchomo/node.js:2159 +#: htdocs/luci-static/resources/view/fchomo/node.js:2146 +#: htdocs/luci-static/resources/view/fchomo/node.js:2172 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:346 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:372 msgid "" @@ -2532,13 +2539,13 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1545 #: htdocs/luci-static/resources/view/fchomo/client.js:1800 #: htdocs/luci-static/resources/view/fchomo/client.js:1852 -#: htdocs/luci-static/resources/view/fchomo/node.js:1986 +#: htdocs/luci-static/resources/view/fchomo/node.js:1999 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:155 msgid "Please type %s fields of mihomo config.
" msgstr "請輸入 mihomo 配置的 %s 欄位。
" #: htdocs/luci-static/resources/fchomo/listeners.js:667 -#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:1117 msgid "Plugin" msgstr "外掛" @@ -2548,7 +2555,7 @@ msgid "Plugin fields" msgstr "外掛欄位" #: htdocs/luci-static/resources/fchomo/listeners.js:673 -#: htdocs/luci-static/resources/view/fchomo/node.js:1110 +#: htdocs/luci-static/resources/view/fchomo/node.js:1123 msgid "Plugin type" msgstr "外掛類型" @@ -2560,7 +2567,7 @@ msgstr "連接埠" msgid "Port %s alrealy exists!" msgstr "連接埠 %s 已存在!" -#: htdocs/luci-static/resources/view/fchomo/node.js:703 +#: htdocs/luci-static/resources/view/fchomo/node.js:708 msgid "Port hop interval" msgstr "連接埠跳躍間隔" @@ -2573,19 +2580,19 @@ msgid "Ports" msgstr "連接埠" #: htdocs/luci-static/resources/fchomo/listeners.js:154 -#: htdocs/luci-static/resources/view/fchomo/node.js:698 +#: htdocs/luci-static/resources/view/fchomo/node.js:703 msgid "Ports pool" msgstr "連接埠池" #: htdocs/luci-static/resources/fchomo/listeners.js:377 #: htdocs/luci-static/resources/fchomo/listeners.js:516 #: htdocs/luci-static/resources/view/fchomo/node.js:504 -#: htdocs/luci-static/resources/view/fchomo/node.js:930 +#: htdocs/luci-static/resources/view/fchomo/node.js:927 msgid "Pre-shared key" msgstr "預先共用金鑰" #: htdocs/luci-static/resources/fchomo/listeners.js:1001 -#: htdocs/luci-static/resources/view/fchomo/node.js:1271 +#: htdocs/luci-static/resources/view/fchomo/node.js:1284 msgid "Pre-shared key of rendezvous server" msgstr "牽線伺服器的預先共用金鑰" @@ -2602,30 +2609,30 @@ msgid "" "Prevent ICMP loopback issues in some cases. Ping will not show real delay." msgstr "防止某些情況下的 ICMP 環回問題。 Ping 不會顯示實際延遲。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1507 -#: htdocs/luci-static/resources/view/fchomo/node.js:1508 +#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1521 msgid "Primary" msgstr "主要" #: htdocs/luci-static/resources/view/fchomo/global.js:760 #: htdocs/luci-static/resources/view/fchomo/global.js:777 -#: htdocs/luci-static/resources/view/fchomo/node.js:1947 -#: htdocs/luci-static/resources/view/fchomo/node.js:1954 -#: htdocs/luci-static/resources/view/fchomo/node.js:2366 -#: htdocs/luci-static/resources/view/fchomo/node.js:2373 +#: htdocs/luci-static/resources/view/fchomo/node.js:1960 +#: htdocs/luci-static/resources/view/fchomo/node.js:1967 +#: htdocs/luci-static/resources/view/fchomo/node.js:2379 +#: htdocs/luci-static/resources/view/fchomo/node.js:2386 msgid "Priority: Proxy Node > Global." msgstr "優先權: 代理節點 > 全域。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1031 +#: htdocs/luci-static/resources/view/fchomo/node.js:1028 msgid "Priv-key" msgstr "金鑰" -#: htdocs/luci-static/resources/view/fchomo/node.js:1035 +#: htdocs/luci-static/resources/view/fchomo/node.js:1032 msgid "Priv-key passphrase" msgstr "金鑰密碼" -#: htdocs/luci-static/resources/view/fchomo/node.js:902 -#: htdocs/luci-static/resources/view/fchomo/node.js:995 +#: htdocs/luci-static/resources/view/fchomo/node.js:899 +#: htdocs/luci-static/resources/view/fchomo/node.js:992 msgid "Private key" msgstr "私鑰" @@ -2633,12 +2640,12 @@ msgstr "私鑰" msgid "Process matching mode" msgstr "進程匹配模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:2292 +#: htdocs/luci-static/resources/view/fchomo/node.js:2305 msgid "Programmable replacement" msgstr "可編程替換" #: htdocs/luci-static/resources/view/fchomo/global.js:708 -#: htdocs/luci-static/resources/view/fchomo/node.js:1857 +#: htdocs/luci-static/resources/view/fchomo/node.js:1870 msgid "Protocol" msgstr "協議" @@ -2653,13 +2660,13 @@ msgid "" msgstr "協議參數。 如啟用會隨機浪費流量(在 v2ray 中預設為啟用且無法停用)。" #: htdocs/luci-static/resources/view/fchomo/client.js:1112 -#: htdocs/luci-static/resources/view/fchomo/node.js:1969 -#: htdocs/luci-static/resources/view/fchomo/node.js:1978 -#: htdocs/luci-static/resources/view/fchomo/node.js:2482 +#: htdocs/luci-static/resources/view/fchomo/node.js:1982 +#: htdocs/luci-static/resources/view/fchomo/node.js:1991 +#: htdocs/luci-static/resources/view/fchomo/node.js:2495 msgid "Provider" msgstr "供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:2166 +#: htdocs/luci-static/resources/view/fchomo/node.js:2179 msgid "Provider URL" msgstr "供應商訂閱 URL" @@ -2682,19 +2689,19 @@ msgid "Proxy MAC-s" msgstr "代理 MAC 位址" #: htdocs/luci-static/resources/view/fchomo/node.js:222 -#: htdocs/luci-static/resources/view/fchomo/node.js:2481 +#: htdocs/luci-static/resources/view/fchomo/node.js:2494 msgid "Proxy Node" msgstr "代理節點" -#: htdocs/luci-static/resources/view/fchomo/node.js:2457 -#: htdocs/luci-static/resources/view/fchomo/node.js:2466 +#: htdocs/luci-static/resources/view/fchomo/node.js:2470 +#: htdocs/luci-static/resources/view/fchomo/node.js:2479 msgid "Proxy chain" msgstr "代理鏈" #: htdocs/luci-static/resources/fchomo/listeners.js:614 #: htdocs/luci-static/resources/view/fchomo/client.js:813 #: htdocs/luci-static/resources/view/fchomo/client.js:1643 -#: htdocs/luci-static/resources/view/fchomo/node.js:2184 +#: htdocs/luci-static/resources/view/fchomo/node.js:2197 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:403 msgid "Proxy group" msgstr "代理組" @@ -2711,22 +2718,22 @@ msgstr "代理模式" msgid "Proxy routerself" msgstr "代理路由器自身" -#: htdocs/luci-static/resources/view/fchomo/node.js:919 +#: htdocs/luci-static/resources/view/fchomo/node.js:916 msgid "Public key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:637 -#: htdocs/luci-static/resources/view/fchomo/node.js:793 +#: htdocs/luci-static/resources/view/fchomo/node.js:642 +#: htdocs/luci-static/resources/view/fchomo/node.js:798 msgid "QUIC" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:552 -#: htdocs/luci-static/resources/view/fchomo/node.js:746 +#: htdocs/luci-static/resources/view/fchomo/node.js:751 msgid "QUIC based 0-RTT" msgstr "基於 QUIC 的 0-RTT" #: htdocs/luci-static/resources/fchomo/listeners.js:546 -#: htdocs/luci-static/resources/view/fchomo/node.js:735 +#: htdocs/luci-static/resources/view/fchomo/node.js:740 msgid "QUIC versions" msgstr "QUIC 版本" @@ -2737,11 +2744,11 @@ msgstr "快速重載" #: htdocs/luci-static/resources/fchomo/listeners.js:1123 #: htdocs/luci-static/resources/fchomo/listeners.js:1229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1452 +#: htdocs/luci-static/resources/view/fchomo/node.js:1465 msgid "REALITY" msgstr "REALITY" -#: htdocs/luci-static/resources/view/fchomo/node.js:1478 +#: htdocs/luci-static/resources/view/fchomo/node.js:1491 msgid "REALITY X25519MLKEM768 PQC support" msgstr "REALITY X25519MLKEM768 後量子加密支援" @@ -2758,12 +2765,12 @@ msgid "REALITY private key" msgstr "REALITY 私鑰" #: htdocs/luci-static/resources/fchomo/listeners.js:1267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1468 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "REALITY public key" msgstr "REALITY 公鑰" #: htdocs/luci-static/resources/fchomo/listeners.js:1271 -#: htdocs/luci-static/resources/view/fchomo/node.js:1473 +#: htdocs/luci-static/resources/view/fchomo/node.js:1486 msgid "REALITY short ID" msgstr "REALITY 標識符" @@ -2775,7 +2782,7 @@ msgstr "REMATCH-NAME 打標" #: htdocs/luci-static/resources/fchomo/listeners.js:834 #: htdocs/luci-static/resources/fchomo/listeners.js:853 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 +#: htdocs/luci-static/resources/view/fchomo/node.js:1239 msgid "RTT" msgstr "" @@ -2792,12 +2799,12 @@ msgid "Randomized traffic characteristics" msgstr "隨機化流量特徵" #: htdocs/luci-static/resources/fchomo/listeners.js:990 -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1273 msgid "Realm" msgstr "Realm" #: htdocs/luci-static/resources/fchomo/listeners.js:1006 -#: htdocs/luci-static/resources/view/fchomo/node.js:1276 +#: htdocs/luci-static/resources/view/fchomo/node.js:1289 msgid "Realm ID" msgstr "Realm ID" @@ -2821,7 +2828,7 @@ msgstr "Redirect TCP + TProxy UDP" msgid "Redirect TCP + Tun UDP" msgstr "Redirect TCP + Tun UDP" -#: htdocs/luci-static/resources/view/fchomo/node.js:830 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 msgid "Reduces background traffic and network configuration refresh frequency." msgstr "降低後台流量和網路配置刷新頻率。" @@ -2848,20 +2855,20 @@ msgstr "再路由" msgid "Rematching routing rules" msgstr "重新匹配路由規則" -#: htdocs/luci-static/resources/view/fchomo/node.js:2111 +#: htdocs/luci-static/resources/view/fchomo/node.js:2124 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:287 msgid "Remote" msgstr "遠端" -#: htdocs/luci-static/resources/view/fchomo/node.js:1645 +#: htdocs/luci-static/resources/view/fchomo/node.js:1658 msgid "Remote DNS resolve" msgstr "遠端 DNS 解析" -#: htdocs/luci-static/resources/view/fchomo/node.js:813 +#: htdocs/luci-static/resources/view/fchomo/node.js:818 msgid "Remote trace level" msgstr "遠端追蹤等級" -#: htdocs/luci-static/resources/view/fchomo/node.js:806 +#: htdocs/luci-static/resources/view/fchomo/node.js:811 msgid "Remote trace target" msgstr "遠端追蹤目標" @@ -2872,23 +2879,23 @@ msgstr "移除" #: htdocs/luci-static/resources/fchomo.js:1741 #: htdocs/luci-static/resources/view/fchomo/node.js:241 #: htdocs/luci-static/resources/view/fchomo/node.js:243 -#: htdocs/luci-static/resources/view/fchomo/node.js:2087 -#: htdocs/luci-static/resources/view/fchomo/node.js:2089 +#: htdocs/luci-static/resources/view/fchomo/node.js:2100 +#: htdocs/luci-static/resources/view/fchomo/node.js:2102 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "Remove idles" msgstr "移除閒置" #: htdocs/luci-static/resources/fchomo/listeners.js:995 -#: htdocs/luci-static/resources/view/fchomo/node.js:1265 +#: htdocs/luci-static/resources/view/fchomo/node.js:1278 msgid "Rendezvous server" msgstr "牽線伺服器" -#: htdocs/luci-static/resources/view/fchomo/node.js:2283 +#: htdocs/luci-static/resources/view/fchomo/node.js:2296 msgid "Replace name" msgstr "名稱替換" -#: htdocs/luci-static/resources/view/fchomo/node.js:2284 +#: htdocs/luci-static/resources/view/fchomo/node.js:2297 msgid "Replace node name." msgstr "替換節點名稱" @@ -2897,12 +2904,12 @@ msgid "Request" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1329 -#: htdocs/luci-static/resources/view/fchomo/node.js:1725 -#: htdocs/luci-static/resources/view/fchomo/node.js:1732 +#: htdocs/luci-static/resources/view/fchomo/node.js:1738 +#: htdocs/luci-static/resources/view/fchomo/node.js:1745 msgid "Request path" msgstr "請求路徑" -#: htdocs/luci-static/resources/view/fchomo/node.js:677 +#: htdocs/luci-static/resources/view/fchomo/node.js:682 msgid "Request timeout" msgstr "請求逾時" @@ -2915,11 +2922,11 @@ msgid "Require any" msgstr "" #: htdocs/luci-static/resources/fchomo.js:408 -#: htdocs/luci-static/resources/view/fchomo/node.js:1479 +#: htdocs/luci-static/resources/view/fchomo/node.js:1492 msgid "Requires server support." msgstr "需要伺服器支援。" -#: htdocs/luci-static/resources/view/fchomo/node.js:944 +#: htdocs/luci-static/resources/view/fchomo/node.js:941 msgid "Reserved field bytes" msgstr "保留字段位元組" @@ -2932,15 +2939,15 @@ msgstr "資源管理" #: htdocs/luci-static/resources/fchomo/listeners.js:691 #: htdocs/luci-static/resources/fchomo/listeners.js:1121 #: htdocs/luci-static/resources/fchomo/listeners.js:1237 -#: htdocs/luci-static/resources/view/fchomo/node.js:1115 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1460 +#: htdocs/luci-static/resources/view/fchomo/node.js:1128 +#: htdocs/luci-static/resources/view/fchomo/node.js:1138 +#: htdocs/luci-static/resources/view/fchomo/node.js:1143 +#: htdocs/luci-static/resources/view/fchomo/node.js:1473 msgid "Restls" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:745 -#: htdocs/luci-static/resources/view/fchomo/node.js:1184 +#: htdocs/luci-static/resources/view/fchomo/node.js:1197 msgid "Restls script" msgstr "Restls 劇本" @@ -2978,8 +2985,8 @@ msgstr "路由 GFW 流量" #: htdocs/luci-static/resources/fchomo/listeners.js:597 #: htdocs/luci-static/resources/view/fchomo/global.js:776 -#: htdocs/luci-static/resources/view/fchomo/node.js:1953 -#: htdocs/luci-static/resources/view/fchomo/node.js:2372 +#: htdocs/luci-static/resources/view/fchomo/node.js:1966 +#: htdocs/luci-static/resources/view/fchomo/node.js:2385 msgid "Routing mark (Fwmark)" msgstr "路由標記 (Fwmark)" @@ -3027,7 +3034,7 @@ msgstr "規則集" msgid "Rule set URL" msgstr "規則集訂閱 URL" -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 msgid "Rules" msgstr "規則" @@ -3064,7 +3071,7 @@ msgid "STUN" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1012 -#: htdocs/luci-static/resources/view/fchomo/node.js:1282 +#: htdocs/luci-static/resources/view/fchomo/node.js:1295 msgid "STUN servers" msgstr "STUN 伺服器" @@ -3072,12 +3079,12 @@ msgstr "STUN 伺服器" msgid "SUB-RULE" msgstr "SUB-RULE" -#: htdocs/luci-static/resources/view/fchomo/node.js:1096 +#: htdocs/luci-static/resources/view/fchomo/node.js:1109 msgid "SUoT version" msgstr "SUoT 版本" #: htdocs/luci-static/resources/fchomo/listeners.js:486 -#: htdocs/luci-static/resources/view/fchomo/node.js:711 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Salamander" msgstr "Salamander" @@ -3094,8 +3101,8 @@ msgstr "相同 來源位址 和 目標位址 請求。相同節點" msgid "Save" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1537 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 +#: htdocs/luci-static/resources/view/fchomo/node.js:1551 msgid "Secondary" msgstr "次要" @@ -3137,11 +3144,15 @@ msgid "Server address" msgstr "伺服器位址" #: htdocs/luci-static/resources/fchomo/listeners.js:1323 -#: htdocs/luci-static/resources/view/fchomo/node.js:1704 -#: htdocs/luci-static/resources/view/fchomo/node.js:1710 +#: htdocs/luci-static/resources/view/fchomo/node.js:1717 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 msgid "Server hostname" msgstr "伺服器主機名稱" +#: htdocs/luci-static/resources/view/fchomo/node.js:1000 +msgid "Server public key" +msgstr "伺服器公鑰" + #: htdocs/luci-static/resources/view/fchomo/global.js:184 msgid "Server status" msgstr "服務端狀態" @@ -3160,10 +3171,10 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:690 #: htdocs/luci-static/resources/fchomo/listeners.js:1120 #: htdocs/luci-static/resources/fchomo/listeners.js:1236 -#: htdocs/luci-static/resources/view/fchomo/node.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1129 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1127 +#: htdocs/luci-static/resources/view/fchomo/node.js:1137 +#: htdocs/luci-static/resources/view/fchomo/node.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1472 msgid "ShadowTLS" msgstr "" @@ -3187,7 +3198,7 @@ msgstr "Shadowsocks 加密" msgid "Shadowsocks password" msgstr "Shadowsocks 密碼" -#: htdocs/luci-static/resources/view/fchomo/node.js:1905 +#: htdocs/luci-static/resources/view/fchomo/node.js:1918 msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中顯示連線以便於打斷連線。" @@ -3199,14 +3210,14 @@ msgstr "靜音" msgid "Simple round-robin all nodes" msgstr "簡單輪替所有節點" -#: htdocs/luci-static/resources/view/fchomo/node.js:2172 +#: htdocs/luci-static/resources/view/fchomo/node.js:2185 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:391 msgid "Size limit" msgstr "大小限制" #: htdocs/luci-static/resources/view/fchomo/client.js:1679 -#: htdocs/luci-static/resources/view/fchomo/node.js:1389 -#: htdocs/luci-static/resources/view/fchomo/node.js:2347 +#: htdocs/luci-static/resources/view/fchomo/node.js:1402 +#: htdocs/luci-static/resources/view/fchomo/node.js:2360 msgid "Skip cert verify" msgstr "跳過憑證驗證" @@ -3272,7 +3283,7 @@ msgid "Strategy" msgstr "策略" #: htdocs/luci-static/resources/fchomo/listeners.js:569 -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:775 msgid "Stream-level receive window size" msgstr "流級接收視窗大小" @@ -3304,7 +3315,7 @@ msgstr "已成功上傳。" msgid "Sudoku" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:741 msgid "Support %s, default %s." msgstr "支援 %s,預設 %s。" @@ -3349,7 +3360,7 @@ msgstr "TCP" msgid "TCP concurrency" msgstr "TCP 併發" -#: htdocs/luci-static/resources/view/fchomo/node.js:1898 +#: htdocs/luci-static/resources/view/fchomo/node.js:1911 msgid "TCP only" msgstr "僅 TCP" @@ -3376,8 +3387,8 @@ msgstr "TCP-Keep-Alive 間隔" msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1929 -#: htdocs/luci-static/resources/view/fchomo/node.js:2308 +#: htdocs/luci-static/resources/view/fchomo/node.js:1942 +#: htdocs/luci-static/resources/view/fchomo/node.js:2321 msgid "TFO" msgstr "TCP 快速開啟 (TFO)" @@ -3385,17 +3396,17 @@ msgstr "TCP 快速開啟 (TFO)" #: htdocs/luci-static/resources/fchomo/listeners.js:1022 #: htdocs/luci-static/resources/view/fchomo/global.js:550 #: htdocs/luci-static/resources/view/fchomo/node.js:469 -#: htdocs/luci-static/resources/view/fchomo/node.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1292 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 +#: htdocs/luci-static/resources/view/fchomo/node.js:1305 msgid "TLS" msgstr "TLS" #: htdocs/luci-static/resources/fchomo/listeners.js:1063 -#: htdocs/luci-static/resources/view/fchomo/node.js:1323 +#: htdocs/luci-static/resources/view/fchomo/node.js:1336 msgid "TLS ALPN" msgstr "TLS ALPN" -#: htdocs/luci-static/resources/view/fchomo/node.js:1317 +#: htdocs/luci-static/resources/view/fchomo/node.js:1330 msgid "TLS SNI" msgstr "" @@ -3414,7 +3425,7 @@ msgid "TURN" msgstr "" #: htdocs/luci-static/resources/fchomo.js:209 -#: htdocs/luci-static/resources/view/fchomo/node.js:956 +#: htdocs/luci-static/resources/view/fchomo/node.js:953 msgid "Tailscale" msgstr "" @@ -3427,28 +3438,28 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "讓客戶端使用 BBR 流控演算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1578 #: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1591 #: htdocs/luci-static/resources/view/fchomo/node.js:1595 -#: htdocs/luci-static/resources/view/fchomo/node.js:1603 -#: htdocs/luci-static/resources/view/fchomo/node.js:1607 +#: htdocs/luci-static/resources/view/fchomo/node.js:1608 +#: htdocs/luci-static/resources/view/fchomo/node.js:1616 +#: htdocs/luci-static/resources/view/fchomo/node.js:1620 msgid "The %s address used by local machine in the %s network." msgstr "本機 %s 位址,用於在 %s 網路中使用。" #: htdocs/luci-static/resources/fchomo/listeners.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1412 +#: htdocs/luci-static/resources/view/fchomo/node.js:1425 msgid "The %s private key, in PEM format." msgstr "%s私鑰,需要 PEM 格式。" #: htdocs/luci-static/resources/fchomo/listeners.js:1112 #: htdocs/luci-static/resources/fchomo/listeners.js:1165 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1398 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 msgid "The %s public key, in PEM format." msgstr "%s公鑰,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1432 +#: htdocs/luci-static/resources/view/fchomo/node.js:1445 msgid "" "The ECH parameter of the HTTPS record for the domain. Leave empty to resolve " "via DNS." @@ -3466,14 +3477,14 @@ msgstr "Sudoku 產生的 ED25519 主公鑰 或 UUID。" msgid "The default value is 2:00 every day." msgstr "預設值為每天 2:00。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1078 +#: htdocs/luci-static/resources/view/fchomo/node.js:1091 msgid "" "The default value is %s, indicating that only the outer " "connection timeout is used." msgstr "預設值為%s,表示僅使用外層連線逾時。" #: htdocs/luci-static/resources/fchomo/listeners.js:866 -#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1252 msgid "" "The first padding must have a probability of 100% and at least 35 bytes." msgstr "首個填充必須為 100% 的機率並且至少 35 位元組。" @@ -3493,7 +3504,7 @@ msgid "The proxy used to connect to the handshake target." msgstr "用於連接握手目標的代理。" #: htdocs/luci-static/resources/fchomo/listeners.js:864 -#: htdocs/luci-static/resources/view/fchomo/node.js:1237 +#: htdocs/luci-static/resources/view/fchomo/node.js:1250 msgid "The server and client can set different padding parameters." msgstr "伺服器和客戶端可以設定不同的填充參數。" @@ -3503,15 +3514,15 @@ msgid "This ECH parameter needs to be added to the HTTPS record of the domain." msgstr "此 ECH 參數需要加入到網域的 HTTPS 記錄中。" #: htdocs/luci-static/resources/view/fchomo/client.js:1682 -#: htdocs/luci-static/resources/view/fchomo/node.js:1392 -#: htdocs/luci-static/resources/view/fchomo/node.js:2350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1405 +#: htdocs/luci-static/resources/view/fchomo/node.js:2363 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" "這是危險行為,您的流量將幾乎等同於明文!使用風險自負!" -#: htdocs/luci-static/resources/view/fchomo/node.js:642 +#: htdocs/luci-static/resources/view/fchomo/node.js:647 msgid "" "This is the TUIC port of the SUoT protocol, designed to provide a QUIC " "stream based UDP relay mode that TUIC does not provide." @@ -3548,18 +3559,18 @@ msgstr "Tproxy 連接埠" msgid "Traffic pattern" msgstr "流量模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:2519 +#: htdocs/luci-static/resources/view/fchomo/node.js:2532 msgid "Transit proxy group" msgstr "中轉代理組" -#: htdocs/luci-static/resources/view/fchomo/node.js:2530 +#: htdocs/luci-static/resources/view/fchomo/node.js:2543 msgid "Transit proxy node" msgstr "中轉代理節點" #: htdocs/luci-static/resources/fchomo/listeners.js:194 #: htdocs/luci-static/resources/fchomo/listeners.js:1287 #: htdocs/luci-static/resources/view/fchomo/node.js:360 -#: htdocs/luci-static/resources/view/fchomo/node.js:1657 +#: htdocs/luci-static/resources/view/fchomo/node.js:1670 msgid "Transport" msgstr "傳輸層" @@ -3569,7 +3580,7 @@ msgid "Transport fields" msgstr "傳輸層欄位" #: htdocs/luci-static/resources/fchomo/listeners.js:1292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1662 +#: htdocs/luci-static/resources/view/fchomo/node.js:1675 msgid "Transport type" msgstr "傳輸層類型" @@ -3611,7 +3622,7 @@ msgstr "Tun 堆栈" msgid "Tunnel" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:844 +#: htdocs/luci-static/resources/view/fchomo/node.js:849 msgid "Turns TCP relay off." msgstr "關閉 TCP 中繼。" @@ -3622,8 +3633,8 @@ msgstr "關閉 TCP 中繼。" #: htdocs/luci-static/resources/view/fchomo/client.js:875 #: htdocs/luci-static/resources/view/fchomo/client.js:1073 #: htdocs/luci-static/resources/view/fchomo/node.js:268 -#: htdocs/luci-static/resources/view/fchomo/node.js:2109 -#: htdocs/luci-static/resources/view/fchomo/node.js:2480 +#: htdocs/luci-static/resources/view/fchomo/node.js:2122 +#: htdocs/luci-static/resources/view/fchomo/node.js:2493 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:285 msgid "Type" msgstr "類型" @@ -3642,8 +3653,8 @@ msgstr "類型" #: htdocs/luci-static/resources/fchomo/listeners.js:661 #: htdocs/luci-static/resources/view/fchomo/client.js:617 #: htdocs/luci-static/resources/view/fchomo/client.js:709 -#: htdocs/luci-static/resources/view/fchomo/node.js:1084 -#: htdocs/luci-static/resources/view/fchomo/node.js:2318 +#: htdocs/luci-static/resources/view/fchomo/node.js:1097 +#: htdocs/luci-static/resources/view/fchomo/node.js:2331 msgid "UDP" msgstr "UDP" @@ -3651,20 +3662,20 @@ msgstr "UDP" msgid "UDP NAT expiration time" msgstr "UDP NAT 過期時間" -#: htdocs/luci-static/resources/view/fchomo/node.js:641 -#: htdocs/luci-static/resources/view/fchomo/node.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:646 +#: htdocs/luci-static/resources/view/fchomo/node.js:746 msgid "UDP over stream" msgstr "UDP over stream" -#: htdocs/luci-static/resources/view/fchomo/node.js:647 +#: htdocs/luci-static/resources/view/fchomo/node.js:652 msgid "UDP over stream version" msgstr "UDP over stream 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:634 +#: htdocs/luci-static/resources/view/fchomo/node.js:639 msgid "UDP packet relay mode." msgstr "UDP 包中繼模式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:638 msgid "UDP relay mode" msgstr "UDP 中繼模式" @@ -3683,7 +3694,7 @@ msgstr "自動選擇" #: htdocs/luci-static/resources/fchomo/listeners.js:395 #: htdocs/luci-static/resources/fchomo/listeners.js:445 #: htdocs/luci-static/resources/view/fchomo/node.js:527 -#: htdocs/luci-static/resources/view/fchomo/node.js:621 +#: htdocs/luci-static/resources/view/fchomo/node.js:626 msgid "UUID" msgstr "UUID" @@ -3712,8 +3723,8 @@ msgstr "未知錯誤。" msgid "Unknown error: %s" msgstr "未知錯誤:%s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1090 -#: htdocs/luci-static/resources/view/fchomo/node.js:2323 +#: htdocs/luci-static/resources/view/fchomo/node.js:1103 +#: htdocs/luci-static/resources/view/fchomo/node.js:2336 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -3721,24 +3732,24 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失敗。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2178 +#: htdocs/luci-static/resources/view/fchomo/node.js:2191 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:397 msgid "Update interval" msgstr "更新間隔" #: htdocs/luci-static/resources/fchomo/listeners.js:1389 -#: htdocs/luci-static/resources/view/fchomo/node.js:1916 +#: htdocs/luci-static/resources/view/fchomo/node.js:1929 msgid "Upload bandwidth" msgstr "上傳頻寬" #: htdocs/luci-static/resources/fchomo/listeners.js:1390 -#: htdocs/luci-static/resources/view/fchomo/node.js:1917 +#: htdocs/luci-static/resources/view/fchomo/node.js:1930 msgid "Upload bandwidth in Mbps." msgstr "上傳頻寬(單位:Mbps)。" #: htdocs/luci-static/resources/fchomo/listeners.js:1133 #: htdocs/luci-static/resources/fchomo/listeners.js:1173 -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 msgid "Upload certificate" msgstr "上傳憑證" @@ -3747,7 +3758,7 @@ msgid "Upload initial package" msgstr "上傳初始資源包" #: htdocs/luci-static/resources/fchomo/listeners.js:1148 -#: htdocs/luci-static/resources/view/fchomo/node.js:1417 +#: htdocs/luci-static/resources/view/fchomo/node.js:1430 msgid "Upload key" msgstr "上傳金鑰" @@ -3755,12 +3766,12 @@ msgstr "上傳金鑰" #: htdocs/luci-static/resources/fchomo/listeners.js:1151 #: htdocs/luci-static/resources/fchomo/listeners.js:1176 #: htdocs/luci-static/resources/view/fchomo/global.js:306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1406 -#: htdocs/luci-static/resources/view/fchomo/node.js:1420 +#: htdocs/luci-static/resources/view/fchomo/node.js:1419 +#: htdocs/luci-static/resources/view/fchomo/node.js:1433 msgid "Upload..." msgstr "上傳..." -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:841 msgid "Use protocol-13 extended encryption for outgoing HELLO packets." msgstr "對傳出的 HELLO 封包使用 協定-13 擴充加密。" @@ -3770,7 +3781,7 @@ msgstr "對傳出的 HELLO 封包使用 協定-13 擴充加密。" msgid "Use sub rule" msgstr "使用子規則" -#: htdocs/luci-static/resources/view/fchomo/node.js:855 +#: htdocs/luci-static/resources/view/fchomo/node.js:860 msgid "Used to replace the built-in official %s." msgstr "用於替換內建的官方 %s。" @@ -3794,8 +3805,8 @@ msgstr "用於解析 DNS 伺服器的網域。必須是 IP。" msgid "Used to resolve the domain of the Proxy node." msgstr "用於解析代理節點的網域。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1384 -#: htdocs/luci-static/resources/view/fchomo/node.js:2342 +#: htdocs/luci-static/resources/view/fchomo/node.js:1397 +#: htdocs/luci-static/resources/view/fchomo/node.js:2355 msgid "Used to verify the hostname on the returned certificates." msgstr "用於驗證傳回的憑證上的主機名稱。" @@ -3810,7 +3821,7 @@ msgstr "User-hint 是必填項" #: htdocs/luci-static/resources/fchomo/listeners.js:162 #: htdocs/luci-static/resources/fchomo/listeners.js:723 #: htdocs/luci-static/resources/view/fchomo/node.js:319 -#: htdocs/luci-static/resources/view/fchomo/node.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1167 msgid "Username" msgstr "使用者名稱" @@ -3818,19 +3829,19 @@ msgstr "使用者名稱" msgid "Users filter mode" msgstr "使用者過濾模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:843 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Uses TCP relay only." msgstr "僅使用 TCP 中繼。" -#: htdocs/luci-static/resources/view/fchomo/node.js:842 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 msgid "Uses relay after UDP direct failure." msgstr "UDP 直連失敗後使用中繼。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1773 +#: htdocs/luci-static/resources/view/fchomo/node.js:1786 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1778 +#: htdocs/luci-static/resources/view/fchomo/node.js:1791 msgid "V2ray HTTPUpgrade fast open" msgstr "" @@ -3844,8 +3855,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 +#: htdocs/luci-static/resources/view/fchomo/node.js:1582 +#: htdocs/luci-static/resources/view/fchomo/node.js:1608 msgid "VPN" msgstr "" @@ -3853,17 +3864,17 @@ msgstr "" msgid "VPN fields" msgstr "VPN 欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:886 +#: htdocs/luci-static/resources/view/fchomo/node.js:891 msgid "Valid 16-digit Moon World ID and 10-digit Node ID of Moon Root server." msgstr "有效的 16-位數 Moon World ID 和 10-位數 Moon Root 伺服器 Node ID。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2115 -#: htdocs/luci-static/resources/view/fchomo/node.js:2486 +#: htdocs/luci-static/resources/view/fchomo/node.js:2128 +#: htdocs/luci-static/resources/view/fchomo/node.js:2499 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:328 msgid "Value" msgstr "可視化值" -#: htdocs/luci-static/resources/view/fchomo/node.js:815 +#: htdocs/luci-static/resources/view/fchomo/node.js:820 msgid "Verbose" msgstr "詳細" @@ -3874,19 +3885,19 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:384 #: htdocs/luci-static/resources/fchomo/listeners.js:737 #: htdocs/luci-static/resources/view/fchomo/node.js:511 -#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1181 msgid "Version" msgstr "版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:1176 +#: htdocs/luci-static/resources/view/fchomo/node.js:1189 msgid "Version hint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1594 +#: htdocs/luci-static/resources/view/fchomo/node.js:1607 msgid "Virtual IPv6 address" msgstr "虛擬 IPv6 位址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1568 +#: htdocs/luci-static/resources/view/fchomo/node.js:1581 msgid "Virtual address" msgstr "虛擬位址" @@ -3909,10 +3920,10 @@ msgstr "警告" #: htdocs/luci-static/resources/fchomo/listeners.js:1312 #: htdocs/luci-static/resources/view/fchomo/node.js:465 #: htdocs/luci-static/resources/view/fchomo/node.js:494 -#: htdocs/luci-static/resources/view/fchomo/node.js:1667 #: htdocs/luci-static/resources/view/fchomo/node.js:1680 -#: htdocs/luci-static/resources/view/fchomo/node.js:1687 #: htdocs/luci-static/resources/view/fchomo/node.js:1693 +#: htdocs/luci-static/resources/view/fchomo/node.js:1700 +#: htdocs/luci-static/resources/view/fchomo/node.js:1706 msgid "WebSocket" msgstr "" @@ -3920,7 +3931,7 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "用作服務端時,HomeProxy 是更好的選擇。" -#: htdocs/luci-static/resources/view/fchomo/node.js:978 +#: htdocs/luci-static/resources/view/fchomo/node.js:975 msgid "Whether to accept routes advertised by other nodes." msgstr "是否接受其他節點發布的路由。" @@ -3932,45 +3943,45 @@ msgstr "白名單" msgid "WireGuard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:924 +#: htdocs/luci-static/resources/view/fchomo/node.js:921 msgid "WireGuard peer public key." msgstr "WireGuard 對端公鑰。" -#: htdocs/luci-static/resources/view/fchomo/node.js:931 +#: htdocs/luci-static/resources/view/fchomo/node.js:928 msgid "WireGuard pre-shared key." msgstr "WireGuard 預先共用金鑰。" -#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:900 msgid "WireGuard requires base64-encoded private keys." msgstr "WireGuard 要求 base64 編碼的私鑰。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 +#: htdocs/luci-static/resources/view/fchomo/node.js:1592 +#: htdocs/luci-static/resources/view/fchomo/node.js:1617 msgid "Wireguard" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1295 #: htdocs/luci-static/resources/fchomo/listeners.js:1306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1668 -#: htdocs/luci-static/resources/view/fchomo/node.js:1688 +#: htdocs/luci-static/resources/view/fchomo/node.js:1681 +#: htdocs/luci-static/resources/view/fchomo/node.js:1701 msgid "XHTTP" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1342 -#: htdocs/luci-static/resources/view/fchomo/node.js:1783 +#: htdocs/luci-static/resources/view/fchomo/node.js:1796 msgid "XHTTP mode" msgstr "XHTTP 模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1814 +#: htdocs/luci-static/resources/view/fchomo/node.js:1827 msgid "XMUX" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1819 -#: htdocs/luci-static/resources/view/fchomo/node.js:1824 -#: htdocs/luci-static/resources/view/fchomo/node.js:1829 -#: htdocs/luci-static/resources/view/fchomo/node.js:1834 -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1832 +#: htdocs/luci-static/resources/view/fchomo/node.js:1837 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 +#: htdocs/luci-static/resources/view/fchomo/node.js:1847 +#: htdocs/luci-static/resources/view/fchomo/node.js:1852 +#: htdocs/luci-static/resources/view/fchomo/node.js:1857 msgid "XMUX:" msgstr "" @@ -3986,7 +3997,7 @@ msgstr "" msgid "Yaml text" msgstr "Yaml 格式文本" -#: htdocs/luci-static/resources/view/fchomo/node.js:2353 +#: htdocs/luci-static/resources/view/fchomo/node.js:2366 msgid "Yes" msgstr "" @@ -4002,7 +4013,7 @@ msgstr "您的 %s 已成功上傳。大小:%sB。" msgid "ZeroTier" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:823 +#: htdocs/luci-static/resources/view/fchomo/node.js:828 msgid "ZeroTier UDP payload MTU." msgstr "ZeroTier UDP 有效載荷 MTU。" @@ -4022,11 +4033,11 @@ msgstr "" msgid "aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2200 +#: htdocs/luci-static/resources/view/fchomo/node.js:2213 msgid "age private key" msgstr "age 私鑰" -#: htdocs/luci-static/resources/view/fchomo/node.js:2261 +#: htdocs/luci-static/resources/view/fchomo/node.js:2274 msgid "age public key" msgstr "age 公鑰" @@ -4043,12 +4054,17 @@ msgid "auto" msgstr "自動" #: htdocs/luci-static/resources/fchomo.js:56 +#: htdocs/luci-static/resources/view/fchomo/node.js:1060 msgid "bbr" msgstr "bbr" +#: htdocs/luci-static/resources/view/fchomo/node.js:1061 +msgid "bbr3" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:1138 #: htdocs/luci-static/resources/fchomo/listeners.js:1178 -#: htdocs/luci-static/resources/view/fchomo/node.js:1408 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "certificate" msgstr "憑證" @@ -4063,6 +4079,7 @@ msgid "chacha20-poly1305" msgstr "" #: htdocs/luci-static/resources/fchomo.js:54 +#: htdocs/luci-static/resources/view/fchomo/node.js:1058 msgid "cubic" msgstr "cubic" @@ -4075,13 +4092,13 @@ msgstr "decryption" msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "dnsmasq 自行選擇上游服務器。 (可能影響 CDN 準確性)" -#: htdocs/luci-static/resources/view/fchomo/node.js:2335 +#: htdocs/luci-static/resources/view/fchomo/node.js:2348 msgid "down" msgstr "Hysteria 下載速率" #: htdocs/luci-static/resources/fchomo/listeners.js:812 -#: htdocs/luci-static/resources/view/fchomo/node.js:1191 -#: htdocs/luci-static/resources/view/fchomo/node.js:1214 +#: htdocs/luci-static/resources/view/fchomo/node.js:1204 +#: htdocs/luci-static/resources/view/fchomo/node.js:1227 msgid "encryption" msgstr "encryption" @@ -4093,44 +4110,44 @@ msgstr "false = 頻寬最佳化下行 true = 純 Sudoku 下行。" #: htdocs/luci-static/resources/fchomo/listeners.js:1293 #: htdocs/luci-static/resources/fchomo/listeners.js:1304 #: htdocs/luci-static/resources/fchomo/listeners.js:1311 -#: htdocs/luci-static/resources/view/fchomo/node.js:1666 #: htdocs/luci-static/resources/view/fchomo/node.js:1679 -#: htdocs/luci-static/resources/view/fchomo/node.js:1686 #: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1699 +#: htdocs/luci-static/resources/view/fchomo/node.js:1705 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1749 +#: htdocs/luci-static/resources/view/fchomo/node.js:1762 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1754 +#: htdocs/luci-static/resources/view/fchomo/node.js:1767 msgid "gRPC ping interval" msgstr "gRPC ping 間隔" #: htdocs/luci-static/resources/fchomo/listeners.js:1336 -#: htdocs/luci-static/resources/view/fchomo/node.js:1745 +#: htdocs/luci-static/resources/view/fchomo/node.js:1758 msgid "gRPC service name" msgstr "gRPC 服務名稱" #: htdocs/luci-static/resources/view/fchomo/global.js:517 -#: htdocs/luci-static/resources/view/fchomo/node.js:896 +#: htdocs/luci-static/resources/view/fchomo/node.js:1051 msgid "gVisor" msgstr "gVisor" -#: htdocs/luci-static/resources/view/fchomo/node.js:1014 +#: htdocs/luci-static/resources/view/fchomo/node.js:1011 msgid "h2" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1861 +#: htdocs/luci-static/resources/view/fchomo/node.js:1874 msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1012 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "h3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1013 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "h3-l4proxy" msgstr "" @@ -4142,7 +4159,7 @@ msgstr "至少需要一對密鑰" msgid "metacubexd" msgstr "metacubexd" -#: htdocs/luci-static/resources/view/fchomo/node.js:897 +#: htdocs/luci-static/resources/view/fchomo/node.js:1052 msgid "mihomo IP stack (MIPS)" msgstr "mihomo IP 協定棧(MIPS)" @@ -4152,7 +4169,7 @@ msgstr "mihomo IP 協定棧(MIPS)" #: htdocs/luci-static/resources/view/fchomo/client.js:1580 #: htdocs/luci-static/resources/view/fchomo/client.js:1814 #: htdocs/luci-static/resources/view/fchomo/client.js:1870 -#: htdocs/luci-static/resources/view/fchomo/node.js:2081 +#: htdocs/luci-static/resources/view/fchomo/node.js:2094 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:247 msgid "mihomo config" msgstr "mihomo 配置" @@ -4161,8 +4178,8 @@ msgstr "mihomo 配置" msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1934 -#: htdocs/luci-static/resources/view/fchomo/node.js:2313 +#: htdocs/luci-static/resources/view/fchomo/node.js:1947 +#: htdocs/luci-static/resources/view/fchomo/node.js:2326 msgid "mpTCP" msgstr "多路徑 TCP (mpTCP)" @@ -4206,8 +4223,8 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:674 #: htdocs/luci-static/resources/fchomo/listeners.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1111 -#: htdocs/luci-static/resources/view/fchomo/node.js:1123 +#: htdocs/luci-static/resources/view/fchomo/node.js:1124 +#: htdocs/luci-static/resources/view/fchomo/node.js:1136 msgid "obfs-simple" msgstr "" @@ -4219,11 +4236,11 @@ msgstr "僅當 %s 為 %s 時適用。" msgid "only applies when %s is not %s." msgstr "僅當 %s 不為 %s 時適用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:2294 +#: htdocs/luci-static/resources/view/fchomo/node.js:2307 msgid "override.override-expr" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2286 +#: htdocs/luci-static/resources/view/fchomo/node.js:2299 msgid "override.proxy-name" msgstr "" @@ -4232,7 +4249,7 @@ msgid "packet addr (v2ray-core v5+)" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1346 -#: htdocs/luci-static/resources/view/fchomo/node.js:1787 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 msgid "packet-up" msgstr "" @@ -4242,7 +4259,7 @@ msgid "poll" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1153 -#: htdocs/luci-static/resources/view/fchomo/node.js:1422 +#: htdocs/luci-static/resources/view/fchomo/node.js:1435 msgid "private key" msgstr "私鑰" @@ -4250,6 +4267,10 @@ msgstr "私鑰" msgid "razord-meta" msgstr "razord-meta" +#: htdocs/luci-static/resources/view/fchomo/node.js:1059 +msgid "reno" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/client.js:1267 #: htdocs/luci-static/resources/view/fchomo/client.js:1273 msgid "requires front-end adaptation using the API." @@ -4259,7 +4280,7 @@ msgstr "需要使用 API 的前端適配。" msgid "rule-set" msgstr "規則集" -#: htdocs/luci-static/resources/view/fchomo/node.js:1859 +#: htdocs/luci-static/resources/view/fchomo/node.js:1872 msgid "smux" msgstr "" @@ -4273,12 +4294,12 @@ msgid "src" msgstr "src" #: htdocs/luci-static/resources/fchomo/listeners.js:1344 -#: htdocs/luci-static/resources/view/fchomo/node.js:1785 +#: htdocs/luci-static/resources/view/fchomo/node.js:1798 msgid "stream-one" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1345 -#: htdocs/luci-static/resources/view/fchomo/node.js:1786 +#: htdocs/luci-static/resources/view/fchomo/node.js:1799 msgid "stream-up" msgstr "" @@ -4294,11 +4315,11 @@ msgstr "" msgid "sudoku-keypair" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1178 +#: htdocs/luci-static/resources/view/fchomo/node.js:1191 msgid "tls12" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1179 +#: htdocs/luci-static/resources/view/fchomo/node.js:1192 msgid "tls13" msgstr "" @@ -4318,31 +4339,31 @@ msgstr "獨立標識" msgid "unique value" msgstr "獨立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:2329 +#: htdocs/luci-static/resources/view/fchomo/node.js:2342 msgid "up" msgstr "Hysteria 上傳速率" #: htdocs/luci-static/resources/fchomo/listeners.js:385 #: htdocs/luci-static/resources/fchomo/listeners.js:738 #: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:648 -#: htdocs/luci-static/resources/view/fchomo/node.js:1097 -#: htdocs/luci-static/resources/view/fchomo/node.js:1169 +#: htdocs/luci-static/resources/view/fchomo/node.js:653 +#: htdocs/luci-static/resources/view/fchomo/node.js:1110 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "v1" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:386 #: htdocs/luci-static/resources/fchomo/listeners.js:739 #: htdocs/luci-static/resources/view/fchomo/node.js:513 -#: htdocs/luci-static/resources/view/fchomo/node.js:1098 -#: htdocs/luci-static/resources/view/fchomo/node.js:1170 +#: htdocs/luci-static/resources/view/fchomo/node.js:1111 +#: htdocs/luci-static/resources/view/fchomo/node.js:1183 msgid "v2" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:387 #: htdocs/luci-static/resources/fchomo/listeners.js:740 #: htdocs/luci-static/resources/view/fchomo/node.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:1171 +#: htdocs/luci-static/resources/view/fchomo/node.js:1184 msgid "v3" msgstr "" @@ -4361,7 +4382,7 @@ msgstr "" msgid "valid JSON format" msgstr "有效的 JSON 格式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 +#: htdocs/luci-static/resources/view/fchomo/node.js:1389 msgid "valid SHA256 string with %d characters" msgstr "包含 %d 個字元的有效 SHA256 字串" @@ -4411,7 +4432,7 @@ msgstr "" msgid "yacd-meta" msgstr "yacd-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:1860 +#: htdocs/luci-static/resources/view/fchomo/node.js:1873 msgid "yamux" msgstr "" diff --git a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc index 60442838..bb7a4bed 100644 --- a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc +++ b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc @@ -572,6 +572,7 @@ uci.foreach(uciconf, ucinode, (cfg) => { } : null, /* AnyTLS */ + "client-metadata": cfg.anytls_client_metadata, "idle-session-check-interval": durationToSecond(cfg.anytls_idle_session_check_interval), "idle-session-timeout": durationToSecond(cfg.anytls_idle_session_timeout), "min-idle-session": strToInt(cfg.anytls_min_idle_session), diff --git a/luci-app-frpc/po/sv/frpc.po b/luci-app-frpc/po/sv/frpc.po index 0c6e7f4d..a7b64a00 100644 --- a/luci-app-frpc/po/sv/frpc.po +++ b/luci-app-frpc/po/sv/frpc.po @@ -1,14 +1,14 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-03-02 22:45+0000\n" -"Last-Translator: Kristoffer Grundström \n" +"PO-Revision-Date: 2026-08-13 09:16+0000\n" +"Last-Translator: Jonatan Nyberg \n" "Language-Team: Swedish \n" "Language: sv\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.9.dev0\n" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1454 msgid "Add new proxy or visitor..." @@ -32,7 +32,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:174 msgid "Additional configs" -msgstr "Extra konfigurationer" +msgstr "Ytterligare konfigurationer" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1060 msgid "Additional proxy metadata. Use key=value." @@ -45,6 +45,8 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:187 msgid "Address of the frps server." msgstr "" +"AdminAddr anger adressen som administrationsservern binds till.
Som " +"standard är värdet ”0.0.0.0”." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1430 msgid "Advanced" @@ -53,14 +55,20 @@ msgstr "Avancerat" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:839 msgid "Allow users" msgstr "" +"AdminPort anger porten som administrationsservern ska lyssna på. Om värdet " +"är 0 startas inte administrationsservern.
Som standard är värdet 0." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1069 msgid "Annotations" msgstr "" +"AdminPwd anger lösenordet som administrationsservern använder för " +"inloggning.
Som standard är värdet ”admin”." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1070 msgid "Annotations displayed on frps dashboard. Use key=value." msgstr "" +"AdminUser anger användarnamnet som administrationsservern använder för " +"inloggning.
Som standard är värdet ”admin”." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:464 msgid "Assets dir" @@ -409,7 +417,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1460 msgid "General Settings" -msgstr "Generella inställningar" +msgstr "Allmänna inställningar" #: applications/luci-app-frpc/root/usr/share/rpcd/acl.d/luci-app-frpc.json:3 msgid "Grant access to LuCI app frpc" @@ -495,7 +503,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:530 msgid "Heartbeat interval" -msgstr "Hjärtslagsintervall" +msgstr "Heartbeat-intervall" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:531 msgid "Heartbeat interval in seconds." @@ -554,7 +562,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:659 msgid "Local IP" -msgstr "Lokal IP" +msgstr "Lokal IP-adress" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:523 msgid "" @@ -583,6 +591,8 @@ msgstr "Lokal port" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:660 msgid "Local service IP or host." msgstr "" +"LocalIp anger IP-adressen eller värdnamnet som proxyn ska vidarebefordra " +"till." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:664 msgid "Local service port." @@ -598,7 +608,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:387 msgid "Log level" -msgstr "Logg-nivå" +msgstr "Loggnivå" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:391 msgid "Log max days" @@ -647,6 +657,9 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:197 msgid "NAT hole STUN server" msgstr "" +"LoginFailExit styr om klienten ska avslutas efter ett misslyckat " +"inloggningsförsök. Om värdet är false försöker klienten igen tills en " +"inloggning lyckas.
Som standard är värdet true." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1390 msgid "NOT RUNNING" @@ -749,7 +762,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:909 #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1463 msgid "Plugin" -msgstr "Insticksprogram" +msgstr "Insticksmodul" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:1015 msgid "Plugin HTTP/2" @@ -901,11 +914,11 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:153 msgid "Run daemon as group" -msgstr "Kör daemon som grupp" +msgstr "Kör demonen som grupp" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:152 msgid "Run daemon as user" -msgstr "Kör daemon som användare" +msgstr "Kör demonen som användare" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:943 msgid "SOCKS5 password" @@ -933,7 +946,7 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:186 msgid "Server address" -msgstr "Server-adress" +msgstr "Serveradress" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:847 msgid "Server name" @@ -1054,14 +1067,20 @@ msgstr "" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:560 msgid "TLS trusted CA path" msgstr "" +"TcpMux aktiverar eller inaktiverar multiplexering av TCP-strömmar. Det gör " +"att flera begäranden från en klient kan dela en enda TCP-anslutning. Om " +"värdet är true måste även servern ha TCP-multiplexering aktiverad.
Som " +"standard är värdet true." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:483 msgid "Timeout in seconds for connecting to frps." msgstr "" +"Den här listan kan användas för att ange ytterligare parametrar som inte har " +"tagits med i LuCI." #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:235 msgid "Token" -msgstr "Tecken" +msgstr "Token" #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:244 #: applications/luci-app-frpc/htdocs/luci-static/resources/view/frpc.js:264 diff --git a/luci-app-frps/po/sv/frps.po b/luci-app-frps/po/sv/frps.po index 72d55541..ad993019 100644 --- a/luci-app-frps/po/sv/frps.po +++ b/luci-app-frps/po/sv/frps.po @@ -1,7 +1,7 @@ msgid "" msgstr "" -"PO-Revision-Date: 2026-03-22 17:09+0000\n" -"Last-Translator: Kristoffer Grundström \n" +"PO-Revision-Date: 2026-08-13 09:16+0000\n" +"Last-Translator: Jonatan Nyberg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -24,7 +24,7 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:144 msgid "Additional configs" -msgstr "Extra konfigurationer" +msgstr "Ytterligare konfigurationer" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:257 msgid "Additional scopes to include authentication information." @@ -72,7 +72,7 @@ msgstr "Bindningsadress" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:157 msgid "Bind port" -msgstr "Bind port" +msgstr "Bindningsport" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:969 msgid "Collecting data ..." @@ -81,12 +81,16 @@ msgstr "Samlar in data ..." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:323 msgid "Command arguments passed to token source exec." msgstr "" +"BindAddr anger adressen som servern binds till.
Som standard är värdet ”" +"0.0.0.0”." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:300 msgid "" "Command used to obtain the token. The init script adds --allow-" "unsafe=TokenSourceExec when this source type is used." msgstr "" +"BindKcpPort anger KCP-porten som servern lyssnar på. Om värdet är 0 lyssnar " +"servern inte efter KCP-anslutningar.
Som standard är värdet 0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:977 msgid "Common Settings" @@ -95,18 +99,25 @@ msgstr "Vanliga inställningar" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:368 msgid "Configuration key: log.level." msgstr "" +"BindPort anger porten som servern lyssnar på.
Som standard är värdet " +"7000." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:538 msgid "Configuration key: transport.quic.keepalivePeriod." msgstr "" +"BindQuicPort anger QUIC-porten som servern lyssnar på. Om värdet är 0 " +"lyssnar servern inte efter QUIC-anslutningar.
Som standard är värdet 0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:542 msgid "Configuration key: transport.quic.maxIdleTimeout." msgstr "" +"BindUdpPort anger UDP-porten som servern lyssnar på. Om värdet är 0 lyssnar " +"servern inte efter UDP-anslutningar.
Som standard är värdet 0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:546 msgid "Configuration key: transport.quic.maxIncomingStreams." msgstr "" +"Konfigurationsfiler som inkluderas i den tillfälliga konfigurationsfilen" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:227 msgid "Custom 404 page" @@ -131,6 +142,8 @@ msgstr "Inaktiverad" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:220 msgid "Do not update traffic when TCPMUX passthrough is enabled." msgstr "" +"Dashboard TLS Key File anger sökvägen till filen med den privata TLS-nyckeln " +"för att aktivera HTTPS-åtkomst.
Krävs om HTTPS är aktiverat." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:224 msgid "Domain suffix for subdomain-based HTTP/HTTPS proxies." @@ -171,22 +184,30 @@ msgstr "Miljövariabel" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:755 msgid "Environment variable must use KEY=value format." msgstr "" +"DashboardPort anger porten som instrumentpanelen lyssnar på. Om värdet är 0 " +"startas inte instrumentpanelen.
Som standard är värdet 0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:333 msgid "Environment variables passed to token source exec. Use KEY=value." msgstr "" +"DashboardPwd anger lösenordet som instrumentpanelen använder för " +"inloggning.
Som standard är värdet ”admin”." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:464 msgid "" "Export Prometheus metrics on webServer /metrics API. It only takes effect " "when web server port is set." msgstr "" +"DashboardUser anger användarnamnet som instrumentpanelen använder för " +"inloggning.
Som standard är värdet ”admin”." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:145 msgid "" "Extra root-level configuration fragments included before generated HTTP " "plugin sections. Use raw settings for table-specific extra options." msgstr "" +"DisableLogColor inaktiverar loggfärger när LogWay == ”console” om värdet är " +"true.
Som standard är värdet false." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:521 msgid "Force TLS" @@ -236,7 +257,7 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:161 msgid "KCP bind port" -msgstr "" +msgstr "KCP-bindningsport" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:174 #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:193 @@ -260,7 +281,7 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:367 msgid "Log level" -msgstr "Logg-nivå" +msgstr "Loggnivå" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:371 msgid "Log max days" @@ -301,6 +322,9 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:561 msgid "Maximum ports each client can use. 0 means no limit." msgstr "" +"LogMaxDays anger det högsta antalet dagar som logginformation lagras innan " +"den tas bort. Detta används endast om LogWay == ”file”.
Som standard är " +"värdet 0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:504 msgid "Maximum time to wait for a work connection." @@ -309,6 +333,9 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:564 msgid "NAT hole analysis reserve hours" msgstr "" +"MaxPortsPerClient anger det högsta antalet portar som en enskild klient får " +"proxyansluta till. Om värdet är 0 tillämpas ingen gräns.
Som standard " +"är värdet 0." #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:942 msgid "NOT RUNNING" @@ -470,11 +497,11 @@ msgstr "" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:123 msgid "Run daemon as group" -msgstr "Kör daemon som grupp" +msgstr "Kör demonen som grupp" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:122 msgid "Run daemon as user" -msgstr "Kör daemon som användare" +msgstr "Kör demonen som användare" #: applications/luci-app-frps/htdocs/luci-static/resources/view/frps.js:983 msgid "SSH Tunnel" diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index fe509276..dd59292a 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=26.8.12 -PKG_RELEASE:=217 +PKG_RELEASE:=218 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall/root/usr/share/passwall/app.sh b/luci-app-passwall/root/usr/share/passwall/app.sh index 24c5a5c1..0aefb88e 100755 --- a/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/luci-app-passwall/root/usr/share/passwall/app.sh @@ -332,7 +332,7 @@ run_socks() { [ -n "$config_file" ] && [ -z "$(echo ${config_file} | grep $TMP_PATH)" ] && config_file=$TMP_PATH/$config_file [ -n "$http_port" ] || http_port=0 [ -n "$http_config_file" ] && [ -z "$(echo ${http_config_file} | grep $TMP_PATH)" ] && http_config_file=$TMP_PATH/$http_config_file - if [ -n "$log_file" ] && [ -z "$(echo ${log_file} | grep $TMP_PATH)" ]; then + if [ -n "$log_file" ] && [ "$log_file" != "/dev/null" ] && [ -z "$(echo ${log_file} | grep $TMP_PATH)" ]; then log_file=$TMP_PATH/$log_file else log_file="/dev/null" @@ -535,7 +535,7 @@ run_redir() { eval_set_val "$@" local tcp_node_socks_flag tcp_node_http_flag [ -n "$config_file" ] && [ -z "$(echo ${config_file} | grep $TMP_PATH)" ] && config_file=${GLOBAL_ACL_PATH}/${config_file} - if [ -n "$log_file" ] && [ -z "$(echo ${log_file} | grep $TMP_PATH)" ]; then + if [ -n "$log_file" ] && [ "$log_file" != "/dev/null" ] && [ -z "$(echo ${log_file} | grep $TMP_PATH)" ]; then log_file=${GLOBAL_ACL_PATH}/${log_file} else log_file="/dev/null" @@ -2064,6 +2064,7 @@ get_config() { DNSMASQ_CONF_DIR="/tmp/dnsmasq.d" fi fi + [ -d "$DNSMASQ_CONF_DIR" ] || mkdir -p "$DNSMASQ_CONF_DIR" set_cache_var GLOBAL_DNSMASQ_CONF ${DNSMASQ_CONF_DIR}/dnsmasq-${CONFIG}.conf set_cache_var GLOBAL_DNSMASQ_CONF_PATH ${GLOBAL_ACL_PATH}/dnsmasq.d diff --git a/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua b/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua index 080ca96e..9ebd08e2 100644 --- a/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua +++ b/luci-app-passwall/root/usr/share/passwall/helper_dnsmasq.lua @@ -789,9 +789,11 @@ function add_rule(var) end if #conf_lines > 0 then local conf_out = io.open(DNSMASQ_CONF_FILE, "a") - conf_out:write(table.concat(conf_lines, "\n")) - conf_out:write("\n") - conf_out:close() + if conf_out then + conf_out:write(table.concat(conf_lines, "\n")) + conf_out:write("\n") + conf_out:close() + end end end diff --git a/luci-app-passwall2/Makefile b/luci-app-passwall2/Makefile index b1a76c9e..78cd3fa6 100644 --- a/luci-app-passwall2/Makefile +++ b/luci-app-passwall2/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall2 -PKG_VERSION:=26.8.10 -PKG_RELEASE:=79 +PKG_VERSION:=26.8.14 +PKG_RELEASE:=80 PKG_PO_VERSION:=$(PKG_VERSION) PKG_CONFIG_DEPENDS:= \ diff --git a/luci-app-passwall2/luasrc/controller/passwall2.lua b/luci-app-passwall2/luasrc/controller/passwall2.lua index 6e9d2c71..d5350972 100644 --- a/luci-app-passwall2/luasrc/controller/passwall2.lua +++ b/luci-app-passwall2/luasrc/controller/passwall2.lua @@ -4,6 +4,8 @@ module("luci.controller.passwall2", package.seeall) local api = require "luci.passwall2.api" local appname = api.appname -- not available +local c_config = api.c_config -- not available +local s_config = api.s_config -- not available local uci = api.uci -- in funtion index() local http = require "luci.http" local util = require "luci.util" @@ -20,12 +22,14 @@ function index() end local api = require "luci.passwall2.api" local appname = api.appname -- global definitions not available + local c_config = api.c_config -- not available + local s_config = api.s_config -- not available local uci = api.uci -- in function index() entry({"admin", "services", appname}).dependent = true entry({"admin", "services", appname, "show"}, call("show_menu")).leaf = true entry({"admin", "services", appname, "hide"}, call("hide_menu")).leaf = true local e - if uci:get(appname, "@global[0]", "hide_from_luci") ~= "1" then + if uci:get(c_config, "@global[0]", "hide_from_luci") ~= "1" then e = entry({"admin", "services", appname}, alias("admin", "services", appname, "settings"), _("PassWall 2"), 0) else e = entry({"admin", "services", appname}, alias("admin", "services", appname, "settings"), nil, 0) @@ -193,7 +197,7 @@ function check_ip() end function reset_config() - uci:revert(appname) + uci:revert(c_config) luci.sys.call("echo '' > /tmp/log/passwall2.log") luci.sys.call('/etc/init.d/passwall2 stop') luci.sys.call('[ -f "/usr/share/passwall2/0_default_config" ] && cp -f /usr/share/passwall2/0_default_config /etc/config/passwall2') @@ -201,14 +205,14 @@ function reset_config() end function show_menu() - api.sh_uci_del(appname, "@global[0]", "hide_from_luci", true) + api.sh_uci_del(c_config, "@global[0]", "hide_from_luci", true) luci.sys.call("rm -rf /tmp/luci-*") luci.sys.call("/etc/init.d/rpcd restart >/dev/null") http.redirect(api.url()) end function hide_menu() - api.sh_uci_set(appname, "@global[0]", "hide_from_luci", "1", true) + api.sh_uci_set(c_config, "@global[0]", "hide_from_luci", "1", true) luci.sys.call("rm -rf /tmp/luci-*") luci.sys.call("/etc/init.d/rpcd restart >/dev/null") http.redirect(luci.dispatcher.build_url("admin", "status", "overview")) @@ -244,10 +248,10 @@ function socks_autoswitch_add_node() local id = http.formvalue("id") local key = http.formvalue("key") if id and id ~= "" and key and key ~= "" then - uci:set(appname, id, "enable_autoswitch", "1") - local new_list = uci:get(appname, id, "autoswitch_backup_node") or {} + uci:set(c_config, id, "enable_autoswitch", "1") + local new_list = uci:get(c_config, id, "autoswitch_backup_node") or {} for i = #new_list, 1, -1 do - if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then + if (uci:get(c_config, new_list[i], "remarks") or ""):find(key) then table.remove(new_list, i) end end @@ -256,8 +260,8 @@ function socks_autoswitch_add_node() table.insert(new_list, e.id) end end - uci:set_list(appname, id, "autoswitch_backup_node", new_list) - api.uci_save(uci, appname) + uci:set_list(c_config, id, "autoswitch_backup_node", new_list) + api.uci_save(uci, c_config) end http.redirect(api.url("socks_config", id)) end @@ -266,15 +270,15 @@ function socks_autoswitch_remove_node() local id = http.formvalue("id") local key = http.formvalue("key") if id and id ~= "" and key and key ~= "" then - uci:set(appname, id, "enable_autoswitch", "1") - local new_list = uci:get(appname, id, "autoswitch_backup_node") or {} + uci:set(c_config, id, "enable_autoswitch", "1") + local new_list = uci:get(c_config, id, "autoswitch_backup_node") or {} for i = #new_list, 1, -1 do - if (uci:get(appname, new_list[i], "remarks") or ""):find(key) then + if (uci:get(c_config, new_list[i], "remarks") or ""):find(key) then table.remove(new_list, i) end end - uci:set_list(appname, id, "autoswitch_backup_node", new_list) - api.uci_save(uci, appname) + uci:set_list(c_config, id, "autoswitch_backup_node", new_list) + api.uci_save(uci, c_config) end http.redirect(api.url("socks_config", id)) end @@ -365,7 +369,7 @@ function socks_status() local id = http.formvalue("id") e.index = index e.socks_status = luci.sys.call(string.format("/bin/busybox top -bn1 | grep -v -E 'grep|acl/|acl_' | grep '%s/bin/' | grep '%s' > /dev/null", appname, id)) == 0 - local use_http = uci:get(appname, id, "http_port") or 0 + local use_http = uci:get(c_config, id, "http_port") or 0 e.use_http = 0 if tonumber(use_http) > 0 then e.use_http = 1 @@ -435,9 +439,9 @@ function update_config() local data_t = jsonParse(data) or {} if next(data_t) then for k, v in pairs(data_t) do - uci:set(appname, id, k, v) + uci:set(c_config, id, k, v) end - api.uci_save(uci, appname) + api.uci_save(uci, c_config) http_write_json_ok() return end @@ -449,20 +453,20 @@ function add_node() local redirect = http.formvalue("redirect") local uid = api.gen_random_char() - uci:section(appname, "nodes", uid) + uci:section(c_config, "nodes", uid) local group = http.formvalue("group") if group and group ~= "default" then - uci:set(appname, uid, "group", group) + uci:set(c_config, uid, "group", group) end - uci:set(appname, uid, "type", "Xray") + uci:set(c_config, uid, "type", "Xray") if redirect == "1" then - api.uci_save(uci, appname) + api.uci_save(uci, c_config) http.redirect(api.url("node_config", uid)) else - api.uci_save(uci, appname, true, true) + api.uci_save(uci, c_config, true, true) http_write_json({result = uid}) end end @@ -471,67 +475,67 @@ function set_node() local type = http.formvalue("type") local config = http.formvalue("config") local section = http.formvalue("section") - uci:set(appname, type, config, section) - api.uci_save(uci, appname, true, true) + uci:set(c_config, type, config, section) + api.uci_save(uci, c_config, true, true) http.redirect(api.url("log")) end function copy_node() local section = http.formvalue("section") local uid = api.gen_random_char() - uci:section(appname, "nodes", uid) - for k, v in pairs(uci:get_all(appname, section)) do + uci:section(c_config, "nodes", uid) + for k, v in pairs(uci:get_all(c_config, section)) do if not k:match("^%.") and k ~= "group" then if k == "remarks" then v = (v or "") .. "(1)" end - uci:set(appname, uid, k, v) + uci:set(c_config, uid, k, v) end end - uci:set(appname, uid, "add_mode", 1) - api.uci_save(uci, appname) + uci:set(c_config, uid, "add_mode", 1) + api.uci_save(uci, c_config) http.redirect(api.url("node_config", uid)) end function clear_all_nodes() - uci:set(appname, '@global[0]', "enabled", "0") - uci:set(appname, '@global[0]', "socks_enabled", "0") - uci:set(appname, '@global_haproxy[0]', "balancing_enable", "0") - uci:delete(appname, '@global[0]', "node") - uci:foreach(appname, "socks", function(t) - uci:delete(appname, t[".name"]) - uci:set_list(appname, t[".name"], "autoswitch_backup_node", {}) + uci:set(c_config, '@global[0]', "enabled", "0") + uci:set(c_config, '@global[0]', "socks_enabled", "0") + uci:set(c_config, '@global_haproxy[0]', "balancing_enable", "0") + uci:delete(c_config, '@global[0]', "node") + uci:foreach(c_config, "socks", function(t) + uci:delete(c_config, t[".name"]) + uci:set_list(c_config, t[".name"], "autoswitch_backup_node", {}) end) - uci:foreach(appname, "haproxy_config", function(t) - uci:delete(appname, t[".name"]) + uci:foreach(c_config, "haproxy_config", function(t) + uci:delete(c_config, t[".name"]) end) - uci:foreach(appname, "acl_rule", function(t) - uci:delete(appname, t[".name"], "node") + uci:foreach(c_config, "acl_rule", function(t) + uci:delete(c_config, t[".name"], "node") end) - uci:foreach(appname, "nodes", function(node) - uci:delete(appname, node['.name']) + uci:foreach(c_config, "nodes", function(node) + uci:delete(c_config, node['.name']) end) - uci:foreach(appname, "subscribe_list", function(t) - uci:delete(appname, t[".name"], "md5") - uci:delete(appname, t[".name"], "chain_proxy") - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "to_node") + uci:foreach(c_config, "subscribe_list", function(t) + uci:delete(c_config, t[".name"], "md5") + uci:delete(c_config, t[".name"], "chain_proxy") + uci:delete(c_config, t[".name"], "preproxy_node") + uci:delete(c_config, t[".name"], "to_node") end) - api.uci_save(uci, appname, true, true) + api.uci_save(uci, c_config, true, true) end function delete_select_nodes() local ids = http.formvalue("ids") local redirect = http.formvalue("redirect") string.gsub(ids, '[^' .. "," .. ']+', function(w) - if (uci:get(appname, "@global[0]", "node") or "") == w then - uci:delete(appname, '@global[0]', "node") + if (uci:get(c_config, "@global[0]", "node") or "") == w then + uci:delete(c_config, '@global[0]', "node") end - uci:foreach(appname, "socks", function(t) + uci:foreach(c_config, "socks", function(t) if t["node"] == w then - uci:delete(appname, t[".name"]) + uci:delete(c_config, t[".name"]) end local changed = false - local auto_switch_node_list = uci:get(appname, t[".name"], "autoswitch_backup_node") or {} + local auto_switch_node_list = uci:get(c_config, t[".name"], "autoswitch_backup_node") or {} for i = #auto_switch_node_list, 1, -1 do if w == auto_switch_node_list[i] then table.remove(auto_switch_node_list, i) @@ -539,31 +543,31 @@ function delete_select_nodes() end end if changed then - uci:set_list(appname, t[".name"], "autoswitch_backup_node", auto_switch_node_list) + uci:set_list(c_config, t[".name"], "autoswitch_backup_node", auto_switch_node_list) end end) - uci:foreach(appname, "haproxy_config", function(t) + uci:foreach(c_config, "haproxy_config", function(t) if t["lbss"] == w then - uci:delete(appname, t[".name"]) + uci:delete(c_config, t[".name"]) end end) - uci:foreach(appname, "acl_rule", function(t) + uci:foreach(c_config, "acl_rule", function(t) if t["node"] == w then - uci:delete(appname, t[".name"], "node") + uci:delete(c_config, t[".name"], "node") end end) - uci:foreach(appname, "nodes", function(t) + uci:foreach(c_config, "nodes", function(t) if t["preproxy_node"] == w then - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "chain_proxy") + uci:delete(c_config, t[".name"], "preproxy_node") + uci:delete(c_config, t[".name"], "chain_proxy") end if t["to_node"] == w then - uci:delete(appname, t[".name"], "to_node") - uci:delete(appname, t[".name"], "chain_proxy") + uci:delete(c_config, t[".name"], "to_node") + uci:delete(c_config, t[".name"], "chain_proxy") end local list_name = t["urltest_node"] and "urltest_node" or (t["balancing_node"] and "balancing_node") if list_name then - local nodes = uci:get_list(appname, t[".name"], list_name) + local nodes = uci:get_list(c_config, t[".name"], list_name) if nodes then local changed = false local new_nodes = {} @@ -575,48 +579,48 @@ function delete_select_nodes() end end if changed then - uci:set_list(appname, t[".name"], list_name, new_nodes) + uci:set_list(c_config, t[".name"], list_name, new_nodes) end end end if t["fallback_node"] == w then - uci:delete(appname, t[".name"], "fallback_node") + uci:delete(c_config, t[".name"], "fallback_node") end end) - uci:foreach(appname, "subscribe_list", function(t) + uci:foreach(c_config, "subscribe_list", function(t) if t["preproxy_node"] == w then - uci:delete(appname, t[".name"], "preproxy_node") - uci:delete(appname, t[".name"], "chain_proxy") + uci:delete(c_config, t[".name"], "preproxy_node") + uci:delete(c_config, t[".name"], "chain_proxy") end if t["to_node"] == w then - uci:delete(appname, t[".name"], "to_node") - uci:delete(appname, t[".name"], "chain_proxy") + uci:delete(c_config, t[".name"], "to_node") + uci:delete(c_config, t[".name"], "chain_proxy") end end) - if (uci:get(appname, w, "add_mode") or "0") == "2" then - local group = uci:get(appname, w, "group") or "" + if (uci:get(c_config, w, "add_mode") or "0") == "2" then + local group = uci:get(c_config, w, "group") or "" if group ~= "" then - uci:foreach(appname, "subscribe_list", function(t) + uci:foreach(c_config, "subscribe_list", function(t) if t["remark"] == group then - uci:delete(appname, t[".name"], "md5") + uci:delete(c_config, t[".name"], "md5") end end) end end - uci:delete(appname, w) + uci:delete(c_config, w) end) if redirect == "1" then - api.uci_save(uci, appname) + api.uci_save(uci, c_config) http.redirect(api.url("node_list")) else - api.uci_save(uci, appname, true, true) + api.uci_save(uci, c_config, true, true) end end function get_node() local id = http.formvalue("id") local result = {} - local show_node_info = api.uci_get_type("global_other", "show_node_info", "0") + local show_node_info = uci:get(c_config, "@global_other[0]", "show_node_info") or "0" local function add_is_ipv6_key(o) if o and o.address and show_node_info == "1" then @@ -629,12 +633,12 @@ function get_node() end if id then - result = uci:get_all(appname, id) + result = uci:get_all(c_config, id) add_is_ipv6_key(result) else local default_nodes = {} local other_nodes = {} - uci:foreach(appname, "nodes", function(t) + uci:foreach(c_config, "nodes", function(t) add_is_ipv6_key(t) if not t.group or t.group == "" then default_nodes[#default_nodes + 1] = t @@ -653,12 +657,12 @@ function reassign_group() local group = http.formvalue("group") or "default" for id in ids:gmatch("([^,]+)") do if group ~="" and group ~= "default" then - api.sh_uci_set(appname, id, "group", group) + api.sh_uci_set(c_config, id, "group", group) else - api.sh_uci_del(appname, id, "group") + api.sh_uci_del(c_config, id, "group") end end - api.sh_uci_commit(appname) + api.sh_uci_commit(c_config) http_write_json({ status = "ok" }) end @@ -666,7 +670,7 @@ function save_node_list_opt() local option = http.formvalue("option") or "" local value = http.formvalue("value") or "" if option ~= "" then - api.sh_uci_set(appname, "@global_other[0]", option, value, true) + api.sh_uci_set(c_config, "@global_other[0]", option, value, true) end http_write_json({ status = "ok" }) end @@ -688,7 +692,7 @@ function rollback_rules() return end local bak_dir = "/tmp/bak_v2ray/" - local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/") + local geo_dir = (uci:get(c_config, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/") fs.move(bak_dir .. arg_type .. ".dat", geo_dir .. arg_type .. ".dat") fs.rmdir(bak_dir) http_write_json_ok() @@ -701,9 +705,9 @@ function server_update_config() local data_t = jsonParse(data) or {} if next(data_t) then for k, v in pairs(data_t) do - uci:set(appname .. "_server", id, k, v) + uci:set(c_config .. "_server", id, k, v) end - api.uci_save(uci, appname .. "_server") + api.uci_save(uci, c_config .. "_server") http_write_json_ok() return end @@ -814,7 +818,7 @@ function restore_backup() fp:write(decoded) fp:close() if chunk_index + 1 == total_chunks then - uci:revert(appname) + uci:revert(c_config) api.sys.call("echo '' > /tmp/log/passwall2.log") api.log(0, string.format(" * PassWall2 %s", i18n.translate("Configuration file uploaded successfully…"))) local temp_dir = '/tmp/passwall2_bak' @@ -857,7 +861,7 @@ function geo_view() end local function get_rules(str, type) local rules_id = {} - uci:foreach(appname, "shunt_rules", function(s) + uci:foreach(c_config, "shunt_rules", function(s) local list if type == "geoip" then list = s.ip_list else list = s.domain_list end for line in string.gmatch((list or ""), "[^\r\n]+") do @@ -874,7 +878,7 @@ function geo_view() end) return rules_id end - local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") + local geo_dir = (uci:get(c_config, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") local geosite_path = geo_dir .. "/geosite.dat" local geoip_path = geo_dir .. "/geoip.dat" local geo_type, file_path, cmd @@ -946,13 +950,13 @@ function subscribe_manual() http_write_json({ success = false, msg = "Missing section or URL, skip." }) return end - local uci_url = api.sh_uci_get(appname, section, "url") + local uci_url = api.sh_uci_get(c_config, section, "url") if not uci_url or uci_url == "" then http_write_json({ success = false, msg = i18n.translate("Please save and apply before manually subscribing.") }) return end if uci_url ~= current_url then - api.sh_uci_set(appname, section, "url", current_url, true) + api.sh_uci_set(c_config, section, "url", current_url, true) end luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start " .. section .. " manual >/dev/null 2>&1 &") http_write_json({ success = true, msg = "Subscribe triggered." }) @@ -969,7 +973,7 @@ function subscribe_manual_all() local url_list = util.split(urls, ",") -- Check if there are any unsaved configurations. for i, section in ipairs(section_list) do - local uci_url = api.sh_uci_get(appname, section, "url") + local uci_url = api.sh_uci_get(c_config, section, "url") if not uci_url or uci_url == "" then http_write_json({ success = false, msg = i18n.translate("Please save and apply before manually subscribing.") }) return @@ -978,9 +982,9 @@ function subscribe_manual_all() -- Save URLs that have changed. for i, section in ipairs(section_list) do local current_url = url_list[i] or "" - local uci_url = api.sh_uci_get(appname, section, "url") + local uci_url = api.sh_uci_get(c_config, section, "url") if current_url ~= "" and uci_url ~= current_url then - api.sh_uci_set(appname, section, "url", current_url, true) + api.sh_uci_set(c_config, section, "url", current_url, true) end end luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start all manual >/dev/null 2>&1 &") @@ -991,10 +995,10 @@ function flush_set() local redirect = http.formvalue("redirect") or "0" local reload = http.formvalue("reload") or "0" if reload == "1" then - uci:set(appname, '@global[0]', "flush_set", "1") - api.uci_save(uci, appname, true, true) + uci:set(c_config, '@global[0]', "flush_set", "1") + api.uci_save(uci, c_config, true, true) else - api.sh_uci_set(appname, "@global[0]", "flush_set", "1", true) + api.sh_uci_set(c_config, "@global[0]", "flush_set", "1", true) end if redirect == "1" then http.redirect(api.url("log")) @@ -1003,9 +1007,9 @@ end function fetch_certsha256() local id = http.formvalue("id") or "" - local address = (id ~= "") and uci:get(appname, id, "address") or "" - local port = (id ~= "") and uci:get(appname, id, "port") or 0 - local sni = (id ~= "") and uci:get(appname, id, "tls_serverName") or "" + local address = (id ~= "") and uci:get(c_config, id, "address") or "" + local port = (id ~= "") and uci:get(c_config, id, "port") or 0 + local sni = (id ~= "") and uci:get(c_config, id, "tls_serverName") or "" sni = (sni ~= "") and sni or address if address == "" or port == 0 then http_write_json_error() @@ -1020,11 +1024,11 @@ function get_shunt_rules() local result = {} if id then - result = uci:get_all(appname, id) + result = uci:get_all(c_config, id) else local default_items = {} local other_items = {} - uci:foreach(appname, "shunt_rules", function(t) + uci:foreach(c_config, "shunt_rules", function(t) if not t.group or t.group == "" then default_items[#default_items + 1] = t else @@ -1043,7 +1047,7 @@ function add_shunt_rule() local uid = add_name if add_name then - local has = uci:get(appname, uid) + local has = uci:get(c_config, uid) if has then http_write_json_error({ message = i18n.translate("This ID already exists.") }) return @@ -1051,18 +1055,18 @@ function add_shunt_rule() else uid = api.gen_random_char() end - uci:section(appname, "shunt_rules", uid) + uci:section(c_config, "shunt_rules", uid) local group = http.formvalue("group") if group and group ~= "default" then - uci:set(appname, uid, "group", group) + uci:set(c_config, uid, "group", group) end if redirect == "1" then - api.uci_save(uci, appname) + api.uci_save(uci, c_config) http.redirect(api.url("shunt_rules", uid)) else - api.uci_save(uci, appname) + api.uci_save(uci, c_config) http_write_json_ok({uid = uid, redirect_url = api.url("shunt_rules", uid)}) end end @@ -1071,17 +1075,17 @@ function delete_select_shunt_rules() local ids = http.formvalue("ids") local redirect = http.formvalue("redirect") string.gsub(ids, '[^' .. "," .. ']+', function(w) - uci:foreach(appname, "nodes", function(s) + uci:foreach(c_config, "nodes", function(s) if s["protocol"] and s["protocol"] == "_shunt" then - uci:delete(appname, s[".name"], w) + uci:delete(c_config, s[".name"], w) end end) - uci:delete(appname, w) + uci:delete(c_config, w) end) if redirect == "1" then - api.uci_save(uci, appname) + api.uci_save(uci, c_config) http.redirect(api.url("rule")) else - api.uci_save(uci, appname, true, true) + api.uci_save(uci, c_config, true, true) end end diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl.lua index f24e2b50..49b5e9aa 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl.lua @@ -1,22 +1,16 @@ local api = require "luci.passwall2.api" -local appname = api.appname -local sys = api.sys - api.set_default_cbi() -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() -s = m:section(TypedSection, "global", translate("ACLs"), "" .. translate("ACLs is a tools which used to designate specific IP proxy mode.") .. "") -s.anonymous = true +s = m:section(NamedSection, "@global[0]", "global", translate("ACLs"), "" .. translate("ACLs is a tools which used to designate specific IP proxy mode.") .. "") o = s:option(Flag, "acl_enable", translate("Main switch")) o.rmempty = false o.default = false -- [[ ACLs Settings ]]-- -local cfgname = "acl_rule" -s = m:section(TypedSection, cfgname) +s = m:section(TypedSection, "acl_rule") s.template = "cbi/tblsection" s.sortable = true s.anonymous = true @@ -38,7 +32,7 @@ o = s:option(Value, "remarks", translate("Remarks")) o.rmempty = true local mac_t = {} -sys.net.mac_hints(function(e, t) +api.sys.net.mac_hints(function(e, t) mac_t[e] = { ip = t, mac = e @@ -81,9 +75,6 @@ i.cfgvalue = function(t, n) return translate("No Proxy") end -local sortable = Template(appname .. "/cbi/sortable") -sortable.api = api -sortable.target_cfgname = cfgname -m:append(sortable) +m:appendTemplate("/cbi/sortable", {sectiontype = s.sectiontype}) return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua index 1272d660..860488b6 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/acl_config.lua @@ -1,18 +1,13 @@ local api = require "luci.passwall2.api" -local appname = api.appname - api.set_default_cbi() -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() if not arg[1] or not m:get(arg[1]) then luci.http.redirect(api.url("acl")) end -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) - -local sys = api.sys +m:appendTemplate("/cbi/nodes_listvalue_com") local port_validate = function(self, value, t) return value:gsub("-", ":") @@ -44,6 +39,7 @@ local doh_validate = function(self, value, t) end return nil, translate("DoH request address") .. " " .. translate("Format must be:") .. " URL,IP" end + -- [[ ACLs Settings ]]-- s = m:section(NamedSection, arg[1], translate("ACLs"), translate("ACLs")) s.addremove = false @@ -73,7 +69,7 @@ o.validate = function(self, value, section) end local mac_t = {} -sys.net.mac_hints(function(e, t) +api.sys.net.mac_hints(function(e, t) mac_t[#mac_t + 1] = { ip = t, mac = e @@ -181,7 +177,7 @@ o:depends("mode", "1") o.validate = port_validate o = s:option(DummyValue, "_hide_node_option", "") -o.template = "passwall2/cbi/hidevalue" +o.template = m:template_path("/cbi/hidevalue") o.value = "1" o:depends("mode", "0") o:depends({ tcp_no_redir_ports = "1:65535", udp_no_redir_ports = "1:65535" }) @@ -199,13 +195,13 @@ else o.group = {} end o:depends({ _hide_node_option = "1", ['!reverse'] = true }) -o.template = appname .. "/cbi/nodes_listvalue" +o.template = m:template_path("/cbi/nodes_listvalue") current_node_id = o:formvalue(arg[1]) if not current_node_id then - current_node_id = m.uci:get(appname, arg[1], "node") + current_node_id = m:get(arg[1], "node") end -current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {} +current_node = current_node_id and m:get(current_node_id) or {} o = s:option(Flag, "log", translate("Enable Node Log")) o:depends({ _hide_node_option = "1", ['!reverse'] = true }) @@ -259,7 +255,7 @@ end o:depends({ _hide_node_option = "1", ['!reverse'] = true }) o = s:option(DummyValue, "_hide_dns_option", "") -o.template = "passwall2/cbi/hidevalue" +o.template = m:template_path("/cbi/hidevalue") o.value = "1" o:depends({ node = "" }) if GLOBAL_ENABLED == "1" and NODE then diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua index 462046e3..3fb4f5cc 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/app_update.lua @@ -1,21 +1,14 @@ local api = require "luci.passwall2.api" -local com = require "luci.passwall2.com" -local appname = api.appname - api.set_default_cbi() -m = Map(appname) -api.set_apply_on_parse(m) +local com = require "luci.passwall2.com" + +m = Map() -- [[ App Settings ]]-- -s = m:section(TypedSection, "global_app", translate("App Update")) -s.anonymous = true +s = m:section(NamedSection, "@global_app[0]", "global_app", translate("App Update")) -local app_version = Template(appname .. "/app_update/app_version") -app_version.api = api -app_version.config = m.config -app_version.com = com -s:append(app_version) +s:appendTemplate("/app_update/app_version", {com = com}) local k, v for k, v in pairs(com) do diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/geoview.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/geoview.lua index abd9c1f1..234aad26 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/geoview.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/geoview.lua @@ -1,16 +1,18 @@ local api = require "luci.passwall2.api" -local appname = api.appname local fs = api.fs local uci = api.uci -local geo_dir = (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") +local geo_dir = (uci:get(api.c_config, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") local geosite_path = geo_dir .. "/geosite.dat" local geoip_path = geo_dir .. "/geoip.dat" if fs.access(geosite_path) and fs.access(geoip_path) then - f = SimpleForm(appname) + f = SimpleForm(api.c_config) f.reset = false f.submit = false - f:append(Template(appname .. "/rule/geoview")) + + local obj = Template(api.appname .. "/rule/geoview") + obj.api = api + f:append(obj) end -return f \ No newline at end of file +return f diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua index 2b1b32a7..10aa3def 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua @@ -1,15 +1,12 @@ api = require "luci.passwall2.api" -appname = api.appname datatypes = api.datatypes has_singbox = api.finded_com("sing-box") has_xray = api.finded_com("xray") - api.set_default_cbi() -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) +m:appendTemplate("/cbi/nodes_listvalue_com") nodes_table = {} for k, e in ipairs(api.get_valid_nodes()) do @@ -40,7 +37,7 @@ for k, v in pairs(nodes_table) do end local socks_list = {} -m.uci:foreach(appname, "socks", function(s) +m:foreach("socks", function(s) if s.enabled == "1" and s.node then socks_list[#socks_list + 1] = { id = s[".name"], @@ -72,13 +69,9 @@ local doh_validate = function(self, value, t) return nil, translate("DoH request address") .. " " .. translate("Format must be:") .. " URL,IP" end -m:append(Template(appname .. "/global/status")) +m:appendTemplate("/global/status") -global_cfgid = (m:get("@global[0]") or {})[".name"] or "" - -s = m:section(TypedSection, "global") -s.anonymous = true -s.addremove = false +s = m:section(NamedSection, "@global[0]", "global") s:tab("Main", translate("Main")) @@ -88,12 +81,12 @@ o.rmempty = false ---- Node o = s:taboption("Main", ListValue, "node", "" .. translate("Node") .. "") -o.template = appname .. "/cbi/nodes_listvalue" +o.template = m:template_path("/cbi/nodes_listvalue") o:value("", translate("Close")) o.group = {""} -current_node_id = m.uci:get(appname, global_cfgid, "node") -current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {} +current_node_id = m:get(s.section, "node") +current_node = current_node_id and m:get(current_node_id) or {} -- Shunt Start if (has_singbox or has_xray) and #nodes_table > 0 then @@ -101,7 +94,7 @@ if (has_singbox or has_xray) and #nodes_table > 0 then if current_node.protocol == "_shunt" then local shunt_lua = loadfile("/usr/lib/lua/luci/model/cbi/passwall2/client/include/shunt_options.lua") setfenv(shunt_lua, getfenv(1))(m, s, { - s_cfgid = s:cfgsections()[1], + s_cfgid = s.section, node_id = current_node_id, node = current_node, socks_list = socks_list, @@ -245,7 +238,7 @@ o = s:taboption("DNS", TextValue, "dns_hosts", translate("Domain Override")) o.rows = 5 o.wrap = "off" o.remove = function(self, section) - local node_value = s.fields["node"]:formvalue(global_cfgid) + local node_value = s.fields["node"]:formvalue(section) if node_value then local node_t = m:get(node_value) or {} if node_t.type == "Xray" or node_t.type == "sing-box" then @@ -297,11 +290,11 @@ o:depends("log_node", "1") s:tab("faq", "FAQ") o = s:taboption("faq", DummyValue, "") -o.template = appname .. "/global/faq" +o.template = m:template_path("/global/faq") s:tab("maintain", translate("Maintain")) o = s:taboption("maintain", DummyValue, "") -o.template = appname .. "/global/backup" +o.template = m:template_path("/global/backup") -- [[ Socks Server ]]-- o = s:taboption("Main", Flag, "socks_enabled", "Socks " .. translate("Main switch")) @@ -330,7 +323,7 @@ o.default = 1 o.rmempty = false o = s2:option(ListValue, "node", translate("Socks Node")) -o.template = appname .. "/cbi/nodes_listvalue" +o.template = m:template_path("/cbi/nodes_listvalue") o.group = {} o = s2:option(DummyValue, "now_node", translate("Current Node")) @@ -346,7 +339,7 @@ o.cfgvalue = function(_, n) end local n = 1 -m.uci:foreach(appname, "socks", function(s) +m:foreach("socks", function(s) if s[".name"] == section then return false end @@ -382,12 +375,7 @@ for k, v in pairs(nodes_table) do end end -local footer = Template(appname .. "/global/footer") -footer.api = api -footer.global_cfgid = global_cfgid -footer.shunt_list = api.jsonc.stringify(shunt_list) - -m:append(footer) -m:append(Template(appname .. "/global/status_bottom")) +m:appendTemplate("/global/footer", {shunt_list = api.jsonc.stringify(shunt_list)}) +m:appendTemplate(Template("/global/status_bottom")) return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/haproxy.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/haproxy.lua index a1ce99f7..dbaf3965 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/haproxy.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/haproxy.lua @@ -1,7 +1,6 @@ local api = require "luci.passwall2.api" -local appname = api.appname local datatypes = api.datatypes -local net = require "luci.model.network".init() +api.set_default_cbi() local nodes_table = {} for k, e in ipairs(api.get_valid_nodes()) do @@ -15,18 +14,14 @@ for k, e in ipairs(api.get_valid_nodes()) do end end -api.set_default_cbi() +m = Map() -m = Map(appname) -api.set_apply_on_parse(m) - -m:append(Template(appname .. "/cbi/nodes_value_com")) +m:appendTemplate("/cbi/nodes_value_com") -- [[ Haproxy Settings ]]-- -s = m:section(TypedSection, "global_haproxy", translate("Basic Settings")) -s.anonymous = true +s = m:section(NamedSection, "@global_haproxy[0]", "global_haproxy", translate("Basic Settings")) -s:append(Template(appname .. "/haproxy/status")) +s:appendTemplate("/haproxy/status") ---- Balancing Enable o = s:option(Flag, "balancing_enable", translate("Enable Load Balancing")) @@ -69,9 +64,9 @@ o:depends("balancing_enable", true) ---- Health Check Type o = s:option(ListValue, "health_check_type", translate("Health Check Type")) -o.default = "passwall_logic" +o.default = "script_logic" o:value("tcp", "TCP") -o:value("passwall_logic", translate("URL Test") .. string.format("(passwall %s)", translate("Inner implement"))) +o:value("script_logic", translate("URL Test") .. string.format("(passwall2 %s)", translate("Inner implement"))) o:depends("balancing_enable", true) ---- Passwall Inner implement Probe URL @@ -85,7 +80,7 @@ o:value("https://connectivitycheck.platform.hicloud.com/generate_204", "HiCloud o:value("https://wifi.vivo.com.cn/generate_204", "VIVO (CN)") o.default = o.keylist[3] o.description = translate("The URL used to detect the connection status.") -o:depends("health_check_type", "passwall_logic") +o:depends("health_check_type", "script_logic") ---- Health Check Inter o = s:option(Value, "health_check_inter", translate("Health Check Inter")) @@ -99,11 +94,10 @@ o.rawhtml = true o.cfgvalue = function(t, n) return string.format('%s', translate("When the URL test is used, the load balancing node will be converted into a Socks node. when node list set customizing, must be a Socks node, otherwise the health check will be invalid.")) end -o:depends("health_check_type", "passwall_logic") +o:depends("health_check_type", "script_logic") -- [[ Balancing Settings ]]-- -local cfgname = "haproxy_config" -s = m:section(TypedSection, cfgname, translate("Node List")) +s = m:section(TypedSection, "haproxy_config", translate("Node List")) s.description = "" .. translate("Add a node, Export Of Multi WAN Only support Multi Wan. Load specific gravity range 1-256. Multiple primary servers can be load balanced, standby will only be enabled when the primary server is offline! Multiple groups can be set, Haproxy port same one for each group.") .. "
" .. translate("Note that the node configuration parameters for load balancing must be consistent when use TCP health check type, otherwise it cannot be used normally!") .. "
" @@ -132,7 +126,7 @@ o.rmempty = false ---- Node Address o = s:option(Value, "lbss", translate("Node Address")) -o.template = appname .. "/cbi/nodes_value" +o.template = m:template_path("/cbi/nodes_value") o.group = {} for k, v in pairs(nodes_table) do o:value(v.id, v.remarks) @@ -180,11 +174,8 @@ o:value(0, translate("Primary")) o:value(1, translate("Standby")) o.rmempty = false -local sortable = Template(appname .. "/cbi/sortable") -sortable.api = api -sortable.target_cfgname = cfgname -m:append(sortable) +m:appendTemplate("/cbi/sortable", {sectiontype = s.sectiontype}) -m:append(Template(appname .. "/haproxy/js")) +m:appendTemplate("/haproxy/js") return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/include/shunt_options.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/include/shunt_options.lua index 6e23ae6a..15e17eb1 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/include/shunt_options.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/include/shunt_options.lua @@ -9,7 +9,7 @@ local current_node_id = data.node_id local node_list = data.node_list or api.get_node_list() local groups = {} -m.uci:foreach(appname, "shunt_rules", function(s) +m:foreach("shunt_rules", function(s) if s.group and s.group ~= "" then groups[s.group] = true end @@ -123,7 +123,7 @@ end local shunt_group_val = m:get(current_node_id, "shunt_group") or "" shunt_group_val = shunt_group_val:lower() local shunt_rules = {} -m.uci:foreach(appname, "shunt_rules", function(e) +m:foreach("shunt_rules", function(e) local group = e.group or "" group = group:lower() if group == shunt_group_val then @@ -146,7 +146,7 @@ table.insert(shunt_rules, { }) s2 = m:section(Table, shunt_rules, " ") -s2.config = appname +s2.config = m.config s2.sectiontype = "shunt_option_list" o = s2:option(DummyValue, "remarks", translate("Rule")) @@ -160,7 +160,7 @@ o.cfgvalue = function(self, section) end _node = s2:option(Value, "_node", translate("Node")) -_node.template = appname .. "/cbi/nodes_listvalue" +_node.template = m:template_path("/cbi/nodes_listvalue") _node.group = {"","","",""} _node:value("", translate("Close (Not use)")) _node:value("_default", translate("Use default node")) @@ -192,7 +192,7 @@ end proxy_tag_node = s2:option(ListValue, "_proxy_tag", string.format('%s', translate("Set the node to be used as a pre-proxy.") .. "\n" .. translate("Each rule has a separate switch that controls whether this rule uses the pre-proxy or not."), translate("Preproxy"))) -proxy_tag_node.template = appname .. "/cbi/nodes_listvalue" +proxy_tag_node.template = m:template_path("/cbi/nodes_listvalue") proxy_tag_node.group = {""} proxy_tag_node:value("", translate("Close (Not use)")) proxy_tag_node.cfgvalue = function(self, section) @@ -217,10 +217,4 @@ for k1, v1 in pairs(node_list) do end end -local footer = Template(appname .. "/include/shunt_options") -footer.api = api -footer.config = m.config -footer.id = current_node_id -footer.s_cfgid = s_cfgid or current_node_id -footer.normal_list = api.jsonc.stringify(node_list.normal_list) -m:append(footer) +m:appendTemplate("/include/shunt_options", {id = current_node_id, s_cfgid = s_cfgid or current_node_id, normal_list = api.jsonc.stringify(node_list.normal_list)}) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_config.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_config.lua index ead7043f..3bbe3cb0 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_config.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_config.lua @@ -1,30 +1,22 @@ api = require "luci.passwall2.api" -appname = api.appname - api.set_default_cbi() -m = Map(appname, translate("Node Config")) +m = Map() m.redirect = api.url() -api.set_apply_on_parse(m) if not arg[1] or not m:get(arg[1]) then luci.http.redirect(api.url("node_list")) end fs = require "nixio.fs" -formvalue_key = "cbid." .. appname .. "." .. arg[1] .. "." +formvalue_key = "cbid." .. m.config .. "." .. arg[1] .. "." -local header = Template(appname .. "/node_config/header") -header.api = api -header.config = m.config -header.section = arg[1] -m:append(header) - -m:append(Template(appname .. "/cbi/nodes_multivalue_com")) -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) +m:appendTemplate("/node_config/header", {section = arg[1]}) +m:appendTemplate("/cbi/nodes_multivalue_com") +m:appendTemplate("/cbi/nodes_listvalue_com") groups = {} -m.uci:foreach(appname, "nodes", function(s) +m:foreach("nodes", function(s) if s[".name"] ~= arg[1] then if s.group and s.group ~= "" then groups[s.group] = true @@ -32,13 +24,13 @@ m.uci:foreach(appname, "nodes", function(s) end end) -s = m:section(NamedSection, arg[1], "nodes", "") +s = m:section(NamedSection, arg[1], "nodes", translate("Node Config")) s.addremove = false s.dynamic = false o = s:option(DummyValue, "passwall2", " ") o.rawhtml = true -o.template = "passwall2/node_config/link_share_man" +o.template = m:template_path("/node_config/link_share_man") o.value = arg[1] o = s:option(Value, "remarks", translate("Node Remarks")) @@ -67,10 +59,10 @@ o.write = function(self, section, value) m:set(section, self.option, value) end -local types_dir = "/usr/lib/lua/luci/model/cbi/passwall2/client/type/" +local types_dir = "/usr/lib/lua/luci/model/cbi/" .. api.appname .. "/client/type/" s.val = {} -s.val["type"] = m.uci:get(appname, arg[1], "type") -s.val["protocol"] = m.uci:get(appname, arg[1], "protocol") +s.val["type"] = m:get(arg[1], "type") +s.val["protocol"] = m:get(arg[1], "protocol") if luci.http.formvalue("cbi.submit") == "1" then local formvalue_type = luci.http.formvalue(formvalue_key .. "type") @@ -92,10 +84,6 @@ for index, value in ipairs(type_table) do setfenv(p_func, getfenv(1))(m, s) end -local footer = Template(appname .. "/node_config/footer") -footer.api = api -footer.config = m.config -footer.section = arg[1] -m:append(footer) +m:appendTemplate("/node_config/footer", {section = arg[1]}) return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_list.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_list.lua index fed50b6e..af15398a 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_list.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_list.lua @@ -1,14 +1,10 @@ local api = require "luci.passwall2.api" -local appname = api.appname - api.set_default_cbi() -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() -- [[ Other Settings ]]-- -s = m:section(TypedSection, "global_other") -s.anonymous = true +s = m:section(NamedSection, "@global_other[0]", "global_other") o = s:option(ListValue, "auto_detection_time", translate("Automatic detection delay")) o:value("0", translate("Close")) @@ -29,10 +25,7 @@ o:value("https://wifi.vivo.com.cn/generate_204", "VIVO (CN)") o.default = o.keylist[3] if true then - local o = Template(appname .. "/node_list/node_list") - o.map = m - o.api = api - m:append(o) + m:appendTemplate("/node_list/node_list") if luci.http.formvalue("cbi.submit") == "1" then local group_order = {} @@ -45,7 +38,7 @@ if true then new_order[#new_order + 1] = w end) for idx, name in ipairs(new_order) do - m.uci:reorder(appname, name, idx - 1) + m.uci:reorder(m.config, name, idx - 1) end end end diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe.lua index 3f7e7c68..4d401b0e 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe.lua @@ -1,6 +1,6 @@ local api = require "luci.passwall2.api" -local appname = api.appname -local uci = api.uci +api.set_default_cbi() + local has_ss_rust = api.is_finded("sslocal") local has_singbox = api.finded_com("sing-box") local has_xray = api.finded_com("xray") @@ -38,20 +38,16 @@ if has_hysteria2 then table.insert(hysteria2_type, s) end -api.set_default_cbi() - -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() function m.on_before_save(self) - self.uci:foreach(appname, "subscribe_list", function(e) + self:foreach("subscribe_list", function(e) self:del(e[".name"], "md5") end) end -- [[ Subscribe Settings ]]-- -s = m:section(TypedSection, "global_subscribe", "") -s.anonymous = true +s = m:section(NamedSection, "@global_subscribe[0]", "global_subscribe") o = s:option(ListValue, "filter_keyword_mode", translate("Filter keyword Mode")) o:value("0", translate("Close")) @@ -126,8 +122,7 @@ o.cfgvalue = function(self, section) translate("Manual subscription All")) end -local cfgname = "subscribe_list" -s = m:section(TypedSection, cfgname, "", "" .. translate("When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically.") .. "") +s = m:section(TypedSection, "subscribe_list", "", "" .. translate("When adding a new subscription, please save and apply before manually subscribing. If you only change the subscription URL, you can subscribe manually, and the system will save it automatically.") .. "") s.addremove = true s.anonymous = true s.sortable = true @@ -150,7 +145,7 @@ o.validate = function(self, value, section) return nil, translate("Remark cannot be empty.") end local duplicate = false - m.uci:foreach(appname, cfgname, function(e) + m:foreach(s.sectiontype, function(e) if e[".name"] ~= section and e["remark"] and e["remark"]:lower() == value:lower() then duplicate = true return false @@ -164,9 +159,9 @@ end o.write = function(self, section, value) local old = m:get(section, self.option) or "" if old ~= value then - m.uci:foreach(appname, "nodes", function(e) + m:foreach("nodes", function(e) if e["group"] and e["group"]:lower() == old:lower() then - m.uci:set(appname, e[".name"], "group", value) + m:set(e[".name"], "group", value) end if e["protocol"] and (e["protocol"] == "_balancing" or e["protocol"] == "_urltest") and e["node_group"] then local gs = "" @@ -178,7 +173,7 @@ o.write = function(self, section, value) end end gs = api.trim(gs) - m.uci:set(appname, e[".name"], "node_group", gs) + m:set(e[".name"], "node_group", gs) end end) end @@ -196,7 +191,7 @@ o.cfgvalue = function(t, n) end str = str ~= "" and "
" .. str or "" local num = 0 - m.uci:foreach(appname, "nodes", function(s) + m:foreach("nodes", function(s) if s["group"] and s["group"]:lower() == remark:lower() then num = num + 1 end @@ -225,11 +220,8 @@ o.cfgvalue = function(self, section) section, translate("Manual subscription")) end -local sortable = Template(appname .. "/cbi/sortable") -sortable.api = api -sortable.target_cfgname = cfgname -m:append(sortable) +m:appendTemplate("/cbi/sortable", {sectiontype = s.sectiontype}) -m:append(Template(appname .. "/node_subscribe/js")) +m:appendTemplate("/node_subscribe/js") return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua index 0ea1e64e..aba243cc 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua @@ -1,11 +1,8 @@ local api = require "luci.passwall2.api" -local appname = api.appname - api.set_default_cbi() -m = Map(appname) +m = Map() m.redirect = api.url("node_subscribe") -api.set_apply_on_parse(m) if not arg[1] or not m:get(arg[1]) then luci.http.redirect(m.redirect) @@ -15,7 +12,7 @@ function m.on_before_save(self) self:del(arg[1], "md5") end -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) +m:appendTemplate("/cbi/nodes_listvalue_com") local has_ss_rust = api.is_finded("sslocal") local has_singbox = api.finded_com("sing-box") @@ -79,7 +76,7 @@ o.validate = function(self, value, section) return nil, translate("Remark cannot be empty.") end local duplicate = false - m.uci:foreach(appname, "subscribe_list", function(e) + m:foreach("subscribe_list", function(e) if e[".name"] ~= section and e["remark"] and e["remark"]:lower() == value:lower() then duplicate = true return false @@ -93,9 +90,9 @@ end o.write = function(self, section, value) local old = m:get(section, self.option) or "" if old ~= value then - m.uci:foreach(appname, "nodes", function(e) + m:foreach("nodes", function(e) if e["group"] and e["group"]:lower() == old:lower() then - m.uci:set(appname, e[".name"], "group", value) + self:set(e[".name"], "group", value) end if e["protocol"] and (e["protocol"] == "_balancing" or e["protocol"] == "_urltest") and e["node_group"] then local gs = "" @@ -107,7 +104,7 @@ o.write = function(self, section, value) end end gs = api.trim(gs) - m.uci:set(appname, e[".name"], "node_group", gs) + self:set(e[".name"], "node_group", gs) end end) end @@ -298,13 +295,13 @@ descrStr = translate(descrStr) .. "
" .. translate("Only support a layer of p o1 = s:option(ListValue, "preproxy_node", translate("Preproxy Node")) o1:depends({ ["chain_proxy"] = "1" }) o1.description = descrStr -o1.template = appname .. "/cbi/nodes_listvalue" +o1.template = m:template_path("/cbi/nodes_listvalue") o1.group = {} o2 = s:option(ListValue, "to_node", translate("Landing Node")) o2:depends({ ["chain_proxy"] = "2" }) o2.description = descrStr -o2.template = appname .. "/cbi/nodes_listvalue" +o2.template = m:template_path("/cbi/nodes_listvalue") o2.group = {} o3 = s:option(Value, "outbound_iface", translate("Outbound Interface")) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/other.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/other.lua index 1a91208c..f076e3c7 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/other.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/other.lua @@ -1,5 +1,6 @@ local api = require "luci.passwall2.api" -local appname = api.appname +api.set_default_cbi() + local fs = api.fs local has_singbox = api.finded_com("sing-box") local has_xray = api.finded_com("xray") @@ -8,15 +9,10 @@ local port_validate = function(self, value, t) return value:gsub("-", ":") end -api.set_default_cbi() - -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() -- [[ Delay Settings ]]-- -s = m:section(TypedSection, "global_delay", translate("Delay Settings")) -s.anonymous = true -s.addremove = false +s = m:section(NamedSection, "@global_delay[0]", "global_delay", translate("Delay Settings")) ---- Open and close Daemon o = s:option(Flag, "start_daemon", translate("Open and close Daemon")) @@ -72,9 +68,7 @@ for index, value in ipairs({"stop", "start", "restart"}) do end -- [[ Forwarding Settings ]]-- -s = m:section(TypedSection, "global_forwarding", translate("Forwarding Settings")) -s.anonymous = true -s.addremove = false +s = m:section(NamedSection, "@global_forwarding[0]", "global_forwarding", translate("Forwarding Settings")) ---- TCP No Redir Ports o = s:option(Value, "tcp_no_redir_ports", translate("TCP No Redir Ports")) @@ -205,9 +199,7 @@ o.validate = function(self, value) end if has_xray then - s_xray = m:section(TypedSection, "global_xray", "Xray " .. translate("Settings")) - s_xray.anonymous = true - s_xray.addremove = false + s_xray = m:section(NamedSection, "@global_xray[0]", "global_xray", "Xray " .. translate("Settings")) o = s_xray:option(Flag, "fragment", translate("Fragment"), translate("TCP fragments, which can deceive the censorship system in some cases, such as bypassing SNI blacklists.")) o.default = 0 @@ -245,7 +237,7 @@ if has_xray then o.default = 0 o:depends("sniffing", true) - local domains_excluded = string.format("/usr/share/%s/domains_excluded", appname) + local domains_excluded = string.format("/usr/share/%s/domains_excluded", m.config) o = s_xray:option(TextValue, "excluded_domains", translate("Excluded Domains"), translate("If the traffic sniffing result is in this list, the destination address will not be overridden.")) o.rows = 15 o.wrap = "off" @@ -268,11 +260,14 @@ if has_xray then end s_xray_noise.remove = function(self, section) - for k, v in pairs(self.children) do - v.rmempty = true - v.validate = nil + local o = m:get(section) or {} + if o[".type"] == self.sectiontype then + for k, v in pairs(self.children) do + v.rmempty = true + v.validate = nil + end + TypedSection.remove(self, section) end - TypedSection.remove(self, section) end o = s_xray_noise:option(Flag, "enabled", translate("Enable")) @@ -296,9 +291,7 @@ if has_xray then end if has_singbox then - s = m:section(TypedSection, "global_singbox", "Sing-Box " .. translate("Settings")) - s.anonymous = true - s.addremove = false + s = m:section(NamedSection, "@global_singbox[0]", "global_singbox", "Sing-Box " .. translate("Settings")) o = s:option(Flag, "record_fragment", "TLS Record " .. translate("Fragment"), translate("Split handshake data into multiple TLS records for better censorship evasion. Low overhead. Recommended to enable first.")) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/rule.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/rule.lua index 6db355fb..cc4ec8d7 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/rule.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/rule.lua @@ -1,14 +1,10 @@ local api = require "luci.passwall2.api" -local appname = api.appname - api.set_default_cbi() -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() -- [[ Rule Settings ]]-- -s = m:section(TypedSection, "global_rules", translate("Rule status")) -s.anonymous = true +s = m:section(NamedSection, "@global_rules[0]", "global_rules", translate("Rule status")) o = s:option(Value, "geoip_url", translate("GeoIP Update URL")) o:value("https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat", translate("Loyalsoldier/geoip")) @@ -86,12 +82,10 @@ for _, f in ipairs(flags) do o.rmempty = false end -s:append(Template(appname .. "/rule/rule_version")) +s:appendTemplate("/rule/rule_version") if true then - local o = Template(appname .. "/rule/shunt_rule_list") - o.api = api - m:append(o) + m:appendTemplate("/rule/shunt_rule_list") if luci.http.formvalue("cbi.submit") == "1" then local group_order = luci.http.formvaluetable("group.order") @@ -103,7 +97,7 @@ if true then new_order[#new_order + 1] = w end) for idx, name in ipairs(new_order) do - m.uci:reorder(appname, name, idx - 1) + m.uci:reorder(m.config, name, idx - 1) end end end diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua index 2e59c050..7194da87 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua @@ -1,19 +1,17 @@ local api = require "luci.passwall2.api" -local appname = api.appname -local datatypes = api.datatypes - api.set_default_cbi() -m = Map(appname, "Sing-Box/Xray " .. translate("Shunt Rule")) +local datatypes = api.datatypes + +m = Map() m.redirect = api.url("rule") -api.set_apply_on_parse(m) if not arg[1] or not m:get(arg[1]) then luci.http.redirect(m.redirect) end function m.on_before_save(self) - m:set("@global[0]", "flush_set", "1") + self:set("@global[0]", "flush_set", "1") end -- Add inline CSS to map description @@ -47,7 +45,7 @@ end local remarks_lookup = {} local groups = {} -m.uci:foreach(appname, "shunt_rules", function(s) +m:foreach("shunt_rules", function(s) if s[".name"] ~= arg[1] then if s.remarks then remarks_lookup[s.remarks] = s[".name"] @@ -58,7 +56,7 @@ m.uci:foreach(appname, "shunt_rules", function(s) end end) -s = m:section(NamedSection, arg[1], "shunt_rules", "") +s = m:section(NamedSection, arg[1], "shunt_rules", "Sing-Box/Xray " .. translate("Shunt Rule")) s.addremove = false s.dynamic = false diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/socks_config.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/socks_config.lua index 5b48df4e..5237e4e6 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/socks_config.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/socks_config.lua @@ -1,17 +1,14 @@ local api = require "luci.passwall2.api" -local appname = api.appname - api.set_default_cbi() -m = Map(appname) -api.set_apply_on_parse(m) +m = Map() if not arg[1] or not m:get(arg[1]) then luci.http.redirect(api.url()) end -m:append(Template(appname .. "/cbi/nodes_dynamiclist_com")) -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) +m:appendTemplate("/cbi/nodes_dynamiclist_com") +m:appendTemplate("/cbi/nodes_listvalue_com") local has_singbox = api.finded_com("sing-box") local has_xray = api.finded_com("xray") @@ -49,14 +46,14 @@ socks_node = s:option(ListValue, "node", translate("Node")) if auto_switch_tip then socks_node.description = auto_switch_tip end -socks_node.template = appname .. "/cbi/nodes_listvalue" +socks_node.template = m:template_path("/cbi/nodes_listvalue") socks_node.group = {} o = s:option(Flag, "bind_local", translate("Bind Local"), translate("When selected, it can only be accessed localhost.")) o.default = "0" local n = 1 -m.uci:foreach(appname, "socks", function(s) +m:foreach("socks", function(s) if s[".name"] == section then return false end @@ -90,7 +87,7 @@ o:value("batch", translate("Batch")) o = s:option(DynamicList, "autoswitch_backup_node", translate("List of backup nodes")) o:depends("backup_node_add_mode", "manual") -o.template = appname .. "/cbi/nodes_dynamiclist" +o.template = m:template_path("/cbi/nodes_dynamiclist") o.group = {} o.write = function(self, section, value) local n = s.fields["node"]:formvalue(section) @@ -116,7 +113,7 @@ o:depends("backup_node_add_mode", "batch") o.widget = "checkbox" o:value("default", translate("default")) local groups = {} -m.uci:foreach(appname, "nodes", function(s) +m:foreach("nodes", function(s) if s.group and s.group ~= "" then groups[s.group] = true end @@ -164,7 +161,7 @@ o.default = o.keylist[3] o:depends("enable_autoswitch", true) o = s:option(DummyValue, "btn") -o.template = appname .. "/socks_auto_switch/btn" +o.template = m:template_path("/socks_auto_switch/btn") o:depends("backup_node_add_mode", "manual") return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua index 69c74cb9..113209b3 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/ray.lua @@ -105,7 +105,7 @@ if load_balancing_options then -- [[ Load balancing Start ]] o = s:option(MultiValue, _n("balancing_node"), translate("Load balancing node list"), translate("Load balancing node list, document")) o:depends({ [_n("node_add_mode")] = "manual" }) o.widget = "checkbox" - o.template = appname .. "/cbi/nodes_multivalue" + o.template = m:template_path("/cbi/nodes_multivalue") o.group = {} for k1, v1 in pairs(node_list) do if k1 == "socks_list" or k1 == "normal_list" then @@ -171,7 +171,7 @@ if load_balancing_options then -- [[ Load balancing Start ]] o:value("", translate("Close(Not use)")) o:value("_direct", translate("Direct Connection")) o:depends({ [_n("protocol")] = "_balancing" }) - o.template = appname .. "/cbi/nodes_listvalue" + o.template = m:template_path("/cbi/nodes_listvalue") -- Maximum number of fallback nesting layers local MAX_FALLBACK_DEPTH = 3 -- Check if a loop will form. @@ -863,7 +863,7 @@ if not load_shunt_options then o1 = s:option(ListValue, _n("preproxy_node"), translate("Preproxy Node"), translate("Only support a layer of proxy.")) o1:depends({ [_n("chain_proxy")] = "1", [_n("hysteria2_realms")] = false }) - o1.template = appname .. "/cbi/nodes_listvalue" + o1.template = m:template_path("/cbi/nodes_listvalue") o1.group = {} o3 = s:option(Value, _n("outbound_iface"), translate("Outbound Interface")) @@ -875,7 +875,7 @@ if not load_shunt_options then o2 = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Only support a layer of proxy.")) o2:depends({ [_n("chain_proxy")] = "2", [_n("hysteria2_realms")] = false }) - o2.template = appname .. "/cbi/nodes_listvalue" + o2.template = m:template_path("/cbi/nodes_listvalue") o2.group = {} for k1, v1 in pairs(node_list) do @@ -898,7 +898,7 @@ end api.luci_types(arg[1], m, s, type_name, option_prefix) if load_shunt_options then - local current_node = m.uci:get_all(appname, arg[1]) or {} + local current_node = m:get(arg[1]) or {} local shunt_lua = loadfile("/usr/lib/lua/luci/model/cbi/passwall2/client/include/shunt_options.lua") setfenv(shunt_lua, getfenv(1))(m, s, { node_id = arg[1], diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua index d5828592..70b3144a 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/sing-box.lua @@ -107,7 +107,7 @@ if load_urltest_options then -- [[ URLTest Start ]] o = s:option(MultiValue, _n("urltest_node"), translate("URLTest node list"), translate("List of nodes to test, document")) o:depends({ [_n("node_add_mode")] = "manual" }) o.widget = "checkbox" - o.template = appname .. "/cbi/nodes_multivalue" + o.template = m:template_path("/cbi/nodes_multivalue") o.group = {} for k1, v1 in pairs(node_list) do if k1 == "socks_list" or k1 == "normal_list" then @@ -937,7 +937,7 @@ if not load_shunt_options then o1 = s:option(ListValue, _n("preproxy_node"), translate("Preproxy Node"), translate("Only support a layer of proxy.")) o1:depends({ [_n("chain_proxy")] = "1", [_n("hysteria2_realms")] = false }) - o1.template = appname .. "/cbi/nodes_listvalue" + o1.template = m:template_path("/cbi/nodes_listvalue") o1.group = {} o3 = s:option(Value, _n("outbound_iface"), translate("Outbound Interface")) @@ -949,7 +949,7 @@ if not load_shunt_options then o2 = s:option(ListValue, _n("to_node"), translate("Landing Node"), translate("Only support a layer of proxy.")) o2:depends({ [_n("chain_proxy")] = "2", [_n("hysteria2_realms")] = false }) - o2.template = appname .. "/cbi/nodes_listvalue" + o2.template = m:template_path("/cbi/nodes_listvalue") o2.group = {} for k1, v1 in pairs(node_list) do @@ -972,7 +972,7 @@ end api.luci_types(arg[1], m, s, type_name, option_prefix) if load_shunt_options then - local current_node = m.uci:get_all(appname, arg[1]) or {} + local current_node = m:get(arg[1]) or {} local shunt_lua = loadfile("/usr/lib/lua/luci/model/cbi/passwall2/client/include/shunt_options.lua") setfenv(shunt_lua, getfenv(1))(m, s, { node_id = arg[1], diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/index.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/index.lua index cdb4cc9c..92f29eeb 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/index.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/index.lua @@ -1,12 +1,9 @@ local api = require "luci.passwall2.api" -local appname = api.appname - api.set_default_cbi() -m = Map("passwall2_server", translate("Server-Side")) -api.set_apply_on_parse(m) +m = Map(api.s_config) -t = m:section(NamedSection, "global", "global") +t = m:section(NamedSection, "global", "global", translate("Server-Side")) t.anonymous = true t.addremove = false @@ -88,17 +85,9 @@ e = s_server:option(Flag, "log", translate("Log")) e.default = "1" e.rmempty = false -local sortable = Template(appname .. "/cbi/sortable") -sortable.api = api -sortable.appname = m.config -sortable.target_cfgname = s_server.sectiontype -m:append(sortable) +m:appendTemplate("/cbi/sortable", {sectiontype = s_server.sectiontype}) -local server_list_status = Template(appname .. "/server/server_list_status") -server_list_status.api = api -server_list_status.appname = m.config -server_list_status.sectiontype = s_server.sectiontype -m:append(server_list_status) +m:appendTemplate("/server/server_list_status", {sectiontype = s_server.sectiontype}) s_user = m:section(TypedSection, "user", translate("Users Manager")) s_user.anonymous = true @@ -114,7 +103,7 @@ end s_user.remove = function(self, section) local o = m:get(section) or {} if o[".type"] == self.sectiontype then - m.uci:foreach(m.config, "server", function(o) + m:foreach("server", function(o) if o.user and section == o.user then m:set(o[".name"], "user", "") end @@ -144,12 +133,8 @@ e.width = "25%" e = s_user:option(DummyValue, "uuid", "UUID") e.width = "25%" -local sortable = Template(appname .. "/cbi/sortable") -sortable.api = api -sortable.appname = m.config -sortable.target_cfgname = s_user.sectiontype -m:append(sortable) +m:appendTemplate("/cbi/sortable", {sectiontype = s_user.sectiontype}) -m:append(Template(appname .. "/server/log")) +m:appendTemplate("/server/log") return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/server_config.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/server_config.lua index 8e5824a7..79f6b54f 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/server_config.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/server_config.lua @@ -1,35 +1,27 @@ api = require "luci.passwall2.api" -appname = api.appname -fs = api.fs - api.set_default_cbi() -m = Map("passwall2_server", translate("Server Config")) +m = Map(api.s_config) m.redirect = api.url("server") -api.set_apply_on_parse(m) if not arg[1] or not m:get(arg[1]) then luci.http.redirect(m.redirect) end -local header = Template(appname .. "/server/config_header") -header.api = api -header.config = m.config -header.section = arg[1] -m:append(header) +m:appendTemplate("/server/config_header", {section = arg[1]}) -m:append(Template(appname .. "/cbi/nodes_listvalue_com")) +m:appendTemplate("/cbi/nodes_listvalue_com") user_list = {} -m.uci:foreach(m.config, "user", function(s) +m:foreach("user", function(s) user_list[#user_list + 1] = s end) -s = m:section(NamedSection, arg[1], "server", "") +s = m:section(NamedSection, arg[1], "server", translate("Server Config")) s.addremove = false s.dynamic = false -local types_dir = "/usr/lib/lua/luci/model/cbi/" .. appname .. "/server/type/" +local types_dir = "/usr/lib/lua/luci/model/cbi/" .. api.appname .. "/server/type/" s.val = m:get(arg[1]) or {} o = s:option(Flag, "enable", translate("Enable")) @@ -43,7 +35,7 @@ o.rmempty = false o = s:option(ListValue, "type", translate("Type")) local type_table = {} -for filename in fs.dir(types_dir) do +for filename in api.fs.dir(types_dir) do table.insert(type_table, filename) end table.sort(type_table, function(a, b) @@ -55,10 +47,6 @@ for index, value in ipairs(type_table) do setfenv(p_func, getfenv(1))(m, s) end -local footer = Template(appname .. "/server/config_footer") -footer.api = api -footer.config = m.config -footer.section = arg[1] -m:append(footer) +m:appendTemplate("/server/config_footer", {section = arg[1]}) return api.return_map(m) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua index 435bb26e..20ac33e8 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/ray.lua @@ -446,7 +446,7 @@ o:value("", translate("Close")) o:value("_socks", translate("Custom Socks")) o:value("_http", translate("Custom HTTP")) o:value("_iface", translate("Custom Interface")) -o.template = api.appname .. "/cbi/nodes_listvalue" +o.template = m:template_path("/cbi/nodes_listvalue") o.group = {"","","",""} for k, v in pairs(nodes_table) do o:value(v.id, v.remarks) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua index d3066bbc..103315a7 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/sing-box.lua @@ -424,7 +424,7 @@ o:value("", translate("Close")) o:value("_socks", translate("Custom Socks")) o:value("_http", translate("Custom HTTP")) o:value("_iface", translate("Custom Interface")) -o.template = api.appname .. "/cbi/nodes_listvalue" +o.template = m:template_path("/cbi/nodes_listvalue") o.group = {"","","",""} for k, v in pairs(nodes_table) do o:value(v.id, v.remarks) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user_config.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user_config.lua index 1cbb1ad7..9c0b67d9 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user_config.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/user_config.lua @@ -1,24 +1,33 @@ api = require "luci.passwall2.api" -appname = api.appname -fs = api.fs - api.set_default_cbi() -m = Map("passwall2_server", translate("User Config")) +m = Map(api.s_config) m.redirect = api.url("server") -api.set_apply_on_parse(m) if not arg[1] or not m:get(arg[1]) then luci.http.redirect(m.redirect) end -s = m:section(NamedSection, arg[1], "user", "") +s = m:section(NamedSection, arg[1], "user", translate("User Config")) s.addremove = false s.dynamic = false o = s:option(Value, "username", translate("Username")) o.datatype = "and(uciname,maxlength(24))" o.rmempty = false +function o.validate(self, value, section) + local exists = false + m:foreach("user", function(s) + if s[".name"] ~= section and s.username == value then + exists = true + return false + end + end) + if exists then + return nil, translate("This username already exists.") + end + return value +end o = s:option(Value, "password", translate("Password")) o.rmempty = false diff --git a/luci-app-passwall2/luasrc/passwall2/api.lua b/luci-app-passwall2/luasrc/passwall2/api.lua index 9d1853fa..3e67ce19 100644 --- a/luci-app-passwall2/luasrc/passwall2/api.lua +++ b/luci-app-passwall2/luasrc/passwall2/api.lua @@ -1,5 +1,7 @@ module("luci.passwall2.api", package.seeall) appname = "passwall2" +c_config = "passwall2" +s_config = "passwall2_server" local com = require "luci.passwall2.com" nixio = require "nixio" fs = require "nixio.fs" @@ -22,7 +24,7 @@ TMP_IFACE_PATH = TMP_PATH .. "/iface" local lang = uci:get("luci", "main", "lang") or "auto" if lang == "auto" then - local auto_lang = uci:get(appname, "@global[0]", "auto_lang") + local auto_lang = uci:get(c_config, "@global[0]", "auto_lang") if auto_lang then lang = auto_lang end end if lang == "auto" then @@ -234,7 +236,7 @@ function curl_direct(url, file, args) end function curl_auto(url, file, args) - local localhost_proxy = uci:get(appname, "@global[0]", "localhost_proxy") or "1" + local localhost_proxy = uci:get(c_config, "@global[0]", "localhost_proxy") or "1" if localhost_proxy == "1" then return curl_base(url, file, args) else @@ -493,7 +495,7 @@ function get_node_name(node_id) if type(node_id) == "table" then e = node_id else - e = uci:get_all(appname, node_id) + e = uci:get_all(c_config, node_id) end if e then if e.type and e.remarks then @@ -509,11 +511,11 @@ function get_node_name(node_id) end function get_valid_nodes() - local show_node_info = uci_get_type("global_other", "show_node_info") or "0" + local show_node_info = uci:get(c_config, "@global_other[0]", "show_node_info") or "0" local nodes = {} local default_nodes = {} local other_nodes = {} - uci:foreach(appname, "nodes", function(e) + uci:foreach(c_config, "nodes", function(e) e.id = e[".name"] if e.type and e.remarks then local type_name = e.type @@ -586,7 +588,7 @@ function get_node_list() socks_list = {}, normal_list = {}, } - uci:foreach(appname, "socks", function(s) + uci:foreach(c_config, "socks", function(s) if s.enabled == "1" and s.node then node_list.socks_list[#node_list.socks_list + 1] = { id = s[".name"], @@ -685,22 +687,6 @@ function gen_random_char(length) return sys.exec("echo -n $(head /dev/urandom | tr -dc A-Za-z0-9 | head -c %s)" % length) end -function uci_get_type(type, config, default) - local value = uci:get_first(appname, type, config, default) or sys.exec("echo -n $(uci -q get " .. appname .. ".@" .. type .."[0]." .. config .. ")") - if (value == nil or value == "") and (default and default ~= "") then - value = default - end - return value -end - -function uci_get_type_id(id, config, default) - local value = uci:get(appname, id, config, default) or sys.exec("echo -n $(uci -q get " .. appname .. "." .. id .. "." .. config .. ")") - if (value == nil or value == "") and (default and default ~= "") then - value = default - end - return value -end - function chmod_755(file) if file and file ~= "" then if not fs.access(file, "rwx", "rx", "rx") then @@ -710,7 +696,7 @@ function chmod_755(file) end function get_customed_path(e) - return uci_get_type("global_app", e .. "_file") + return uci:get(c_config, "@global_app[0]", e .. "_file") end function finded_com(e) @@ -769,7 +755,7 @@ end function get_app_path(app_name) if com[app_name] then local def_path = com[app_name].default_path - local path = uci_get_type("global_app", app_name:gsub("%-","_") .. "_file") + local path = uci:get(c_config, "@global_app[0]", app_name:gsub("%-","_") .. "_file") path = path and (#path>0 and path or def_path) or def_path return path end @@ -1345,53 +1331,91 @@ function is_js_luci() return sys.call('[ -f "/www/luci-static/resources/uci.js" ]') == 0 end -function set_apply_on_parse(map) - if not map then - return - end - local lang = uci:get("luci", "main", "lang") or "auto" - if lang == "auto" then - local http = require "luci.http" - local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or "" - for lpat in aclang:gmatch("[%w-]+") do - lpat = lpat and lpat:gsub("-", "_") - if uci:get("luci", "languages", lpat) then - lang = lpat - break - end - lpat = lpat and lpat:lower() - if uci:get("luci", "languages", lpat) then - lang = lpat - break - end - end - if lang ~= "auto" then - sh_uci_set(appname, "@global[0]", "auto_lang", lang, true) - end - end - if is_js_luci() == true then - local hide_popup_box = nil - if hide_popup_box == true then - map.apply_on_parse = false - map.on_after_apply = function(self) - if self.redirect then - os.execute("sleep 1") - luci.http.redirect(self.redirect) - end - end - else - apply_redirect(map) - local old = map.on_after_save - map.on_after_save = function(self) - if old then old(self) end - map:set("@global[0]", "timestamp", os.time()) - end - end - end -end - function set_default_cbi() local cbi = require "luci.cbi" + if true then + --Map + local Map = cbi.Map + local original_init = Map.__init__ + function Map.__init__(self, config, ...) + if not config then config = c_config end + original_init(self, config, ...) + self.api = require "luci.passwall2.api" + end + function Map.foreach(self, stype, func) + self.uci:foreach(self.config, stype, func) + end + function Map.template_path(self, template) + return appname .. template + end + function Map.appendTemplate(self, template, data) + local obj = cbi.Template(self:template_path(template)) + obj.map = self + if data and next(data) then + for k, v in pairs(data) do + obj[k] = v + end + end + self:append(obj) + return obj + end + + local lang = uci:get("luci", "main", "lang") or "auto" + if lang == "auto" then + local http = require "luci.http" + local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or "" + for lpat in aclang:gmatch("[%w-]+") do + lpat = lpat and lpat:gsub("-", "_") + if uci:get("luci", "languages", lpat) then + lang = lpat + break + end + lpat = lpat and lpat:lower() + if uci:get("luci", "languages", lpat) then + lang = lpat + break + end + end + if lang ~= "auto" then + sh_uci_set(c_config, "@global[0]", "auto_lang", lang, true) + end + end + if is_js_luci() == true then + local hide_popup_box = nil + if hide_popup_box == true then + Map.apply_on_parse = false + Map.on_after_apply = function(self) + if self.redirect then + os.execute("sleep 1") + luci.http.redirect(self.redirect) + end + end + else + apply_redirect(Map) + local old = Map.on_after_save + Map.on_after_save = function(self) + if old then old(self) end + self:set("@global[0]", "timestamp", os.time()) + end + end + end + end + if true then + --AbstractSection + local AbstractSection = cbi.AbstractSection + function AbstractSection.appendTemplate(self, template, data) + local obj = cbi.Template(self.map:template_path(template)) + obj.map = self.map + obj.section = self + if data and next(data) then + for k, v in pairs(data) do + obj[k] = v + end + end + self:append(obj) + return obj + end + end if true then --TextValue local TextValue = cbi.TextValue @@ -1428,18 +1452,15 @@ function return_map(map) if true then -- header local header = cbi.Template(appname .. "/cbi/header") - header.api = api - header.config = map.config + header.map = map table.insert(map.children, 1, header) end if true then -- footer local footer = cbi.Template(appname .. "/cbi/footer") - footer.api = api - footer.config = map.config + footer.map = map map:append(footer) end - return map end @@ -1570,7 +1591,7 @@ function format_go_time(input, default) end function apply_redirect(m) - local tmp_uci_file = "/etc/config/" .. appname .. "_redirect" + local tmp_uci_file = "/etc/config/" .. c_config .. "_redirect" if m.redirect and m.redirect ~= "" then if fs.access(tmp_uci_file) then local redirect @@ -1588,7 +1609,7 @@ function apply_redirect(m) m.on_after_save = function(self) local redirect = self.redirect if redirect and redirect ~= "" then - uci:set(appname .. "_redirect", "@redirect[0]", "url", redirect) + uci:set(c_config .. "_redirect", "@redirect[0]", "url", redirect) end end else @@ -1693,7 +1714,7 @@ end function get_socks_backup_nodes(id) id = trim(id) if id == "" then return "" end - local socks = uci:get_all(appname, id) + local socks = uci:get_all(c_config, id) local nodes if socks.backup_node_add_mode and socks.backup_node_add_mode == "batch" then local node = {} @@ -1714,7 +1735,7 @@ function get_socks_backup_nodes(id) end function get_core(field, candidates) - local v = uci:get(appname, "@global_subscribe[0]", field) + local v = uci:get(c_config, "@global_subscribe[0]", field) if v and v ~= "" then for _, c in ipairs(candidates) do if c[2] == v and c[1] then diff --git a/luci-app-passwall2/luasrc/passwall2/server_app.lua b/luci-app-passwall2/luasrc/passwall2/server_app.lua index 7b28da0a..dee45ac7 100644 --- a/luci-app-passwall2/luasrc/passwall2/server_app.lua +++ b/luci-app-passwall2/luasrc/passwall2/server_app.lua @@ -6,7 +6,7 @@ local sys = api.sys local uci = api.uci local jsonc = api.jsonc -local CONFIG = "passwall2_server" +local CONFIG = api.s_config local CONFIG_PATH = "/tmp/etc/" .. CONFIG local NFT_INCLUDE_FILE = CONFIG_PATH .. "/" .. CONFIG .. ".nft" local LOG_APP_FILE = "/tmp/log/" .. CONFIG .. ".log" diff --git a/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua b/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua index b145fbb3..24dcb776 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua @@ -9,7 +9,7 @@ function gen_config_server(node) if node.users and #node.users > 0 then users = {} for i, v in ipairs(node.users) do - local user = uci:get_all("passwall2_server", v) or {} + local user = uci:get_all(api.s_config, v) or {} if user[".type"] == "user" then users[user.username] = user.password end @@ -74,7 +74,7 @@ function gen_config(var) print("node Cannot be empty!") return end - local node = uci:get_all("passwall2", node_id) + local node = uci:get_all(api.c_config, node_id) local local_socks_address = var["local_socks_address"] or "0.0.0.0" local local_socks_port = var["local_socks_port"] local local_socks_username = var["local_socks_username"] diff --git a/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua b/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua index b515c75f..4839f53c 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua @@ -9,7 +9,7 @@ function gen_config(var) print("node Cannot be empty!") return end - local node = uci:get_all("passwall2", node_id) + local node = uci:get_all(api.c_config, node_id) local run_type = var["run_type"] local local_addr = var["local_addr"] local local_port = var["local_port"] diff --git a/luci-app-passwall2/luasrc/passwall2/util_shadowsocks.lua b/luci-app-passwall2/luasrc/passwall2/util_shadowsocks.lua index 77b51795..a0ac3022 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_shadowsocks.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_shadowsocks.lua @@ -6,7 +6,7 @@ local jsonc = api.jsonc function gen_config_server(node) local user = nil if node.user then - user = uci:get_all("passwall2_server", node.user) + user = uci:get_all(api.s_config, node.user) end local config = {} @@ -41,7 +41,7 @@ function gen_config(var) print("node Cannot be empty!") return end - local node = uci:get_all("passwall2", node_id) + local node = uci:get_all(api.c_config, node_id) local server_host = var["server_host"] or (node.address or ""):lower() local server_port = var["server_port"] or node.port local local_addr = var["local_addr"] diff --git a/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua b/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua index cabd7696..5d9c015a 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_sing-box.lua @@ -34,7 +34,7 @@ function check_geoview() if GEO_VAR.OK == 0 then api.log(0, "!!! Note: Geo rules cannot be used if the Geoview component is missing or the version is too low.") else - GEO_VAR.DIR = GEO_VAR.DIR or (uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") + GEO_VAR.DIR = GEO_VAR.DIR or (uci:get(api.c_config, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/"):match("^(.*)/") GEO_VAR.SITE_PATH = GEO_VAR.SITE_PATH or (GEO_VAR.DIR .. "/geosite.dat") GEO_VAR.IP_PATH = GEO_VAR.IP_PATH or (GEO_VAR.DIR .. "/geoip.dat") if not fs.access(GEO_VAR.TO_SRS_PATH) then @@ -794,7 +794,7 @@ function gen_config_server(node) if node.users and #node.users > 0 then users = {} for i, v in ipairs(node.users) do - local user = uci:get_all("passwall2_server", v) or {} + local user = uci:get_all(api.s_config, v) or {} if user[".type"] == "user" then local u = {} if node.protocol == "mixed" or node.protocol == "socks" or node.protocol == "http" or node.protocol == "naive" then @@ -1030,7 +1030,7 @@ function gen_config_server(node) } sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface)) else - local outbound_node_t = uci:get_all("passwall2", node.outbound_node) + local outbound_node_t = uci:get_all(api.c_config, node.outbound_node) if node.outbound_node == "_socks" or node.outbound_node == "_http" then outbound_node_t = { type = node.type, @@ -1132,7 +1132,7 @@ function gen_config(var) local CACHE_TEXT_FILE = CACHE_PATH .. "/cache_" .. flag .. ".txt" - local singbox_settings = uci:get_all(appname, "@global_singbox[0]") or {} + local singbox_settings = uci:get_all(api.c_config, "@global_singbox[0]") or {} local route = { rules = {} @@ -1195,7 +1195,7 @@ function gen_config(var) local node = nil if node_id then - node = uci:get_all(appname, node_id) + node = uci:get_all(api.c_config, node_id) end if local_socks_port then @@ -1290,7 +1290,7 @@ function gen_config(var) function get_node_by_id(node_id) if not node_id or node_id == "" or node_id == "nil" then return nil end - local section = uci:get_all(appname, node_id) or {} + local section = uci:get_all(api.c_config, node_id) or {} if section[".type"] == "socks" then local result = { [".name"] = node_id, @@ -1569,7 +1569,7 @@ function gen_config(var) end --shunt rule - uci:foreach(appname, "shunt_rules", function(e) + uci:foreach(api.c_config, "shunt_rules", function(e) if node["shunt_group"] ~= e.group then return end @@ -1835,16 +1835,16 @@ function gen_config(var) if dns_listen_port then local dns_host = "" if flag == "global" then - dns_host = uci:get(appname, "@global[0]", "dns_hosts") or "" + dns_host = uci:get(api.c_config, "@global[0]", "dns_hosts") or "" else flag = flag:gsub("acl_", "") - local dns_hosts_mode = uci:get(appname, flag, "dns_hosts_mode") or "default" + local dns_hosts_mode = uci:get(api.c_config, flag, "dns_hosts_mode") or "default" if dns_hosts_mode == "default" then - dns_host = uci:get(appname, "@global[0]", "dns_hosts") or "" + dns_host = uci:get(api.c_config, "@global[0]", "dns_hosts") or "" elseif dns_hosts_mode == "disable" then dns_host = "" elseif dns_hosts_mode == "custom" then - dns_host = uci:get(appname, flag, "dns_hosts") or "" + dns_host = uci:get(api.c_config, flag, "dns_hosts") or "" end end if #dns_host > 0 then diff --git a/luci-app-passwall2/luasrc/passwall2/util_xray.lua b/luci-app-passwall2/luasrc/passwall2/util_xray.lua index 47ac9e12..896fa1fe 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_xray.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_xray.lua @@ -501,7 +501,7 @@ function gen_config_server(node) if node.users and #node.users > 0 then users = {} for i, v in ipairs(node.users) do - local user = uci:get_all("passwall2_server", v) or {} + local user = uci:get_all(api.s_config, v) or {} if user[".type"] == "user" then local u = {} if node.protocol == "socks" or node.protocol == "http" then @@ -633,7 +633,7 @@ function gen_config_server(node) } sys.call(string.format("mkdir -p %s && touch %s/%s", api.TMP_IFACE_PATH, api.TMP_IFACE_PATH, node.outbound_node_iface)) else - local outbound_node_t = uci:get_all("passwall2", node.outbound_node) + local outbound_node_t = uci:get_all(api.c_config, node.outbound_node) if node.outbound_node == "_socks" or node.outbound_node == "_http" then outbound_node_t = { type = node.type, @@ -906,7 +906,7 @@ function gen_config(var) local CACHE_TEXT_FILE = CACHE_PATH .. "/cache_" .. flag .. ".txt" - local xray_settings = uci:get_all(appname, "@global_xray[0]") or {} + local xray_settings = uci:get_all(api.c_config, "@global_xray[0]") or {} if xray_settings.fragment == "1" then local lengths, delays = {}, {} @@ -931,7 +931,7 @@ function gen_config(var) if xray_settings.noise == "1" then local noises = {} - uci:foreach(appname, "xray_noise_packets", function(n) + uci:foreach(api.c_config, "xray_noise_packets", function(n) if n.enabled == "1" then local noise = { rand = (n.type == "rand" and n.packet) and (n.packet:find("-", 1, true) and n.packet or tonumber(n.packet)) or nil, @@ -948,7 +948,7 @@ function gen_config(var) } or nil end - local node = node_id and uci:get_all(appname, node_id) or nil + local node = node_id and uci:get_all(api.c_config, node_id) or nil local balancers = {} local rules = {} @@ -1000,7 +1000,7 @@ function gen_config(var) function get_node_by_id(node_id) if not node_id or node_id == "" or node_id == "nil" then return nil end - local section = uci:get_all(appname, node_id) or {} + local section = uci:get_all(api.c_config, node_id) or {} if section[".type"] == "socks" then local result = { [".name"] = node_id, @@ -1394,7 +1394,7 @@ function gen_config(var) end --shunt rule - uci:foreach(appname, "shunt_rules", function(e) + uci:foreach(api.c_config, "shunt_rules", function(e) if node["shunt_group"] ~= e.group then return end @@ -1590,16 +1590,16 @@ function gen_config(var) local dns_host = "" if flag == "global" then - dns_host = uci:get(appname, "@global[0]", "dns_hosts") or "" + dns_host = uci:get(api.c_config, "@global[0]", "dns_hosts") or "" else flag = flag:gsub("acl_", "") - local dns_hosts_mode = uci:get(appname, flag, "dns_hosts_mode") or "default" + local dns_hosts_mode = uci:get(api.c_config, flag, "dns_hosts_mode") or "default" if dns_hosts_mode == "default" then - dns_host = uci:get(appname, "@global[0]", "dns_hosts") or "" + dns_host = uci:get(api.c_config, "@global[0]", "dns_hosts") or "" elseif dns_hosts_mode == "disable" then dns_host = "" elseif dns_hosts_mode == "custom" then - dns_host = uci:get(appname, flag, "dns_hosts") or "" + dns_host = uci:get(api.c_config, flag, "dns_hosts") or "" end end if #dns_host > 0 then @@ -1977,7 +1977,7 @@ function gen_config(var) if inbounds or outbounds then local config = { env = (function() - local asset_location = uci:get(appname, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/" + local asset_location = uci:get(api.c_config, "@global_rules[0]", "v2ray_location_asset") or "/usr/share/v2ray/" return { XRAY_LOCATION_ASSET = asset_location } end)(), log = { diff --git a/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm b/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm index 7b31c08e..2742c923 100644 --- a/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm +++ b/luci-app-passwall2/luasrc/view/passwall2/app_update/app_version.htm @@ -1,6 +1,7 @@
<% -local api = self.api +local map = self.map +local api = map.api local com = self.com -%> diff --git a/luci-app-passwall2/luasrc/view/passwall2/cbi/footer.htm b/luci-app-passwall2/luasrc/view/passwall2/cbi/footer.htm index 54777e11..8ebe7e5b 100644 --- a/luci-app-passwall2/luasrc/view/passwall2/cbi/footer.htm +++ b/luci-app-passwall2/luasrc/view/passwall2/cbi/footer.htm @@ -1,3 +1,6 @@ +<% +local map = self.map +-%> - + +