diff --git a/cloudreve/Makefile b/cloudreve/Makefile index d601167a..042f30db 100644 --- a/cloudreve/Makefile +++ b/cloudreve/Makefile @@ -6,11 +6,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=cloudreve PKG_VERSION:=4.15.0 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/cloudreve/Cloudreve.git -PKG_SOURCE_VERSION:=006680c5df8b529ab52656133fc220ad73ab57ff +PKG_SOURCE_VERSION:=58b83ea1e4727f9665a06b46c7f17cb4b4c174a5 PKG_MIRROR_HASH:=skip PKG_LICENSE:=GPL-3.0-only diff --git a/hickory-dns/Makefile b/hickory-dns/Makefile index 46800430..76acb714 100644 --- a/hickory-dns/Makefile +++ b/hickory-dns/Makefile @@ -1,16 +1,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=hickory-dns -PKG_VERSION:=2026.04.01~b57b7ae -PKG_RELEASE:=8 +PKG_VERSION:=2026.04.02~54a81de +PKG_RELEASE:=9 -HICKORY_COMMIT:=b57b7aec2c6c18d64b90f01c97595171963e0e56 +HICKORY_COMMIT:=54a81deefb24bb97df466b9032d5928345fffdde PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/hickory-dns/hickory-dns/tar.gz/b57b7aec2c6c18d64b90f01c97595171963e0e56? +PKG_SOURCE_URL:=https://codeload.github.com/hickory-dns/hickory-dns/tar.gz/54a81deefb24bb97df466b9032d5928345fffdde? PKG_HASH:=skip -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-b57b7aec2c6c18d64b90f01c97595171963e0e56 +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-54a81deefb24bb97df466b9032d5928345fffdde PKG_BUILD_DEPENDS:=rust/host PKG_BUILD_PARALLEL:=1 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 221326c4..c25eda71 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 @@ -1130,18 +1130,26 @@ return view.extend({ so.value('h2', _('HTTPUpgrade')); so.value('grpc', _('gRPC')); so.value('ws', _('WebSocket')); + so.value('xhttp', _('XHTTP')); so.validate = function(section_id, value) { const type = this.section.getOption('type').formvalue(section_id); switch (type) { case 'vmess': - case 'vless': if (!['http', 'h2', 'grpc', 'ws'].includes(value)) return _('Expecting: only support %s.').format(_('HTTP') + ' / ' + _('HTTPUpgrade') + ' / ' + _('gRPC') + ' / ' + _('WebSocket')); break; + case 'vless': + if (!['http', 'h2', 'grpc', 'ws', 'xhttp'].includes(value)) + return _('Expecting: only support %s.').format(_('HTTP') + + ' / ' + _('HTTPUpgrade') + + ' / ' + _('gRPC') + + ' / ' + _('WebSocket') + + ' / ' + _('XHTTP')); + break; case 'trojan': if (!['grpc', 'ws'].includes(value)) return _('Expecting: only support %s.').format(_('gRPC') + @@ -1162,6 +1170,12 @@ return view.extend({ so.depends({transport_enabled: '1', transport_type: 'h2'}); so.modalonly = true; + so = ss.taboption('field_transport', form.DynamicList, 'transport_host', _('Server hostname')); + so.datatype = 'hostname'; + so.placeholder = 'example.com'; + so.depends({transport_enabled: '1', transport_type: 'xhttp'}); + so.modalonly = true; + so = ss.taboption('field_transport', form.Value, 'transport_http_method', _('HTTP request method')); so.value('GET', _('GET')); so.value('POST', _('POST')); @@ -1182,13 +1196,13 @@ return view.extend({ so.placeholder = '/'; so.default = '/'; so.rmempty = false; - so.depends({transport_enabled: '1', transport_type: /^(h2|ws)$/}); + so.depends({transport_enabled: '1', transport_type: /^(h2|ws|xhttp)$/}); so.modalonly = true; so = ss.taboption('field_transport', hm.TextValue, 'transport_http_headers', _('HTTP header')); - so.placeholder = '{\n "Host": "example.com",\n "Connection": [\n "keep-alive"\n ]\n}'; + so.placeholder = '{\n "Host": "example.com",\n "Connection": [\n "keep-alive"\n ],\n "X-Forwarded-For": "" // XHTTP\n}'; so.validate = hm.validateJson; - so.depends({transport_enabled: '1', transport_type: /^(http|ws)$/}); + so.depends({transport_enabled: '1', transport_type: /^(http|ws|xhttp)$/}); so.modalonly = true; so = ss.taboption('field_transport', form.Value, 'transport_grpc_servicename', _('gRPC service name')); @@ -1229,6 +1243,23 @@ return view.extend({ so.depends({transport_enabled: '1', transport_type: 'ws', transport_ws_v2ray_http_upgrade: '1'}); so.modalonly = true; + so = ss.taboption('field_transport', form.ListValue, 'transport_xhttp_mode', _('XHTTP mode')); + so.value('stream-one', _('stream-one')); + so.value('stream-up', _('stream-up')); + so.value('packet-up', _('packet-up')); + so.depends({transport_enabled: '1', transport_type: 'xhttp'}); + so.modalonly = true; + + so = ss.taboption('field_transport', form.Flag, 'transport_xhttp_no_grpc_header', _('No gRPC header')); + so.default = so.disabled; + so.depends({transport_enabled: '1', transport_type: 'xhttp'}); + so.modalonly = true; + + so = ss.taboption('field_transport', form.Value, 'transport_xhttp_x_padding_bytes', _('Padding bytes')); + so.placeholder = '100-1000'; + so.depends({transport_enabled: '1', transport_type: 'xhttp'}); + so.modalonly = true; + /* Multiplex fields */ // TCP protocol only so = ss.taboption('field_general', form.Flag, 'smux_enabled', _('Multiplex')); so.default = so.disabled; diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot index c9fd29bb..c00e0b3a 100644 --- a/luci-app-fchomo/po/templates/fchomo.pot +++ b/luci-app-fchomo/po/templates/fchomo.pot @@ -39,10 +39,10 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1056 #: htdocs/luci-static/resources/view/fchomo/client.js:1057 #: htdocs/luci-static/resources/view/fchomo/client.js:1278 -#: htdocs/luci-static/resources/view/fchomo/node.js:1758 -#: htdocs/luci-static/resources/view/fchomo/node.js:1764 -#: htdocs/luci-static/resources/view/fchomo/node.js:1778 -#: htdocs/luci-static/resources/view/fchomo/node.js:1784 +#: htdocs/luci-static/resources/view/fchomo/node.js:1788 +#: htdocs/luci-static/resources/view/fchomo/node.js:1794 +#: htdocs/luci-static/resources/view/fchomo/node.js:1808 +#: htdocs/luci-static/resources/view/fchomo/node.js:1814 msgid "-- Please choose --" msgstr "" @@ -173,11 +173,11 @@ msgstr "" msgid "Add a inbound" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1379 msgid "Add a provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1734 +#: htdocs/luci-static/resources/view/fchomo/node.js:1764 msgid "Add a proxy chain" msgstr "" @@ -201,11 +201,11 @@ msgstr "" msgid "Add a sub rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1559 +#: htdocs/luci-static/resources/view/fchomo/node.js:1589 msgid "Add prefix" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1563 +#: htdocs/luci-static/resources/view/fchomo/node.js:1593 msgid "Add suffix" msgstr "" @@ -332,13 +332,13 @@ msgid "Binary mrs" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:734 -#: htdocs/luci-static/resources/view/fchomo/node.js:1319 -#: htdocs/luci-static/resources/view/fchomo/node.js:1632 +#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1662 msgid "Bind interface" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1320 -#: htdocs/luci-static/resources/view/fchomo/node.js:1633 +#: htdocs/luci-static/resources/view/fchomo/node.js:1350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1663 msgid "Bind outbound interface.
" msgstr "" @@ -508,7 +508,7 @@ msgstr "" msgid "Complete" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 +#: htdocs/luci-static/resources/view/fchomo/node.js:1609 msgid "Configuration Items" msgstr "" @@ -526,14 +526,14 @@ msgid "Content copied to clipboard!" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:670 -#: htdocs/luci-static/resources/view/fchomo/node.js:1489 -#: htdocs/luci-static/resources/view/fchomo/node.js:1515 +#: htdocs/luci-static/resources/view/fchomo/node.js:1519 +#: htdocs/luci-static/resources/view/fchomo/node.js:1545 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:339 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:365 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1488 +#: htdocs/luci-static/resources/view/fchomo/node.js:1518 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:338 msgid "Contents" msgstr "" @@ -558,7 +558,7 @@ msgstr "" msgid "Custom Direct List" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1550 +#: htdocs/luci-static/resources/view/fchomo/node.js:1580 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:400 msgid "Custom HTTP header." msgstr "" @@ -626,11 +626,11 @@ msgstr "" msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1757 +#: htdocs/luci-static/resources/view/fchomo/node.js:1787 msgid "Destination provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1763 +#: htdocs/luci-static/resources/view/fchomo/node.js:1793 msgid "Destination proxy node" msgstr "" @@ -638,8 +638,8 @@ msgstr "" msgid "Dial fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1770 -#: htdocs/luci-static/resources/view/fchomo/node.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 msgid "Different chain head/tail" msgstr "" @@ -709,15 +709,15 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1577 #: htdocs/luci-static/resources/view/fchomo/node.js:1038 -#: htdocs/luci-static/resources/view/fchomo/node.js:1619 +#: htdocs/luci-static/resources/view/fchomo/node.js:1649 msgid "Donot verifying server certificate." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1298 +#: htdocs/luci-static/resources/view/fchomo/node.js:1328 msgid "Download bandwidth" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1299 +#: htdocs/luci-static/resources/view/fchomo/node.js:1329 msgid "Download bandwidth in Mbps." msgstr "" @@ -758,11 +758,11 @@ msgstr "" msgid "ETag support" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1211 +#: htdocs/luci-static/resources/view/fchomo/node.js:1225 msgid "Early Data first packet length limit." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1217 +#: htdocs/luci-static/resources/view/fchomo/node.js:1231 msgid "Early Data header name" msgstr "" @@ -778,7 +778,7 @@ msgstr "" msgid "Edit ruleset" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1486 +#: htdocs/luci-static/resources/view/fchomo/node.js:1516 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:336 msgid "Editer" msgstr "" @@ -798,9 +798,9 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:401 #: htdocs/luci-static/resources/view/fchomo/global.js:680 #: htdocs/luci-static/resources/view/fchomo/node.js:234 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 -#: htdocs/luci-static/resources/view/fchomo/node.js:1655 -#: htdocs/luci-static/resources/view/fchomo/node.js:1744 +#: htdocs/luci-static/resources/view/fchomo/node.js:1489 +#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1774 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:264 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" @@ -827,15 +827,15 @@ msgstr "" msgid "Enable ECH" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1286 +#: htdocs/luci-static/resources/view/fchomo/node.js:1316 msgid "Enable TCP Brutal" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1287 +#: htdocs/luci-static/resources/view/fchomo/node.js:1317 msgid "Enable TCP Brutal congestion control algorithm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1275 +#: htdocs/luci-static/resources/view/fchomo/node.js:1305 msgid "Enable multiplexing only for TCP." msgstr "" @@ -844,16 +844,16 @@ msgstr "" msgid "Enable obfuscate for downlink" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1269 +#: htdocs/luci-static/resources/view/fchomo/node.js:1299 msgid "Enable padding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1280 +#: htdocs/luci-static/resources/view/fchomo/node.js:1310 msgid "Enable statistic" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:871 -#: htdocs/luci-static/resources/view/fchomo/node.js:1601 +#: htdocs/luci-static/resources/view/fchomo/node.js:1631 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "" @@ -892,7 +892,7 @@ msgid "" "if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1713 +#: htdocs/luci-static/resources/view/fchomo/node.js:1743 msgid "Exclude matched node types." msgstr "" @@ -903,7 +903,7 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1161 -#: htdocs/luci-static/resources/view/fchomo/node.js:1706 +#: htdocs/luci-static/resources/view/fchomo/node.js:1736 msgid "Exclude nodes that meet keywords or regexps." msgstr "" @@ -912,12 +912,12 @@ msgid "Expand/Collapse result" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1121 -#: htdocs/luci-static/resources/view/fchomo/node.js:1691 +#: htdocs/luci-static/resources/view/fchomo/node.js:1721 msgid "Expected HTTP code. 204 will be used if empty." msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1123 -#: htdocs/luci-static/resources/view/fchomo/node.js:1693 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 msgid "Expected status" msgstr "" @@ -960,8 +960,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:491 #: htdocs/luci-static/resources/view/fchomo/node.js:942 #: htdocs/luci-static/resources/view/fchomo/node.js:1030 -#: htdocs/luci-static/resources/view/fchomo/node.js:1770 -#: htdocs/luci-static/resources/view/fchomo/node.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:291 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:305 msgid "Expecting: %s" @@ -971,6 +971,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:984 #: htdocs/luci-static/resources/view/fchomo/node.js:1140 #: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 msgid "Expecting: only support %s." msgstr "" @@ -1020,7 +1021,7 @@ msgid "Fallback filter" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1156 -#: htdocs/luci-static/resources/view/fchomo/node.js:1700 +#: htdocs/luci-static/resources/view/fchomo/node.js:1730 msgid "Filter nodes that meet keywords or regexps." msgstr "" @@ -1061,8 +1062,8 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1122 -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1599 +#: htdocs/luci-static/resources/view/fchomo/node.js:1722 msgid "" "For format see %s." @@ -1088,7 +1089,7 @@ msgstr "" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1166 +#: htdocs/luci-static/resources/view/fchomo/node.js:1180 msgid "GET" msgstr "" @@ -1103,7 +1104,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:119 #: htdocs/luci-static/resources/view/fchomo/client.js:1009 #: htdocs/luci-static/resources/view/fchomo/node.js:222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1449 +#: htdocs/luci-static/resources/view/fchomo/node.js:1479 msgid "General fields" msgstr "" @@ -1189,12 +1190,13 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:816 #: htdocs/luci-static/resources/view/fchomo/node.js:1129 #: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1147 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1188 -#: htdocs/luci-static/resources/view/fchomo/node.js:1549 +#: htdocs/luci-static/resources/view/fchomo/node.js:1202 +#: htdocs/luci-static/resources/view/fchomo/node.js:1579 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:399 msgid "HTTP header" msgstr "" @@ -1220,7 +1222,7 @@ msgstr "" msgid "HTTP mask: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "HTTP request method" msgstr "" @@ -1242,6 +1244,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:978 #: htdocs/luci-static/resources/view/fchomo/node.js:1130 #: htdocs/luci-static/resources/view/fchomo/node.js:1141 +#: htdocs/luci-static/resources/view/fchomo/node.js:1148 msgid "HTTPUpgrade" msgstr "" @@ -1266,27 +1269,27 @@ msgid "Health check" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:1660 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 msgid "Health check URL" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1120 -#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1720 msgid "Health check expected status" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1100 -#: htdocs/luci-static/resources/view/fchomo/node.js:1670 +#: htdocs/luci-static/resources/view/fchomo/node.js:1700 msgid "Health check interval" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1107 -#: htdocs/luci-static/resources/view/fchomo/node.js:1677 +#: htdocs/luci-static/resources/view/fchomo/node.js:1707 msgid "Health check timeout" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1011 -#: htdocs/luci-static/resources/view/fchomo/node.js:1451 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "Health fields" msgstr "" @@ -1337,8 +1340,8 @@ msgstr "" msgid "IP override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1331 -#: htdocs/luci-static/resources/view/fchomo/node.js:1646 +#: htdocs/luci-static/resources/view/fchomo/node.js:1361 +#: htdocs/luci-static/resources/view/fchomo/node.js:1676 msgid "IP version" msgstr "" @@ -1399,8 +1402,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1713 #: htdocs/luci-static/resources/view/fchomo/client.js:1748 #: htdocs/luci-static/resources/view/fchomo/client.js:1769 -#: htdocs/luci-static/resources/view/fchomo/node.js:1356 -#: htdocs/luci-static/resources/view/fchomo/node.js:1437 +#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1467 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:153 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:241 msgid "Import mihomo config" @@ -1416,12 +1419,12 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:181 #: htdocs/luci-static/resources/view/fchomo/node.js:286 #: htdocs/luci-static/resources/view/fchomo/node.js:292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1607 -#: htdocs/luci-static/resources/view/fchomo/node.js:1613 +#: htdocs/luci-static/resources/view/fchomo/node.js:1637 +#: htdocs/luci-static/resources/view/fchomo/node.js:1643 msgid "In Mbps." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1527 +#: htdocs/luci-static/resources/view/fchomo/node.js:1557 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:377 msgid "In bytes. %s will be used if empty." msgstr "" @@ -1433,7 +1436,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1108 #: htdocs/luci-static/resources/view/fchomo/client.js:1137 -#: htdocs/luci-static/resources/view/fchomo/node.js:1678 +#: htdocs/luci-static/resources/view/fchomo/node.js:1708 msgid "In millisecond. %s will be used if empty." msgstr "" @@ -1442,7 +1445,7 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:428 #: htdocs/luci-static/resources/view/fchomo/node.js:604 #: htdocs/luci-static/resources/view/fchomo/node.js:611 -#: htdocs/luci-static/resources/view/fchomo/node.js:1204 +#: htdocs/luci-static/resources/view/fchomo/node.js:1218 msgid "In seconds." msgstr "" @@ -1451,8 +1454,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:430 #: htdocs/luci-static/resources/view/fchomo/global.js:515 #: htdocs/luci-static/resources/view/fchomo/node.js:280 -#: htdocs/luci-static/resources/view/fchomo/node.js:1533 -#: htdocs/luci-static/resources/view/fchomo/node.js:1671 +#: htdocs/luci-static/resources/view/fchomo/node.js:1563 +#: htdocs/luci-static/resources/view/fchomo/node.js:1701 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:383 msgid "In seconds. %s will be used if empty." msgstr "" @@ -1498,7 +1501,7 @@ msgstr "" msgid "Info" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1466 +#: htdocs/luci-static/resources/view/fchomo/node.js:1496 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:279 msgid "Inline" msgstr "" @@ -1535,14 +1538,14 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1719 #: htdocs/luci-static/resources/view/fchomo/client.js:1775 #: htdocs/luci-static/resources/view/fchomo/node.js:229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1454 -#: htdocs/luci-static/resources/view/fchomo/node.js:1739 +#: htdocs/luci-static/resources/view/fchomo/node.js:1484 +#: htdocs/luci-static/resources/view/fchomo/node.js:1769 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 msgid "Label" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/node.js:1714 msgid "Lazy" msgstr "" @@ -1591,7 +1594,7 @@ msgstr "" msgid "Load balance" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1464 +#: htdocs/luci-static/resources/view/fchomo/node.js:1494 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:277 msgid "Local" msgstr "" @@ -1625,9 +1628,11 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:324 #: htdocs/luci-static/resources/fchomo/listeners.js:325 #: htdocs/luci-static/resources/fchomo/listeners.js:326 +#: htdocs/luci-static/resources/fchomo/listeners.js:331 #: htdocs/luci-static/resources/view/fchomo/node.js:409 #: htdocs/luci-static/resources/view/fchomo/node.js:410 #: htdocs/luci-static/resources/view/fchomo/node.js:411 +#: htdocs/luci-static/resources/view/fchomo/node.js:416 msgid "Low-entropy data stream" msgstr "" @@ -1677,7 +1682,7 @@ msgstr "" msgid "Match rule set." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1210 +#: htdocs/luci-static/resources/view/fchomo/node.js:1224 msgid "Max Early Data" msgstr "" @@ -1704,12 +1709,12 @@ msgstr "" msgid "Max upload speed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1247 -#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1277 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "Maximum connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1291 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -1727,7 +1732,7 @@ msgid "" "rate." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1290 msgid "Maximum streams" msgstr "" @@ -1752,7 +1757,7 @@ msgstr "" msgid "Min of idle sessions to keep" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1284 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "" @@ -1762,8 +1767,8 @@ msgstr "" msgid "Minimum padding rate" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1253 -#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1283 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "Minimum streams" msgstr "" @@ -1780,7 +1785,7 @@ msgstr "" msgid "Mixed port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1233 +#: htdocs/luci-static/resources/view/fchomo/node.js:1263 msgid "Multiplex" msgstr "" @@ -1802,7 +1807,7 @@ msgstr "" msgid "Name of the Proxy group as outbound." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1539 +#: htdocs/luci-static/resources/view/fchomo/node.js:1569 msgid "Name of the Proxy group to download provider." msgstr "" @@ -1834,8 +1839,12 @@ msgstr "" msgid "No add'l params" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1252 +msgid "No gRPC header" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/client.js:1115 -#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1715 msgid "No testing is performed when this provider node is not in use." msgstr "" @@ -1854,17 +1863,17 @@ msgid "Node" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1160 -#: htdocs/luci-static/resources/view/fchomo/node.js:1705 +#: htdocs/luci-static/resources/view/fchomo/node.js:1735 msgid "Node exclude filter" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1712 +#: htdocs/luci-static/resources/view/fchomo/node.js:1742 msgid "Node exclude type" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1155 -#: htdocs/luci-static/resources/view/fchomo/node.js:1699 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "Node filter" msgstr "" @@ -1942,7 +1951,7 @@ msgid "Override destination" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1010 -#: htdocs/luci-static/resources/view/fchomo/node.js:1450 +#: htdocs/luci-static/resources/view/fchomo/node.js:1480 msgid "Override fields" msgstr "" @@ -1970,11 +1979,11 @@ msgstr "" msgid "Overview" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1181 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "PUT" msgstr "" @@ -1982,6 +1991,10 @@ msgstr "" msgid "Packet encoding" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1257 +msgid "Padding bytes" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:458 msgid "Padding scheme" msgstr "" @@ -2001,7 +2014,7 @@ msgid "Password" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1514 +#: htdocs/luci-static/resources/view/fchomo/node.js:1544 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:364 msgid "Payload" msgstr "" @@ -2041,8 +2054,8 @@ msgid "" "standards." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 -#: htdocs/luci-static/resources/view/fchomo/node.js:1513 +#: htdocs/luci-static/resources/view/fchomo/node.js:1517 +#: htdocs/luci-static/resources/view/fchomo/node.js:1543 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:337 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:363 msgid "" @@ -2056,7 +2069,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1445 #: htdocs/luci-static/resources/view/fchomo/client.js:1697 #: htdocs/luci-static/resources/view/fchomo/client.js:1749 -#: htdocs/luci-static/resources/view/fchomo/node.js:1357 +#: htdocs/luci-static/resources/view/fchomo/node.js:1387 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 msgid "Please type %s fields of mihomo config.
" msgstr "" @@ -2123,10 +2136,10 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:736 #: htdocs/luci-static/resources/view/fchomo/global.js:753 -#: htdocs/luci-static/resources/view/fchomo/node.js:1321 -#: htdocs/luci-static/resources/view/fchomo/node.js:1327 -#: htdocs/luci-static/resources/view/fchomo/node.js:1634 -#: htdocs/luci-static/resources/view/fchomo/node.js:1641 +#: htdocs/luci-static/resources/view/fchomo/node.js:1351 +#: htdocs/luci-static/resources/view/fchomo/node.js:1357 +#: htdocs/luci-static/resources/view/fchomo/node.js:1664 +#: htdocs/luci-static/resources/view/fchomo/node.js:1671 msgid "Priority: Proxy Node > Global." msgstr "" @@ -2148,7 +2161,7 @@ msgid "Process matching mode" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "Protocol" msgstr "" @@ -2163,13 +2176,13 @@ msgid "" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1055 -#: htdocs/luci-static/resources/view/fchomo/node.js:1340 -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 -#: htdocs/luci-static/resources/view/fchomo/node.js:1750 +#: htdocs/luci-static/resources/view/fchomo/node.js:1370 +#: htdocs/luci-static/resources/view/fchomo/node.js:1379 +#: htdocs/luci-static/resources/view/fchomo/node.js:1780 msgid "Provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 msgid "Provider URL" msgstr "" @@ -2192,19 +2205,19 @@ msgid "Proxy MAC-s" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:208 -#: htdocs/luci-static/resources/view/fchomo/node.js:1749 +#: htdocs/luci-static/resources/view/fchomo/node.js:1779 msgid "Proxy Node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1725 -#: htdocs/luci-static/resources/view/fchomo/node.js:1734 +#: htdocs/luci-static/resources/view/fchomo/node.js:1755 +#: htdocs/luci-static/resources/view/fchomo/node.js:1764 msgid "Proxy chain" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:530 #: htdocs/luci-static/resources/view/fchomo/client.js:783 #: htdocs/luci-static/resources/view/fchomo/client.js:1543 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1568 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:388 msgid "Proxy group" msgstr "" @@ -2311,7 +2324,7 @@ msgstr "" msgid "Reload All" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1465 +#: htdocs/luci-static/resources/view/fchomo/node.js:1495 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:278 msgid "Remote" msgstr "" @@ -2326,18 +2339,18 @@ msgid "Remove" msgstr "" #: htdocs/luci-static/resources/fchomo.js:1354 -#: htdocs/luci-static/resources/view/fchomo/node.js:1441 -#: htdocs/luci-static/resources/view/fchomo/node.js:1443 +#: htdocs/luci-static/resources/view/fchomo/node.js:1471 +#: htdocs/luci-static/resources/view/fchomo/node.js:1473 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:251 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:253 msgid "Remove idles" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1567 +#: htdocs/luci-static/resources/view/fchomo/node.js:1597 msgid "Replace name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1568 +#: htdocs/luci-static/resources/view/fchomo/node.js:1598 msgid "Replace node name." msgstr "" @@ -2346,8 +2359,8 @@ msgid "Request" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:996 -#: htdocs/luci-static/resources/view/fchomo/node.js:1174 -#: htdocs/luci-static/resources/view/fchomo/node.js:1181 +#: htdocs/luci-static/resources/view/fchomo/node.js:1188 +#: htdocs/luci-static/resources/view/fchomo/node.js:1195 msgid "Request path" msgstr "" @@ -2412,8 +2425,8 @@ msgstr "" msgid "Routing GFW" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1326 -#: htdocs/luci-static/resources/view/fchomo/node.js:1640 +#: htdocs/luci-static/resources/view/fchomo/node.js:1356 +#: htdocs/luci-static/resources/view/fchomo/node.js:1670 msgid "Routing mark" msgstr "" @@ -2551,7 +2564,8 @@ msgstr "" msgid "Server address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 msgid "Server hostname" msgstr "" @@ -2583,7 +2597,7 @@ msgstr "" msgid "Shadowsocks password" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1281 +#: htdocs/luci-static/resources/view/fchomo/node.js:1311 msgid "Show connections in the dashboard for breaking connections easier." msgstr "" @@ -2595,14 +2609,14 @@ msgstr "" msgid "Simple round-robin all nodes" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1526 +#: htdocs/luci-static/resources/view/fchomo/node.js:1556 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:376 msgid "Size limit" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1576 #: htdocs/luci-static/resources/view/fchomo/node.js:1037 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1648 msgid "Skip cert verify" msgstr "" @@ -2728,7 +2742,7 @@ msgstr "" msgid "TCP concurrency" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1274 +#: htdocs/luci-static/resources/view/fchomo/node.js:1304 msgid "TCP only" msgstr "" @@ -2754,8 +2768,8 @@ msgstr "" msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1305 -#: htdocs/luci-static/resources/view/fchomo/node.js:1585 +#: htdocs/luci-static/resources/view/fchomo/node.js:1335 +#: htdocs/luci-static/resources/view/fchomo/node.js:1615 msgid "TFO" msgstr "" @@ -2867,7 +2881,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1579 #: htdocs/luci-static/resources/view/fchomo/node.js:1040 -#: htdocs/luci-static/resources/view/fchomo/node.js:1621 +#: htdocs/luci-static/resources/view/fchomo/node.js:1651 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" @@ -2907,11 +2921,11 @@ msgstr "" msgid "Traffic pattern" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1807 msgid "Transit proxy group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1783 +#: htdocs/luci-static/resources/view/fchomo/node.js:1813 msgid "Transit proxy node" msgstr "" @@ -2973,8 +2987,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:842 #: htdocs/luci-static/resources/view/fchomo/client.js:1028 #: htdocs/luci-static/resources/view/fchomo/node.js:238 -#: htdocs/luci-static/resources/view/fchomo/node.js:1463 -#: htdocs/luci-static/resources/view/fchomo/node.js:1748 +#: htdocs/luci-static/resources/view/fchomo/node.js:1493 +#: htdocs/luci-static/resources/view/fchomo/node.js:1778 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:276 msgid "Type" msgstr "" @@ -2990,7 +3004,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:588 #: htdocs/luci-static/resources/view/fchomo/client.js:678 #: htdocs/luci-static/resources/view/fchomo/node.js:865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 +#: htdocs/luci-static/resources/view/fchomo/node.js:1625 msgid "UDP" msgstr "" @@ -3059,7 +3073,7 @@ msgid "Unknown error: %s" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:870 -#: htdocs/luci-static/resources/view/fchomo/node.js:1600 +#: htdocs/luci-static/resources/view/fchomo/node.js:1630 msgid "UoT" msgstr "" @@ -3067,16 +3081,16 @@ msgstr "" msgid "Update failed." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1532 +#: htdocs/luci-static/resources/view/fchomo/node.js:1562 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:382 msgid "Update interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1292 +#: htdocs/luci-static/resources/view/fchomo/node.js:1322 msgid "Upload bandwidth" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1293 +#: htdocs/luci-static/resources/view/fchomo/node.js:1323 msgid "Upload bandwidth in Mbps." msgstr "" @@ -3141,11 +3155,11 @@ msgstr "" msgid "Users filter mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1222 +#: htdocs/luci-static/resources/view/fchomo/node.js:1236 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1227 +#: htdocs/luci-static/resources/view/fchomo/node.js:1241 msgid "V2ray HTTPUpgrade fast open" msgstr "" @@ -3159,8 +3173,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1469 -#: htdocs/luci-static/resources/view/fchomo/node.js:1754 +#: htdocs/luci-static/resources/view/fchomo/node.js:1499 +#: htdocs/luci-static/resources/view/fchomo/node.js:1784 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:319 msgid "Value" msgstr "" @@ -3200,7 +3214,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:489 #: htdocs/luci-static/resources/view/fchomo/node.js:1132 #: htdocs/luci-static/resources/view/fchomo/node.js:1143 -#: htdocs/luci-static/resources/view/fchomo/node.js:1148 +#: htdocs/luci-static/resources/view/fchomo/node.js:1150 +#: htdocs/luci-static/resources/view/fchomo/node.js:1156 msgid "WebSocket" msgstr "" @@ -3228,6 +3243,15 @@ msgstr "" msgid "WireGuard requires base64-encoded private keys." msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1133 +#: htdocs/luci-static/resources/view/fchomo/node.js:1151 +msgid "XHTTP" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1246 +msgid "XHTTP mode" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:609 msgid "XOR mode" msgstr "" @@ -3301,7 +3325,7 @@ msgstr "" msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1612 +#: htdocs/luci-static/resources/view/fchomo/node.js:1642 msgid "down" msgstr "" @@ -3321,20 +3345,21 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:984 #: htdocs/luci-static/resources/view/fchomo/node.js:1131 #: htdocs/luci-static/resources/view/fchomo/node.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1149 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1198 +#: htdocs/luci-static/resources/view/fchomo/node.js:1212 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1203 +#: htdocs/luci-static/resources/view/fchomo/node.js:1217 msgid "gRPC ping interval" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:1003 -#: htdocs/luci-static/resources/view/fchomo/node.js:1194 +#: htdocs/luci-static/resources/view/fchomo/node.js:1208 msgid "gRPC service name" msgstr "" @@ -3342,7 +3367,7 @@ msgstr "" msgid "gVisor" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1243 +#: htdocs/luci-static/resources/view/fchomo/node.js:1273 msgid "h2mux" msgstr "" @@ -3360,7 +3385,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1480 #: htdocs/luci-static/resources/view/fchomo/client.js:1711 #: htdocs/luci-static/resources/view/fchomo/client.js:1767 -#: htdocs/luci-static/resources/view/fchomo/node.js:1435 +#: htdocs/luci-static/resources/view/fchomo/node.js:1465 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:239 msgid "mihomo config" msgstr "" @@ -3369,8 +3394,8 @@ msgstr "" msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1309 -#: htdocs/luci-static/resources/view/fchomo/node.js:1590 +#: htdocs/luci-static/resources/view/fchomo/node.js:1339 +#: htdocs/luci-static/resources/view/fchomo/node.js:1620 msgid "mpTCP" msgstr "" @@ -3426,7 +3451,7 @@ msgstr "" msgid "only applies when %s is not %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1570 +#: htdocs/luci-static/resources/view/fchomo/node.js:1600 msgid "override.proxy-name" msgstr "" @@ -3434,6 +3459,10 @@ msgstr "" msgid "packet addr (v2ray-core v5+)" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1248 +msgid "packet-up" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:391 #: htdocs/luci-static/resources/view/fchomo/node.js:458 msgid "poll" @@ -3466,7 +3495,7 @@ msgstr "" msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1241 +#: htdocs/luci-static/resources/view/fchomo/node.js:1271 msgid "smux" msgstr "" @@ -3479,6 +3508,10 @@ msgstr "" msgid "src" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1247 +msgid "stream-one" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:491 msgid "stream/poll/auto" msgstr "" @@ -3503,7 +3536,7 @@ msgstr "" msgid "unique value" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1606 +#: htdocs/luci-static/resources/view/fchomo/node.js:1636 msgid "up" msgstr "" @@ -3579,7 +3612,7 @@ msgstr "" msgid "yacd-meta" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1242 +#: htdocs/luci-static/resources/view/fchomo/node.js:1272 msgid "yamux" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po index 499ec838..7b75facc 100644 --- a/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -46,10 +46,10 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1056 #: htdocs/luci-static/resources/view/fchomo/client.js:1057 #: htdocs/luci-static/resources/view/fchomo/client.js:1278 -#: htdocs/luci-static/resources/view/fchomo/node.js:1758 -#: htdocs/luci-static/resources/view/fchomo/node.js:1764 -#: htdocs/luci-static/resources/view/fchomo/node.js:1778 -#: htdocs/luci-static/resources/view/fchomo/node.js:1784 +#: htdocs/luci-static/resources/view/fchomo/node.js:1788 +#: htdocs/luci-static/resources/view/fchomo/node.js:1794 +#: htdocs/luci-static/resources/view/fchomo/node.js:1808 +#: htdocs/luci-static/resources/view/fchomo/node.js:1814 msgid "-- Please choose --" msgstr "-- 请选择 --" @@ -182,11 +182,11 @@ msgstr "新增 节点" msgid "Add a inbound" msgstr "新增 入站" -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1379 msgid "Add a provider" msgstr "新增 供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1734 +#: htdocs/luci-static/resources/view/fchomo/node.js:1764 msgid "Add a proxy chain" msgstr "新增 代理链" @@ -210,11 +210,11 @@ msgstr "新增 服务器" msgid "Add a sub rule" msgstr "新增 子规则" -#: htdocs/luci-static/resources/view/fchomo/node.js:1559 +#: htdocs/luci-static/resources/view/fchomo/node.js:1589 msgid "Add prefix" msgstr "添加前缀" -#: htdocs/luci-static/resources/view/fchomo/node.js:1563 +#: htdocs/luci-static/resources/view/fchomo/node.js:1593 msgid "Add suffix" msgstr "添加后缀" @@ -343,13 +343,13 @@ msgid "Binary mrs" msgstr "二进制 mrs" #: htdocs/luci-static/resources/view/fchomo/global.js:734 -#: htdocs/luci-static/resources/view/fchomo/node.js:1319 -#: htdocs/luci-static/resources/view/fchomo/node.js:1632 +#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1662 msgid "Bind interface" msgstr "绑定接口" -#: htdocs/luci-static/resources/view/fchomo/node.js:1320 -#: htdocs/luci-static/resources/view/fchomo/node.js:1633 +#: htdocs/luci-static/resources/view/fchomo/node.js:1350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1663 msgid "Bind outbound interface.
" msgstr "绑定出站接口。
" @@ -521,7 +521,7 @@ msgstr "常用端口(绕过 P2P 流量)" msgid "Complete" msgstr "完成" -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 +#: htdocs/luci-static/resources/view/fchomo/node.js:1609 msgid "Configuration Items" msgstr "配置项" @@ -539,14 +539,14 @@ msgid "Content copied to clipboard!" msgstr "内容已复制到剪贴板!" #: htdocs/luci-static/resources/view/fchomo/client.js:670 -#: htdocs/luci-static/resources/view/fchomo/node.js:1489 -#: htdocs/luci-static/resources/view/fchomo/node.js:1515 +#: htdocs/luci-static/resources/view/fchomo/node.js:1519 +#: htdocs/luci-static/resources/view/fchomo/node.js:1545 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:339 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:365 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "内容将不会被验证,请确保输入正确。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1488 +#: htdocs/luci-static/resources/view/fchomo/node.js:1518 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:338 msgid "Contents" msgstr "内容" @@ -571,7 +571,7 @@ msgstr "Cron 表达式" msgid "Custom Direct List" msgstr "自定义直连列表" -#: htdocs/luci-static/resources/view/fchomo/node.js:1550 +#: htdocs/luci-static/resources/view/fchomo/node.js:1580 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:400 msgid "Custom HTTP header." msgstr "自定义 HTTP header。" @@ -639,11 +639,11 @@ msgstr "默认 DNS 服务器" msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "允许通过 WireGuard 转发的目的地址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1757 +#: htdocs/luci-static/resources/view/fchomo/node.js:1787 msgid "Destination provider" msgstr "落地供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1763 +#: htdocs/luci-static/resources/view/fchomo/node.js:1793 msgid "Destination proxy node" msgstr "落地代理节点" @@ -651,8 +651,8 @@ msgstr "落地代理节点" msgid "Dial fields" msgstr "拨号字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:1770 -#: htdocs/luci-static/resources/view/fchomo/node.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 msgid "Different chain head/tail" msgstr "不同的链头/链尾" @@ -724,15 +724,15 @@ msgstr "不要在 ClientHello 中发送服务器名称。" #: htdocs/luci-static/resources/view/fchomo/client.js:1577 #: htdocs/luci-static/resources/view/fchomo/node.js:1038 -#: htdocs/luci-static/resources/view/fchomo/node.js:1619 +#: htdocs/luci-static/resources/view/fchomo/node.js:1649 msgid "Donot verifying server certificate." msgstr "不验证服务器证书。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1298 +#: htdocs/luci-static/resources/view/fchomo/node.js:1328 msgid "Download bandwidth" msgstr "下载带宽" -#: htdocs/luci-static/resources/view/fchomo/node.js:1299 +#: htdocs/luci-static/resources/view/fchomo/node.js:1329 msgid "Download bandwidth in Mbps." msgstr "下载带宽(单位:Mbps)。" @@ -773,11 +773,11 @@ msgstr "" msgid "ETag support" msgstr "ETag 支持" -#: htdocs/luci-static/resources/view/fchomo/node.js:1211 +#: htdocs/luci-static/resources/view/fchomo/node.js:1225 msgid "Early Data first packet length limit." msgstr "前置数据长度阈值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1217 +#: htdocs/luci-static/resources/view/fchomo/node.js:1231 msgid "Early Data header name" msgstr "前置数据标头" @@ -793,7 +793,7 @@ msgstr "编辑节点" msgid "Edit ruleset" msgstr "编辑规则集" -#: htdocs/luci-static/resources/view/fchomo/node.js:1486 +#: htdocs/luci-static/resources/view/fchomo/node.js:1516 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:336 msgid "Editer" msgstr "编辑器" @@ -813,9 +813,9 @@ msgstr "消除加密头特征" #: htdocs/luci-static/resources/view/fchomo/global.js:401 #: htdocs/luci-static/resources/view/fchomo/global.js:680 #: htdocs/luci-static/resources/view/fchomo/node.js:234 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 -#: htdocs/luci-static/resources/view/fchomo/node.js:1655 -#: htdocs/luci-static/resources/view/fchomo/node.js:1744 +#: htdocs/luci-static/resources/view/fchomo/node.js:1489 +#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1774 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:264 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" @@ -846,15 +846,15 @@ msgstr "" msgid "Enable ECH" msgstr "启用 ECH" -#: htdocs/luci-static/resources/view/fchomo/node.js:1286 +#: htdocs/luci-static/resources/view/fchomo/node.js:1316 msgid "Enable TCP Brutal" msgstr "启用 TCP Brutal" -#: htdocs/luci-static/resources/view/fchomo/node.js:1287 +#: htdocs/luci-static/resources/view/fchomo/node.js:1317 msgid "Enable TCP Brutal congestion control algorithm" msgstr "启用 TCP Brutal 拥塞控制算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1275 +#: htdocs/luci-static/resources/view/fchomo/node.js:1305 msgid "Enable multiplexing only for TCP." msgstr "仅为 TCP 启用多路复用。" @@ -863,16 +863,16 @@ msgstr "仅为 TCP 启用多路复用。" msgid "Enable obfuscate for downlink" msgstr "启用下行链路混淆" -#: htdocs/luci-static/resources/view/fchomo/node.js:1269 +#: htdocs/luci-static/resources/view/fchomo/node.js:1299 msgid "Enable padding" msgstr "启用填充" -#: htdocs/luci-static/resources/view/fchomo/node.js:1280 +#: htdocs/luci-static/resources/view/fchomo/node.js:1310 msgid "Enable statistic" msgstr "启用统计" #: htdocs/luci-static/resources/view/fchomo/node.js:871 -#: htdocs/luci-static/resources/view/fchomo/node.js:1601 +#: htdocs/luci-static/resources/view/fchomo/node.js:1631 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。" @@ -911,7 +911,7 @@ msgid "" "if empty." msgstr "超过此限制将会触发强制健康检查。留空则使用 5。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1713 +#: htdocs/luci-static/resources/view/fchomo/node.js:1743 msgid "Exclude matched node types." msgstr "排除匹配的节点类型。" @@ -924,7 +924,7 @@ msgstr "" "rel=\"noreferrer noopener\">此处。" #: htdocs/luci-static/resources/view/fchomo/client.js:1161 -#: htdocs/luci-static/resources/view/fchomo/node.js:1706 +#: htdocs/luci-static/resources/view/fchomo/node.js:1736 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配关键词或表达式的节点。" @@ -933,12 +933,12 @@ msgid "Expand/Collapse result" msgstr "展开/收起 结果" #: htdocs/luci-static/resources/view/fchomo/client.js:1121 -#: htdocs/luci-static/resources/view/fchomo/node.js:1691 +#: htdocs/luci-static/resources/view/fchomo/node.js:1721 msgid "Expected HTTP code. 204 will be used if empty." msgstr "预期的 HTTP code。留空则使用 204。" #: htdocs/luci-static/resources/view/fchomo/client.js:1123 -#: htdocs/luci-static/resources/view/fchomo/node.js:1693 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 msgid "Expected status" msgstr "预期状态" @@ -981,8 +981,8 @@ msgstr "预期状态" #: htdocs/luci-static/resources/view/fchomo/node.js:491 #: htdocs/luci-static/resources/view/fchomo/node.js:942 #: htdocs/luci-static/resources/view/fchomo/node.js:1030 -#: htdocs/luci-static/resources/view/fchomo/node.js:1770 -#: htdocs/luci-static/resources/view/fchomo/node.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:291 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:305 msgid "Expecting: %s" @@ -992,6 +992,7 @@ msgstr "请输入:%s" #: htdocs/luci-static/resources/fchomo/listeners.js:984 #: htdocs/luci-static/resources/view/fchomo/node.js:1140 #: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 msgid "Expecting: only support %s." msgstr "请输入:仅支援 %s." @@ -1041,7 +1042,7 @@ msgid "Fallback filter" msgstr "後備过滤器" #: htdocs/luci-static/resources/view/fchomo/client.js:1156 -#: htdocs/luci-static/resources/view/fchomo/node.js:1700 +#: htdocs/luci-static/resources/view/fchomo/node.js:1730 msgid "Filter nodes that meet keywords or regexps." msgstr "过滤匹配关键字或表达式的节点。" @@ -1084,8 +1085,8 @@ msgstr "" "noopener\">%s." #: htdocs/luci-static/resources/view/fchomo/client.js:1122 -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1599 +#: htdocs/luci-static/resources/view/fchomo/node.js:1722 msgid "" "For format see %s." @@ -1113,7 +1114,7 @@ msgstr "格式" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1166 +#: htdocs/luci-static/resources/view/fchomo/node.js:1180 msgid "GET" msgstr "" @@ -1128,7 +1129,7 @@ msgstr "常规" #: htdocs/luci-static/resources/fchomo/listeners.js:119 #: htdocs/luci-static/resources/view/fchomo/client.js:1009 #: htdocs/luci-static/resources/view/fchomo/node.js:222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1449 +#: htdocs/luci-static/resources/view/fchomo/node.js:1479 msgid "General fields" msgstr "常规字段" @@ -1214,12 +1215,13 @@ msgstr "组" #: htdocs/luci-static/resources/view/fchomo/node.js:816 #: htdocs/luci-static/resources/view/fchomo/node.js:1129 #: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1147 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1188 -#: htdocs/luci-static/resources/view/fchomo/node.js:1549 +#: htdocs/luci-static/resources/view/fchomo/node.js:1202 +#: htdocs/luci-static/resources/view/fchomo/node.js:1579 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:399 msgid "HTTP header" msgstr "HTTP header" @@ -1245,7 +1247,7 @@ msgstr "HTTP 伪装多路复用" msgid "HTTP mask: %s" msgstr "HTTP 伪装: %s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "HTTP request method" msgstr "HTTP 请求方法" @@ -1267,6 +1269,7 @@ msgstr "身份验证失败时的 HTTP3 服务器响应。默认返回 404 页面 #: htdocs/luci-static/resources/fchomo/listeners.js:978 #: htdocs/luci-static/resources/view/fchomo/node.js:1130 #: htdocs/luci-static/resources/view/fchomo/node.js:1141 +#: htdocs/luci-static/resources/view/fchomo/node.js:1148 msgid "HTTPUpgrade" msgstr "" @@ -1291,27 +1294,27 @@ msgid "Health check" msgstr "健康检查" #: htdocs/luci-static/resources/view/fchomo/client.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:1660 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 msgid "Health check URL" msgstr "健康检查 URL" #: htdocs/luci-static/resources/view/fchomo/client.js:1120 -#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1720 msgid "Health check expected status" msgstr "健康检查预期状态" #: htdocs/luci-static/resources/view/fchomo/client.js:1100 -#: htdocs/luci-static/resources/view/fchomo/node.js:1670 +#: htdocs/luci-static/resources/view/fchomo/node.js:1700 msgid "Health check interval" msgstr "健康检查间隔" #: htdocs/luci-static/resources/view/fchomo/client.js:1107 -#: htdocs/luci-static/resources/view/fchomo/node.js:1677 +#: htdocs/luci-static/resources/view/fchomo/node.js:1707 msgid "Health check timeout" msgstr "健康检查超时" #: htdocs/luci-static/resources/view/fchomo/client.js:1011 -#: htdocs/luci-static/resources/view/fchomo/node.js:1451 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "Health fields" msgstr "健康字段" @@ -1362,8 +1365,8 @@ msgstr "" msgid "IP override" msgstr "IP 覆写" -#: htdocs/luci-static/resources/view/fchomo/node.js:1331 -#: htdocs/luci-static/resources/view/fchomo/node.js:1646 +#: htdocs/luci-static/resources/view/fchomo/node.js:1361 +#: htdocs/luci-static/resources/view/fchomo/node.js:1676 msgid "IP version" msgstr "IP 版本" @@ -1424,8 +1427,8 @@ msgstr "导入" #: htdocs/luci-static/resources/view/fchomo/client.js:1713 #: htdocs/luci-static/resources/view/fchomo/client.js:1748 #: htdocs/luci-static/resources/view/fchomo/client.js:1769 -#: htdocs/luci-static/resources/view/fchomo/node.js:1356 -#: htdocs/luci-static/resources/view/fchomo/node.js:1437 +#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1467 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:153 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:241 msgid "Import mihomo config" @@ -1441,12 +1444,12 @@ msgstr "导入规则集链接" #: htdocs/luci-static/resources/fchomo/listeners.js:181 #: htdocs/luci-static/resources/view/fchomo/node.js:286 #: htdocs/luci-static/resources/view/fchomo/node.js:292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1607 -#: htdocs/luci-static/resources/view/fchomo/node.js:1613 +#: htdocs/luci-static/resources/view/fchomo/node.js:1637 +#: htdocs/luci-static/resources/view/fchomo/node.js:1643 msgid "In Mbps." msgstr "单位为 Mbps。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1527 +#: htdocs/luci-static/resources/view/fchomo/node.js:1557 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:377 msgid "In bytes. %s will be used if empty." msgstr "单位为字节。留空则使用 %s。" @@ -1458,7 +1461,7 @@ msgstr "单位为毫秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:1108 #: htdocs/luci-static/resources/view/fchomo/client.js:1137 -#: htdocs/luci-static/resources/view/fchomo/node.js:1678 +#: htdocs/luci-static/resources/view/fchomo/node.js:1708 msgid "In millisecond. %s will be used if empty." msgstr "单位为毫秒。留空则使用 %s。" @@ -1467,7 +1470,7 @@ msgstr "单位为毫秒。留空则使用 %s。" #: htdocs/luci-static/resources/fchomo/listeners.js:428 #: htdocs/luci-static/resources/view/fchomo/node.js:604 #: htdocs/luci-static/resources/view/fchomo/node.js:611 -#: htdocs/luci-static/resources/view/fchomo/node.js:1204 +#: htdocs/luci-static/resources/view/fchomo/node.js:1218 msgid "In seconds." msgstr "单位为秒。" @@ -1476,8 +1479,8 @@ msgstr "单位为秒。" #: htdocs/luci-static/resources/view/fchomo/global.js:430 #: htdocs/luci-static/resources/view/fchomo/global.js:515 #: htdocs/luci-static/resources/view/fchomo/node.js:280 -#: htdocs/luci-static/resources/view/fchomo/node.js:1533 -#: htdocs/luci-static/resources/view/fchomo/node.js:1671 +#: htdocs/luci-static/resources/view/fchomo/node.js:1563 +#: htdocs/luci-static/resources/view/fchomo/node.js:1701 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:383 msgid "In seconds. %s will be used if empty." msgstr "单位为秒。留空则使用 %s。" @@ -1525,7 +1528,7 @@ msgstr "引入所有代理节点。" msgid "Info" msgstr "信息" -#: htdocs/luci-static/resources/view/fchomo/node.js:1466 +#: htdocs/luci-static/resources/view/fchomo/node.js:1496 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:279 msgid "Inline" msgstr "内嵌" @@ -1562,14 +1565,14 @@ msgstr "密钥对" #: htdocs/luci-static/resources/view/fchomo/client.js:1719 #: htdocs/luci-static/resources/view/fchomo/client.js:1775 #: htdocs/luci-static/resources/view/fchomo/node.js:229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1454 -#: htdocs/luci-static/resources/view/fchomo/node.js:1739 +#: htdocs/luci-static/resources/view/fchomo/node.js:1484 +#: htdocs/luci-static/resources/view/fchomo/node.js:1769 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 msgid "Label" msgstr "标签" #: htdocs/luci-static/resources/view/fchomo/client.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/node.js:1714 msgid "Lazy" msgstr "懒惰状态" @@ -1620,7 +1623,7 @@ msgstr "监听端口" msgid "Load balance" msgstr "负载均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:1464 +#: htdocs/luci-static/resources/view/fchomo/node.js:1494 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:277 msgid "Local" msgstr "本地" @@ -1654,9 +1657,11 @@ msgstr "日志等级" #: htdocs/luci-static/resources/fchomo/listeners.js:324 #: htdocs/luci-static/resources/fchomo/listeners.js:325 #: htdocs/luci-static/resources/fchomo/listeners.js:326 +#: htdocs/luci-static/resources/fchomo/listeners.js:331 #: htdocs/luci-static/resources/view/fchomo/node.js:409 #: htdocs/luci-static/resources/view/fchomo/node.js:410 #: htdocs/luci-static/resources/view/fchomo/node.js:411 +#: htdocs/luci-static/resources/view/fchomo/node.js:416 msgid "Low-entropy data stream" msgstr "低熵数据流" @@ -1706,7 +1711,7 @@ msgstr "匹配响应通过 ipcidr
" msgid "Match rule set." msgstr "匹配规则集。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1210 +#: htdocs/luci-static/resources/view/fchomo/node.js:1224 msgid "Max Early Data" msgstr "前置数据最大值" @@ -1733,12 +1738,12 @@ msgstr "限制打开流的数量" msgid "Max upload speed" msgstr "最大上传速度" -#: htdocs/luci-static/resources/view/fchomo/node.js:1247 -#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1277 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "Maximum connections" msgstr "最大连接数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1291 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -1758,7 +1763,7 @@ msgid "" "rate." msgstr "最大填充率必须大于等于最小填充率。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1290 msgid "Maximum streams" msgstr "最大流数量" @@ -1783,7 +1788,7 @@ msgstr "Mihomo 服务端" msgid "Min of idle sessions to keep" msgstr "要保留的最少闲置会话数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1284 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在打开新连接之前,连接中的最小多路复用流数量。" @@ -1793,8 +1798,8 @@ msgstr "在打开新连接之前,连接中的最小多路复用流数量。" msgid "Minimum padding rate" msgstr "最小填充率" -#: htdocs/luci-static/resources/view/fchomo/node.js:1253 -#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1283 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "Minimum streams" msgstr "最小流数量" @@ -1811,7 +1816,7 @@ msgstr "混合 系统 TCP 栈和 gVisor UDP 栈。" msgid "Mixed port" msgstr "混合端口" -#: htdocs/luci-static/resources/view/fchomo/node.js:1233 +#: htdocs/luci-static/resources/view/fchomo/node.js:1263 msgid "Multiplex" msgstr "多路复用" @@ -1833,7 +1838,7 @@ msgstr "NOT" msgid "Name of the Proxy group as outbound." msgstr "出站代理组的名称。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1539 +#: htdocs/luci-static/resources/view/fchomo/node.js:1569 msgid "Name of the Proxy group to download provider." msgstr "用于下载供应商订阅的代理组名称。" @@ -1865,8 +1870,12 @@ msgstr "无需认证的 IP 范围" msgid "No add'l params" msgstr "无附加参数" +#: htdocs/luci-static/resources/view/fchomo/node.js:1252 +msgid "No gRPC header" +msgstr "无 gRPC header" + #: htdocs/luci-static/resources/view/fchomo/client.js:1115 -#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1715 msgid "No testing is performed when this provider node is not in use." msgstr "当此供应商的节点未使用时,不执行任何测试。" @@ -1885,17 +1894,17 @@ msgid "Node" msgstr "节点" #: htdocs/luci-static/resources/view/fchomo/client.js:1160 -#: htdocs/luci-static/resources/view/fchomo/node.js:1705 +#: htdocs/luci-static/resources/view/fchomo/node.js:1735 msgid "Node exclude filter" msgstr "排除节点" #: htdocs/luci-static/resources/view/fchomo/client.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1712 +#: htdocs/luci-static/resources/view/fchomo/node.js:1742 msgid "Node exclude type" msgstr "排除节点类型" #: htdocs/luci-static/resources/view/fchomo/client.js:1155 -#: htdocs/luci-static/resources/view/fchomo/node.js:1699 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "Node filter" msgstr "过滤节点" @@ -1973,7 +1982,7 @@ msgid "Override destination" msgstr "覆盖目标地址" #: htdocs/luci-static/resources/view/fchomo/client.js:1010 -#: htdocs/luci-static/resources/view/fchomo/node.js:1450 +#: htdocs/luci-static/resources/view/fchomo/node.js:1480 msgid "Override fields" msgstr "覆盖字段" @@ -2001,11 +2010,11 @@ msgstr "覆盖用于 HTTPS 记录查询的域名。" msgid "Overview" msgstr "概览" -#: htdocs/luci-static/resources/view/fchomo/node.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1181 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "PUT" msgstr "" @@ -2013,6 +2022,10 @@ msgstr "" msgid "Packet encoding" msgstr "数据包编码" +#: htdocs/luci-static/resources/view/fchomo/node.js:1257 +msgid "Padding bytes" +msgstr "填充字节" + #: htdocs/luci-static/resources/fchomo/listeners.js:458 msgid "Padding scheme" msgstr "填充方案" @@ -2032,7 +2045,7 @@ msgid "Password" msgstr "密码" #: htdocs/luci-static/resources/fchomo/listeners.js:587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1514 +#: htdocs/luci-static/resources/view/fchomo/node.js:1544 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:364 msgid "Payload" msgstr "Payload" @@ -2074,8 +2087,8 @@ msgid "" "standards." msgstr "链接格式标准请参考 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 -#: htdocs/luci-static/resources/view/fchomo/node.js:1513 +#: htdocs/luci-static/resources/view/fchomo/node.js:1517 +#: htdocs/luci-static/resources/view/fchomo/node.js:1543 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:337 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:363 msgid "" @@ -2090,7 +2103,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1445 #: htdocs/luci-static/resources/view/fchomo/client.js:1697 #: htdocs/luci-static/resources/view/fchomo/client.js:1749 -#: htdocs/luci-static/resources/view/fchomo/node.js:1357 +#: htdocs/luci-static/resources/view/fchomo/node.js:1387 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 msgid "Please type %s fields of mihomo config.
" msgstr "请输入 mihomo 配置的 %s 字段。
" @@ -2157,10 +2170,10 @@ msgstr "防止某些情况下的 ICMP 环回问题。Ping 不会显示实际延 #: htdocs/luci-static/resources/view/fchomo/global.js:736 #: htdocs/luci-static/resources/view/fchomo/global.js:753 -#: htdocs/luci-static/resources/view/fchomo/node.js:1321 -#: htdocs/luci-static/resources/view/fchomo/node.js:1327 -#: htdocs/luci-static/resources/view/fchomo/node.js:1634 -#: htdocs/luci-static/resources/view/fchomo/node.js:1641 +#: htdocs/luci-static/resources/view/fchomo/node.js:1351 +#: htdocs/luci-static/resources/view/fchomo/node.js:1357 +#: htdocs/luci-static/resources/view/fchomo/node.js:1664 +#: htdocs/luci-static/resources/view/fchomo/node.js:1671 msgid "Priority: Proxy Node > Global." msgstr "优先级: 代理节点 > 全局。" @@ -2182,7 +2195,7 @@ msgid "Process matching mode" msgstr "进程匹配模式" #: htdocs/luci-static/resources/view/fchomo/global.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "Protocol" msgstr "协议" @@ -2197,13 +2210,13 @@ msgid "" msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。" #: htdocs/luci-static/resources/view/fchomo/client.js:1055 -#: htdocs/luci-static/resources/view/fchomo/node.js:1340 -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 -#: htdocs/luci-static/resources/view/fchomo/node.js:1750 +#: htdocs/luci-static/resources/view/fchomo/node.js:1370 +#: htdocs/luci-static/resources/view/fchomo/node.js:1379 +#: htdocs/luci-static/resources/view/fchomo/node.js:1780 msgid "Provider" msgstr "供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 msgid "Provider URL" msgstr "供应商订阅 URL" @@ -2226,19 +2239,19 @@ msgid "Proxy MAC-s" msgstr "代理 MAC 地址" #: htdocs/luci-static/resources/view/fchomo/node.js:208 -#: htdocs/luci-static/resources/view/fchomo/node.js:1749 +#: htdocs/luci-static/resources/view/fchomo/node.js:1779 msgid "Proxy Node" msgstr "代理节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:1725 -#: htdocs/luci-static/resources/view/fchomo/node.js:1734 +#: htdocs/luci-static/resources/view/fchomo/node.js:1755 +#: htdocs/luci-static/resources/view/fchomo/node.js:1764 msgid "Proxy chain" msgstr "代理链" #: htdocs/luci-static/resources/fchomo/listeners.js:530 #: htdocs/luci-static/resources/view/fchomo/client.js:783 #: htdocs/luci-static/resources/view/fchomo/client.js:1543 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1568 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:388 msgid "Proxy group" msgstr "代理组" @@ -2345,7 +2358,7 @@ msgstr "重载" msgid "Reload All" msgstr "重载所有" -#: htdocs/luci-static/resources/view/fchomo/node.js:1465 +#: htdocs/luci-static/resources/view/fchomo/node.js:1495 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:278 msgid "Remote" msgstr "远程" @@ -2360,18 +2373,18 @@ msgid "Remove" msgstr "移除" #: htdocs/luci-static/resources/fchomo.js:1354 -#: htdocs/luci-static/resources/view/fchomo/node.js:1441 -#: htdocs/luci-static/resources/view/fchomo/node.js:1443 +#: htdocs/luci-static/resources/view/fchomo/node.js:1471 +#: htdocs/luci-static/resources/view/fchomo/node.js:1473 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:251 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:253 msgid "Remove idles" msgstr "移除闲置" -#: htdocs/luci-static/resources/view/fchomo/node.js:1567 +#: htdocs/luci-static/resources/view/fchomo/node.js:1597 msgid "Replace name" msgstr "名称替换" -#: htdocs/luci-static/resources/view/fchomo/node.js:1568 +#: htdocs/luci-static/resources/view/fchomo/node.js:1598 msgid "Replace node name." msgstr "替换节点名称" @@ -2380,8 +2393,8 @@ msgid "Request" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:996 -#: htdocs/luci-static/resources/view/fchomo/node.js:1174 -#: htdocs/luci-static/resources/view/fchomo/node.js:1181 +#: htdocs/luci-static/resources/view/fchomo/node.js:1188 +#: htdocs/luci-static/resources/view/fchomo/node.js:1195 msgid "Request path" msgstr "请求路径" @@ -2446,8 +2459,8 @@ msgstr "路由 DSCP" msgid "Routing GFW" msgstr "路由 GFW 流量" -#: htdocs/luci-static/resources/view/fchomo/node.js:1326 -#: htdocs/luci-static/resources/view/fchomo/node.js:1640 +#: htdocs/luci-static/resources/view/fchomo/node.js:1356 +#: htdocs/luci-static/resources/view/fchomo/node.js:1670 msgid "Routing mark" msgstr "路由标记" @@ -2585,7 +2598,8 @@ msgstr "服务端" msgid "Server address" msgstr "服务器地址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 msgid "Server hostname" msgstr "服务器主机名称" @@ -2617,7 +2631,7 @@ msgstr "Shadowsocks 加密" msgid "Shadowsocks password" msgstr "Shadowsocks 密码" -#: htdocs/luci-static/resources/view/fchomo/node.js:1281 +#: htdocs/luci-static/resources/view/fchomo/node.js:1311 msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中显示连接以便于打断连接。" @@ -2629,14 +2643,14 @@ msgstr "静音" msgid "Simple round-robin all nodes" msgstr "简单轮替所有节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:1526 +#: htdocs/luci-static/resources/view/fchomo/node.js:1556 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:376 msgid "Size limit" msgstr "大小限制" #: htdocs/luci-static/resources/view/fchomo/client.js:1576 #: htdocs/luci-static/resources/view/fchomo/node.js:1037 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1648 msgid "Skip cert verify" msgstr "跳过证书验证" @@ -2764,7 +2778,7 @@ msgstr "TCP" msgid "TCP concurrency" msgstr "TCP 并发" -#: htdocs/luci-static/resources/view/fchomo/node.js:1274 +#: htdocs/luci-static/resources/view/fchomo/node.js:1304 msgid "TCP only" msgstr "仅 TCP" @@ -2790,8 +2804,8 @@ msgstr "TCP-Keep-Alive 间隔" msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1305 -#: htdocs/luci-static/resources/view/fchomo/node.js:1585 +#: htdocs/luci-static/resources/view/fchomo/node.js:1335 +#: htdocs/luci-static/resources/view/fchomo/node.js:1615 msgid "TFO" msgstr "TCP 快速打开 (TFO)" @@ -2903,7 +2917,7 @@ msgstr "此 ECH 参数需要添加到域名的 HTTPS 记录中。" #: htdocs/luci-static/resources/view/fchomo/client.js:1579 #: htdocs/luci-static/resources/view/fchomo/node.js:1040 -#: htdocs/luci-static/resources/view/fchomo/node.js:1621 +#: htdocs/luci-static/resources/view/fchomo/node.js:1651 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" @@ -2947,11 +2961,11 @@ msgstr "Tproxy 端口" msgid "Traffic pattern" msgstr "流量模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1807 msgid "Transit proxy group" msgstr "中转代理组" -#: htdocs/luci-static/resources/view/fchomo/node.js:1783 +#: htdocs/luci-static/resources/view/fchomo/node.js:1813 msgid "Transit proxy node" msgstr "中转代理节点" @@ -3013,8 +3027,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:842 #: htdocs/luci-static/resources/view/fchomo/client.js:1028 #: htdocs/luci-static/resources/view/fchomo/node.js:238 -#: htdocs/luci-static/resources/view/fchomo/node.js:1463 -#: htdocs/luci-static/resources/view/fchomo/node.js:1748 +#: htdocs/luci-static/resources/view/fchomo/node.js:1493 +#: htdocs/luci-static/resources/view/fchomo/node.js:1778 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:276 msgid "Type" msgstr "类型" @@ -3030,7 +3044,7 @@ msgstr "类型" #: htdocs/luci-static/resources/view/fchomo/client.js:588 #: htdocs/luci-static/resources/view/fchomo/client.js:678 #: htdocs/luci-static/resources/view/fchomo/node.js:865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 +#: htdocs/luci-static/resources/view/fchomo/node.js:1625 msgid "UDP" msgstr "UDP" @@ -3099,7 +3113,7 @@ msgid "Unknown error: %s" msgstr "未知错误:%s" #: htdocs/luci-static/resources/view/fchomo/node.js:870 -#: htdocs/luci-static/resources/view/fchomo/node.js:1600 +#: htdocs/luci-static/resources/view/fchomo/node.js:1630 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -3107,16 +3121,16 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失败。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1532 +#: htdocs/luci-static/resources/view/fchomo/node.js:1562 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:382 msgid "Update interval" msgstr "更新间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:1292 +#: htdocs/luci-static/resources/view/fchomo/node.js:1322 msgid "Upload bandwidth" msgstr "上传带宽" -#: htdocs/luci-static/resources/view/fchomo/node.js:1293 +#: htdocs/luci-static/resources/view/fchomo/node.js:1323 msgid "Upload bandwidth in Mbps." msgstr "上传带宽(单位:Mbps)。" @@ -3181,11 +3195,11 @@ msgstr "用户名" msgid "Users filter mode" msgstr "使用者过滤模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1222 +#: htdocs/luci-static/resources/view/fchomo/node.js:1236 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1227 +#: htdocs/luci-static/resources/view/fchomo/node.js:1241 msgid "V2ray HTTPUpgrade fast open" msgstr "" @@ -3199,8 +3213,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1469 -#: htdocs/luci-static/resources/view/fchomo/node.js:1754 +#: htdocs/luci-static/resources/view/fchomo/node.js:1499 +#: htdocs/luci-static/resources/view/fchomo/node.js:1784 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:319 msgid "Value" msgstr "可视化值" @@ -3240,7 +3254,8 @@ msgstr "警告" #: htdocs/luci-static/resources/view/fchomo/node.js:489 #: htdocs/luci-static/resources/view/fchomo/node.js:1132 #: htdocs/luci-static/resources/view/fchomo/node.js:1143 -#: htdocs/luci-static/resources/view/fchomo/node.js:1148 +#: htdocs/luci-static/resources/view/fchomo/node.js:1150 +#: htdocs/luci-static/resources/view/fchomo/node.js:1156 msgid "WebSocket" msgstr "" @@ -3268,6 +3283,15 @@ msgstr "WireGuard 预共享密钥。" msgid "WireGuard requires base64-encoded private keys." msgstr "WireGuard 要求 base64 编码的私钥。" +#: htdocs/luci-static/resources/view/fchomo/node.js:1133 +#: htdocs/luci-static/resources/view/fchomo/node.js:1151 +msgid "XHTTP" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1246 +msgid "XHTTP mode" +msgstr "XHTTP 模式" + #: htdocs/luci-static/resources/fchomo/listeners.js:609 msgid "XOR mode" msgstr "XOR 模式" @@ -3341,7 +3365,7 @@ msgstr "decryption" msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "dnsmasq 自行选择上游服务器。 (可能影响 CDN 准确性)" -#: htdocs/luci-static/resources/view/fchomo/node.js:1612 +#: htdocs/luci-static/resources/view/fchomo/node.js:1642 msgid "down" msgstr "Hysteria 下载速率" @@ -3361,20 +3385,21 @@ msgstr "false = 带宽优化下行 true = 纯 Sudoku 下行。" #: htdocs/luci-static/resources/fchomo/listeners.js:984 #: htdocs/luci-static/resources/view/fchomo/node.js:1131 #: htdocs/luci-static/resources/view/fchomo/node.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1149 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1198 +#: htdocs/luci-static/resources/view/fchomo/node.js:1212 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1203 +#: htdocs/luci-static/resources/view/fchomo/node.js:1217 msgid "gRPC ping interval" msgstr "gRPC ping 间隔" #: htdocs/luci-static/resources/fchomo/listeners.js:1003 -#: htdocs/luci-static/resources/view/fchomo/node.js:1194 +#: htdocs/luci-static/resources/view/fchomo/node.js:1208 msgid "gRPC service name" msgstr "gRPC 服务名称" @@ -3382,7 +3407,7 @@ msgstr "gRPC 服务名称" msgid "gVisor" msgstr "gVisor" -#: htdocs/luci-static/resources/view/fchomo/node.js:1243 +#: htdocs/luci-static/resources/view/fchomo/node.js:1273 msgid "h2mux" msgstr "" @@ -3400,7 +3425,7 @@ msgstr "metacubexd" #: htdocs/luci-static/resources/view/fchomo/client.js:1480 #: htdocs/luci-static/resources/view/fchomo/client.js:1711 #: htdocs/luci-static/resources/view/fchomo/client.js:1767 -#: htdocs/luci-static/resources/view/fchomo/node.js:1435 +#: htdocs/luci-static/resources/view/fchomo/node.js:1465 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:239 msgid "mihomo config" msgstr "mihomo 配置" @@ -3409,8 +3434,8 @@ msgstr "mihomo 配置" msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1309 -#: htdocs/luci-static/resources/view/fchomo/node.js:1590 +#: htdocs/luci-static/resources/view/fchomo/node.js:1339 +#: htdocs/luci-static/resources/view/fchomo/node.js:1620 msgid "mpTCP" msgstr "多路径 TCP (mpTCP)" @@ -3466,7 +3491,7 @@ msgstr "仅当 %s 为 %s 时适用。" msgid "only applies when %s is not %s." msgstr "仅当 %s 不为 %s 时适用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1570 +#: htdocs/luci-static/resources/view/fchomo/node.js:1600 msgid "override.proxy-name" msgstr "" @@ -3474,6 +3499,10 @@ msgstr "" msgid "packet addr (v2ray-core v5+)" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1248 +msgid "packet-up" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:391 #: htdocs/luci-static/resources/view/fchomo/node.js:458 msgid "poll" @@ -3506,7 +3535,7 @@ msgstr "规则集" msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1241 +#: htdocs/luci-static/resources/view/fchomo/node.js:1271 msgid "smux" msgstr "" @@ -3519,6 +3548,10 @@ msgstr "" msgid "src" msgstr "src" +#: htdocs/luci-static/resources/view/fchomo/node.js:1247 +msgid "stream-one" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:491 msgid "stream/poll/auto" msgstr "" @@ -3543,7 +3576,7 @@ msgstr "独立标识" msgid "unique value" msgstr "独立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1606 +#: htdocs/luci-static/resources/view/fchomo/node.js:1636 msgid "up" msgstr "Hysteria 上传速率" @@ -3619,7 +3652,7 @@ msgstr "" msgid "yacd-meta" msgstr "yacd-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:1242 +#: htdocs/luci-static/resources/view/fchomo/node.js:1272 msgid "yamux" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hant/fchomo.po b/luci-app-fchomo/po/zh_Hant/fchomo.po index 719a10ce..9bfcb2f5 100644 --- a/luci-app-fchomo/po/zh_Hant/fchomo.po +++ b/luci-app-fchomo/po/zh_Hant/fchomo.po @@ -46,10 +46,10 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1056 #: htdocs/luci-static/resources/view/fchomo/client.js:1057 #: htdocs/luci-static/resources/view/fchomo/client.js:1278 -#: htdocs/luci-static/resources/view/fchomo/node.js:1758 -#: htdocs/luci-static/resources/view/fchomo/node.js:1764 -#: htdocs/luci-static/resources/view/fchomo/node.js:1778 -#: htdocs/luci-static/resources/view/fchomo/node.js:1784 +#: htdocs/luci-static/resources/view/fchomo/node.js:1788 +#: htdocs/luci-static/resources/view/fchomo/node.js:1794 +#: htdocs/luci-static/resources/view/fchomo/node.js:1808 +#: htdocs/luci-static/resources/view/fchomo/node.js:1814 msgid "-- Please choose --" msgstr "-- 請選擇 --" @@ -182,11 +182,11 @@ msgstr "新增 節點" msgid "Add a inbound" msgstr "新增 入站" -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1379 msgid "Add a provider" msgstr "新增 供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1734 +#: htdocs/luci-static/resources/view/fchomo/node.js:1764 msgid "Add a proxy chain" msgstr "新增 代理鏈" @@ -210,11 +210,11 @@ msgstr "新增 伺服器" msgid "Add a sub rule" msgstr "新增 子規則" -#: htdocs/luci-static/resources/view/fchomo/node.js:1559 +#: htdocs/luci-static/resources/view/fchomo/node.js:1589 msgid "Add prefix" msgstr "添加前綴" -#: htdocs/luci-static/resources/view/fchomo/node.js:1563 +#: htdocs/luci-static/resources/view/fchomo/node.js:1593 msgid "Add suffix" msgstr "添加後綴" @@ -343,13 +343,13 @@ msgid "Binary mrs" msgstr "二進位 mrs" #: htdocs/luci-static/resources/view/fchomo/global.js:734 -#: htdocs/luci-static/resources/view/fchomo/node.js:1319 -#: htdocs/luci-static/resources/view/fchomo/node.js:1632 +#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1662 msgid "Bind interface" msgstr "綁定介面" -#: htdocs/luci-static/resources/view/fchomo/node.js:1320 -#: htdocs/luci-static/resources/view/fchomo/node.js:1633 +#: htdocs/luci-static/resources/view/fchomo/node.js:1350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1663 msgid "Bind outbound interface.
" msgstr "綁定出站介面。
" @@ -521,7 +521,7 @@ msgstr "常用連接埠(繞過 P2P 流量)" msgid "Complete" msgstr "完成" -#: htdocs/luci-static/resources/view/fchomo/node.js:1579 +#: htdocs/luci-static/resources/view/fchomo/node.js:1609 msgid "Configuration Items" msgstr "配置項" @@ -539,14 +539,14 @@ msgid "Content copied to clipboard!" msgstr "內容已複製到剪貼簿!" #: htdocs/luci-static/resources/view/fchomo/client.js:670 -#: htdocs/luci-static/resources/view/fchomo/node.js:1489 -#: htdocs/luci-static/resources/view/fchomo/node.js:1515 +#: htdocs/luci-static/resources/view/fchomo/node.js:1519 +#: htdocs/luci-static/resources/view/fchomo/node.js:1545 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:339 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:365 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "內容將不會被驗證,請確保輸入正確。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1488 +#: htdocs/luci-static/resources/view/fchomo/node.js:1518 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:338 msgid "Contents" msgstr "內容" @@ -571,7 +571,7 @@ msgstr "Cron 表達式" msgid "Custom Direct List" msgstr "自訂直連清單" -#: htdocs/luci-static/resources/view/fchomo/node.js:1550 +#: htdocs/luci-static/resources/view/fchomo/node.js:1580 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:400 msgid "Custom HTTP header." msgstr "自訂 HTTP header。" @@ -639,11 +639,11 @@ msgstr "預設 DNS 伺服器" msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "允許通過 WireGuard 轉發的目的位址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1757 +#: htdocs/luci-static/resources/view/fchomo/node.js:1787 msgid "Destination provider" msgstr "落地供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1763 +#: htdocs/luci-static/resources/view/fchomo/node.js:1793 msgid "Destination proxy node" msgstr "落地代理節點" @@ -651,8 +651,8 @@ msgstr "落地代理節點" msgid "Dial fields" msgstr "撥號欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:1770 -#: htdocs/luci-static/resources/view/fchomo/node.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 msgid "Different chain head/tail" msgstr "不同的鏈頭/鏈尾" @@ -724,15 +724,15 @@ msgstr "不要在 ClientHello 中傳送伺服器名稱。" #: htdocs/luci-static/resources/view/fchomo/client.js:1577 #: htdocs/luci-static/resources/view/fchomo/node.js:1038 -#: htdocs/luci-static/resources/view/fchomo/node.js:1619 +#: htdocs/luci-static/resources/view/fchomo/node.js:1649 msgid "Donot verifying server certificate." msgstr "不驗證伺服器憑證。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1298 +#: htdocs/luci-static/resources/view/fchomo/node.js:1328 msgid "Download bandwidth" msgstr "下載頻寬" -#: htdocs/luci-static/resources/view/fchomo/node.js:1299 +#: htdocs/luci-static/resources/view/fchomo/node.js:1329 msgid "Download bandwidth in Mbps." msgstr "下載頻寬(單位:Mbps)。" @@ -773,11 +773,11 @@ msgstr "" msgid "ETag support" msgstr "ETag 支援" -#: htdocs/luci-static/resources/view/fchomo/node.js:1211 +#: htdocs/luci-static/resources/view/fchomo/node.js:1225 msgid "Early Data first packet length limit." msgstr "前置數據長度閾值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1217 +#: htdocs/luci-static/resources/view/fchomo/node.js:1231 msgid "Early Data header name" msgstr "前置數據標頭" @@ -793,7 +793,7 @@ msgstr "編輯節點" msgid "Edit ruleset" msgstr "編輯規則集" -#: htdocs/luci-static/resources/view/fchomo/node.js:1486 +#: htdocs/luci-static/resources/view/fchomo/node.js:1516 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:336 msgid "Editer" msgstr "編輯器" @@ -813,9 +813,9 @@ msgstr "消除加密頭特徵" #: htdocs/luci-static/resources/view/fchomo/global.js:401 #: htdocs/luci-static/resources/view/fchomo/global.js:680 #: htdocs/luci-static/resources/view/fchomo/node.js:234 -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 -#: htdocs/luci-static/resources/view/fchomo/node.js:1655 -#: htdocs/luci-static/resources/view/fchomo/node.js:1744 +#: htdocs/luci-static/resources/view/fchomo/node.js:1489 +#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1774 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:264 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" @@ -846,15 +846,15 @@ msgstr "" msgid "Enable ECH" msgstr "啟用 ECH" -#: htdocs/luci-static/resources/view/fchomo/node.js:1286 +#: htdocs/luci-static/resources/view/fchomo/node.js:1316 msgid "Enable TCP Brutal" msgstr "啟用 TCP Brutal" -#: htdocs/luci-static/resources/view/fchomo/node.js:1287 +#: htdocs/luci-static/resources/view/fchomo/node.js:1317 msgid "Enable TCP Brutal congestion control algorithm" msgstr "啟用 TCP Brutal 擁塞控制演算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1275 +#: htdocs/luci-static/resources/view/fchomo/node.js:1305 msgid "Enable multiplexing only for TCP." msgstr "僅為 TCP 啟用多路復用。" @@ -863,16 +863,16 @@ msgstr "僅為 TCP 啟用多路復用。" msgid "Enable obfuscate for downlink" msgstr "啟用下行鏈路混淆" -#: htdocs/luci-static/resources/view/fchomo/node.js:1269 +#: htdocs/luci-static/resources/view/fchomo/node.js:1299 msgid "Enable padding" msgstr "啟用填充" -#: htdocs/luci-static/resources/view/fchomo/node.js:1280 +#: htdocs/luci-static/resources/view/fchomo/node.js:1310 msgid "Enable statistic" msgstr "啟用統計" #: htdocs/luci-static/resources/view/fchomo/node.js:871 -#: htdocs/luci-static/resources/view/fchomo/node.js:1601 +#: htdocs/luci-static/resources/view/fchomo/node.js:1631 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "啟用 SUoT 協議,需要服務端支援。與多路復用衝突。" @@ -911,7 +911,7 @@ msgid "" "if empty." msgstr "超過此限制將會觸發強制健康檢查。留空則使用 5。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1713 +#: htdocs/luci-static/resources/view/fchomo/node.js:1743 msgid "Exclude matched node types." msgstr "排除匹配的節點類型。" @@ -924,7 +924,7 @@ msgstr "" "rel=\"noreferrer noopener\">此處。" #: htdocs/luci-static/resources/view/fchomo/client.js:1161 -#: htdocs/luci-static/resources/view/fchomo/node.js:1706 +#: htdocs/luci-static/resources/view/fchomo/node.js:1736 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配關鍵字或表達式的節點。" @@ -933,12 +933,12 @@ msgid "Expand/Collapse result" msgstr "展開/收起 結果" #: htdocs/luci-static/resources/view/fchomo/client.js:1121 -#: htdocs/luci-static/resources/view/fchomo/node.js:1691 +#: htdocs/luci-static/resources/view/fchomo/node.js:1721 msgid "Expected HTTP code. 204 will be used if empty." msgstr "預期的 HTTP code。留空則使用 204。" #: htdocs/luci-static/resources/view/fchomo/client.js:1123 -#: htdocs/luci-static/resources/view/fchomo/node.js:1693 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 msgid "Expected status" msgstr "預期狀態" @@ -981,8 +981,8 @@ msgstr "預期狀態" #: htdocs/luci-static/resources/view/fchomo/node.js:491 #: htdocs/luci-static/resources/view/fchomo/node.js:942 #: htdocs/luci-static/resources/view/fchomo/node.js:1030 -#: htdocs/luci-static/resources/view/fchomo/node.js:1770 -#: htdocs/luci-static/resources/view/fchomo/node.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1820 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:291 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:305 msgid "Expecting: %s" @@ -992,6 +992,7 @@ msgstr "請輸入:%s" #: htdocs/luci-static/resources/fchomo/listeners.js:984 #: htdocs/luci-static/resources/view/fchomo/node.js:1140 #: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 msgid "Expecting: only support %s." msgstr "請輸入:僅支援 %s." @@ -1041,7 +1042,7 @@ msgid "Fallback filter" msgstr "後備過濾器" #: htdocs/luci-static/resources/view/fchomo/client.js:1156 -#: htdocs/luci-static/resources/view/fchomo/node.js:1700 +#: htdocs/luci-static/resources/view/fchomo/node.js:1730 msgid "Filter nodes that meet keywords or regexps." msgstr "過濾匹配關鍵字或表達式的節點。" @@ -1084,8 +1085,8 @@ msgstr "" "noopener\">%s." #: htdocs/luci-static/resources/view/fchomo/client.js:1122 -#: htdocs/luci-static/resources/view/fchomo/node.js:1569 -#: htdocs/luci-static/resources/view/fchomo/node.js:1692 +#: htdocs/luci-static/resources/view/fchomo/node.js:1599 +#: htdocs/luci-static/resources/view/fchomo/node.js:1722 msgid "" "For format see %s." @@ -1113,7 +1114,7 @@ msgstr "格式" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1166 +#: htdocs/luci-static/resources/view/fchomo/node.js:1180 msgid "GET" msgstr "" @@ -1128,7 +1129,7 @@ msgstr "常規" #: htdocs/luci-static/resources/fchomo/listeners.js:119 #: htdocs/luci-static/resources/view/fchomo/client.js:1009 #: htdocs/luci-static/resources/view/fchomo/node.js:222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1449 +#: htdocs/luci-static/resources/view/fchomo/node.js:1479 msgid "General fields" msgstr "常規欄位" @@ -1214,12 +1215,13 @@ msgstr "組" #: htdocs/luci-static/resources/view/fchomo/node.js:816 #: htdocs/luci-static/resources/view/fchomo/node.js:1129 #: htdocs/luci-static/resources/view/fchomo/node.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1147 msgid "HTTP" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1188 -#: htdocs/luci-static/resources/view/fchomo/node.js:1549 +#: htdocs/luci-static/resources/view/fchomo/node.js:1202 +#: htdocs/luci-static/resources/view/fchomo/node.js:1579 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:399 msgid "HTTP header" msgstr "HTTP header" @@ -1245,7 +1247,7 @@ msgstr "HTTP 偽裝多路復用" msgid "HTTP mask: %s" msgstr "HTTP 偽裝: %s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "HTTP request method" msgstr "HTTP 請求方法" @@ -1267,6 +1269,7 @@ msgstr "身份驗證失敗時的 HTTP3 伺服器回應。預設回傳 404 頁面 #: htdocs/luci-static/resources/fchomo/listeners.js:978 #: htdocs/luci-static/resources/view/fchomo/node.js:1130 #: htdocs/luci-static/resources/view/fchomo/node.js:1141 +#: htdocs/luci-static/resources/view/fchomo/node.js:1148 msgid "HTTPUpgrade" msgstr "" @@ -1291,27 +1294,27 @@ msgid "Health check" msgstr "健康檢查" #: htdocs/luci-static/resources/view/fchomo/client.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:1660 +#: htdocs/luci-static/resources/view/fchomo/node.js:1690 msgid "Health check URL" msgstr "健康檢查 URL" #: htdocs/luci-static/resources/view/fchomo/client.js:1120 -#: htdocs/luci-static/resources/view/fchomo/node.js:1690 +#: htdocs/luci-static/resources/view/fchomo/node.js:1720 msgid "Health check expected status" msgstr "健康檢查预期状态" #: htdocs/luci-static/resources/view/fchomo/client.js:1100 -#: htdocs/luci-static/resources/view/fchomo/node.js:1670 +#: htdocs/luci-static/resources/view/fchomo/node.js:1700 msgid "Health check interval" msgstr "健康檢查間隔" #: htdocs/luci-static/resources/view/fchomo/client.js:1107 -#: htdocs/luci-static/resources/view/fchomo/node.js:1677 +#: htdocs/luci-static/resources/view/fchomo/node.js:1707 msgid "Health check timeout" msgstr "健康檢查超时" #: htdocs/luci-static/resources/view/fchomo/client.js:1011 -#: htdocs/luci-static/resources/view/fchomo/node.js:1451 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "Health fields" msgstr "健康欄位" @@ -1362,8 +1365,8 @@ msgstr "" msgid "IP override" msgstr "IP 覆寫" -#: htdocs/luci-static/resources/view/fchomo/node.js:1331 -#: htdocs/luci-static/resources/view/fchomo/node.js:1646 +#: htdocs/luci-static/resources/view/fchomo/node.js:1361 +#: htdocs/luci-static/resources/view/fchomo/node.js:1676 msgid "IP version" msgstr "IP 版本" @@ -1424,8 +1427,8 @@ msgstr "導入" #: htdocs/luci-static/resources/view/fchomo/client.js:1713 #: htdocs/luci-static/resources/view/fchomo/client.js:1748 #: htdocs/luci-static/resources/view/fchomo/client.js:1769 -#: htdocs/luci-static/resources/view/fchomo/node.js:1356 -#: htdocs/luci-static/resources/view/fchomo/node.js:1437 +#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1467 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:153 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:241 msgid "Import mihomo config" @@ -1441,12 +1444,12 @@ msgstr "導入規則集連結" #: htdocs/luci-static/resources/fchomo/listeners.js:181 #: htdocs/luci-static/resources/view/fchomo/node.js:286 #: htdocs/luci-static/resources/view/fchomo/node.js:292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1607 -#: htdocs/luci-static/resources/view/fchomo/node.js:1613 +#: htdocs/luci-static/resources/view/fchomo/node.js:1637 +#: htdocs/luci-static/resources/view/fchomo/node.js:1643 msgid "In Mbps." msgstr "單位為 Mbps。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1527 +#: htdocs/luci-static/resources/view/fchomo/node.js:1557 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:377 msgid "In bytes. %s will be used if empty." msgstr "單位為位元組。留空則使用 %s。" @@ -1458,7 +1461,7 @@ msgstr "單位為毫秒。" #: htdocs/luci-static/resources/view/fchomo/client.js:1108 #: htdocs/luci-static/resources/view/fchomo/client.js:1137 -#: htdocs/luci-static/resources/view/fchomo/node.js:1678 +#: htdocs/luci-static/resources/view/fchomo/node.js:1708 msgid "In millisecond. %s will be used if empty." msgstr "單位為毫秒。留空則使用 %s。" @@ -1467,7 +1470,7 @@ msgstr "單位為毫秒。留空則使用 %s。" #: htdocs/luci-static/resources/fchomo/listeners.js:428 #: htdocs/luci-static/resources/view/fchomo/node.js:604 #: htdocs/luci-static/resources/view/fchomo/node.js:611 -#: htdocs/luci-static/resources/view/fchomo/node.js:1204 +#: htdocs/luci-static/resources/view/fchomo/node.js:1218 msgid "In seconds." msgstr "單位為秒。" @@ -1476,8 +1479,8 @@ msgstr "單位為秒。" #: htdocs/luci-static/resources/view/fchomo/global.js:430 #: htdocs/luci-static/resources/view/fchomo/global.js:515 #: htdocs/luci-static/resources/view/fchomo/node.js:280 -#: htdocs/luci-static/resources/view/fchomo/node.js:1533 -#: htdocs/luci-static/resources/view/fchomo/node.js:1671 +#: htdocs/luci-static/resources/view/fchomo/node.js:1563 +#: htdocs/luci-static/resources/view/fchomo/node.js:1701 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:383 msgid "In seconds. %s will be used if empty." msgstr "單位為秒。留空則使用 %s。" @@ -1525,7 +1528,7 @@ msgstr "引入所有代理節點。" msgid "Info" msgstr "訊息" -#: htdocs/luci-static/resources/view/fchomo/node.js:1466 +#: htdocs/luci-static/resources/view/fchomo/node.js:1496 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:279 msgid "Inline" msgstr "內嵌" @@ -1562,14 +1565,14 @@ msgstr "密鑰對" #: htdocs/luci-static/resources/view/fchomo/client.js:1719 #: htdocs/luci-static/resources/view/fchomo/client.js:1775 #: htdocs/luci-static/resources/view/fchomo/node.js:229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1454 -#: htdocs/luci-static/resources/view/fchomo/node.js:1739 +#: htdocs/luci-static/resources/view/fchomo/node.js:1484 +#: htdocs/luci-static/resources/view/fchomo/node.js:1769 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 msgid "Label" msgstr "標籤" #: htdocs/luci-static/resources/view/fchomo/client.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/node.js:1714 msgid "Lazy" msgstr "懶惰狀態" @@ -1620,7 +1623,7 @@ msgstr "監聽埠" msgid "Load balance" msgstr "負載均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:1464 +#: htdocs/luci-static/resources/view/fchomo/node.js:1494 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:277 msgid "Local" msgstr "本地" @@ -1654,9 +1657,11 @@ msgstr "日誌等級" #: htdocs/luci-static/resources/fchomo/listeners.js:324 #: htdocs/luci-static/resources/fchomo/listeners.js:325 #: htdocs/luci-static/resources/fchomo/listeners.js:326 +#: htdocs/luci-static/resources/fchomo/listeners.js:331 #: htdocs/luci-static/resources/view/fchomo/node.js:409 #: htdocs/luci-static/resources/view/fchomo/node.js:410 #: htdocs/luci-static/resources/view/fchomo/node.js:411 +#: htdocs/luci-static/resources/view/fchomo/node.js:416 msgid "Low-entropy data stream" msgstr "低熵資料流" @@ -1706,7 +1711,7 @@ msgstr "匹配回應通過 ipcidr
" msgid "Match rule set." msgstr "匹配規則集。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1210 +#: htdocs/luci-static/resources/view/fchomo/node.js:1224 msgid "Max Early Data" msgstr "前置數據最大值" @@ -1733,12 +1738,12 @@ msgstr "限制打開流的數量" msgid "Max upload speed" msgstr "最大上傳速度" -#: htdocs/luci-static/resources/view/fchomo/node.js:1247 -#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1277 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "Maximum connections" msgstr "最大連線數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1291 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -1758,7 +1763,7 @@ msgid "" "rate." msgstr "最大填充率必須大於等于最小填充率。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1290 msgid "Maximum streams" msgstr "最大流數量" @@ -1783,7 +1788,7 @@ msgstr "Mihomo 服務端" msgid "Min of idle sessions to keep" msgstr "要保留的最少閒置會話數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1284 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在開啟新連線之前,連線中的最小多路復用流數量。" @@ -1793,8 +1798,8 @@ msgstr "在開啟新連線之前,連線中的最小多路復用流數量。" msgid "Minimum padding rate" msgstr "最小填充率" -#: htdocs/luci-static/resources/view/fchomo/node.js:1253 -#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1283 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "Minimum streams" msgstr "最小流數量" @@ -1811,7 +1816,7 @@ msgstr "混合 系統 TCP 堆栈和 gVisor UDP 堆栈 msgid "Mixed port" msgstr "混合連接埠" -#: htdocs/luci-static/resources/view/fchomo/node.js:1233 +#: htdocs/luci-static/resources/view/fchomo/node.js:1263 msgid "Multiplex" msgstr "多路復用" @@ -1833,7 +1838,7 @@ msgstr "NOT" msgid "Name of the Proxy group as outbound." msgstr "出站代理組的名稱。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1539 +#: htdocs/luci-static/resources/view/fchomo/node.js:1569 msgid "Name of the Proxy group to download provider." msgstr "用於下載供應商訂閱的代理組名稱。" @@ -1865,8 +1870,12 @@ msgstr "無需認證的 IP 範圍" msgid "No add'l params" msgstr "無附加參數" +#: htdocs/luci-static/resources/view/fchomo/node.js:1252 +msgid "No gRPC header" +msgstr "無 gRPC header" + #: htdocs/luci-static/resources/view/fchomo/client.js:1115 -#: htdocs/luci-static/resources/view/fchomo/node.js:1685 +#: htdocs/luci-static/resources/view/fchomo/node.js:1715 msgid "No testing is performed when this provider node is not in use." msgstr "當此供應商的節點未使用時,不執行任何測試。" @@ -1885,17 +1894,17 @@ msgid "Node" msgstr "節點" #: htdocs/luci-static/resources/view/fchomo/client.js:1160 -#: htdocs/luci-static/resources/view/fchomo/node.js:1705 +#: htdocs/luci-static/resources/view/fchomo/node.js:1735 msgid "Node exclude filter" msgstr "排除節點" #: htdocs/luci-static/resources/view/fchomo/client.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1712 +#: htdocs/luci-static/resources/view/fchomo/node.js:1742 msgid "Node exclude type" msgstr "排除節點類型" #: htdocs/luci-static/resources/view/fchomo/client.js:1155 -#: htdocs/luci-static/resources/view/fchomo/node.js:1699 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "Node filter" msgstr "過濾節點" @@ -1973,7 +1982,7 @@ msgid "Override destination" msgstr "覆蓋目標位址" #: htdocs/luci-static/resources/view/fchomo/client.js:1010 -#: htdocs/luci-static/resources/view/fchomo/node.js:1450 +#: htdocs/luci-static/resources/view/fchomo/node.js:1480 msgid "Override fields" msgstr "覆蓋欄位" @@ -2001,11 +2010,11 @@ msgstr "覆蓋用於 HTTPS 記錄查詢的網域。" msgid "Overview" msgstr "概覽" -#: htdocs/luci-static/resources/view/fchomo/node.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1181 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "PUT" msgstr "" @@ -2013,6 +2022,10 @@ msgstr "" msgid "Packet encoding" msgstr "數據包編碼" +#: htdocs/luci-static/resources/view/fchomo/node.js:1257 +msgid "Padding bytes" +msgstr "填充位元組" + #: htdocs/luci-static/resources/fchomo/listeners.js:458 msgid "Padding scheme" msgstr "填充方案" @@ -2032,7 +2045,7 @@ msgid "Password" msgstr "密碼" #: htdocs/luci-static/resources/fchomo/listeners.js:587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1514 +#: htdocs/luci-static/resources/view/fchomo/node.js:1544 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:364 msgid "Payload" msgstr "Payload" @@ -2074,8 +2087,8 @@ msgid "" "standards." msgstr "連結格式標準請參考 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 -#: htdocs/luci-static/resources/view/fchomo/node.js:1513 +#: htdocs/luci-static/resources/view/fchomo/node.js:1517 +#: htdocs/luci-static/resources/view/fchomo/node.js:1543 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:337 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:363 msgid "" @@ -2090,7 +2103,7 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:1445 #: htdocs/luci-static/resources/view/fchomo/client.js:1697 #: htdocs/luci-static/resources/view/fchomo/client.js:1749 -#: htdocs/luci-static/resources/view/fchomo/node.js:1357 +#: htdocs/luci-static/resources/view/fchomo/node.js:1387 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 msgid "Please type %s fields of mihomo config.
" msgstr "請輸入 mihomo 配置的 %s 欄位。
" @@ -2157,10 +2170,10 @@ msgstr "防止某些情況下的 ICMP 環回問題。 Ping 不會顯示實際延 #: htdocs/luci-static/resources/view/fchomo/global.js:736 #: htdocs/luci-static/resources/view/fchomo/global.js:753 -#: htdocs/luci-static/resources/view/fchomo/node.js:1321 -#: htdocs/luci-static/resources/view/fchomo/node.js:1327 -#: htdocs/luci-static/resources/view/fchomo/node.js:1634 -#: htdocs/luci-static/resources/view/fchomo/node.js:1641 +#: htdocs/luci-static/resources/view/fchomo/node.js:1351 +#: htdocs/luci-static/resources/view/fchomo/node.js:1357 +#: htdocs/luci-static/resources/view/fchomo/node.js:1664 +#: htdocs/luci-static/resources/view/fchomo/node.js:1671 msgid "Priority: Proxy Node > Global." msgstr "優先權: 代理節點 > 全域。" @@ -2182,7 +2195,7 @@ msgid "Process matching mode" msgstr "進程匹配模式" #: htdocs/luci-static/resources/view/fchomo/global.js:684 -#: htdocs/luci-static/resources/view/fchomo/node.js:1239 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "Protocol" msgstr "協議" @@ -2197,13 +2210,13 @@ msgid "" msgstr "協議參數。 如啟用會隨機浪費流量(在 v2ray 中預設為啟用且無法停用)。" #: htdocs/luci-static/resources/view/fchomo/client.js:1055 -#: htdocs/luci-static/resources/view/fchomo/node.js:1340 -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 -#: htdocs/luci-static/resources/view/fchomo/node.js:1750 +#: htdocs/luci-static/resources/view/fchomo/node.js:1370 +#: htdocs/luci-static/resources/view/fchomo/node.js:1379 +#: htdocs/luci-static/resources/view/fchomo/node.js:1780 msgid "Provider" msgstr "供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1520 +#: htdocs/luci-static/resources/view/fchomo/node.js:1550 msgid "Provider URL" msgstr "供應商訂閱 URL" @@ -2226,19 +2239,19 @@ msgid "Proxy MAC-s" msgstr "代理 MAC 位址" #: htdocs/luci-static/resources/view/fchomo/node.js:208 -#: htdocs/luci-static/resources/view/fchomo/node.js:1749 +#: htdocs/luci-static/resources/view/fchomo/node.js:1779 msgid "Proxy Node" msgstr "代理節點" -#: htdocs/luci-static/resources/view/fchomo/node.js:1725 -#: htdocs/luci-static/resources/view/fchomo/node.js:1734 +#: htdocs/luci-static/resources/view/fchomo/node.js:1755 +#: htdocs/luci-static/resources/view/fchomo/node.js:1764 msgid "Proxy chain" msgstr "代理鏈" #: htdocs/luci-static/resources/fchomo/listeners.js:530 #: htdocs/luci-static/resources/view/fchomo/client.js:783 #: htdocs/luci-static/resources/view/fchomo/client.js:1543 -#: htdocs/luci-static/resources/view/fchomo/node.js:1538 +#: htdocs/luci-static/resources/view/fchomo/node.js:1568 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:388 msgid "Proxy group" msgstr "代理組" @@ -2345,7 +2358,7 @@ msgstr "重載" msgid "Reload All" msgstr "重載所有" -#: htdocs/luci-static/resources/view/fchomo/node.js:1465 +#: htdocs/luci-static/resources/view/fchomo/node.js:1495 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:278 msgid "Remote" msgstr "遠端" @@ -2360,18 +2373,18 @@ msgid "Remove" msgstr "移除" #: htdocs/luci-static/resources/fchomo.js:1354 -#: htdocs/luci-static/resources/view/fchomo/node.js:1441 -#: htdocs/luci-static/resources/view/fchomo/node.js:1443 +#: htdocs/luci-static/resources/view/fchomo/node.js:1471 +#: htdocs/luci-static/resources/view/fchomo/node.js:1473 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:251 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:253 msgid "Remove idles" msgstr "移除閒置" -#: htdocs/luci-static/resources/view/fchomo/node.js:1567 +#: htdocs/luci-static/resources/view/fchomo/node.js:1597 msgid "Replace name" msgstr "名稱替換" -#: htdocs/luci-static/resources/view/fchomo/node.js:1568 +#: htdocs/luci-static/resources/view/fchomo/node.js:1598 msgid "Replace node name." msgstr "替換節點名稱" @@ -2380,8 +2393,8 @@ msgid "Request" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:996 -#: htdocs/luci-static/resources/view/fchomo/node.js:1174 -#: htdocs/luci-static/resources/view/fchomo/node.js:1181 +#: htdocs/luci-static/resources/view/fchomo/node.js:1188 +#: htdocs/luci-static/resources/view/fchomo/node.js:1195 msgid "Request path" msgstr "請求路徑" @@ -2446,8 +2459,8 @@ msgstr "路由 DSCP" msgid "Routing GFW" msgstr "路由 GFW 流量" -#: htdocs/luci-static/resources/view/fchomo/node.js:1326 -#: htdocs/luci-static/resources/view/fchomo/node.js:1640 +#: htdocs/luci-static/resources/view/fchomo/node.js:1356 +#: htdocs/luci-static/resources/view/fchomo/node.js:1670 msgid "Routing mark" msgstr "路由標記" @@ -2585,7 +2598,8 @@ msgstr "服務端" msgid "Server address" msgstr "伺服器位址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 msgid "Server hostname" msgstr "伺服器主機名稱" @@ -2617,7 +2631,7 @@ msgstr "Shadowsocks 加密" msgid "Shadowsocks password" msgstr "Shadowsocks 密碼" -#: htdocs/luci-static/resources/view/fchomo/node.js:1281 +#: htdocs/luci-static/resources/view/fchomo/node.js:1311 msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中顯示連線以便於打斷連線。" @@ -2629,14 +2643,14 @@ msgstr "靜音" msgid "Simple round-robin all nodes" msgstr "簡單輪替所有節點" -#: htdocs/luci-static/resources/view/fchomo/node.js:1526 +#: htdocs/luci-static/resources/view/fchomo/node.js:1556 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:376 msgid "Size limit" msgstr "大小限制" #: htdocs/luci-static/resources/view/fchomo/client.js:1576 #: htdocs/luci-static/resources/view/fchomo/node.js:1037 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1648 msgid "Skip cert verify" msgstr "跳過憑證驗證" @@ -2764,7 +2778,7 @@ msgstr "TCP" msgid "TCP concurrency" msgstr "TCP 併發" -#: htdocs/luci-static/resources/view/fchomo/node.js:1274 +#: htdocs/luci-static/resources/view/fchomo/node.js:1304 msgid "TCP only" msgstr "僅 TCP" @@ -2790,8 +2804,8 @@ msgstr "TCP-Keep-Alive 間隔" msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1305 -#: htdocs/luci-static/resources/view/fchomo/node.js:1585 +#: htdocs/luci-static/resources/view/fchomo/node.js:1335 +#: htdocs/luci-static/resources/view/fchomo/node.js:1615 msgid "TFO" msgstr "TCP 快速開啟 (TFO)" @@ -2903,7 +2917,7 @@ msgstr "此 ECH 參數需要加入到網域的 HTTPS 記錄中。" #: htdocs/luci-static/resources/view/fchomo/client.js:1579 #: htdocs/luci-static/resources/view/fchomo/node.js:1040 -#: htdocs/luci-static/resources/view/fchomo/node.js:1621 +#: htdocs/luci-static/resources/view/fchomo/node.js:1651 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" @@ -2947,11 +2961,11 @@ msgstr "Tproxy 連接埠" msgid "Traffic pattern" msgstr "流量模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1807 msgid "Transit proxy group" msgstr "中轉代理組" -#: htdocs/luci-static/resources/view/fchomo/node.js:1783 +#: htdocs/luci-static/resources/view/fchomo/node.js:1813 msgid "Transit proxy node" msgstr "中轉代理節點" @@ -3013,8 +3027,8 @@ msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:842 #: htdocs/luci-static/resources/view/fchomo/client.js:1028 #: htdocs/luci-static/resources/view/fchomo/node.js:238 -#: htdocs/luci-static/resources/view/fchomo/node.js:1463 -#: htdocs/luci-static/resources/view/fchomo/node.js:1748 +#: htdocs/luci-static/resources/view/fchomo/node.js:1493 +#: htdocs/luci-static/resources/view/fchomo/node.js:1778 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:276 msgid "Type" msgstr "類型" @@ -3030,7 +3044,7 @@ msgstr "類型" #: htdocs/luci-static/resources/view/fchomo/client.js:588 #: htdocs/luci-static/resources/view/fchomo/client.js:678 #: htdocs/luci-static/resources/view/fchomo/node.js:865 -#: htdocs/luci-static/resources/view/fchomo/node.js:1595 +#: htdocs/luci-static/resources/view/fchomo/node.js:1625 msgid "UDP" msgstr "UDP" @@ -3099,7 +3113,7 @@ msgid "Unknown error: %s" msgstr "未知錯誤:%s" #: htdocs/luci-static/resources/view/fchomo/node.js:870 -#: htdocs/luci-static/resources/view/fchomo/node.js:1600 +#: htdocs/luci-static/resources/view/fchomo/node.js:1630 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -3107,16 +3121,16 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失敗。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1532 +#: htdocs/luci-static/resources/view/fchomo/node.js:1562 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:382 msgid "Update interval" msgstr "更新間隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:1292 +#: htdocs/luci-static/resources/view/fchomo/node.js:1322 msgid "Upload bandwidth" msgstr "上傳頻寬" -#: htdocs/luci-static/resources/view/fchomo/node.js:1293 +#: htdocs/luci-static/resources/view/fchomo/node.js:1323 msgid "Upload bandwidth in Mbps." msgstr "上傳頻寬(單位:Mbps)。" @@ -3181,11 +3195,11 @@ msgstr "使用者名稱" msgid "Users filter mode" msgstr "使用者過濾模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1222 +#: htdocs/luci-static/resources/view/fchomo/node.js:1236 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1227 +#: htdocs/luci-static/resources/view/fchomo/node.js:1241 msgid "V2ray HTTPUpgrade fast open" msgstr "" @@ -3199,8 +3213,8 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1469 -#: htdocs/luci-static/resources/view/fchomo/node.js:1754 +#: htdocs/luci-static/resources/view/fchomo/node.js:1499 +#: htdocs/luci-static/resources/view/fchomo/node.js:1784 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:319 msgid "Value" msgstr "可視化值" @@ -3240,7 +3254,8 @@ msgstr "警告" #: htdocs/luci-static/resources/view/fchomo/node.js:489 #: htdocs/luci-static/resources/view/fchomo/node.js:1132 #: htdocs/luci-static/resources/view/fchomo/node.js:1143 -#: htdocs/luci-static/resources/view/fchomo/node.js:1148 +#: htdocs/luci-static/resources/view/fchomo/node.js:1150 +#: htdocs/luci-static/resources/view/fchomo/node.js:1156 msgid "WebSocket" msgstr "" @@ -3268,6 +3283,15 @@ msgstr "WireGuard 預先共用金鑰。" msgid "WireGuard requires base64-encoded private keys." msgstr "WireGuard 要求 base64 編碼的私鑰。" +#: htdocs/luci-static/resources/view/fchomo/node.js:1133 +#: htdocs/luci-static/resources/view/fchomo/node.js:1151 +msgid "XHTTP" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1246 +msgid "XHTTP mode" +msgstr "XHTTP 模式" + #: htdocs/luci-static/resources/fchomo/listeners.js:609 msgid "XOR mode" msgstr "XOR 模式" @@ -3341,7 +3365,7 @@ msgstr "decryption" msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "dnsmasq 自行選擇上游服務器。 (可能影響 CDN 準確性)" -#: htdocs/luci-static/resources/view/fchomo/node.js:1612 +#: htdocs/luci-static/resources/view/fchomo/node.js:1642 msgid "down" msgstr "Hysteria 下載速率" @@ -3361,20 +3385,21 @@ msgstr "false = 頻寬最佳化下行 true = 純 Sudoku 下行。" #: htdocs/luci-static/resources/fchomo/listeners.js:984 #: htdocs/luci-static/resources/view/fchomo/node.js:1131 #: htdocs/luci-static/resources/view/fchomo/node.js:1142 -#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1149 +#: htdocs/luci-static/resources/view/fchomo/node.js:1155 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1198 +#: htdocs/luci-static/resources/view/fchomo/node.js:1212 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1203 +#: htdocs/luci-static/resources/view/fchomo/node.js:1217 msgid "gRPC ping interval" msgstr "gRPC ping 間隔" #: htdocs/luci-static/resources/fchomo/listeners.js:1003 -#: htdocs/luci-static/resources/view/fchomo/node.js:1194 +#: htdocs/luci-static/resources/view/fchomo/node.js:1208 msgid "gRPC service name" msgstr "gRPC 服務名稱" @@ -3382,7 +3407,7 @@ msgstr "gRPC 服務名稱" msgid "gVisor" msgstr "gVisor" -#: htdocs/luci-static/resources/view/fchomo/node.js:1243 +#: htdocs/luci-static/resources/view/fchomo/node.js:1273 msgid "h2mux" msgstr "" @@ -3400,7 +3425,7 @@ msgstr "metacubexd" #: htdocs/luci-static/resources/view/fchomo/client.js:1480 #: htdocs/luci-static/resources/view/fchomo/client.js:1711 #: htdocs/luci-static/resources/view/fchomo/client.js:1767 -#: htdocs/luci-static/resources/view/fchomo/node.js:1435 +#: htdocs/luci-static/resources/view/fchomo/node.js:1465 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:239 msgid "mihomo config" msgstr "mihomo 配置" @@ -3409,8 +3434,8 @@ msgstr "mihomo 配置" msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1309 -#: htdocs/luci-static/resources/view/fchomo/node.js:1590 +#: htdocs/luci-static/resources/view/fchomo/node.js:1339 +#: htdocs/luci-static/resources/view/fchomo/node.js:1620 msgid "mpTCP" msgstr "多路徑 TCP (mpTCP)" @@ -3466,7 +3491,7 @@ msgstr "僅當 %s 為 %s 時適用。" msgid "only applies when %s is not %s." msgstr "僅當 %s 不為 %s 時適用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1570 +#: htdocs/luci-static/resources/view/fchomo/node.js:1600 msgid "override.proxy-name" msgstr "" @@ -3474,6 +3499,10 @@ msgstr "" msgid "packet addr (v2ray-core v5+)" msgstr "" +#: htdocs/luci-static/resources/view/fchomo/node.js:1248 +msgid "packet-up" +msgstr "" + #: htdocs/luci-static/resources/fchomo/listeners.js:391 #: htdocs/luci-static/resources/view/fchomo/node.js:458 msgid "poll" @@ -3506,7 +3535,7 @@ msgstr "規則集" msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1241 +#: htdocs/luci-static/resources/view/fchomo/node.js:1271 msgid "smux" msgstr "" @@ -3519,6 +3548,10 @@ msgstr "" msgid "src" msgstr "src" +#: htdocs/luci-static/resources/view/fchomo/node.js:1247 +msgid "stream-one" +msgstr "" + #: htdocs/luci-static/resources/view/fchomo/node.js:491 msgid "stream/poll/auto" msgstr "" @@ -3543,7 +3576,7 @@ msgstr "獨立標識" msgid "unique value" msgstr "獨立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1606 +#: htdocs/luci-static/resources/view/fchomo/node.js:1636 msgid "up" msgstr "Hysteria 上傳速率" @@ -3619,7 +3652,7 @@ msgstr "" msgid "yacd-meta" msgstr "yacd-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:1242 +#: htdocs/luci-static/resources/view/fchomo/node.js:1272 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 633abd73..a2ae2ccb 100644 --- a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc +++ b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc @@ -586,7 +586,7 @@ uci.foreach(uciconf, ucinode, (cfg) => { encryption: cfg.vless_encryption === '1' ? cfg.vless_encryption_encryption : null, /* TrustTunnel */ - "health-check": strToBool(cfg.trusttunnel_health_check === '0' ? false : true), + "health-check": cfg.trusttunnel_health_check === '0' ? false : true, quic: strToBool(cfg.trusttunnel_quic), /* WireGuard */ @@ -658,6 +658,14 @@ uci.foreach(uciconf, ucinode, (cfg) => { "early-data-header-name": cfg.transport_ws_early_data_header, "v2ray-http-upgrade": strToBool(cfg.transport_ws_v2ray_http_upgrade), "v2ray-http-upgrade-fast-open": strToBool(cfg.transport_ws_v2ray_http_upgrade_fast_open) + } : null, + "xhttp-opts": cfg.transport_type === 'xhttp' ? { + host: cfg.transport_host, + path: cfg.transport_path || '/', + headers: cfg.transport_http_headers ? json(cfg.transport_http_headers) : null, + mode: cfg.transport_xhttp_mode, + "no-grpc-header": strToBool(cfg.transport_xhttp_no_grpc_header), + "x-padding-bytes": cfg.transport_xhttp_x_padding_bytes } : null } : {}), diff --git a/luci-app-oaf/Makefile b/luci-app-oaf/Makefile index 80b14288..4754883b 100644 --- a/luci-app-oaf/Makefile +++ b/luci-app-oaf/Makefile @@ -10,6 +10,6 @@ LUCI_PKGARCH:=all LUCI_DEPENDS:=+appfilter +kmod-oaf +luci-compat PKG_NAME:=luci-app-oaf PKG_VERSION:=6.1.4 -PKG_RELEASE:=1 +PKG_RELEASE:=2 include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-oaf/luasrc/view/admin_network/advance.htm b/luci-app-oaf/luasrc/view/admin_network/advance.htm index 29fcecdf..26618fc4 100644 --- a/luci-app-oaf/luasrc/view/admin_network/advance.htm +++ b/luci-app-oaf/luasrc/view/admin_network/advance.htm @@ -130,7 +130,7 @@ function validateLanIfname(lanIfname) { - const regex = /^[a-zA-Z0-9-]{2,8}$/; + const regex = /^[a-zA-Z0-9.-]{2,8}$/; return regex.test(lanIfname); } @@ -140,7 +140,7 @@ const disableHnatSwitch = document.getElementById('disableHnatSwitch').checked; if (!validateLanIfname(lanIfname)) { - alert('<%:Invalid LAN interface name. Please ensure it is no more than 8 characters long and contains only letters, numbers, and -.%>'); + alert('<%:Invalid LAN interface name. Please ensure it is no more than 8 characters long and contains only letters, numbers, dot, and -.%>'); return; } diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua index 57b6f2c8..bf3316b9 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua @@ -81,10 +81,111 @@ o = s:option(Value, "remarks", translate("Remarks")) o.default = arg[1] o.rmempty = false -o = s:option(ListValue, "interface", translate("Source Interface")) +o = s:option(Value, "interface", translate("Source Interface")) o:value("", translate("All")) -local wa = require "luci.tools.webadmin" -wa.cbi_add_networks(o) +-- Populate with actual kernel network devices instead of UCI interface names, +-- because the backend (nftables iifname / iptables -i) matches kernel device names. +do + local nfs = require "nixio.fs" + local _cursor = require("luci.model.uci").cursor() + local _sysnet = "/sys/class/net/" + + -- Map UCI interface names to their device names and vice versa + local _iface_to_dev = {} + local _dev_to_ifaces = {} + local _iface_proto = {} + _cursor:foreach("network", "interface", function(sec) + local name = sec[".name"] + if name ~= "loopback" then + _iface_proto[name] = sec.proto + if sec.device then + _iface_to_dev[name] = sec.device + _dev_to_ifaces[sec.device] = _dev_to_ifaces[sec.device] or {} + table.insert(_dev_to_ifaces[sec.device], name) + end + end + end) + + -- Classify device type using sysfs attributes + local function classify_sysfs(dev) + if nfs.stat(_sysnet .. dev .. "/bridge", "type") == "dir" then + return translate("Bridge") + elseif nfs.stat(_sysnet .. dev .. "/wireless", "type") == "dir" then + return translate("Wireless Adapter") + elseif dev:match("^tun") or dev:match("^tap") or dev:match("^wg") or dev:match("^ppp") then + return translate("Tunnel Interface") + else + return translate("Ethernet Adapter") + end + end + + -- Classify offline UCI interfaces by config hints + local function classify_uci(dev_name, proto) + if dev_name and dev_name:match("^br%-") then + return translate("Bridge") + elseif proto == "wireguard" or proto == "pppoe" or proto == "pptp" or proto == "l2tp" then + return translate("Tunnel Interface") + else + return translate("Interface") + end + end + + local _seen = {} + local _devices = {} + + -- Active kernel devices from /sys/class/net/. + -- Skip bridge member ports (/master) and DSA master devices (/dsa) because + -- nftables iifname matches the parent bridge for routed traffic, not + -- individual member ports. Also skip internal virtual devices. + local _iter = nfs.dir(_sysnet) + if _iter then + for dev in _iter do + if dev ~= "lo" + and not dev:match("^veth") + and not dev:match("^ifb") + and not dev:match("^gre") + and not dev:match("^sit") + and not dev:match("^ip6tnl") + and not dev:match("^erspan") + and not nfs.stat(_sysnet .. dev .. "/master", "type") + and not nfs.stat(_sysnet .. dev .. "/dsa", "type") + then + local dtype = classify_sysfs(dev) + local label = dtype .. ': "' .. dev .. '"' + if _dev_to_ifaces[dev] then + label = label .. " (" .. table.concat(_dev_to_ifaces[dev], ", ") .. ")" + end + _devices[#_devices + 1] = { name = dev, label = label, sort = dtype .. ":" .. dev } + _seen[dev] = true + end + end + end + + -- UCI interfaces whose device does not currently exist (down tunnels, VPNs, etc.). + -- Stored by UCI name since the kernel device is not available yet. + -- Dedup by device: if two interfaces share a device, only one is shown. + for iface, dev in pairs(_iface_to_dev) do + if not _seen[dev] then + local dtype = classify_uci(dev, _iface_proto[iface]) + local label = dtype .. ': "' .. iface .. '"' + -- Sort offline entries after active devices + _devices[#_devices + 1] = { name = iface, label = label, sort = "zzz:" .. iface } + _seen[dev] = true + end + end + + table.sort(_devices, function(a, b) return a.sort < b.sort end) + for _, d in ipairs(_devices) do + o:value(d.name, d.label) + end +end + +o.validate = function(self, value, section) + if value == "" or value:match("^[a-zA-Z0-9][a-zA-Z0-9%.%_%-]*$") then + return value + end + return nil, translate("Invalid interface name") +end local mac_t = {} sys.net.mac_hints(function(e, t) diff --git a/luci-app-passwall/luasrc/passwall/util_hysteria2.lua b/luci-app-passwall/luasrc/passwall/util_hysteria2.lua index f69c7164..9d2db50a 100644 --- a/luci-app-passwall/luasrc/passwall/util_hysteria2.lua +++ b/luci-app-passwall/luasrc/passwall/util_hysteria2.lua @@ -63,7 +63,7 @@ function gen_config(var) local config = { server = server, transport = { - type = node.protocol or "udp", + type = "udp", udp = { hopInterval = (function() local HopIntervalStr = tostring(node.hysteria2_hop_interval or "30s") diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index 43027dd8..720bf3e9 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -1249,6 +1249,21 @@ msgstr "IP 范围" msgid "Source Interface" msgstr "源接口" +msgid "Bridge" +msgstr "网桥" + +msgid "Wireless Adapter" +msgstr "无线适配器" + +msgid "Ethernet Adapter" +msgstr "以太网适配器" + +msgid "Tunnel Interface" +msgstr "隧道接口" + +msgid "Invalid interface name" +msgstr "无效的接口名称" + msgid "Use Interface With ACLs" msgstr "使用接口控制" diff --git a/luci-app-passwall/root/usr/share/passwall/iptables.sh b/luci-app-passwall/root/usr/share/passwall/iptables.sh index b17b6077..ed9d92e8 100755 --- a/luci-app-passwall/root/usr/share/passwall/iptables.sh +++ b/luci-app-passwall/root/usr/share/passwall/iptables.sh @@ -285,6 +285,10 @@ load_acl() { local gateway device network_get_gateway gateway "${interface}" network_get_device device "${interface}" + # network_get_device returns empty for non-UP interfaces (e.g. auto='0'). + # Try ubus directly, then check if the name is a kernel device. + [ -z "${device}" ] && device=$(ubus call "network.interface.${interface}" status 2>/dev/null | jsonfilter -e '@.device' 2>/dev/null) + [ -z "${device}" ] && [ -d "/sys/class/net/${interface}" ] && device="${interface}" [ -z "${device}" ] && device="${interface}" _ipt_source="-i ${device} " msg="源接口【${device}】," diff --git a/luci-app-passwall/root/usr/share/passwall/nftables.sh b/luci-app-passwall/root/usr/share/passwall/nftables.sh index 41128cbf..cc5cda51 100755 --- a/luci-app-passwall/root/usr/share/passwall/nftables.sh +++ b/luci-app-passwall/root/usr/share/passwall/nftables.sh @@ -326,6 +326,10 @@ load_acl() { local gateway device network_get_gateway gateway "${interface}" network_get_device device "${interface}" + # network_get_device returns empty for non-UP interfaces (e.g. auto='0'). + # Try ubus directly, then check if the name is a kernel device. + [ -z "${device}" ] && device=$(ubus call "network.interface.${interface}" status 2>/dev/null | jsonfilter -e '@.device' 2>/dev/null) + [ -z "${device}" ] && [ -d "/sys/class/net/${interface}" ] && device="${interface}" [ -z "${device}" ] && device="${interface}" _ipt_source="iifname ${device} " msg="源接口【${device}】," diff --git a/luci-app-passwall/root/usr/share/passwall/utils.sh b/luci-app-passwall/root/usr/share/passwall/utils.sh index 5ebb800c..7ed57021 100755 --- a/luci-app-passwall/root/usr/share/passwall/utils.sh +++ b/luci-app-passwall/root/usr/share/passwall/utils.sh @@ -395,6 +395,8 @@ add_ip2route() { local gateway device network_get_gateway gateway "$2" network_get_device device "$2" + [ -z "${device}" ] && device=$(ubus call "network.interface.$2" status 2>/dev/null | jsonfilter -e '@.device' 2>/dev/null) + [ -z "${device}" ] && [ -d "/sys/class/net/$2" ] && device="$2" [ -z "${device}" ] && device="$2" if [ -n "${gateway}" ]; then 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 c8707f05..6f7b1866 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 @@ -76,10 +76,111 @@ o = s:option(Value, "remarks", translate("Remarks")) o.default = arg[1] o.rmempty = false -o = s:option(ListValue, "interface", translate("Source Interface")) +o = s:option(Value, "interface", translate("Source Interface")) o:value("", translate("All")) -local wa = require "luci.tools.webadmin" -wa.cbi_add_networks(o) +-- Populate with actual kernel network devices instead of UCI interface names, +-- because the backend (nftables iifname / iptables -i) matches kernel device names. +do + local nfs = require "nixio.fs" + local _cursor = require("luci.model.uci").cursor() + local _sysnet = "/sys/class/net/" + + -- Map UCI interface names to their device names and vice versa + local _iface_to_dev = {} + local _dev_to_ifaces = {} + local _iface_proto = {} + _cursor:foreach("network", "interface", function(sec) + local name = sec[".name"] + if name ~= "loopback" then + _iface_proto[name] = sec.proto + if sec.device then + _iface_to_dev[name] = sec.device + _dev_to_ifaces[sec.device] = _dev_to_ifaces[sec.device] or {} + table.insert(_dev_to_ifaces[sec.device], name) + end + end + end) + + -- Classify device type using sysfs attributes + local function classify_sysfs(dev) + if nfs.stat(_sysnet .. dev .. "/bridge", "type") == "dir" then + return translate("Bridge") + elseif nfs.stat(_sysnet .. dev .. "/wireless", "type") == "dir" then + return translate("Wireless Adapter") + elseif dev:match("^tun") or dev:match("^tap") or dev:match("^wg") or dev:match("^ppp") then + return translate("Tunnel Interface") + else + return translate("Ethernet Adapter") + end + end + + -- Classify offline UCI interfaces by config hints + local function classify_uci(dev_name, proto) + if dev_name and dev_name:match("^br%-") then + return translate("Bridge") + elseif proto == "wireguard" or proto == "pppoe" or proto == "pptp" or proto == "l2tp" then + return translate("Tunnel Interface") + else + return translate("Interface") + end + end + + local _seen = {} + local _devices = {} + + -- Active kernel devices from /sys/class/net/. + -- Skip bridge member ports (/master) and DSA master devices (/dsa) because + -- nftables iifname matches the parent bridge for routed traffic, not + -- individual member ports. Also skip internal virtual devices. + local _iter = nfs.dir(_sysnet) + if _iter then + for dev in _iter do + if dev ~= "lo" + and not dev:match("^veth") + and not dev:match("^ifb") + and not dev:match("^gre") + and not dev:match("^sit") + and not dev:match("^ip6tnl") + and not dev:match("^erspan") + and not nfs.stat(_sysnet .. dev .. "/master", "type") + and not nfs.stat(_sysnet .. dev .. "/dsa", "type") + then + local dtype = classify_sysfs(dev) + local label = dtype .. ': "' .. dev .. '"' + if _dev_to_ifaces[dev] then + label = label .. " (" .. table.concat(_dev_to_ifaces[dev], ", ") .. ")" + end + _devices[#_devices + 1] = { name = dev, label = label, sort = dtype .. ":" .. dev } + _seen[dev] = true + end + end + end + + -- UCI interfaces whose device does not currently exist (down tunnels, VPNs, etc.). + -- Stored by UCI name since the kernel device is not available yet. + -- Dedup by device: if two interfaces share a device, only one is shown. + for iface, dev in pairs(_iface_to_dev) do + if not _seen[dev] then + local dtype = classify_uci(dev, _iface_proto[iface]) + local label = dtype .. ': "' .. iface .. '"' + -- Sort offline entries after active devices + _devices[#_devices + 1] = { name = iface, label = label, sort = "zzz:" .. iface } + _seen[dev] = true + end + end + + table.sort(_devices, function(a, b) return a.sort < b.sort end) + for _, d in ipairs(_devices) do + o:value(d.name, d.label) + end +end + +o.validate = function(self, value, section) + if value == "" or value:match("^[a-zA-Z0-9][a-zA-Z0-9%.%_%-]*$") then + return value + end + return nil, translate("Invalid interface name") +end local mac_t = {} sys.net.mac_hints(function(e, t) diff --git a/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua b/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua index 5796424f..8d0a6473 100644 --- a/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua +++ b/luci-app-passwall2/luasrc/passwall2/util_hysteria2.lua @@ -60,7 +60,7 @@ function gen_config(var) local config = { server = server, transport = { - type = node.protocol or "udp", + type = "udp", udp = { hopInterval = (function() local HopIntervalStr = tostring(node.hysteria2_hop_interval or "30s") diff --git a/luci-app-passwall2/po/fa/passwall2.po b/luci-app-passwall2/po/fa/passwall2.po index 5921f864..fe5a8f07 100644 --- a/luci-app-passwall2/po/fa/passwall2.po +++ b/luci-app-passwall2/po/fa/passwall2.po @@ -1101,6 +1101,21 @@ msgstr "محدوده IP" msgid "Source Interface" msgstr "رابط منبع" +msgid "Bridge" +msgstr "پل شبکه" + +msgid "Wireless Adapter" +msgstr "آداپتور بی‌سیم" + +msgid "Ethernet Adapter" +msgstr "آداپتور اترنت" + +msgid "Tunnel Interface" +msgstr "رابط تونل" + +msgid "Invalid interface name" +msgstr "نام رابط نامعتبر" + msgid "Use Interface With ACLs" msgstr "استفاده از رابط با ACLها" diff --git a/luci-app-passwall2/po/ru/passwall.po b/luci-app-passwall2/po/ru/passwall.po index c01572f7..bdf22529 100644 --- a/luci-app-passwall2/po/ru/passwall.po +++ b/luci-app-passwall2/po/ru/passwall.po @@ -1100,7 +1100,22 @@ msgid "IP range" msgstr "Диапазон IP" msgid "Source Interface" -msgstr "Исходящий интерфейс" +msgstr "Интерфейс источника" + +msgid "Bridge" +msgstr "Мост" + +msgid "Wireless Adapter" +msgstr "Беспроводной адаптер" + +msgid "Ethernet Adapter" +msgstr "Ethernet-адаптер" + +msgid "Tunnel Interface" +msgstr "Туннельный интерфейс" + +msgid "Invalid interface name" +msgstr "Недопустимое имя интерфейса" msgid "Use Interface With ACLs" msgstr "Применять правила к интерфейсу" diff --git a/luci-app-passwall2/po/zh-cn/passwall2.po b/luci-app-passwall2/po/zh-cn/passwall2.po index 94372fdd..fb8d2eda 100644 --- a/luci-app-passwall2/po/zh-cn/passwall2.po +++ b/luci-app-passwall2/po/zh-cn/passwall2.po @@ -1093,6 +1093,21 @@ msgstr "IP 范围" msgid "Source Interface" msgstr "源接口" +msgid "Bridge" +msgstr "网桥" + +msgid "Wireless Adapter" +msgstr "无线适配器" + +msgid "Ethernet Adapter" +msgstr "以太网适配器" + +msgid "Tunnel Interface" +msgstr "隧道接口" + +msgid "Invalid interface name" +msgstr "无效的接口名称" + msgid "Use Interface With ACLs" msgstr "使用接口控制" diff --git a/luci-app-passwall2/po/zh-tw/passwall2.po b/luci-app-passwall2/po/zh-tw/passwall2.po index f48c076e..317810fd 100644 --- a/luci-app-passwall2/po/zh-tw/passwall2.po +++ b/luci-app-passwall2/po/zh-tw/passwall2.po @@ -1093,6 +1093,21 @@ msgstr "IP 範圍" msgid "Source Interface" msgstr "源接口" +msgid "Bridge" +msgstr "網橋" + +msgid "Wireless Adapter" +msgstr "無線適配器" + +msgid "Ethernet Adapter" +msgstr "乙太網適配器" + +msgid "Tunnel Interface" +msgstr "隧道介面" + +msgid "Invalid interface name" +msgstr "無效的介面名稱" + msgid "Use Interface With ACLs" msgstr "使用接口控制" diff --git a/luci-app-passwall2/root/usr/share/passwall2/iptables.sh b/luci-app-passwall2/root/usr/share/passwall2/iptables.sh index 3975b844..4df18d80 100755 --- a/luci-app-passwall2/root/usr/share/passwall2/iptables.sh +++ b/luci-app-passwall2/root/usr/share/passwall2/iptables.sh @@ -300,6 +300,10 @@ load_acl() { local gateway device network_get_gateway gateway "${interface}" network_get_device device "${interface}" + # network_get_device returns empty for non-UP interfaces (e.g. auto='0'). + # Try ubus directly, then check if the name is a kernel device. + [ -z "${device}" ] && device=$(ubus call "network.interface.${interface}" status 2>/dev/null | jsonfilter -e '@.device' 2>/dev/null) + [ -z "${device}" ] && [ -d "/sys/class/net/${interface}" ] && device="${interface}" [ -z "${device}" ] && device="${interface}" _ipt_source="-i ${device} " msg=$(i18n "Source iface [%s]," "${device}") diff --git a/luci-app-passwall2/root/usr/share/passwall2/nftables.sh b/luci-app-passwall2/root/usr/share/passwall2/nftables.sh index 9989e2bb..5b048b04 100755 --- a/luci-app-passwall2/root/usr/share/passwall2/nftables.sh +++ b/luci-app-passwall2/root/usr/share/passwall2/nftables.sh @@ -338,6 +338,10 @@ load_acl() { local gateway device network_get_gateway gateway "${interface}" network_get_device device "${interface}" + # network_get_device returns empty for non-UP interfaces (e.g. auto='0'). + # Try ubus directly, then check if the name is a kernel device. + [ -z "${device}" ] && device=$(ubus call "network.interface.${interface}" status 2>/dev/null | jsonfilter -e '@.device' 2>/dev/null) + [ -z "${device}" ] && [ -d "/sys/class/net/${interface}" ] && device="${interface}" [ -z "${device}" ] && device="${interface}" _ipt_source="iifname ${device} " msg=$(i18n "Source iface [%s]," "${device}") diff --git a/luci-app-passwall2/root/usr/share/passwall2/utils.sh b/luci-app-passwall2/root/usr/share/passwall2/utils.sh index 091ac529..df37abf7 100755 --- a/luci-app-passwall2/root/usr/share/passwall2/utils.sh +++ b/luci-app-passwall2/root/usr/share/passwall2/utils.sh @@ -348,6 +348,8 @@ add_ip2route() { local gateway device network_get_gateway gateway "$2" network_get_device device "$2" + [ -z "${device}" ] && device=$(ubus call "network.interface.$2" status 2>/dev/null | jsonfilter -e '@.device' 2>/dev/null) + [ -z "${device}" ] && [ -d "/sys/class/net/$2" ] && device="$2" [ -z "${device}" ] && device="$2" if [ -n "${gateway}" ]; then diff --git a/luci-theme-alpha/Makefile b/luci-theme-alpha/Makefile index 5ccc03cc..bb934c47 100644 --- a/luci-theme-alpha/Makefile +++ b/luci-theme-alpha/Makefile @@ -10,8 +10,8 @@ THEME_NAME:=alpha THEME_TITLE:=Alpha PKG_NAME:=luci-theme-$(THEME_NAME) -PKG_VERSION:=3.9.7_beta -PKG_RELEASE:=4 +PKG_VERSION:=3.9.7_beta2 +PKG_RELEASE:=5 include $(INCLUDE_DIR)/package.mk diff --git a/luci-theme-alpha/js/menu-alpha.js b/luci-theme-alpha/js/menu-alpha.js index 1b8de894..4b7e6669 100644 --- a/luci-theme-alpha/js/menu-alpha.js +++ b/luci-theme-alpha/js/menu-alpha.js @@ -82,7 +82,8 @@ return baseclass.extend({ url + "/" + children[i].name, l ), - hasChildren = submenu.children.length; + hasChildren = submenu.children.length, + dataTitle = hasChildren ? children[i].title : _(children[i].title); ul.appendChild( E( "li", @@ -104,9 +105,8 @@ return baseclass.extend({ click: hasChildren ? ui.createHandlerFn(this, "handleMenuExpand") : null, - "data-title": hasChildren - ? children[i].title - : _(children[i].title), + "data-title": dataTitle, + "data-name": children[i].name, }, [_(children[i].title)] ), @@ -180,36 +180,31 @@ return baseclass.extend({ darkMask = document.querySelector(".darkMask"), mainRight = document.querySelector(".main-right"), mainLeft = document.querySelector(".main-left"), - open = mainLeft.style.transform === ""; // true if currently open - - // If it's a resize event, we simulate that the sidebar was "open" so the logic below closes it for mobile, and opens it for desktop + open = mainLeft.style.transform === ""; + if (ev.type == "resize") { - open = true; + open = true; } - - // Logics: 'open' true means we want to CLOSE it on mobile, but OPEN it on desktop. - // Actually, let's make it clearer: we toggle the state. + var willOpen = !open; if (ev.type == "resize") { - willOpen = width > 1152; + willOpen = width > 1152; } if (width <= 1152) { - // Mobile behavior - mainLeft.style.width = ""; // Reset width - mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)"; - mainLeft.style.visibility = willOpen ? "visible" : ""; - darkMask.style.visibility = willOpen ? "visible" : ""; - darkMask.style.opacity = willOpen ? 1 : ""; - mainRight.style.width = ""; + mainLeft.style.width = ""; + mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)"; + mainLeft.style.visibility = willOpen ? "visible" : ""; + darkMask.style.visibility = willOpen ? "visible" : ""; + darkMask.style.opacity = willOpen ? 1 : ""; + mainRight.style.width = ""; } else { - // Desktop behavior - mainLeft.style.width = ""; // Reset width - mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)"; - mainLeft.style.visibility = willOpen ? "visible" : "hidden"; - mainRight.style.width = willOpen ? "" : "100%"; - darkMask.style.visibility = ""; - darkMask.style.opacity = ""; + mainLeft.style.width = ""; + mainLeft.style.transform = willOpen ? "" : "translateX(-20rem)"; + mainLeft.style.visibility = willOpen ? "visible" : "hidden"; + mainRight.style.width = willOpen ? "" : "100%"; + darkMask.style.visibility = ""; + darkMask.style.opacity = ""; } if (ev && ev.preventDefault) ev.preventDefault(); if (ev && ev.stopPropagation) ev.stopPropagation(); diff --git a/luci-theme-alpha/luasrc/gaya/gaya.css b/luci-theme-alpha/luasrc/gaya/gaya.css index f0978943..ec0fd594 100755 --- a/luci-theme-alpha/luasrc/gaya/gaya.css +++ b/luci-theme-alpha/luasrc/gaya/gaya.css @@ -187,7 +187,7 @@ --main-menu-color: #202124; --submenu-bg-hover: #4d5ca5; --submenu-bg-hover-active: #09c; - --font-body: 'Inter-Regular'; + --font-body: 'Inter-Regular', 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Noto Sans CJK SC', sans-serif; } tt { @@ -372,8 +372,20 @@ height: 100%; margin: 0; padding: 0; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } +body.lang_zh-cn, +body.lang_zh_CN, +body.lang_zh-hans, +body.lang_zh_Hans, +body.lang_zh-tw, +body.lang_zh_TW { + font-family: 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Noto Sans CJK SC', sans-serif; +} + select { color: #555; border: thin solid #ccc; @@ -838,9 +850,13 @@ } .main>.main-left>.nav>li>[data-title="Log out"], - .main>.main-left>.nav>li>[data-title="Logout"] { +.main>.main-left>.nav>li>[data-title="Logout"], +.main>.main-left>.nav>li>[data-name="logout"] { display: flex; + align-items: center; + justify-content: flex-start; padding: 0.5rem 1rem; + padding-right: 3rem; } .main>.main-left>.nav>li a { @@ -850,7 +866,9 @@ .main>.main-left>.nav>li>[data-title="Log out"], .main>.main-left>.nav>li>[data-title="Logout"], - .main>.main-left>.nav>li>[data-title="iStore"] { +.main>.main-left>.nav>li>[data-title="iStore"], +.main>.main-left>.nav>li>[data-name="logout"], +.main>.main-left>.nav>li>[data-name="istore"] { font-size: 1rem; color: #fff; } @@ -866,6 +884,8 @@ .main>.main-left>.nav>.slide>.menu, .main>.main-left>.nav>li>[data-title="Logout"], .main>.main-left>.nav>li>[data-title="iStore"], +.main>.main-left>.nav>li>[data-name="logout"], +.main>.main-left>.nav>li>[data-name="istore"], .main>.main-left>.nav>li>[data-title="Dashboard"] { font-size: 1rem; font-weight: 500; @@ -891,7 +911,8 @@ .main>.main-left>.nav>.slide>.menu.active::before {} - .main>.main-left>.nav>.slide>[data-title="Status"]:before { +.main>.main-left>.nav>.slide>[data-title="Status"]:before, +.main>.main-left>.nav>.slide>[data-name="status"]:before { position: absolute; right: 14px; width: 25px; @@ -901,7 +922,8 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="System"]:before { +.main>.main-left>.nav>.slide>[data-title="System"]:before, +.main>.main-left>.nav>.slide>[data-name="system"]:before { position: absolute; right: 14px; width: 25px; @@ -911,7 +933,8 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="Services"]:before { +.main>.main-left>.nav>.slide>[data-title="Services"]:before, +.main>.main-left>.nav>.slide>[data-name="services"]:before { position: absolute; right: 14px; width: 25px; @@ -921,7 +944,8 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="NAS"]:before { +.main>.main-left>.nav>.slide>[data-title="NAS"]:before, +.main>.main-left>.nav>.slide>[data-name="nas"]:before { position: absolute; right: 14px; width: 25px; @@ -931,7 +955,8 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="Modem"]:before { +.main>.main-left>.nav>.slide>[data-title="Modem"]:before, +.main>.main-left>.nav>.slide>[data-name="modem"]:before { position: absolute; right: 14px; width: 25px; @@ -941,7 +966,8 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="Network"]:before { +.main>.main-left>.nav>.slide>[data-title="Network"]:before, +.main>.main-left>.nav>.slide>[data-name="network"]:before { position: absolute; right: 14px; width: 25px; @@ -951,7 +977,8 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="VPN"]:before { +.main>.main-left>.nav>.slide>[data-title="VPN"]:before, +.main>.main-left>.nav>.slide>[data-name="vpn"]:before { position: absolute; right: 14px; width: 25px; @@ -961,7 +988,8 @@ background-size: 25px; } - .main>.main-left>.nav>.slide>[data-title="Docker"]:before { +.main>.main-left>.nav>.slide>[data-title="Docker"]:before, +.main>.main-left>.nav>.slide>[data-name="docker"]:before { position: absolute; right: 14px; width: 25px; @@ -971,7 +999,8 @@ background-size: 25px; } - .main>.main-left>.nav>li>[data-title="iStore"]:before { +.main>.main-left>.nav>li>[data-title="iStore"]:before, +.main>.main-left>.nav>li>[data-name="istore"]:before { position: absolute; right: 14px; width: 25px; @@ -1057,12 +1086,15 @@ } .main>.main-left>.nav>li>[data-title="Logout"]::before, - .main>.main-left>.nav>li>[data-title="Log out"]::before { +.main>.main-left>.nav>li>[data-title="Log out"]::before, +.main>.main-left>.nav>li>[data-name="logout"]::before { position: absolute; + top: 50%; right: 14px; width: 25px; height: 25px; content: ""; + transform: translateY(-50%); background: url(./icon/logout.svg) no-repeat; background-size: 25px; } @@ -1089,7 +1121,9 @@ .main>.main-left>.nav>.slide>.slide-menu>li, .main>.main-left>.nav>li>[data-title="Logout"], .main>.main-left>.nav>li>[data-title="Log out"], - .main>.main-left>.nav>li>[data-title="iStore"] { +.main>.main-left>.nav>li>[data-title="iStore"], +.main>.main-left>.nav>li>[data-name="logout"], +.main>.main-left>.nav>li>[data-name="istore"] { position: relative; overflow: hidden; transform: translate3d(0, 0, 0); @@ -1099,7 +1133,9 @@ .main>.main-left>.nav>.slide>.slide-menu>li::after, .main>.main-left>.nav>li>[data-title="Logout"]::after, .main>.main-left>.nav>li>[data-title="Log out"]::after, - .main>.main-left>.nav>li>[data-title="iStore"]::after { +.main>.main-left>.nav>li>[data-title="iStore"]::after, +.main>.main-left>.nav>li>[data-name="logout"]::after, +.main>.main-left>.nav>li>[data-name="istore"]::after { position: absolute; top: 0; left: 0; @@ -1120,7 +1156,9 @@ .main>.main-left>.nav>.slide>.slide-menu>li:active::after, .main>.main-left>.nav>li>[data-title="Logout"]:active::after, .main>.main-left>.nav>li>[data-title="Log out"]:active::after, - .main>.main-left>.nav>li>[data-title="iStore"]:active::after { +.main>.main-left>.nav>li>[data-title="iStore"]:active::after, +.main>.main-left>.nav>li>[data-name="logout"]:active::after, +.main>.main-left>.nav>li>[data-name="istore"]:active::after { transition: 0s; transform: scale(0, 0); opacity: 0.2; @@ -1361,6 +1399,15 @@ margin-left: 0.6rem; } +.btn, +.cbi-button, +[data-page="admin-system-opkg"] div.btn { + display: inline-flex; + align-items: center; + justify-content: center; + line-height: 1.2; +} + .btn:hover, .btn:focus, .btn:active, @@ -2170,6 +2217,7 @@ .ifacebadge { display: inline-flex; + align-items: center; background: #ffffff33; padding: 0.5rem 0.8rem; border-radius: 10px; @@ -2178,14 +2226,14 @@ td>.ifacebadge, .td>.ifacebadge { font-size: 0.8rem; - background-color: #000000; + background-color: #222235b3; border-radius: 10px; } .ifacebadge>em, .ifacebadge>img { display: inline-block; - align-self: flex-start; + align-self: center; margin: 0 0.2rem; } @@ -2213,7 +2261,7 @@ align-items: center; flex: 1 1 auto; min-width: 220px; - background-color: #11111d; + background-color: #222235b3; margin: 0.5em 0.25em 0; padding: 0.5em; border-radius: 10px; @@ -2610,8 +2658,8 @@ } [data-page="admin-system-opkg"] div.btn { - display: inline; - padding: 0.3rem 0.6rem; + padding: 0.3rem 0.9rem; + min-height: 2.3rem; } [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), @@ -2624,6 +2672,25 @@ margin: 2rem 2rem 1rem; } +[data-page="admin-system-opkg"] #packages { + border-radius: 14px; + overflow: hidden; + background-color: rgba(16, 28, 45, 0.58); + -webkit-backdrop-filter: blur(8px); + backdrop-filter: blur(8px); +} + +[data-page="admin-system-opkg"] #packages>.tr>.td, +[data-page="admin-system-opkg"] #packages tbody tr>td { + background-color: rgba(34, 34, 53, 0.46); + border-top: thin solid rgba(255, 255, 255, 0.08); +} + +[data-page="admin-system-opkg"] #packages>.tr.table-titles>.th, +[data-page="admin-system-opkg"] #packages thead tr>th { + background-color: rgba(12, 22, 38, 0.82); +} + .td.version, .td.size { white-space: normal !important; @@ -3101,7 +3168,7 @@ } } - @media screen and (max-width: 2000000000px) { + @media screen and (max-width: 2000px) { header { height: 3.5rem; } @@ -3162,8 +3229,10 @@ .main>.main-left>.nav>li a, .main>.main-left>.nav>.slide>.menu, .main>.main-left>.nav>li>[data-title="Logout"], - .main>.main-left>.nav>li>[data-title="Logout"], - .main>.main-left>.nav>li>[data-title="iStore"] { + .main>.main-left>.nav>li>[data-title="Log out"], + .main>.main-left>.nav>li>[data-title="iStore"], + .main>.main-left>.nav>li>[data-name="logout"], + .main>.main-left>.nav>li>[data-name="istore"] { font-size: 1rem; color: #fff; } @@ -3447,7 +3516,9 @@ .main>.main-left>.nav>.slide>.menu, .main>.main-left>.nav>li>[data-title="Logout"], .main>.main-left>.nav>li>[data-title="Log out"], - .main>.main-left>.nav>li>[data-title="iStore"] { +.main>.main-left>.nav>li>[data-title="iStore"], +.main>.main-left>.nav>li>[data-name="logout"], +.main>.main-left>.nav>li>[data-name="istore"] { font-size: 1.1rem; } @@ -3596,7 +3667,7 @@ .main>.main-left>.nav>.slide>.slide-menu>li>a, .tr[data-title]::before, .tr.cbi-section-table-titles.named::before { - font-size: + font-size: 0.8rem; } .cbi-value-title, diff --git a/luci-theme-alpha/root/etc/config/alpha b/luci-theme-alpha/root/etc/config/alpha index c3cf6736..dec05b9f 100644 --- a/luci-theme-alpha/root/etc/config/alpha +++ b/luci-theme-alpha/root/etc/config/alpha @@ -50,4 +50,4 @@ config navbar option line '6' option newtab 'No' option icon '/www/luci-static/alpha/gaya/icon/navbar/network.png' - option address '/cgi-bin/luci/admin/network/network' + option address '/cgi-bin/luci/admin/network/network' \ No newline at end of file diff --git a/luci-theme-alpha/template/footer.htm b/luci-theme-alpha/template/footer.htm index 19ba1358..e764e526 100644 --- a/luci-theme-alpha/template/footer.htm +++ b/luci-theme-alpha/template/footer.htm @@ -24,7 +24,7 @@ end) -- Check navbar enable status local navbar_enabled=config.navbar=="1" -- Calculate number of enabled navbar links local num_links=0 uci:foreach("alpha", "navbar" , function(section) if section.enable=="Enable" then num_links=num_links + 1 end end) -- Calculate link width for - responsive design local link_width=string.format("calc(100%% / %d)", num_links) -- Retrieve + responsive design local link_width=string.format("calc(100%% / %d)", num_links > 0 and num_links or 1) -- Retrieve theme properties local background_color=config.color or '#2222359a' local blur_value=tonumber(config.blur) or 20 local link_blur=string.format("blur(%dpx)", blur_value) %> @@ -65,7 +65,7 @@ diff --git a/luci-theme-alpha/template/footer.ut b/luci-theme-alpha/template/footer.ut index efaa4da0..32a0a553 100644 --- a/luci-theme-alpha/template/footer.ut +++ b/luci-theme-alpha/template/footer.ut @@ -26,7 +26,7 @@ } }); - let link_width = `calc(100% / ${num_links})`; + let link_width = `calc(100% / ${num_links > 0 ? num_links : 1})`; let background_color = config.color || '#2222359a'; let blur_value = config.blur || 20; let link_blur = `blur(${blur_value}px)`; diff --git a/luci-theme-alpha/template/header.htm b/luci-theme-alpha/template/header.htm index 411457d0..e7437541 100644 --- a/luci-theme-alpha/template/header.htm +++ b/luci-theme-alpha/template/header.htm @@ -69,7 +69,7 @@
- Keluar + <%:Logout%>
diff --git a/luci-theme-alpha/template/header.ut b/luci-theme-alpha/template/header.ut index 56316e6e..1e53ece8 100644 --- a/luci-theme-alpha/template/header.ut +++ b/luci-theme-alpha/template/header.ut @@ -46,7 +46,7 @@
- Keluar + {{ _('Logout') }}