diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js
index 00d3230f..87b6ecfd 100644
--- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js
+++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js
@@ -769,6 +769,7 @@ function renderListeners(s, uciconfig, isClient) {
...hm.loadLabelValues(this.config, 'proxy_group')
], section_id);
}
+ o.depends('tls_reality', '1');
o.depends({plugin_type: /^(shadow-tls|restls|jls)$/});
o.depends({type: 'shadowquic'});
o.modalonly = true;
@@ -1289,6 +1290,12 @@ function renderListeners(s, uciconfig, isClient) {
o.depends('tls_reality', '1');
o.modalonly = true;
+ o = s.taboption('field_tls', form.DynamicList, 'tls_reality_max_time_difference', _('REALITY max time difference'),
+ _('In millisecond.'));
+ o.datatype = 'uinteger';
+ o.depends('tls_reality', '1');
+ o.modalonly = true;
+
// @VMess-TLSmirror fields
/* Transport fields */
diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot
index ea0c6553..0758c34a 100644
--- a/luci-app-fchomo/po/templates/fchomo.pot
+++ b/luci-app-fchomo/po/templates/fchomo.pot
@@ -33,9 +33,9 @@ msgstr ""
msgid "(Imported)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1156
-#: htdocs/luci-static/resources/fchomo/listeners.js:1164
+#: htdocs/luci-static/resources/fchomo/listeners.js:1165
#: htdocs/luci-static/resources/fchomo/listeners.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1182
#: htdocs/luci-static/resources/view/fchomo/global.js:564
#: htdocs/luci-static/resources/view/fchomo/global.js:570
#: htdocs/luci-static/resources/view/fchomo/node.js:1410
@@ -120,9 +120,9 @@ msgstr ""
msgid "0 or 1 only."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1134
-#: htdocs/luci-static/resources/fchomo/listeners.js:1149
-#: htdocs/luci-static/resources/fchomo/listeners.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1143
+#: htdocs/luci-static/resources/fchomo/listeners.js:1158
+#: htdocs/luci-static/resources/fchomo/listeners.js:1183
#: htdocs/luci-static/resources/view/fchomo/node.js:1417
#: htdocs/luci-static/resources/view/fchomo/node.js:1431
msgid "Save your configuration before uploading files!"
@@ -309,7 +309,7 @@ msgstr ""
msgid "Allow access to the local LAN via the exit node."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1057
+#: htdocs/luci-static/resources/fchomo/listeners.js:1066
msgid "Allow insecure connections"
msgstr ""
@@ -325,7 +325,7 @@ msgstr ""
msgid "Already in updating."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:409
+#: htdocs/luci-static/resources/fchomo/listeners.js:417
#: htdocs/luci-static/resources/view/fchomo/node.js:541
msgid "Alter ID"
msgstr ""
@@ -352,7 +352,7 @@ msgstr ""
msgid "As the TOP upstream of dnsmasq."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:457
+#: htdocs/luci-static/resources/fchomo/listeners.js:465
msgid "Auth timeout"
msgstr ""
@@ -364,8 +364,8 @@ msgstr ""
msgid "Authentication key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:361
-#: htdocs/luci-static/resources/fchomo/listeners.js:1343
+#: htdocs/luci-static/resources/fchomo/listeners.js:369
+#: htdocs/luci-static/resources/fchomo/listeners.js:1358
#: htdocs/luci-static/resources/view/fchomo/global.js:423
#: htdocs/luci-static/resources/view/fchomo/node.js:464
#: htdocs/luci-static/resources/view/fchomo/node.js:488
@@ -388,7 +388,7 @@ msgstr ""
msgid "Auto update resources."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:638
+#: htdocs/luci-static/resources/fchomo/listeners.js:646
#: htdocs/luci-static/resources/view/fchomo/node.js:1074
msgid "BBR profile"
msgstr ""
@@ -471,10 +471,10 @@ msgstr ""
msgid "Bypass DSCP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:359
-#: htdocs/luci-static/resources/fchomo/listeners.js:360
-#: htdocs/luci-static/resources/fchomo/listeners.js:361
-#: htdocs/luci-static/resources/fchomo/listeners.js:362
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
+#: htdocs/luci-static/resources/fchomo/listeners.js:368
+#: htdocs/luci-static/resources/fchomo/listeners.js:369
+#: htdocs/luci-static/resources/fchomo/listeners.js:370
#: htdocs/luci-static/resources/view/fchomo/node.js:462
#: htdocs/luci-static/resources/view/fchomo/node.js:463
#: htdocs/luci-static/resources/view/fchomo/node.js:464
@@ -507,7 +507,7 @@ msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1111
+#: htdocs/luci-static/resources/fchomo/listeners.js:1120
#: htdocs/luci-static/resources/view/fchomo/node.js:1410
msgid "Certificate path"
msgstr ""
@@ -566,8 +566,8 @@ msgid ""
"to download the latest initial package."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:853
-#: htdocs/luci-static/resources/fchomo/listeners.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
+#: htdocs/luci-static/resources/fchomo/listeners.js:1174
#: htdocs/luci-static/resources/view/fchomo/global.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:1239
#: htdocs/luci-static/resources/view/fchomo/node.js:1411
@@ -576,11 +576,11 @@ msgstr ""
msgid "Client"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1164
+#: htdocs/luci-static/resources/fchomo/listeners.js:1173
msgid "Client Auth Certificate path"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1156
+#: htdocs/luci-static/resources/fchomo/listeners.js:1165
msgid "Client Auth type"
msgstr ""
@@ -596,10 +596,6 @@ msgstr ""
msgid "Client metadata"
msgstr ""
-#: htdocs/luci-static/resources/view/fchomo/node.js:601
-msgid "The client metadata sent to the server."
-msgstr ""
-
#: htdocs/luci-static/resources/view/fchomo/global.js:176
msgid "Client status"
msgstr ""
@@ -622,7 +618,7 @@ msgstr ""
msgid "Complete"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:630
+#: htdocs/luci-static/resources/fchomo/listeners.js:638
#: htdocs/luci-static/resources/view/fchomo/node.js:1056
#: htdocs/luci-static/resources/view/fchomo/node.js:1065
msgid "Congestion controller"
@@ -636,7 +632,7 @@ msgstr ""
msgid "Connection reuse"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
#: htdocs/luci-static/resources/view/fchomo/node.js:781
msgid "Connection-level receive window size"
msgstr ""
@@ -761,7 +757,7 @@ msgstr ""
msgid "Default selected"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:547
+#: htdocs/luci-static/resources/fchomo/listeners.js:555
msgid "Default version, Support %s."
msgstr ""
@@ -806,7 +802,7 @@ msgstr ""
msgid "Direct MAC-s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:485
+#: htdocs/luci-static/resources/fchomo/listeners.js:493
#: htdocs/luci-static/resources/view/fchomo/global.js:424
#: htdocs/luci-static/resources/view/fchomo/node.js:715
#: htdocs/luci-static/resources/view/fchomo/node.js:849
@@ -861,12 +857,12 @@ msgstr ""
msgid "Donot verifying server certificate."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1395
+#: htdocs/luci-static/resources/fchomo/listeners.js:1410
#: htdocs/luci-static/resources/view/fchomo/node.js:1935
msgid "Download bandwidth"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1396
+#: htdocs/luci-static/resources/fchomo/listeners.js:1411
#: htdocs/luci-static/resources/view/fchomo/node.js:1936
msgid "Download bandwidth in Mbps."
msgstr ""
@@ -887,12 +883,12 @@ msgstr ""
msgid "ECH HTTPS record query servername"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1222
+#: htdocs/luci-static/resources/fchomo/listeners.js:1231
#: htdocs/luci-static/resources/view/fchomo/node.js:1444
msgid "ECH config"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1181
+#: htdocs/luci-static/resources/fchomo/listeners.js:1190
msgid "ECH key"
msgstr ""
@@ -981,12 +977,12 @@ msgstr ""
msgid "Enable ECH"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1383
+#: htdocs/luci-static/resources/fchomo/listeners.js:1398
#: htdocs/luci-static/resources/view/fchomo/node.js:1923
msgid "Enable TCP Brutal"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1384
+#: htdocs/luci-static/resources/fchomo/listeners.js:1399
#: htdocs/luci-static/resources/view/fchomo/node.js:1924
msgid "Enable TCP Brutal congestion control algorithm"
msgstr ""
@@ -999,12 +995,12 @@ msgstr ""
msgid "Enable multiplexing only for TCP."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:345
+#: htdocs/luci-static/resources/fchomo/listeners.js:353
#: htdocs/luci-static/resources/view/fchomo/node.js:448
msgid "Enable obfuscate for downlink"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1378
+#: htdocs/luci-static/resources/fchomo/listeners.js:1393
#: htdocs/luci-static/resources/view/fchomo/node.js:1906
msgid "Enable padding"
msgstr ""
@@ -1019,7 +1015,7 @@ msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:492
+#: htdocs/luci-static/resources/fchomo/listeners.js:500
#: htdocs/luci-static/resources/view/fchomo/node.js:722
msgid ""
"Enabling obfuscation will make the server incompatible with standard QUIC "
@@ -1030,7 +1026,7 @@ msgstr ""
msgid "Encrypted Hello"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:816
+#: htdocs/luci-static/resources/fchomo/listeners.js:825
msgid "Encryption method"
msgstr ""
@@ -1112,10 +1108,10 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo.js:1973
#: htdocs/luci-static/resources/fchomo.js:1982
#: htdocs/luci-static/resources/fchomo/listeners.js:284
-#: htdocs/luci-static/resources/fchomo/listeners.js:331
-#: htdocs/luci-static/resources/fchomo/listeners.js:845
-#: htdocs/luci-static/resources/fchomo/listeners.js:876
-#: htdocs/luci-static/resources/fchomo/listeners.js:977
+#: htdocs/luci-static/resources/fchomo/listeners.js:339
+#: htdocs/luci-static/resources/fchomo/listeners.js:854
+#: htdocs/luci-static/resources/fchomo/listeners.js:885
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
#: htdocs/luci-static/resources/view/fchomo/client.js:71
#: htdocs/luci-static/resources/view/fchomo/client.js:1063
#: htdocs/luci-static/resources/view/fchomo/client.js:1608
@@ -1134,16 +1130,16 @@ msgstr ""
msgid "Expecting: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1125
+#: htdocs/luci-static/resources/fchomo/listeners.js:1134
msgid "Expecting: Cannot be empty."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:1245
#: htdocs/luci-static/resources/view/fchomo/node.js:1472
msgid "Expecting: Cannot be enabled when %s is enabled."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
+#: htdocs/luci-static/resources/fchomo/listeners.js:1129
msgid "Expecting: Keep empty when %s is enabled."
msgstr ""
@@ -1152,10 +1148,10 @@ msgstr ""
msgid "Expecting: Least one of %s or %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:684
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/fchomo/listeners.js:1304
-#: htdocs/luci-static/resources/fchomo/listeners.js:1311
+#: htdocs/luci-static/resources/fchomo/listeners.js:692
+#: htdocs/luci-static/resources/fchomo/listeners.js:698
+#: htdocs/luci-static/resources/fchomo/listeners.js:1319
+#: htdocs/luci-static/resources/fchomo/listeners.js:1326
#: htdocs/luci-static/resources/view/fchomo/node.js:1136
#: htdocs/luci-static/resources/view/fchomo/node.js:1142
#: htdocs/luci-static/resources/view/fchomo/node.js:1690
@@ -1197,7 +1193,7 @@ msgid "Failed to upload, error: %s."
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:246
-#: htdocs/luci-static/resources/fchomo/listeners.js:370
+#: htdocs/luci-static/resources/fchomo/listeners.js:378
msgid "Fallback"
msgstr ""
@@ -1251,7 +1247,7 @@ msgstr ""
msgid "Firewall"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:401
+#: htdocs/luci-static/resources/fchomo/listeners.js:409
#: htdocs/luci-static/resources/view/fchomo/node.js:533
msgid "Flow"
msgstr ""
@@ -1287,7 +1283,7 @@ msgstr ""
msgid "Format"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:769
+#: htdocs/luci-static/resources/fchomo/listeners.js:778
msgid "Forwarding rate limit"
msgstr ""
@@ -1306,7 +1302,7 @@ msgstr ""
msgid "GFW list version"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:487
+#: htdocs/luci-static/resources/fchomo/listeners.js:495
#: htdocs/luci-static/resources/view/fchomo/node.js:717
msgid "Gecko"
msgstr ""
@@ -1333,8 +1329,8 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:262
#: htdocs/luci-static/resources/fchomo/listeners.js:306
#: htdocs/luci-static/resources/fchomo/listeners.js:308
-#: htdocs/luci-static/resources/fchomo/listeners.js:949
-#: htdocs/luci-static/resources/fchomo/listeners.js:1214
+#: htdocs/luci-static/resources/fchomo/listeners.js:958
+#: htdocs/luci-static/resources/fchomo/listeners.js:1223
#: htdocs/luci-static/resources/view/fchomo/global.js:608
#: htdocs/luci-static/resources/view/fchomo/node.js:2266
msgid "Generate"
@@ -1405,7 +1401,7 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:191
-#: htdocs/luci-static/resources/fchomo/listeners.js:702
+#: htdocs/luci-static/resources/fchomo/listeners.js:710
#: htdocs/luci-static/resources/view/fchomo/node.js:1154
#: htdocs/luci-static/resources/view/fchomo/node.js:1677
#: htdocs/luci-static/resources/view/fchomo/node.js:1690
@@ -1420,12 +1416,12 @@ msgstr ""
msgid "HTTP header"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:351
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "HTTP mask"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:356
+#: htdocs/luci-static/resources/fchomo/listeners.js:364
#: htdocs/luci-static/resources/view/fchomo/node.js:459
#: htdocs/luci-static/resources/view/fchomo/node.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:496
@@ -1445,7 +1441,7 @@ msgstr ""
msgid "HTTP request method"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:366
+#: htdocs/luci-static/resources/fchomo/listeners.js:374
#: htdocs/luci-static/resources/view/fchomo/node.js:480
msgid "HTTP root path"
msgstr ""
@@ -1454,7 +1450,7 @@ msgstr ""
msgid "HTTP/3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:510
+#: htdocs/luci-static/resources/fchomo/listeners.js:518
msgid ""
"HTTP3 server behavior when authentication fails.
A 404 page will be "
"returned if empty."
@@ -1474,20 +1470,20 @@ msgstr ""
msgid "Handshake mode"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:752
+#: htdocs/luci-static/resources/fchomo/listeners.js:760
msgid "Handshake target proxy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:707
+#: htdocs/luci-static/resources/fchomo/listeners.js:715
msgid "Handshake target that supports TLS 1.3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:338
+#: htdocs/luci-static/resources/fchomo/listeners.js:346
#: htdocs/luci-static/resources/view/fchomo/node.js:1089
msgid "Handshake timeout"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:535
+#: htdocs/luci-static/resources/fchomo/listeners.js:543
msgid "Header to read real client IP from (e.g. X-Forwarded-For)"
msgstr ""
@@ -1533,7 +1529,7 @@ msgstr ""
msgid "Hidden"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:715
+#: htdocs/luci-static/resources/fchomo/listeners.js:723
#: htdocs/luci-static/resources/view/fchomo/node.js:1159
msgid "Host that supports TLS 1.3"
msgstr ""
@@ -1635,7 +1631,7 @@ msgstr ""
msgid "Idle session timeout"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:647
+#: htdocs/luci-static/resources/fchomo/listeners.js:655
msgid "Idle timeout"
msgstr ""
@@ -1647,7 +1643,7 @@ msgstr ""
msgid "If Block is selected, uncheck others"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:477
+#: htdocs/luci-static/resources/fchomo/listeners.js:485
msgid "Ignore client bandwidth"
msgstr ""
@@ -1680,8 +1676,8 @@ msgstr ""
msgid "Import rule-set links"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:466
-#: htdocs/luci-static/resources/fchomo/listeners.js:472
+#: htdocs/luci-static/resources/fchomo/listeners.js:474
+#: htdocs/luci-static/resources/fchomo/listeners.js:480
#: htdocs/luci-static/resources/view/fchomo/node.js:691
#: htdocs/luci-static/resources/view/fchomo/node.js:697
#: htdocs/luci-static/resources/view/fchomo/node.js:2343
@@ -1689,7 +1685,7 @@ msgstr ""
msgid "In Mbps."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:770
+#: htdocs/luci-static/resources/fchomo/listeners.js:779
msgid "In bps. 0 means no speed limit."
msgstr ""
@@ -1698,6 +1694,7 @@ msgstr ""
msgid "In bytes. %s will be used if empty."
msgstr ""
+#: htdocs/luci-static/resources/fchomo/listeners.js:1294
#: htdocs/luci-static/resources/view/fchomo/node.js:676
#: htdocs/luci-static/resources/view/fchomo/node.js:683
#: htdocs/luci-static/resources/view/fchomo/node.js:757
@@ -1714,9 +1711,9 @@ msgstr ""
msgid "In milliseconds."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:339
-#: htdocs/luci-static/resources/fchomo/listeners.js:458
-#: htdocs/luci-static/resources/fchomo/listeners.js:648
+#: htdocs/luci-static/resources/fchomo/listeners.js:347
+#: htdocs/luci-static/resources/fchomo/listeners.js:466
+#: htdocs/luci-static/resources/fchomo/listeners.js:656
#: htdocs/luci-static/resources/view/fchomo/node.js:606
#: htdocs/luci-static/resources/view/fchomo/node.js:613
#: htdocs/luci-static/resources/view/fchomo/node.js:1768
@@ -1740,7 +1737,7 @@ msgid ""
"connection timeout."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:865
+#: htdocs/luci-static/resources/fchomo/listeners.js:874
#: htdocs/luci-static/resources/view/fchomo/node.js:1251
msgid ""
"In the order of one Padding-Length and one Padding-"
@@ -1781,7 +1778,7 @@ msgstr ""
msgid "Info"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:565
#: htdocs/luci-static/resources/view/fchomo/node.js:763
msgid "Initial congestion window size"
msgstr ""
@@ -1799,11 +1796,11 @@ msgstr ""
msgid "Interface Control"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:677
-#: htdocs/luci-static/resources/fchomo/listeners.js:687
-#: htdocs/luci-static/resources/fchomo/listeners.js:692
-#: htdocs/luci-static/resources/fchomo/listeners.js:1122
-#: htdocs/luci-static/resources/fchomo/listeners.js:1238
+#: htdocs/luci-static/resources/fchomo/listeners.js:685
+#: htdocs/luci-static/resources/fchomo/listeners.js:695
+#: htdocs/luci-static/resources/fchomo/listeners.js:700
+#: htdocs/luci-static/resources/fchomo/listeners.js:1131
+#: htdocs/luci-static/resources/fchomo/listeners.js:1247
#: htdocs/luci-static/resources/view/fchomo/node.js:1129
#: htdocs/luci-static/resources/view/fchomo/node.js:1139
#: htdocs/luci-static/resources/view/fchomo/node.js:1144
@@ -1834,12 +1831,12 @@ msgstr ""
msgid "Key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1141
+#: htdocs/luci-static/resources/fchomo/listeners.js:1150
#: htdocs/luci-static/resources/view/fchomo/node.js:1424
msgid "Key path"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:884
+#: htdocs/luci-static/resources/fchomo/listeners.js:893
msgid "Keypairs"
msgstr ""
@@ -1874,12 +1871,12 @@ msgstr ""
msgid "Lazy query."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:358
+#: htdocs/luci-static/resources/fchomo/listeners.js:366
#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Legacy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:410
+#: htdocs/luci-static/resources/fchomo/listeners.js:418
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1889,7 +1886,7 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1064
+#: htdocs/luci-static/resources/fchomo/listeners.js:1073
#: htdocs/luci-static/resources/view/fchomo/node.js:1337
msgid "List of supported application level protocols, in order of preference."
msgstr ""
@@ -1974,7 +1971,7 @@ msgstr ""
msgid "Masque"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:509
+#: htdocs/luci-static/resources/fchomo/listeners.js:517
msgid "Masquerade"
msgstr ""
@@ -2010,12 +2007,12 @@ msgstr ""
msgid "Max Early Data"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:451
+#: htdocs/luci-static/resources/fchomo/listeners.js:459
#: htdocs/luci-static/resources/view/fchomo/node.js:657
msgid "Max UDP relay packet size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1355
+#: htdocs/luci-static/resources/fchomo/listeners.js:1370
msgid "Max buffered posts"
msgstr ""
@@ -2031,17 +2028,17 @@ msgstr ""
msgid "Max count of failures"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:563
+#: htdocs/luci-static/resources/fchomo/listeners.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:769
msgid "Max datagram frame size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:471
+#: htdocs/luci-static/resources/fchomo/listeners.js:479
#: htdocs/luci-static/resources/view/fchomo/node.js:696
msgid "Max download speed"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1366
+#: htdocs/luci-static/resources/fchomo/listeners.js:1381
#: htdocs/luci-static/resources/view/fchomo/node.js:1814
msgid "Max each POST bytes"
msgstr ""
@@ -2050,11 +2047,11 @@ msgstr ""
msgid "Max open streams"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:522
+#: htdocs/luci-static/resources/fchomo/listeners.js:530
msgid "Max realms"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:528
+#: htdocs/luci-static/resources/fchomo/listeners.js:536
msgid "Max realms per client IP"
msgstr ""
@@ -2070,7 +2067,7 @@ msgstr ""
msgid "Max reuse times"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:465
+#: htdocs/luci-static/resources/fchomo/listeners.js:473
#: htdocs/luci-static/resources/view/fchomo/node.js:690
msgid "Max upload speed"
msgstr ""
@@ -2086,12 +2083,12 @@ msgid ""
"
Conflict with %s and %s."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:323
+#: htdocs/luci-static/resources/fchomo/listeners.js:327
#: htdocs/luci-static/resources/view/fchomo/node.js:433
msgid "Maximum padding rate"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:331
+#: htdocs/luci-static/resources/fchomo/listeners.js:339
#: htdocs/luci-static/resources/view/fchomo/node.js:441
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
@@ -2155,7 +2152,7 @@ msgstr ""
msgid "Mixed port"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1373
+#: htdocs/luci-static/resources/fchomo/listeners.js:1388
#: htdocs/luci-static/resources/view/fchomo/node.js:1864
msgid "Multiplex"
msgstr ""
@@ -2174,7 +2171,7 @@ msgstr ""
msgid "NOT"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:615
+#: htdocs/luci-static/resources/fchomo/listeners.js:623
msgid "Name of the Proxy group as outbound."
msgstr ""
@@ -2186,7 +2183,7 @@ msgstr ""
msgid "Name of the Proxy group to download rule set."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/fchomo/listeners.js:611
msgid "Name of the Sub rule used for inbound matching."
msgstr ""
@@ -2202,7 +2199,7 @@ msgstr ""
msgid "Network"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:654
+#: htdocs/luci-static/resources/fchomo/listeners.js:662
msgid "Network type"
msgstr ""
@@ -2214,7 +2211,7 @@ msgstr ""
msgid "No Authentication IP ranges"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1350
+#: htdocs/luci-static/resources/fchomo/listeners.js:1365
msgid "No SSE header"
msgstr ""
@@ -2287,28 +2284,28 @@ msgstr ""
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:701
+#: htdocs/luci-static/resources/fchomo/listeners.js:709
#: htdocs/luci-static/resources/view/fchomo/node.js:1153
msgid "Obfs Mode"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:504
+#: htdocs/luci-static/resources/fchomo/listeners.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:734
msgid "Obfuscate maximum packet size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:499
+#: htdocs/luci-static/resources/fchomo/listeners.js:507
#: htdocs/luci-static/resources/view/fchomo/node.js:729
msgid "Obfuscate minimum packet size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/fchomo/listeners.js:499
#: htdocs/luci-static/resources/view/fchomo/node.js:721
msgid "Obfuscate password"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:291
-#: htdocs/luci-static/resources/fchomo/listeners.js:484
+#: htdocs/luci-static/resources/fchomo/listeners.js:492
#: htdocs/luci-static/resources/view/fchomo/node.js:412
#: htdocs/luci-static/resources/view/fchomo/node.js:714
msgid "Obfuscate type"
@@ -2325,7 +2322,7 @@ msgstr ""
msgid "One or more numbers in the range 0-63 separated by commas"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1058
+#: htdocs/luci-static/resources/fchomo/listeners.js:1067
msgid "Only applicable when %s are used as a frontend."
msgstr ""
@@ -2413,25 +2410,25 @@ msgstr ""
msgid "Padding bytes"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:440
+#: htdocs/luci-static/resources/fchomo/listeners.js:448
msgid "Padding scheme"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:863
+#: htdocs/luci-static/resources/fchomo/listeners.js:872
#: htdocs/luci-static/resources/view/fchomo/node.js:1249
msgid "Paddings"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:167
#: htdocs/luci-static/resources/fchomo/listeners.js:184
-#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:738
#: htdocs/luci-static/resources/view/fchomo/node.js:324
#: htdocs/luci-static/resources/view/fchomo/node.js:345
#: htdocs/luci-static/resources/view/fchomo/node.js:1174
msgid "Password"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:581
+#: htdocs/luci-static/resources/fchomo/listeners.js:589
#: htdocs/luci-static/resources/view/fchomo/node.js:787
msgid "Path MTU Discovery"
msgstr ""
@@ -2444,7 +2441,7 @@ msgstr ""
msgid "Path in bundle: %s"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:803
+#: htdocs/luci-static/resources/fchomo/listeners.js:812
#: htdocs/luci-static/resources/view/fchomo/node.js:2173
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:373
msgid "Payload"
@@ -2509,7 +2506,7 @@ msgstr ""
msgid "Please type %s fields of mihomo config."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:667
+#: htdocs/luci-static/resources/fchomo/listeners.js:675
#: htdocs/luci-static/resources/view/fchomo/node.js:1117
msgid "Plugin"
msgstr ""
@@ -2519,7 +2516,7 @@ msgstr ""
msgid "Plugin fields"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:673
+#: htdocs/luci-static/resources/fchomo/listeners.js:681
#: htdocs/luci-static/resources/view/fchomo/node.js:1123
msgid "Plugin type"
msgstr ""
@@ -2549,14 +2546,14 @@ msgstr ""
msgid "Ports pool"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:377
-#: htdocs/luci-static/resources/fchomo/listeners.js:516
+#: htdocs/luci-static/resources/fchomo/listeners.js:385
+#: htdocs/luci-static/resources/fchomo/listeners.js:524
#: htdocs/luci-static/resources/view/fchomo/node.js:504
#: htdocs/luci-static/resources/view/fchomo/node.js:927
msgid "Pre-shared key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1001
+#: htdocs/luci-static/resources/fchomo/listeners.js:1010
#: htdocs/luci-static/resources/view/fchomo/node.js:1284
msgid "Pre-shared key of rendezvous server"
msgstr ""
@@ -2663,7 +2660,7 @@ msgstr ""
msgid "Proxy chain"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:622
#: htdocs/luci-static/resources/view/fchomo/client.js:813
#: htdocs/luci-static/resources/view/fchomo/client.js:1643
#: htdocs/luci-static/resources/view/fchomo/node.js:2197
@@ -2692,12 +2689,12 @@ msgstr ""
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:552
+#: htdocs/luci-static/resources/fchomo/listeners.js:560
#: htdocs/luci-static/resources/view/fchomo/node.js:751
msgid "QUIC based 0-RTT"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:546
+#: htdocs/luci-static/resources/fchomo/listeners.js:554
#: htdocs/luci-static/resources/view/fchomo/node.js:740
msgid "QUIC versions"
msgstr ""
@@ -2707,8 +2704,8 @@ msgstr ""
msgid "Quick Reload"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1123
-#: htdocs/luci-static/resources/fchomo/listeners.js:1229
+#: htdocs/luci-static/resources/fchomo/listeners.js:1132
+#: htdocs/luci-static/resources/fchomo/listeners.js:1238
#: htdocs/luci-static/resources/view/fchomo/node.js:1465
msgid "REALITY"
msgstr ""
@@ -2717,24 +2714,28 @@ msgstr ""
msgid "REALITY X25519MLKEM768 PQC support"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1277
+#: htdocs/luci-static/resources/fchomo/listeners.js:1286
msgid "REALITY certificate issued to"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1245
+#: htdocs/luci-static/resources/fchomo/listeners.js:1254
msgid "REALITY handshake server"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1252
+#: htdocs/luci-static/resources/fchomo/listeners.js:1293
+msgid "REALITY max time difference"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:1261
msgid "REALITY private key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1267
+#: htdocs/luci-static/resources/fchomo/listeners.js:1276
#: htdocs/luci-static/resources/view/fchomo/node.js:1481
msgid "REALITY public key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1271
+#: htdocs/luci-static/resources/fchomo/listeners.js:1280
#: htdocs/luci-static/resources/view/fchomo/node.js:1486
msgid "REALITY short ID"
msgstr ""
@@ -2745,8 +2746,8 @@ msgstr ""
msgid "REMATCH-NAME marking"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:834
-#: htdocs/luci-static/resources/fchomo/listeners.js:853
+#: htdocs/luci-static/resources/fchomo/listeners.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
#: htdocs/luci-static/resources/view/fchomo/node.js:1239
msgid "RTT"
msgstr ""
@@ -2763,17 +2764,17 @@ msgstr ""
msgid "Randomized traffic characteristics"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:990
+#: htdocs/luci-static/resources/fchomo/listeners.js:999
#: htdocs/luci-static/resources/view/fchomo/node.js:1273
msgid "Realm"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1006
+#: htdocs/luci-static/resources/fchomo/listeners.js:1015
#: htdocs/luci-static/resources/view/fchomo/node.js:1289
msgid "Realm ID"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:539
+#: htdocs/luci-static/resources/fchomo/listeners.js:547
msgid "Realm name pattern"
msgstr ""
@@ -2851,7 +2852,7 @@ msgstr ""
msgid "Remove idles"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:995
+#: htdocs/luci-static/resources/fchomo/listeners.js:1004
#: htdocs/luci-static/resources/view/fchomo/node.js:1278
msgid "Rendezvous server"
msgstr ""
@@ -2868,7 +2869,7 @@ msgstr ""
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1329
+#: htdocs/luci-static/resources/fchomo/listeners.js:1344
#: htdocs/luci-static/resources/view/fchomo/node.js:1738
#: htdocs/luci-static/resources/view/fchomo/node.js:1745
msgid "Request path"
@@ -2899,11 +2900,11 @@ msgstr ""
msgid "Resources management"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:676
-#: htdocs/luci-static/resources/fchomo/listeners.js:686
-#: htdocs/luci-static/resources/fchomo/listeners.js:691
-#: htdocs/luci-static/resources/fchomo/listeners.js:1121
-#: htdocs/luci-static/resources/fchomo/listeners.js:1237
+#: htdocs/luci-static/resources/fchomo/listeners.js:684
+#: htdocs/luci-static/resources/fchomo/listeners.js:694
+#: htdocs/luci-static/resources/fchomo/listeners.js:699
+#: htdocs/luci-static/resources/fchomo/listeners.js:1130
+#: htdocs/luci-static/resources/fchomo/listeners.js:1246
#: htdocs/luci-static/resources/view/fchomo/node.js:1128
#: htdocs/luci-static/resources/view/fchomo/node.js:1138
#: htdocs/luci-static/resources/view/fchomo/node.js:1143
@@ -2911,7 +2912,7 @@ msgstr ""
msgid "Restls"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:745
+#: htdocs/luci-static/resources/fchomo/listeners.js:753
#: htdocs/luci-static/resources/view/fchomo/node.js:1197
msgid "Restls script"
msgstr ""
@@ -2948,7 +2949,7 @@ msgstr ""
msgid "Routing GFW"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
#: htdocs/luci-static/resources/view/fchomo/global.js:776
#: htdocs/luci-static/resources/view/fchomo/node.js:1966
#: htdocs/luci-static/resources/view/fchomo/node.js:2385
@@ -3035,7 +3036,7 @@ msgstr ""
msgid "STUN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1012
+#: htdocs/luci-static/resources/fchomo/listeners.js:1021
#: htdocs/luci-static/resources/view/fchomo/node.js:1295
msgid "STUN servers"
msgstr ""
@@ -3048,7 +3049,7 @@ msgstr ""
msgid "SUoT version"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:486
+#: htdocs/luci-static/resources/fchomo/listeners.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:716
msgid "Salamander"
msgstr ""
@@ -3096,9 +3097,9 @@ msgstr ""
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:834
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:1121
+#: htdocs/luci-static/resources/fchomo/listeners.js:1151
#: htdocs/luci-static/resources/view/fchomo/server.js:58
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
@@ -3108,7 +3109,7 @@ msgstr ""
msgid "Server address"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1323
+#: htdocs/luci-static/resources/fchomo/listeners.js:1338
#: htdocs/luci-static/resources/view/fchomo/node.js:1717
#: htdocs/luci-static/resources/view/fchomo/node.js:1723
msgid "Server hostname"
@@ -3131,11 +3132,11 @@ msgstr ""
msgid "ShadowQUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:675
-#: htdocs/luci-static/resources/fchomo/listeners.js:685
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
-#: htdocs/luci-static/resources/fchomo/listeners.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:683
+#: htdocs/luci-static/resources/fchomo/listeners.js:693
+#: htdocs/luci-static/resources/fchomo/listeners.js:698
+#: htdocs/luci-static/resources/fchomo/listeners.js:1129
+#: htdocs/luci-static/resources/fchomo/listeners.js:1245
#: htdocs/luci-static/resources/view/fchomo/node.js:1127
#: htdocs/luci-static/resources/view/fchomo/node.js:1137
#: htdocs/luci-static/resources/view/fchomo/node.js:1142
@@ -3148,17 +3149,17 @@ msgstr ""
msgid "Shadowsocks"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:422
+#: htdocs/luci-static/resources/fchomo/listeners.js:430
#: htdocs/luci-static/resources/view/fchomo/node.js:582
msgid "Shadowsocks chipher"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:417
+#: htdocs/luci-static/resources/fchomo/listeners.js:425
#: htdocs/luci-static/resources/view/fchomo/node.js:577
msgid "Shadowsocks encrypt"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:430
+#: htdocs/luci-static/resources/fchomo/listeners.js:438
#: htdocs/luci-static/resources/view/fchomo/node.js:590
msgid "Shadowsocks password"
msgstr ""
@@ -3247,12 +3248,12 @@ msgstr ""
msgid "Strategy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:569
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
#: htdocs/luci-static/resources/view/fchomo/node.js:775
msgid "Stream-level receive window size"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:602
+#: htdocs/luci-static/resources/fchomo/listeners.js:610
#: htdocs/luci-static/resources/view/fchomo/client.js:1400
#: htdocs/luci-static/resources/view/fchomo/client.js:1409
msgid "Sub rule"
@@ -3313,7 +3314,7 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo.js:200
#: htdocs/luci-static/resources/fchomo.js:201
#: htdocs/luci-static/resources/fchomo.js:211
-#: htdocs/luci-static/resources/fchomo/listeners.js:655
+#: htdocs/luci-static/resources/fchomo/listeners.js:663
#: htdocs/luci-static/resources/view/fchomo/client.js:618
#: htdocs/luci-static/resources/view/fchomo/client.js:710
msgid "TCP"
@@ -3355,8 +3356,8 @@ msgstr ""
msgid "TFO"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:703
-#: htdocs/luci-static/resources/fchomo/listeners.js:1022
+#: htdocs/luci-static/resources/fchomo/listeners.js:711
+#: htdocs/luci-static/resources/fchomo/listeners.js:1031
#: htdocs/luci-static/resources/view/fchomo/global.js:550
#: htdocs/luci-static/resources/view/fchomo/node.js:469
#: htdocs/luci-static/resources/view/fchomo/node.js:1155
@@ -3364,7 +3365,7 @@ msgstr ""
msgid "TLS"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1063
+#: htdocs/luci-static/resources/fchomo/listeners.js:1072
#: htdocs/luci-static/resources/view/fchomo/node.js:1336
msgid "TLS ALPN"
msgstr ""
@@ -3392,11 +3393,11 @@ msgstr ""
msgid "Tailscale"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
msgid "Target address"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:478
+#: htdocs/luci-static/resources/fchomo/listeners.js:486
msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr ""
@@ -3410,13 +3411,13 @@ msgstr ""
msgid "The %s address used by local machine in the %s network."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:1151
#: htdocs/luci-static/resources/view/fchomo/node.js:1425
msgid "The %s private key, in PEM format."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
-#: htdocs/luci-static/resources/fchomo/listeners.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:1121
+#: htdocs/luci-static/resources/fchomo/listeners.js:1174
#: htdocs/luci-static/resources/view/fchomo/global.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:1411
msgid "The %s public key, in PEM format."
@@ -3436,6 +3437,10 @@ msgstr ""
msgid "The ED25519 master public key or UUID generated by Sudoku."
msgstr ""
+#: htdocs/luci-static/resources/view/fchomo/node.js:601
+msgid "The client metadata sent to the server."
+msgstr ""
+
#: htdocs/luci-static/resources/view/fchomo/global.js:324
msgid "The default value is 2:00 every day."
msgstr ""
@@ -3446,7 +3451,7 @@ msgid ""
"connection timeout is used."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:866
+#: htdocs/luci-static/resources/fchomo/listeners.js:875
#: htdocs/luci-static/resources/view/fchomo/node.js:1252
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
@@ -3462,16 +3467,16 @@ msgstr ""
msgid "The matching %s will be deemed as poisoned."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:753
+#: htdocs/luci-static/resources/fchomo/listeners.js:761
msgid "The proxy used to connect to the handshake target."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:864
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
#: htdocs/luci-static/resources/view/fchomo/node.js:1250
msgid "The server and client can set different padding parameters."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1223
+#: htdocs/luci-static/resources/fchomo/listeners.js:1232
#: htdocs/luci-static/resources/view/fchomo/global.js:615
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr ""
@@ -3527,7 +3532,7 @@ msgid "Transit proxy node"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:194
-#: htdocs/luci-static/resources/fchomo/listeners.js:1287
+#: htdocs/luci-static/resources/fchomo/listeners.js:1302
#: htdocs/luci-static/resources/view/fchomo/node.js:360
#: htdocs/luci-static/resources/view/fchomo/node.js:1670
msgid "Transport"
@@ -3538,7 +3543,7 @@ msgstr ""
msgid "Transport fields"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1292
+#: htdocs/luci-static/resources/fchomo/listeners.js:1307
#: htdocs/luci-static/resources/view/fchomo/node.js:1675
msgid "Transport type"
msgstr ""
@@ -3557,7 +3562,7 @@ msgstr ""
msgid "TrustTunnel"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:534
+#: htdocs/luci-static/resources/fchomo/listeners.js:542
msgid "Trusted proxy header"
msgstr ""
@@ -3608,8 +3613,8 @@ msgstr ""
#: htdocs/luci-static/resources/fchomo.js:208
#: htdocs/luci-static/resources/fchomo.js:209
#: htdocs/luci-static/resources/fchomo.js:210
-#: htdocs/luci-static/resources/fchomo/listeners.js:656
-#: htdocs/luci-static/resources/fchomo/listeners.js:661
+#: htdocs/luci-static/resources/fchomo/listeners.js:664
+#: htdocs/luci-static/resources/fchomo/listeners.js:669
#: htdocs/luci-static/resources/view/fchomo/client.js:617
#: htdocs/luci-static/resources/view/fchomo/client.js:709
#: htdocs/luci-static/resources/view/fchomo/node.js:1097
@@ -3650,8 +3655,8 @@ msgid "URL test"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:215
-#: htdocs/luci-static/resources/fchomo/listeners.js:395
-#: htdocs/luci-static/resources/fchomo/listeners.js:445
+#: htdocs/luci-static/resources/fchomo/listeners.js:403
+#: htdocs/luci-static/resources/fchomo/listeners.js:453
#: htdocs/luci-static/resources/view/fchomo/node.js:527
#: htdocs/luci-static/resources/view/fchomo/node.js:626
msgid "UUID"
@@ -3696,18 +3701,18 @@ msgstr ""
msgid "Update interval"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1389
+#: htdocs/luci-static/resources/fchomo/listeners.js:1404
#: htdocs/luci-static/resources/view/fchomo/node.js:1929
msgid "Upload bandwidth"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1390
+#: htdocs/luci-static/resources/fchomo/listeners.js:1405
#: htdocs/luci-static/resources/view/fchomo/node.js:1930
msgid "Upload bandwidth in Mbps."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1133
-#: htdocs/luci-static/resources/fchomo/listeners.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:1182
#: htdocs/luci-static/resources/view/fchomo/node.js:1416
msgid "Upload certificate"
msgstr ""
@@ -3716,14 +3721,14 @@ msgstr ""
msgid "Upload initial package"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1148
+#: htdocs/luci-static/resources/fchomo/listeners.js:1157
#: htdocs/luci-static/resources/view/fchomo/node.js:1430
msgid "Upload key"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1136
-#: htdocs/luci-static/resources/fchomo/listeners.js:1151
-#: htdocs/luci-static/resources/fchomo/listeners.js:1176
+#: htdocs/luci-static/resources/fchomo/listeners.js:1145
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/fchomo/listeners.js:1185
#: htdocs/luci-static/resources/view/fchomo/global.js:306
#: htdocs/luci-static/resources/view/fchomo/node.js:1419
#: htdocs/luci-static/resources/view/fchomo/node.js:1433
@@ -3778,7 +3783,7 @@ msgid "User-hint is mandatory"
msgstr ""
#: htdocs/luci-static/resources/fchomo/listeners.js:162
-#: htdocs/luci-static/resources/fchomo/listeners.js:723
+#: htdocs/luci-static/resources/fchomo/listeners.js:731
#: htdocs/luci-static/resources/view/fchomo/node.js:319
#: htdocs/luci-static/resources/view/fchomo/node.js:1167
msgid "Username"
@@ -3841,8 +3846,8 @@ msgstr ""
msgid "Verify if given"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:384
-#: htdocs/luci-static/resources/fchomo/listeners.js:737
+#: htdocs/luci-static/resources/fchomo/listeners.js:392
+#: htdocs/luci-static/resources/fchomo/listeners.js:745
#: htdocs/luci-static/resources/view/fchomo/node.js:511
#: htdocs/luci-static/resources/view/fchomo/node.js:1181
msgid "Version"
@@ -3873,10 +3878,10 @@ msgstr ""
msgid "Warning"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:362
-#: htdocs/luci-static/resources/fchomo/listeners.js:1294
-#: htdocs/luci-static/resources/fchomo/listeners.js:1305
-#: htdocs/luci-static/resources/fchomo/listeners.js:1312
+#: htdocs/luci-static/resources/fchomo/listeners.js:370
+#: htdocs/luci-static/resources/fchomo/listeners.js:1309
+#: htdocs/luci-static/resources/fchomo/listeners.js:1320
+#: htdocs/luci-static/resources/fchomo/listeners.js:1327
#: htdocs/luci-static/resources/view/fchomo/node.js:465
#: htdocs/luci-static/resources/view/fchomo/node.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:1680
@@ -3919,14 +3924,14 @@ msgstr ""
msgid "Wireguard"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1295
-#: htdocs/luci-static/resources/fchomo/listeners.js:1306
+#: htdocs/luci-static/resources/fchomo/listeners.js:1310
+#: htdocs/luci-static/resources/fchomo/listeners.js:1321
#: htdocs/luci-static/resources/view/fchomo/node.js:1681
#: htdocs/luci-static/resources/view/fchomo/node.js:1701
msgid "XHTTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1342
+#: htdocs/luci-static/resources/fchomo/listeners.js:1357
#: htdocs/luci-static/resources/view/fchomo/node.js:1796
msgid "XHTTP mode"
msgstr ""
@@ -3944,7 +3949,7 @@ msgstr ""
msgid "XMUX:"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:825
+#: htdocs/luci-static/resources/fchomo/listeners.js:834
msgid "XOR mode"
msgstr ""
@@ -4021,8 +4026,8 @@ msgstr ""
msgid "bbr3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1138
-#: htdocs/luci-static/resources/fchomo/listeners.js:1178
+#: htdocs/luci-static/resources/fchomo/listeners.js:1147
+#: htdocs/luci-static/resources/fchomo/listeners.js:1187
#: htdocs/luci-static/resources/view/fchomo/node.js:1421
msgid "certificate"
msgstr ""
@@ -4042,8 +4047,8 @@ msgstr ""
msgid "cubic"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:777
-#: htdocs/luci-static/resources/fchomo/listeners.js:808
+#: htdocs/luci-static/resources/fchomo/listeners.js:786
+#: htdocs/luci-static/resources/fchomo/listeners.js:817
msgid "decryption"
msgstr ""
@@ -4055,20 +4060,20 @@ msgstr ""
msgid "down"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:812
+#: htdocs/luci-static/resources/fchomo/listeners.js:821
#: htdocs/luci-static/resources/view/fchomo/node.js:1204
#: htdocs/luci-static/resources/view/fchomo/node.js:1227
msgid "encryption"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:346
+#: htdocs/luci-static/resources/fchomo/listeners.js:354
#: htdocs/luci-static/resources/view/fchomo/node.js:449
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1293
-#: htdocs/luci-static/resources/fchomo/listeners.js:1304
-#: htdocs/luci-static/resources/fchomo/listeners.js:1311
+#: htdocs/luci-static/resources/fchomo/listeners.js:1308
+#: htdocs/luci-static/resources/fchomo/listeners.js:1319
+#: htdocs/luci-static/resources/fchomo/listeners.js:1326
#: htdocs/luci-static/resources/view/fchomo/node.js:1679
#: htdocs/luci-static/resources/view/fchomo/node.js:1692
#: htdocs/luci-static/resources/view/fchomo/node.js:1699
@@ -4084,7 +4089,7 @@ msgstr ""
msgid "gRPC ping interval"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1336
+#: htdocs/luci-static/resources/fchomo/listeners.js:1351
#: htdocs/luci-static/resources/view/fchomo/node.js:1758
msgid "gRPC service name"
msgstr ""
@@ -4110,7 +4115,7 @@ msgstr ""
msgid "h3-l4proxy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:977
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
msgid "least one keypair required"
msgstr ""
@@ -4175,13 +4180,13 @@ msgid "not included \",\""
msgstr ""
#: htdocs/luci-static/resources/fchomo.js:233
-#: htdocs/luci-static/resources/fchomo/listeners.js:604
-#: htdocs/luci-static/resources/fchomo/listeners.js:607
+#: htdocs/luci-static/resources/fchomo/listeners.js:612
+#: htdocs/luci-static/resources/fchomo/listeners.js:615
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:674
-#: htdocs/luci-static/resources/fchomo/listeners.js:684
+#: htdocs/luci-static/resources/fchomo/listeners.js:682
+#: htdocs/luci-static/resources/fchomo/listeners.js:692
#: htdocs/luci-static/resources/view/fchomo/node.js:1124
#: htdocs/luci-static/resources/view/fchomo/node.js:1136
msgid "obfs-simple"
@@ -4207,17 +4212,17 @@ msgstr ""
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1346
+#: htdocs/luci-static/resources/fchomo/listeners.js:1361
#: htdocs/luci-static/resources/view/fchomo/node.js:1800
msgid "packet-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:360
+#: htdocs/luci-static/resources/fchomo/listeners.js:368
#: htdocs/luci-static/resources/view/fchomo/node.js:463
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1162
#: htdocs/luci-static/resources/view/fchomo/node.js:1435
msgid "private key"
msgstr ""
@@ -4243,7 +4248,7 @@ msgstr ""
msgid "smux"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
#: htdocs/luci-static/resources/view/fchomo/node.js:462
msgid "split-stream"
msgstr ""
@@ -4252,17 +4257,17 @@ msgstr ""
msgid "src"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1344
+#: htdocs/luci-static/resources/fchomo/listeners.js:1359
#: htdocs/luci-static/resources/view/fchomo/node.js:1798
msgid "stream-one"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1345
+#: htdocs/luci-static/resources/fchomo/listeners.js:1360
#: htdocs/luci-static/resources/view/fchomo/node.js:1799
msgid "stream-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1361
+#: htdocs/luci-static/resources/fchomo/listeners.js:1376
msgid "stream-up server seconds"
msgstr ""
@@ -4302,8 +4307,8 @@ msgstr ""
msgid "up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:385
-#: htdocs/luci-static/resources/fchomo/listeners.js:738
+#: htdocs/luci-static/resources/fchomo/listeners.js:393
+#: htdocs/luci-static/resources/fchomo/listeners.js:746
#: htdocs/luci-static/resources/view/fchomo/node.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:653
#: htdocs/luci-static/resources/view/fchomo/node.js:1110
@@ -4311,27 +4316,27 @@ msgstr ""
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:386
-#: htdocs/luci-static/resources/fchomo/listeners.js:739
+#: htdocs/luci-static/resources/fchomo/listeners.js:394
+#: htdocs/luci-static/resources/fchomo/listeners.js:747
#: htdocs/luci-static/resources/view/fchomo/node.js:513
#: htdocs/luci-static/resources/view/fchomo/node.js:1111
#: htdocs/luci-static/resources/view/fchomo/node.js:1183
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:387
-#: htdocs/luci-static/resources/fchomo/listeners.js:740
+#: htdocs/luci-static/resources/fchomo/listeners.js:395
+#: htdocs/luci-static/resources/fchomo/listeners.js:748
#: htdocs/luci-static/resources/view/fchomo/node.js:514
#: htdocs/luci-static/resources/view/fchomo/node.js:1184
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:388
+#: htdocs/luci-static/resources/fchomo/listeners.js:396
#: htdocs/luci-static/resources/view/fchomo/node.js:515
msgid "v4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:389
+#: htdocs/luci-static/resources/fchomo/listeners.js:397
#: htdocs/luci-static/resources/view/fchomo/node.js:516
msgid "v5"
msgstr ""
diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po
index 1d7f46b9..699a160b 100644
--- a/luci-app-fchomo/po/zh_Hans/fchomo.po
+++ b/luci-app-fchomo/po/zh_Hans/fchomo.po
@@ -40,9 +40,9 @@ msgstr "%s 端口"
msgid "(Imported)"
msgstr "(已导入)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1156
-#: htdocs/luci-static/resources/fchomo/listeners.js:1164
+#: htdocs/luci-static/resources/fchomo/listeners.js:1165
#: htdocs/luci-static/resources/fchomo/listeners.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1182
#: htdocs/luci-static/resources/view/fchomo/global.js:564
#: htdocs/luci-static/resources/view/fchomo/global.js:570
#: htdocs/luci-static/resources/view/fchomo/node.js:1410
@@ -127,9 +127,9 @@ msgstr "-1 表示禁用它。"
msgid "0 or 1 only."
msgstr "仅限 0 或 1。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1134
-#: htdocs/luci-static/resources/fchomo/listeners.js:1149
-#: htdocs/luci-static/resources/fchomo/listeners.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1143
+#: htdocs/luci-static/resources/fchomo/listeners.js:1158
+#: htdocs/luci-static/resources/fchomo/listeners.js:1183
#: htdocs/luci-static/resources/view/fchomo/node.js:1417
#: htdocs/luci-static/resources/view/fchomo/node.js:1431
msgid "Save your configuration before uploading files!"
@@ -320,7 +320,7 @@ msgstr ""
msgid "Allow access to the local LAN via the exit node."
msgstr "允许通过出口节点访问本地局域网。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1057
+#: htdocs/luci-static/resources/fchomo/listeners.js:1066
msgid "Allow insecure connections"
msgstr "允许不安全的连接"
@@ -336,7 +336,7 @@ msgstr "已是最新版本。"
msgid "Already in updating."
msgstr "已在更新中。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:409
+#: htdocs/luci-static/resources/fchomo/listeners.js:417
#: htdocs/luci-static/resources/view/fchomo/node.js:541
msgid "Alter ID"
msgstr "额外 ID"
@@ -363,7 +363,7 @@ msgstr "作为 dnsmasq 的最优先上游"
msgid "As the TOP upstream of dnsmasq."
msgstr "作为 dnsmasq 的最优先上游。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:457
+#: htdocs/luci-static/resources/fchomo/listeners.js:465
msgid "Auth timeout"
msgstr "认证超时"
@@ -375,8 +375,8 @@ msgstr "认证长度"
msgid "Authentication key"
msgstr "验证密钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:361
-#: htdocs/luci-static/resources/fchomo/listeners.js:1343
+#: htdocs/luci-static/resources/fchomo/listeners.js:369
+#: htdocs/luci-static/resources/fchomo/listeners.js:1358
#: htdocs/luci-static/resources/view/fchomo/global.js:423
#: htdocs/luci-static/resources/view/fchomo/node.js:464
#: htdocs/luci-static/resources/view/fchomo/node.js:488
@@ -399,7 +399,7 @@ msgstr "自动更新"
msgid "Auto update resources."
msgstr "自动更新资源文件。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:638
+#: htdocs/luci-static/resources/fchomo/listeners.js:646
#: htdocs/luci-static/resources/view/fchomo/node.js:1074
msgid "BBR profile"
msgstr "BBR 配置文件"
@@ -482,10 +482,10 @@ msgstr "绕过 CN 流量"
msgid "Bypass DSCP"
msgstr "绕过 DSCP"
-#: htdocs/luci-static/resources/fchomo/listeners.js:359
-#: htdocs/luci-static/resources/fchomo/listeners.js:360
-#: htdocs/luci-static/resources/fchomo/listeners.js:361
-#: htdocs/luci-static/resources/fchomo/listeners.js:362
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
+#: htdocs/luci-static/resources/fchomo/listeners.js:368
+#: htdocs/luci-static/resources/fchomo/listeners.js:369
+#: htdocs/luci-static/resources/fchomo/listeners.js:370
#: htdocs/luci-static/resources/view/fchomo/node.js:462
#: htdocs/luci-static/resources/view/fchomo/node.js:463
#: htdocs/luci-static/resources/view/fchomo/node.js:464
@@ -518,7 +518,7 @@ msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1111
+#: htdocs/luci-static/resources/fchomo/listeners.js:1120
#: htdocs/luci-static/resources/view/fchomo/node.js:1410
msgid "Certificate path"
msgstr "证书路径"
@@ -580,8 +580,8 @@ msgstr ""
"点击此处下载"
"最新的初始包。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:853
-#: htdocs/luci-static/resources/fchomo/listeners.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
+#: htdocs/luci-static/resources/fchomo/listeners.js:1174
#: htdocs/luci-static/resources/view/fchomo/global.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:1239
#: htdocs/luci-static/resources/view/fchomo/node.js:1411
@@ -590,11 +590,11 @@ msgstr ""
msgid "Client"
msgstr "客户端"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1164
+#: htdocs/luci-static/resources/fchomo/listeners.js:1173
msgid "Client Auth Certificate path"
msgstr "客户端认证证书路径"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1156
+#: htdocs/luci-static/resources/fchomo/listeners.js:1165
msgid "Client Auth type"
msgstr "客户端认证类型"
@@ -610,10 +610,6 @@ msgstr "客户端密钥"
msgid "Client metadata"
msgstr "客户端元数据"
-#: htdocs/luci-static/resources/view/fchomo/node.js:601
-msgid "The client metadata sent to the server."
-msgstr "发送到服务器的客户端元数据。"
-
#: htdocs/luci-static/resources/view/fchomo/global.js:176
msgid "Client status"
msgstr "客户端状态"
@@ -636,7 +632,7 @@ msgstr "常用端口(绕过 P2P 流量)"
msgid "Complete"
msgstr "完成"
-#: htdocs/luci-static/resources/fchomo/listeners.js:630
+#: htdocs/luci-static/resources/fchomo/listeners.js:638
#: htdocs/luci-static/resources/view/fchomo/node.js:1056
#: htdocs/luci-static/resources/view/fchomo/node.js:1065
msgid "Congestion controller"
@@ -650,7 +646,7 @@ msgstr "连接检查"
msgid "Connection reuse"
msgstr "连接复用"
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
#: htdocs/luci-static/resources/view/fchomo/node.js:781
msgid "Connection-level receive window size"
msgstr "连接级接收窗口大小"
@@ -775,7 +771,7 @@ msgstr "默认 DNS 服务器"
msgid "Default selected"
msgstr "默认选中"
-#: htdocs/luci-static/resources/fchomo/listeners.js:547
+#: htdocs/luci-static/resources/fchomo/listeners.js:555
msgid "Default version, Support %s."
msgstr "默认版本,支持 %s。"
@@ -820,7 +816,7 @@ msgstr "直连 IPv6 地址"
msgid "Direct MAC-s"
msgstr "直连 MAC 地址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:485
+#: htdocs/luci-static/resources/fchomo/listeners.js:493
#: htdocs/luci-static/resources/view/fchomo/global.js:424
#: htdocs/luci-static/resources/view/fchomo/node.js:715
#: htdocs/luci-static/resources/view/fchomo/node.js:849
@@ -877,12 +873,12 @@ msgstr "不要在 ClientHello 中发送服务器名称。"
msgid "Donot verifying server certificate."
msgstr "不验证服务器证书。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1395
+#: htdocs/luci-static/resources/fchomo/listeners.js:1410
#: htdocs/luci-static/resources/view/fchomo/node.js:1935
msgid "Download bandwidth"
msgstr "下载带宽"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1396
+#: htdocs/luci-static/resources/fchomo/listeners.js:1411
#: htdocs/luci-static/resources/view/fchomo/node.js:1936
msgid "Download bandwidth in Mbps."
msgstr "下载带宽(单位:Mbps)。"
@@ -903,12 +899,12 @@ msgstr "双栈"
msgid "ECH HTTPS record query servername"
msgstr "ECH HTTPS 记录查询域名"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1222
+#: htdocs/luci-static/resources/fchomo/listeners.js:1231
#: htdocs/luci-static/resources/view/fchomo/node.js:1444
msgid "ECH config"
msgstr "ECH 配置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1181
+#: htdocs/luci-static/resources/fchomo/listeners.js:1190
msgid "ECH key"
msgstr "ECH 密钥"
@@ -1001,12 +997,12 @@ msgstr ""
msgid "Enable ECH"
msgstr "启用 ECH"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1383
+#: htdocs/luci-static/resources/fchomo/listeners.js:1398
#: htdocs/luci-static/resources/view/fchomo/node.js:1923
msgid "Enable TCP Brutal"
msgstr "启用 TCP Brutal"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1384
+#: htdocs/luci-static/resources/fchomo/listeners.js:1399
#: htdocs/luci-static/resources/view/fchomo/node.js:1924
msgid "Enable TCP Brutal congestion control algorithm"
msgstr "启用 TCP Brutal 拥塞控制算法。"
@@ -1019,12 +1015,12 @@ msgstr "启用 Fast open"
msgid "Enable multiplexing only for TCP."
msgstr "仅为 TCP 启用多路复用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:345
+#: htdocs/luci-static/resources/fchomo/listeners.js:353
#: htdocs/luci-static/resources/view/fchomo/node.js:448
msgid "Enable obfuscate for downlink"
msgstr "启用下行链路混淆"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1378
+#: htdocs/luci-static/resources/fchomo/listeners.js:1393
#: htdocs/luci-static/resources/view/fchomo/node.js:1906
msgid "Enable padding"
msgstr "启用填充"
@@ -1039,7 +1035,7 @@ msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:492
+#: htdocs/luci-static/resources/fchomo/listeners.js:500
#: htdocs/luci-static/resources/view/fchomo/node.js:722
msgid ""
"Enabling obfuscation will make the server incompatible with standard QUIC "
@@ -1050,7 +1046,7 @@ msgstr "启用混淆将使服务器与标准的 QUIC 连接不兼容,失去 HT
msgid "Encrypted Hello"
msgstr "加密 Hello"
-#: htdocs/luci-static/resources/fchomo/listeners.js:816
+#: htdocs/luci-static/resources/fchomo/listeners.js:825
msgid "Encryption method"
msgstr "加密方法"
@@ -1134,10 +1130,10 @@ msgstr "预期状态"
#: htdocs/luci-static/resources/fchomo.js:1973
#: htdocs/luci-static/resources/fchomo.js:1982
#: htdocs/luci-static/resources/fchomo/listeners.js:284
-#: htdocs/luci-static/resources/fchomo/listeners.js:331
-#: htdocs/luci-static/resources/fchomo/listeners.js:845
-#: htdocs/luci-static/resources/fchomo/listeners.js:876
-#: htdocs/luci-static/resources/fchomo/listeners.js:977
+#: htdocs/luci-static/resources/fchomo/listeners.js:339
+#: htdocs/luci-static/resources/fchomo/listeners.js:854
+#: htdocs/luci-static/resources/fchomo/listeners.js:885
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
#: htdocs/luci-static/resources/view/fchomo/client.js:71
#: htdocs/luci-static/resources/view/fchomo/client.js:1063
#: htdocs/luci-static/resources/view/fchomo/client.js:1608
@@ -1156,16 +1152,16 @@ msgstr "预期状态"
msgid "Expecting: %s"
msgstr "请输入:%s"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1125
+#: htdocs/luci-static/resources/fchomo/listeners.js:1134
msgid "Expecting: Cannot be empty."
msgstr "请输入:不能为空。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:1245
#: htdocs/luci-static/resources/view/fchomo/node.js:1472
msgid "Expecting: Cannot be enabled when %s is enabled."
msgstr "请输入:当 %s 启用时,无法启用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
+#: htdocs/luci-static/resources/fchomo/listeners.js:1129
msgid "Expecting: Keep empty when %s is enabled."
msgstr "请输入:启用 %s 时保持为空。"
@@ -1174,10 +1170,10 @@ msgstr "请输入:启用 %s 时保持为空。"
msgid "Expecting: Least one of %s or %s."
msgstr "请输入:至少包含 %s 或 %s 中的一个。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:684
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/fchomo/listeners.js:1304
-#: htdocs/luci-static/resources/fchomo/listeners.js:1311
+#: htdocs/luci-static/resources/fchomo/listeners.js:692
+#: htdocs/luci-static/resources/fchomo/listeners.js:698
+#: htdocs/luci-static/resources/fchomo/listeners.js:1319
+#: htdocs/luci-static/resources/fchomo/listeners.js:1326
#: htdocs/luci-static/resources/view/fchomo/node.js:1136
#: htdocs/luci-static/resources/view/fchomo/node.js:1142
#: htdocs/luci-static/resources/view/fchomo/node.js:1690
@@ -1219,7 +1215,7 @@ msgid "Failed to upload, error: %s."
msgstr "上传失败,错误:%s。"
#: htdocs/luci-static/resources/fchomo.js:246
-#: htdocs/luci-static/resources/fchomo/listeners.js:370
+#: htdocs/luci-static/resources/fchomo/listeners.js:378
msgid "Fallback"
msgstr "自动回退"
@@ -1273,7 +1269,7 @@ msgstr "兜底 DNS 服务器 (用于已被投毒污染的域名)"
msgid "Firewall"
msgstr "防火墙"
-#: htdocs/luci-static/resources/fchomo/listeners.js:401
+#: htdocs/luci-static/resources/fchomo/listeners.js:409
#: htdocs/luci-static/resources/view/fchomo/node.js:533
msgid "Flow"
msgstr "流控"
@@ -1313,7 +1309,7 @@ msgstr "强制嗅探域名"
msgid "Format"
msgstr "格式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:769
+#: htdocs/luci-static/resources/fchomo/listeners.js:778
msgid "Forwarding rate limit"
msgstr "转发速率限制"
@@ -1332,7 +1328,7 @@ msgstr ""
msgid "GFW list version"
msgstr "GFW 域名列表版本"
-#: htdocs/luci-static/resources/fchomo/listeners.js:487
+#: htdocs/luci-static/resources/fchomo/listeners.js:495
#: htdocs/luci-static/resources/view/fchomo/node.js:717
msgid "Gecko"
msgstr ""
@@ -1359,8 +1355,8 @@ msgstr "常规设置"
#: htdocs/luci-static/resources/fchomo/listeners.js:262
#: htdocs/luci-static/resources/fchomo/listeners.js:306
#: htdocs/luci-static/resources/fchomo/listeners.js:308
-#: htdocs/luci-static/resources/fchomo/listeners.js:949
-#: htdocs/luci-static/resources/fchomo/listeners.js:1214
+#: htdocs/luci-static/resources/fchomo/listeners.js:958
+#: htdocs/luci-static/resources/fchomo/listeners.js:1223
#: htdocs/luci-static/resources/view/fchomo/global.js:608
#: htdocs/luci-static/resources/view/fchomo/node.js:2266
msgid "Generate"
@@ -1431,7 +1427,7 @@ msgstr "组"
#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:191
-#: htdocs/luci-static/resources/fchomo/listeners.js:702
+#: htdocs/luci-static/resources/fchomo/listeners.js:710
#: htdocs/luci-static/resources/view/fchomo/node.js:1154
#: htdocs/luci-static/resources/view/fchomo/node.js:1677
#: htdocs/luci-static/resources/view/fchomo/node.js:1690
@@ -1446,12 +1442,12 @@ msgstr ""
msgid "HTTP header"
msgstr "HTTP header"
-#: htdocs/luci-static/resources/fchomo/listeners.js:351
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "HTTP mask"
msgstr "HTTP 伪装"
-#: htdocs/luci-static/resources/fchomo/listeners.js:356
+#: htdocs/luci-static/resources/fchomo/listeners.js:364
#: htdocs/luci-static/resources/view/fchomo/node.js:459
#: htdocs/luci-static/resources/view/fchomo/node.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:496
@@ -1471,7 +1467,7 @@ msgstr "HTTP 伪装: %s"
msgid "HTTP request method"
msgstr "HTTP 请求方法"
-#: htdocs/luci-static/resources/fchomo/listeners.js:366
+#: htdocs/luci-static/resources/fchomo/listeners.js:374
#: htdocs/luci-static/resources/view/fchomo/node.js:480
msgid "HTTP root path"
msgstr "HTTP 根路径"
@@ -1480,7 +1476,7 @@ msgstr "HTTP 根路径"
msgid "HTTP/3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:510
+#: htdocs/luci-static/resources/fchomo/listeners.js:518
msgid ""
"HTTP3 server behavior when authentication fails.
A 404 page will be "
"returned if empty."
@@ -1500,20 +1496,20 @@ msgstr "处理域名"
msgid "Handshake mode"
msgstr "握手模式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:752
+#: htdocs/luci-static/resources/fchomo/listeners.js:760
msgid "Handshake target proxy"
msgstr "握手目标代理"
-#: htdocs/luci-static/resources/fchomo/listeners.js:707
+#: htdocs/luci-static/resources/fchomo/listeners.js:715
msgid "Handshake target that supports TLS 1.3"
msgstr "握手目标 (支援 TLS 1.3)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:338
+#: htdocs/luci-static/resources/fchomo/listeners.js:346
#: htdocs/luci-static/resources/view/fchomo/node.js:1089
msgid "Handshake timeout"
msgstr "握手超时"
-#: htdocs/luci-static/resources/fchomo/listeners.js:535
+#: htdocs/luci-static/resources/fchomo/listeners.js:543
msgid "Header to read real client IP from (e.g. X-Forwarded-For)"
msgstr "用于读取客户端真实 IP 的 Header(例如 X-Forwarded-For)"
@@ -1559,7 +1555,7 @@ msgstr "心跳间隔"
msgid "Hidden"
msgstr "隐藏"
-#: htdocs/luci-static/resources/fchomo/listeners.js:715
+#: htdocs/luci-static/resources/fchomo/listeners.js:723
#: htdocs/luci-static/resources/view/fchomo/node.js:1159
msgid "Host that supports TLS 1.3"
msgstr "主机名称 (支援 TLS 1.3)"
@@ -1661,7 +1657,7 @@ msgstr "闲置会话检查间隔"
msgid "Idle session timeout"
msgstr "闲置会话超时"
-#: htdocs/luci-static/resources/fchomo/listeners.js:647
+#: htdocs/luci-static/resources/fchomo/listeners.js:655
msgid "Idle timeout"
msgstr "闲置超时"
@@ -1673,7 +1669,7 @@ msgstr "如果选择了“所有端口”,则取消选中“其他”"
msgid "If Block is selected, uncheck others"
msgstr "如果选择了“阻止”,则取消选中“其他”"
-#: htdocs/luci-static/resources/fchomo/listeners.js:477
+#: htdocs/luci-static/resources/fchomo/listeners.js:485
msgid "Ignore client bandwidth"
msgstr "忽略客户端带宽"
@@ -1706,8 +1702,8 @@ msgstr "导入 mihomo 配置"
msgid "Import rule-set links"
msgstr "导入规则集链接"
-#: htdocs/luci-static/resources/fchomo/listeners.js:466
-#: htdocs/luci-static/resources/fchomo/listeners.js:472
+#: htdocs/luci-static/resources/fchomo/listeners.js:474
+#: htdocs/luci-static/resources/fchomo/listeners.js:480
#: htdocs/luci-static/resources/view/fchomo/node.js:691
#: htdocs/luci-static/resources/view/fchomo/node.js:697
#: htdocs/luci-static/resources/view/fchomo/node.js:2343
@@ -1715,7 +1711,7 @@ msgstr "导入规则集链接"
msgid "In Mbps."
msgstr "单位为 Mbps。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:770
+#: htdocs/luci-static/resources/fchomo/listeners.js:779
msgid "In bps. 0 means no speed limit."
msgstr ""
@@ -1724,6 +1720,7 @@ msgstr ""
msgid "In bytes. %s will be used if empty."
msgstr "单位为字节。留空则使用 %s。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:1294
#: htdocs/luci-static/resources/view/fchomo/node.js:676
#: htdocs/luci-static/resources/view/fchomo/node.js:683
#: htdocs/luci-static/resources/view/fchomo/node.js:757
@@ -1740,9 +1737,9 @@ msgstr "单位为毫秒。留空则使用 %s。"
msgid "In milliseconds."
msgstr "单位为毫秒。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:339
-#: htdocs/luci-static/resources/fchomo/listeners.js:458
-#: htdocs/luci-static/resources/fchomo/listeners.js:648
+#: htdocs/luci-static/resources/fchomo/listeners.js:347
+#: htdocs/luci-static/resources/fchomo/listeners.js:466
+#: htdocs/luci-static/resources/fchomo/listeners.js:656
#: htdocs/luci-static/resources/view/fchomo/node.js:606
#: htdocs/luci-static/resources/view/fchomo/node.js:613
#: htdocs/luci-static/resources/view/fchomo/node.js:1768
@@ -1766,7 +1763,7 @@ msgid ""
"connection timeout."
msgstr "单位为秒。配置后握手时不受外层连接超时影响。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:865
+#: htdocs/luci-static/resources/fchomo/listeners.js:874
#: htdocs/luci-static/resources/view/fchomo/node.js:1251
msgid ""
"In the order of one Padding-Length and one Padding-"
@@ -1809,7 +1806,7 @@ msgstr "引入所有代理节点。"
msgid "Info"
msgstr "信息"
-#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:565
#: htdocs/luci-static/resources/view/fchomo/node.js:763
msgid "Initial congestion window size"
msgstr "初始拥塞窗口大小"
@@ -1827,11 +1824,11 @@ msgstr "噩梦"
msgid "Interface Control"
msgstr "接口控制"
-#: htdocs/luci-static/resources/fchomo/listeners.js:677
-#: htdocs/luci-static/resources/fchomo/listeners.js:687
-#: htdocs/luci-static/resources/fchomo/listeners.js:692
-#: htdocs/luci-static/resources/fchomo/listeners.js:1122
-#: htdocs/luci-static/resources/fchomo/listeners.js:1238
+#: htdocs/luci-static/resources/fchomo/listeners.js:685
+#: htdocs/luci-static/resources/fchomo/listeners.js:695
+#: htdocs/luci-static/resources/fchomo/listeners.js:700
+#: htdocs/luci-static/resources/fchomo/listeners.js:1131
+#: htdocs/luci-static/resources/fchomo/listeners.js:1247
#: htdocs/luci-static/resources/view/fchomo/node.js:1129
#: htdocs/luci-static/resources/view/fchomo/node.js:1139
#: htdocs/luci-static/resources/view/fchomo/node.js:1144
@@ -1862,12 +1859,12 @@ msgstr "Keep-alive 周期"
msgid "Key"
msgstr "密钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1141
+#: htdocs/luci-static/resources/fchomo/listeners.js:1150
#: htdocs/luci-static/resources/view/fchomo/node.js:1424
msgid "Key path"
msgstr "证书路径"
-#: htdocs/luci-static/resources/fchomo/listeners.js:884
+#: htdocs/luci-static/resources/fchomo/listeners.js:893
msgid "Keypairs"
msgstr "密钥对"
@@ -1902,12 +1899,12 @@ msgstr "怠惰查询"
msgid "Lazy query."
msgstr "怠惰查询。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:358
+#: htdocs/luci-static/resources/fchomo/listeners.js:366
#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Legacy"
msgstr "传统"
-#: htdocs/luci-static/resources/fchomo/listeners.js:410
+#: htdocs/luci-static/resources/fchomo/listeners.js:418
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1919,7 +1916,7 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr "有时性能更好。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1064
+#: htdocs/luci-static/resources/fchomo/listeners.js:1073
#: htdocs/luci-static/resources/view/fchomo/node.js:1337
msgid "List of supported application level protocols, in order of preference."
msgstr "支持的应用层协议协商列表,按顺序排列。"
@@ -2004,7 +2001,7 @@ msgstr "MTU"
msgid "Masque"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:509
+#: htdocs/luci-static/resources/fchomo/listeners.js:517
msgid "Masquerade"
msgstr "伪装"
@@ -2040,12 +2037,12 @@ msgstr "匹配规则集。"
msgid "Max Early Data"
msgstr "前置数据最大值"
-#: htdocs/luci-static/resources/fchomo/listeners.js:451
+#: htdocs/luci-static/resources/fchomo/listeners.js:459
#: htdocs/luci-static/resources/view/fchomo/node.js:657
msgid "Max UDP relay packet size"
msgstr "UDP 中继数据包最大尺寸"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1355
+#: htdocs/luci-static/resources/fchomo/listeners.js:1370
msgid "Max buffered posts"
msgstr "POST 最大缓冲"
@@ -2061,17 +2058,17 @@ msgstr "最大连接数"
msgid "Max count of failures"
msgstr "最大失败次数"
-#: htdocs/luci-static/resources/fchomo/listeners.js:563
+#: htdocs/luci-static/resources/fchomo/listeners.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:769
msgid "Max datagram frame size"
msgstr "最大数据报帧大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:471
+#: htdocs/luci-static/resources/fchomo/listeners.js:479
#: htdocs/luci-static/resources/view/fchomo/node.js:696
msgid "Max download speed"
msgstr "最大下载速度"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1366
+#: htdocs/luci-static/resources/fchomo/listeners.js:1381
#: htdocs/luci-static/resources/view/fchomo/node.js:1814
msgid "Max each POST bytes"
msgstr "POST 最大字节数"
@@ -2080,11 +2077,11 @@ msgstr "POST 最大字节数"
msgid "Max open streams"
msgstr "限制打开流的数量"
-#: htdocs/luci-static/resources/fchomo/listeners.js:522
+#: htdocs/luci-static/resources/fchomo/listeners.js:530
msgid "Max realms"
msgstr "最大 Realms 总数"
-#: htdocs/luci-static/resources/fchomo/listeners.js:528
+#: htdocs/luci-static/resources/fchomo/listeners.js:536
msgid "Max realms per client IP"
msgstr "每客户端 IP 最大 Realms 总数"
@@ -2100,7 +2097,7 @@ msgstr "最大可复用秒数"
msgid "Max reuse times"
msgstr "最大复用次数"
-#: htdocs/luci-static/resources/fchomo/listeners.js:465
+#: htdocs/luci-static/resources/fchomo/listeners.js:473
#: htdocs/luci-static/resources/view/fchomo/node.js:690
msgid "Max upload speed"
msgstr "最大上传速度"
@@ -2118,12 +2115,12 @@ msgstr ""
"在打开新连接之前,连接中的最大多路复用流数量。
与 %s 和 "
"%s 冲突。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:323
+#: htdocs/luci-static/resources/fchomo/listeners.js:327
#: htdocs/luci-static/resources/view/fchomo/node.js:433
msgid "Maximum padding rate"
msgstr "最大填充率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:331
+#: htdocs/luci-static/resources/fchomo/listeners.js:339
#: htdocs/luci-static/resources/view/fchomo/node.js:441
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
@@ -2187,7 +2184,7 @@ msgstr "混合 系统 TCP 栈和 gVisor UDP 栈。"
msgid "Mixed port"
msgstr "混合端口"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1373
+#: htdocs/luci-static/resources/fchomo/listeners.js:1388
#: htdocs/luci-static/resources/view/fchomo/node.js:1864
msgid "Multiplex"
msgstr "多路复用"
@@ -2206,7 +2203,7 @@ msgstr "多路复用"
msgid "NOT"
msgstr "NOT"
-#: htdocs/luci-static/resources/fchomo/listeners.js:615
+#: htdocs/luci-static/resources/fchomo/listeners.js:623
msgid "Name of the Proxy group as outbound."
msgstr "出站代理组的名称。"
@@ -2218,7 +2215,7 @@ msgstr "用于下载供应商订阅的代理组名称。"
msgid "Name of the Proxy group to download rule set."
msgstr "用于下载规则集订阅的代理组名称。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/fchomo/listeners.js:611
msgid "Name of the Sub rule used for inbound matching."
msgstr "用于入站匹配的子规则名称。"
@@ -2234,7 +2231,7 @@ msgstr "原生外观"
msgid "Network"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:654
+#: htdocs/luci-static/resources/fchomo/listeners.js:662
msgid "Network type"
msgstr "网络类型"
@@ -2246,7 +2243,7 @@ msgstr ""
msgid "No Authentication IP ranges"
msgstr "无需认证的 IP 范围"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1350
+#: htdocs/luci-static/resources/fchomo/listeners.js:1365
msgid "No SSE header"
msgstr "无 SSE header"
@@ -2319,28 +2316,28 @@ msgstr ""
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:701
+#: htdocs/luci-static/resources/fchomo/listeners.js:709
#: htdocs/luci-static/resources/view/fchomo/node.js:1153
msgid "Obfs Mode"
msgstr "Obfs 模式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:504
+#: htdocs/luci-static/resources/fchomo/listeners.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:734
msgid "Obfuscate maximum packet size"
msgstr "混淆最大数据包大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:499
+#: htdocs/luci-static/resources/fchomo/listeners.js:507
#: htdocs/luci-static/resources/view/fchomo/node.js:729
msgid "Obfuscate minimum packet size"
msgstr "混淆最小数据包大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/fchomo/listeners.js:499
#: htdocs/luci-static/resources/view/fchomo/node.js:721
msgid "Obfuscate password"
msgstr "混淆密码"
#: htdocs/luci-static/resources/fchomo/listeners.js:291
-#: htdocs/luci-static/resources/fchomo/listeners.js:484
+#: htdocs/luci-static/resources/fchomo/listeners.js:492
#: htdocs/luci-static/resources/view/fchomo/node.js:412
#: htdocs/luci-static/resources/view/fchomo/node.js:714
msgid "Obfuscate type"
@@ -2357,7 +2354,7 @@ msgstr "混淆为%s"
msgid "One or more numbers in the range 0-63 separated by commas"
msgstr "0-63 范围内的一个或多个数字,以逗号分隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1058
+#: htdocs/luci-static/resources/fchomo/listeners.js:1067
msgid "Only applicable when %s are used as a frontend."
msgstr "仅当 %s 用作前端时适用。"
@@ -2445,25 +2442,25 @@ msgstr "数据包编码"
msgid "Padding bytes"
msgstr "填充字节"
-#: htdocs/luci-static/resources/fchomo/listeners.js:440
+#: htdocs/luci-static/resources/fchomo/listeners.js:448
msgid "Padding scheme"
msgstr "填充方案"
-#: htdocs/luci-static/resources/fchomo/listeners.js:863
+#: htdocs/luci-static/resources/fchomo/listeners.js:872
#: htdocs/luci-static/resources/view/fchomo/node.js:1249
msgid "Paddings"
msgstr "填充 (Paddings)"
#: htdocs/luci-static/resources/fchomo/listeners.js:167
#: htdocs/luci-static/resources/fchomo/listeners.js:184
-#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:738
#: htdocs/luci-static/resources/view/fchomo/node.js:324
#: htdocs/luci-static/resources/view/fchomo/node.js:345
#: htdocs/luci-static/resources/view/fchomo/node.js:1174
msgid "Password"
msgstr "密码"
-#: htdocs/luci-static/resources/fchomo/listeners.js:581
+#: htdocs/luci-static/resources/fchomo/listeners.js:589
#: htdocs/luci-static/resources/view/fchomo/node.js:787
msgid "Path MTU Discovery"
msgstr "路径 MTU 发现"
@@ -2476,7 +2473,7 @@ msgstr "捆绑包路径"
msgid "Path in bundle: %s"
msgstr "在捆绑包%s中的路径"
-#: htdocs/luci-static/resources/fchomo/listeners.js:803
+#: htdocs/luci-static/resources/fchomo/listeners.js:812
#: htdocs/luci-static/resources/view/fchomo/node.js:2173
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:373
msgid "Payload"
@@ -2544,7 +2541,7 @@ msgstr ""
msgid "Please type %s fields of mihomo config."
msgstr "请输入 mihomo 配置的 %s 字段。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:667
+#: htdocs/luci-static/resources/fchomo/listeners.js:675
#: htdocs/luci-static/resources/view/fchomo/node.js:1117
msgid "Plugin"
msgstr "插件"
@@ -2554,7 +2551,7 @@ msgstr "插件"
msgid "Plugin fields"
msgstr "插件字段"
-#: htdocs/luci-static/resources/fchomo/listeners.js:673
+#: htdocs/luci-static/resources/fchomo/listeners.js:681
#: htdocs/luci-static/resources/view/fchomo/node.js:1123
msgid "Plugin type"
msgstr "插件类型"
@@ -2584,14 +2581,14 @@ msgstr "端口"
msgid "Ports pool"
msgstr "端口池"
-#: htdocs/luci-static/resources/fchomo/listeners.js:377
-#: htdocs/luci-static/resources/fchomo/listeners.js:516
+#: htdocs/luci-static/resources/fchomo/listeners.js:385
+#: htdocs/luci-static/resources/fchomo/listeners.js:524
#: htdocs/luci-static/resources/view/fchomo/node.js:504
#: htdocs/luci-static/resources/view/fchomo/node.js:927
msgid "Pre-shared key"
msgstr "预共享密钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1001
+#: htdocs/luci-static/resources/fchomo/listeners.js:1010
#: htdocs/luci-static/resources/view/fchomo/node.js:1284
msgid "Pre-shared key of rendezvous server"
msgstr "牵线服务器的预共享密钥"
@@ -2698,7 +2695,7 @@ msgstr "代理节点"
msgid "Proxy chain"
msgstr "代理链"
-#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:622
#: htdocs/luci-static/resources/view/fchomo/client.js:813
#: htdocs/luci-static/resources/view/fchomo/client.js:1643
#: htdocs/luci-static/resources/view/fchomo/node.js:2197
@@ -2727,12 +2724,12 @@ msgstr ""
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:552
+#: htdocs/luci-static/resources/fchomo/listeners.js:560
#: htdocs/luci-static/resources/view/fchomo/node.js:751
msgid "QUIC based 0-RTT"
msgstr "基于 QUIC 的 0-RTT"
-#: htdocs/luci-static/resources/fchomo/listeners.js:546
+#: htdocs/luci-static/resources/fchomo/listeners.js:554
#: htdocs/luci-static/resources/view/fchomo/node.js:740
msgid "QUIC versions"
msgstr "QUIC 版本"
@@ -2742,8 +2739,8 @@ msgstr "QUIC 版本"
msgid "Quick Reload"
msgstr "快速重载"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1123
-#: htdocs/luci-static/resources/fchomo/listeners.js:1229
+#: htdocs/luci-static/resources/fchomo/listeners.js:1132
+#: htdocs/luci-static/resources/fchomo/listeners.js:1238
#: htdocs/luci-static/resources/view/fchomo/node.js:1465
msgid "REALITY"
msgstr "REALITY"
@@ -2752,24 +2749,28 @@ msgstr "REALITY"
msgid "REALITY X25519MLKEM768 PQC support"
msgstr "REALITY X25519MLKEM768 后量子加密支持"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1277
+#: htdocs/luci-static/resources/fchomo/listeners.js:1286
msgid "REALITY certificate issued to"
msgstr "REALITY 证书颁发给"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1245
+#: htdocs/luci-static/resources/fchomo/listeners.js:1254
msgid "REALITY handshake server"
msgstr "REALITY 握手服务器"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1252
+#: htdocs/luci-static/resources/fchomo/listeners.js:1293
+msgid "REALITY max time difference"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:1261
msgid "REALITY private key"
msgstr "REALITY 私钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1267
+#: htdocs/luci-static/resources/fchomo/listeners.js:1276
#: htdocs/luci-static/resources/view/fchomo/node.js:1481
msgid "REALITY public key"
msgstr "REALITY 公钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1271
+#: htdocs/luci-static/resources/fchomo/listeners.js:1280
#: htdocs/luci-static/resources/view/fchomo/node.js:1486
msgid "REALITY short ID"
msgstr "REALITY 标识符"
@@ -2780,8 +2781,8 @@ msgstr "REALITY 标识符"
msgid "REMATCH-NAME marking"
msgstr "REMATCH-NAME 打标"
-#: htdocs/luci-static/resources/fchomo/listeners.js:834
-#: htdocs/luci-static/resources/fchomo/listeners.js:853
+#: htdocs/luci-static/resources/fchomo/listeners.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
#: htdocs/luci-static/resources/view/fchomo/node.js:1239
msgid "RTT"
msgstr ""
@@ -2798,17 +2799,17 @@ msgstr "留空将使用随机令牌。"
msgid "Randomized traffic characteristics"
msgstr "随机化流量特征"
-#: htdocs/luci-static/resources/fchomo/listeners.js:990
+#: htdocs/luci-static/resources/fchomo/listeners.js:999
#: htdocs/luci-static/resources/view/fchomo/node.js:1273
msgid "Realm"
msgstr "Realm"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1006
+#: htdocs/luci-static/resources/fchomo/listeners.js:1015
#: htdocs/luci-static/resources/view/fchomo/node.js:1289
msgid "Realm ID"
msgstr "Realm ID"
-#: htdocs/luci-static/resources/fchomo/listeners.js:539
+#: htdocs/luci-static/resources/fchomo/listeners.js:547
msgid "Realm name pattern"
msgstr "Realm 名称模式"
@@ -2886,7 +2887,7 @@ msgstr "移除"
msgid "Remove idles"
msgstr "移除闲置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:995
+#: htdocs/luci-static/resources/fchomo/listeners.js:1004
#: htdocs/luci-static/resources/view/fchomo/node.js:1278
msgid "Rendezvous server"
msgstr "牵线服务器"
@@ -2903,7 +2904,7 @@ msgstr "替换节点名称"
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1329
+#: htdocs/luci-static/resources/fchomo/listeners.js:1344
#: htdocs/luci-static/resources/view/fchomo/node.js:1738
#: htdocs/luci-static/resources/view/fchomo/node.js:1745
msgid "Request path"
@@ -2934,11 +2935,11 @@ msgstr "保留字段字节"
msgid "Resources management"
msgstr "资源管理"
-#: htdocs/luci-static/resources/fchomo/listeners.js:676
-#: htdocs/luci-static/resources/fchomo/listeners.js:686
-#: htdocs/luci-static/resources/fchomo/listeners.js:691
-#: htdocs/luci-static/resources/fchomo/listeners.js:1121
-#: htdocs/luci-static/resources/fchomo/listeners.js:1237
+#: htdocs/luci-static/resources/fchomo/listeners.js:684
+#: htdocs/luci-static/resources/fchomo/listeners.js:694
+#: htdocs/luci-static/resources/fchomo/listeners.js:699
+#: htdocs/luci-static/resources/fchomo/listeners.js:1130
+#: htdocs/luci-static/resources/fchomo/listeners.js:1246
#: htdocs/luci-static/resources/view/fchomo/node.js:1128
#: htdocs/luci-static/resources/view/fchomo/node.js:1138
#: htdocs/luci-static/resources/view/fchomo/node.js:1143
@@ -2946,7 +2947,7 @@ msgstr "资源管理"
msgid "Restls"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:745
+#: htdocs/luci-static/resources/fchomo/listeners.js:753
#: htdocs/luci-static/resources/view/fchomo/node.js:1197
msgid "Restls script"
msgstr "Restls 剧本"
@@ -2983,7 +2984,7 @@ msgstr "路由 DSCP"
msgid "Routing GFW"
msgstr "路由 GFW 流量"
-#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
#: htdocs/luci-static/resources/view/fchomo/global.js:776
#: htdocs/luci-static/resources/view/fchomo/node.js:1966
#: htdocs/luci-static/resources/view/fchomo/node.js:2385
@@ -3070,7 +3071,7 @@ msgstr ""
msgid "STUN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1012
+#: htdocs/luci-static/resources/fchomo/listeners.js:1021
#: htdocs/luci-static/resources/view/fchomo/node.js:1295
msgid "STUN servers"
msgstr "STUN 服务器"
@@ -3083,7 +3084,7 @@ msgstr "SUB-RULE"
msgid "SUoT version"
msgstr "SUoT 版本"
-#: htdocs/luci-static/resources/fchomo/listeners.js:486
+#: htdocs/luci-static/resources/fchomo/listeners.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:716
msgid "Salamander"
msgstr "Salamander"
@@ -3131,9 +3132,9 @@ msgstr "同时向%s和%s发起查询。"
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr "发送 300-600 秒的随机票证,以供客户端 0-RTT 重用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:834
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:1121
+#: htdocs/luci-static/resources/fchomo/listeners.js:1151
#: htdocs/luci-static/resources/view/fchomo/server.js:58
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
@@ -3143,7 +3144,7 @@ msgstr "服务端"
msgid "Server address"
msgstr "服务器地址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1323
+#: htdocs/luci-static/resources/fchomo/listeners.js:1338
#: htdocs/luci-static/resources/view/fchomo/node.js:1717
#: htdocs/luci-static/resources/view/fchomo/node.js:1723
msgid "Server hostname"
@@ -3166,11 +3167,11 @@ msgstr "服务状态"
msgid "ShadowQUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:675
-#: htdocs/luci-static/resources/fchomo/listeners.js:685
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
-#: htdocs/luci-static/resources/fchomo/listeners.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:683
+#: htdocs/luci-static/resources/fchomo/listeners.js:693
+#: htdocs/luci-static/resources/fchomo/listeners.js:698
+#: htdocs/luci-static/resources/fchomo/listeners.js:1129
+#: htdocs/luci-static/resources/fchomo/listeners.js:1245
#: htdocs/luci-static/resources/view/fchomo/node.js:1127
#: htdocs/luci-static/resources/view/fchomo/node.js:1137
#: htdocs/luci-static/resources/view/fchomo/node.js:1142
@@ -3183,17 +3184,17 @@ msgstr ""
msgid "Shadowsocks"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:422
+#: htdocs/luci-static/resources/fchomo/listeners.js:430
#: htdocs/luci-static/resources/view/fchomo/node.js:582
msgid "Shadowsocks chipher"
msgstr "Shadowsocks 加密方法"
-#: htdocs/luci-static/resources/fchomo/listeners.js:417
+#: htdocs/luci-static/resources/fchomo/listeners.js:425
#: htdocs/luci-static/resources/view/fchomo/node.js:577
msgid "Shadowsocks encrypt"
msgstr "Shadowsocks 加密"
-#: htdocs/luci-static/resources/fchomo/listeners.js:430
+#: htdocs/luci-static/resources/fchomo/listeners.js:438
#: htdocs/luci-static/resources/view/fchomo/node.js:590
msgid "Shadowsocks password"
msgstr "Shadowsocks 密码"
@@ -3282,12 +3283,12 @@ msgstr ""
msgid "Strategy"
msgstr "策略"
-#: htdocs/luci-static/resources/fchomo/listeners.js:569
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
#: htdocs/luci-static/resources/view/fchomo/node.js:775
msgid "Stream-level receive window size"
msgstr "流级接收窗口大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:602
+#: htdocs/luci-static/resources/fchomo/listeners.js:610
#: htdocs/luci-static/resources/view/fchomo/client.js:1400
#: htdocs/luci-static/resources/view/fchomo/client.js:1409
msgid "Sub rule"
@@ -3350,7 +3351,7 @@ msgstr "系统 DNS"
#: htdocs/luci-static/resources/fchomo.js:200
#: htdocs/luci-static/resources/fchomo.js:201
#: htdocs/luci-static/resources/fchomo.js:211
-#: htdocs/luci-static/resources/fchomo/listeners.js:655
+#: htdocs/luci-static/resources/fchomo/listeners.js:663
#: htdocs/luci-static/resources/view/fchomo/client.js:618
#: htdocs/luci-static/resources/view/fchomo/client.js:710
msgid "TCP"
@@ -3392,8 +3393,8 @@ msgstr ""
msgid "TFO"
msgstr "TCP 快速打开 (TFO)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:703
-#: htdocs/luci-static/resources/fchomo/listeners.js:1022
+#: htdocs/luci-static/resources/fchomo/listeners.js:711
+#: htdocs/luci-static/resources/fchomo/listeners.js:1031
#: htdocs/luci-static/resources/view/fchomo/global.js:550
#: htdocs/luci-static/resources/view/fchomo/node.js:469
#: htdocs/luci-static/resources/view/fchomo/node.js:1155
@@ -3401,7 +3402,7 @@ msgstr "TCP 快速打开 (TFO)"
msgid "TLS"
msgstr "TLS"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1063
+#: htdocs/luci-static/resources/fchomo/listeners.js:1072
#: htdocs/luci-static/resources/view/fchomo/node.js:1336
msgid "TLS ALPN"
msgstr "TLS ALPN"
@@ -3429,11 +3430,11 @@ msgstr ""
msgid "Tailscale"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
msgid "Target address"
msgstr "目标地址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:478
+#: htdocs/luci-static/resources/fchomo/listeners.js:486
msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr "让客户端使用 BBR 流控算法。"
@@ -3447,13 +3448,13 @@ msgstr "让客户端使用 BBR 流控算法。"
msgid "The %s address used by local machine in the %s network."
msgstr "本机 %s 地址,用于在 %s 网络中使用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:1151
#: htdocs/luci-static/resources/view/fchomo/node.js:1425
msgid "The %s private key, in PEM format."
msgstr "%s私钥,需要 PEM 格式。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
-#: htdocs/luci-static/resources/fchomo/listeners.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:1121
+#: htdocs/luci-static/resources/fchomo/listeners.js:1174
#: htdocs/luci-static/resources/view/fchomo/global.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:1411
msgid "The %s public key, in PEM format."
@@ -3473,6 +3474,10 @@ msgstr "Sudoku 服务器提供的 ED25519 可用私钥 或 UUID。"
msgid "The ED25519 master public key or UUID generated by Sudoku."
msgstr "Sudoku 生成的 ED25519 主公钥 或 UUID。"
+#: htdocs/luci-static/resources/view/fchomo/node.js:601
+msgid "The client metadata sent to the server."
+msgstr "发送到服务器的客户端元数据。"
+
#: htdocs/luci-static/resources/view/fchomo/global.js:324
msgid "The default value is 2:00 every day."
msgstr "默认值为每天 2:00。"
@@ -3483,7 +3488,7 @@ msgid ""
"connection timeout is used."
msgstr "默认值为%s,表示仅使用外层连接超时。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:866
+#: htdocs/luci-static/resources/fchomo/listeners.js:875
#: htdocs/luci-static/resources/view/fchomo/node.js:1252
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
@@ -3499,16 +3504,16 @@ msgstr "匹配 %s 的将被视为未被投毒污染。"
msgid "The matching %s will be deemed as poisoned."
msgstr "匹配 %s 的将被视为已被投毒污染。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:753
+#: htdocs/luci-static/resources/fchomo/listeners.js:761
msgid "The proxy used to connect to the handshake target."
msgstr "用于连接握手目标的代理。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:864
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
#: htdocs/luci-static/resources/view/fchomo/node.js:1250
msgid "The server and client can set different padding parameters."
msgstr "服务器和客户端可以设置不同的填充参数。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1223
+#: htdocs/luci-static/resources/fchomo/listeners.js:1232
#: htdocs/luci-static/resources/view/fchomo/global.js:615
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr "此 ECH 参数需要添加到域名的 HTTPS 记录中。"
@@ -3568,7 +3573,7 @@ msgid "Transit proxy node"
msgstr "中转代理节点"
#: htdocs/luci-static/resources/fchomo/listeners.js:194
-#: htdocs/luci-static/resources/fchomo/listeners.js:1287
+#: htdocs/luci-static/resources/fchomo/listeners.js:1302
#: htdocs/luci-static/resources/view/fchomo/node.js:360
#: htdocs/luci-static/resources/view/fchomo/node.js:1670
msgid "Transport"
@@ -3579,7 +3584,7 @@ msgstr "传输层"
msgid "Transport fields"
msgstr "传输层字段"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1292
+#: htdocs/luci-static/resources/fchomo/listeners.js:1307
#: htdocs/luci-static/resources/view/fchomo/node.js:1675
msgid "Transport type"
msgstr "传输层类型"
@@ -3598,7 +3603,7 @@ msgstr ""
msgid "TrustTunnel"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:534
+#: htdocs/luci-static/resources/fchomo/listeners.js:542
msgid "Trusted proxy header"
msgstr "可信代理 Header"
@@ -3649,8 +3654,8 @@ msgstr "类型"
#: htdocs/luci-static/resources/fchomo.js:208
#: htdocs/luci-static/resources/fchomo.js:209
#: htdocs/luci-static/resources/fchomo.js:210
-#: htdocs/luci-static/resources/fchomo/listeners.js:656
-#: htdocs/luci-static/resources/fchomo/listeners.js:661
+#: htdocs/luci-static/resources/fchomo/listeners.js:664
+#: htdocs/luci-static/resources/fchomo/listeners.js:669
#: htdocs/luci-static/resources/view/fchomo/client.js:617
#: htdocs/luci-static/resources/view/fchomo/client.js:709
#: htdocs/luci-static/resources/view/fchomo/node.js:1097
@@ -3691,8 +3696,8 @@ msgid "URL test"
msgstr "自动选择"
#: htdocs/luci-static/resources/fchomo/listeners.js:215
-#: htdocs/luci-static/resources/fchomo/listeners.js:395
-#: htdocs/luci-static/resources/fchomo/listeners.js:445
+#: htdocs/luci-static/resources/fchomo/listeners.js:403
+#: htdocs/luci-static/resources/fchomo/listeners.js:453
#: htdocs/luci-static/resources/view/fchomo/node.js:527
#: htdocs/luci-static/resources/view/fchomo/node.js:626
msgid "UUID"
@@ -3737,18 +3742,18 @@ msgstr "更新失败。"
msgid "Update interval"
msgstr "更新间隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1389
+#: htdocs/luci-static/resources/fchomo/listeners.js:1404
#: htdocs/luci-static/resources/view/fchomo/node.js:1929
msgid "Upload bandwidth"
msgstr "上传带宽"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1390
+#: htdocs/luci-static/resources/fchomo/listeners.js:1405
#: htdocs/luci-static/resources/view/fchomo/node.js:1930
msgid "Upload bandwidth in Mbps."
msgstr "上传带宽(单位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1133
-#: htdocs/luci-static/resources/fchomo/listeners.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:1182
#: htdocs/luci-static/resources/view/fchomo/node.js:1416
msgid "Upload certificate"
msgstr "上传证书"
@@ -3757,14 +3762,14 @@ msgstr "上传证书"
msgid "Upload initial package"
msgstr "上传初始资源包"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1148
+#: htdocs/luci-static/resources/fchomo/listeners.js:1157
#: htdocs/luci-static/resources/view/fchomo/node.js:1430
msgid "Upload key"
msgstr "上传密钥"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1136
-#: htdocs/luci-static/resources/fchomo/listeners.js:1151
-#: htdocs/luci-static/resources/fchomo/listeners.js:1176
+#: htdocs/luci-static/resources/fchomo/listeners.js:1145
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/fchomo/listeners.js:1185
#: htdocs/luci-static/resources/view/fchomo/global.js:306
#: htdocs/luci-static/resources/view/fchomo/node.js:1419
#: htdocs/luci-static/resources/view/fchomo/node.js:1433
@@ -3819,7 +3824,7 @@ msgid "User-hint is mandatory"
msgstr "User-hint 是必填项"
#: htdocs/luci-static/resources/fchomo/listeners.js:162
-#: htdocs/luci-static/resources/fchomo/listeners.js:723
+#: htdocs/luci-static/resources/fchomo/listeners.js:731
#: htdocs/luci-static/resources/view/fchomo/node.js:319
#: htdocs/luci-static/resources/view/fchomo/node.js:1167
msgid "Username"
@@ -3882,8 +3887,8 @@ msgstr "详细"
msgid "Verify if given"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:384
-#: htdocs/luci-static/resources/fchomo/listeners.js:737
+#: htdocs/luci-static/resources/fchomo/listeners.js:392
+#: htdocs/luci-static/resources/fchomo/listeners.js:745
#: htdocs/luci-static/resources/view/fchomo/node.js:511
#: htdocs/luci-static/resources/view/fchomo/node.js:1181
msgid "Version"
@@ -3914,10 +3919,10 @@ msgstr "以 75% 的概率等待随机 0-111 毫秒。"
msgid "Warning"
msgstr "警告"
-#: htdocs/luci-static/resources/fchomo/listeners.js:362
-#: htdocs/luci-static/resources/fchomo/listeners.js:1294
-#: htdocs/luci-static/resources/fchomo/listeners.js:1305
-#: htdocs/luci-static/resources/fchomo/listeners.js:1312
+#: htdocs/luci-static/resources/fchomo/listeners.js:370
+#: htdocs/luci-static/resources/fchomo/listeners.js:1309
+#: htdocs/luci-static/resources/fchomo/listeners.js:1320
+#: htdocs/luci-static/resources/fchomo/listeners.js:1327
#: htdocs/luci-static/resources/view/fchomo/node.js:465
#: htdocs/luci-static/resources/view/fchomo/node.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:1680
@@ -3960,14 +3965,14 @@ msgstr "WireGuard 要求 base64 编码的私钥。"
msgid "Wireguard"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1295
-#: htdocs/luci-static/resources/fchomo/listeners.js:1306
+#: htdocs/luci-static/resources/fchomo/listeners.js:1310
+#: htdocs/luci-static/resources/fchomo/listeners.js:1321
#: htdocs/luci-static/resources/view/fchomo/node.js:1681
#: htdocs/luci-static/resources/view/fchomo/node.js:1701
msgid "XHTTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1342
+#: htdocs/luci-static/resources/fchomo/listeners.js:1357
#: htdocs/luci-static/resources/view/fchomo/node.js:1796
msgid "XHTTP mode"
msgstr "XHTTP 模式"
@@ -3985,7 +3990,7 @@ msgstr ""
msgid "XMUX:"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:825
+#: htdocs/luci-static/resources/fchomo/listeners.js:834
msgid "XOR mode"
msgstr "XOR 模式"
@@ -4062,8 +4067,8 @@ msgstr "bbr"
msgid "bbr3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1138
-#: htdocs/luci-static/resources/fchomo/listeners.js:1178
+#: htdocs/luci-static/resources/fchomo/listeners.js:1147
+#: htdocs/luci-static/resources/fchomo/listeners.js:1187
#: htdocs/luci-static/resources/view/fchomo/node.js:1421
msgid "certificate"
msgstr "证书"
@@ -4083,8 +4088,8 @@ msgstr ""
msgid "cubic"
msgstr "cubic"
-#: htdocs/luci-static/resources/fchomo/listeners.js:777
-#: htdocs/luci-static/resources/fchomo/listeners.js:808
+#: htdocs/luci-static/resources/fchomo/listeners.js:786
+#: htdocs/luci-static/resources/fchomo/listeners.js:817
msgid "decryption"
msgstr "decryption"
@@ -4096,20 +4101,20 @@ msgstr "dnsmasq 自行选择上游服务器。 (可能影响 CDN 准确性)"
msgid "down"
msgstr "Hysteria 下载速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:812
+#: htdocs/luci-static/resources/fchomo/listeners.js:821
#: htdocs/luci-static/resources/view/fchomo/node.js:1204
#: htdocs/luci-static/resources/view/fchomo/node.js:1227
msgid "encryption"
msgstr "encryption"
-#: htdocs/luci-static/resources/fchomo/listeners.js:346
+#: htdocs/luci-static/resources/fchomo/listeners.js:354
#: htdocs/luci-static/resources/view/fchomo/node.js:449
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr "false = 带宽优化下行 true = 纯 Sudoku 下行。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1293
-#: htdocs/luci-static/resources/fchomo/listeners.js:1304
-#: htdocs/luci-static/resources/fchomo/listeners.js:1311
+#: htdocs/luci-static/resources/fchomo/listeners.js:1308
+#: htdocs/luci-static/resources/fchomo/listeners.js:1319
+#: htdocs/luci-static/resources/fchomo/listeners.js:1326
#: htdocs/luci-static/resources/view/fchomo/node.js:1679
#: htdocs/luci-static/resources/view/fchomo/node.js:1692
#: htdocs/luci-static/resources/view/fchomo/node.js:1699
@@ -4125,7 +4130,7 @@ msgstr ""
msgid "gRPC ping interval"
msgstr "gRPC ping 间隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1336
+#: htdocs/luci-static/resources/fchomo/listeners.js:1351
#: htdocs/luci-static/resources/view/fchomo/node.js:1758
msgid "gRPC service name"
msgstr "gRPC 服务名称"
@@ -4151,7 +4156,7 @@ msgstr ""
msgid "h3-l4proxy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:977
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
msgid "least one keypair required"
msgstr "至少需要一对密钥"
@@ -4216,13 +4221,13 @@ msgid "not included \",\""
msgstr "不包含 \",\""
#: htdocs/luci-static/resources/fchomo.js:233
-#: htdocs/luci-static/resources/fchomo/listeners.js:604
-#: htdocs/luci-static/resources/fchomo/listeners.js:607
+#: htdocs/luci-static/resources/fchomo/listeners.js:612
+#: htdocs/luci-static/resources/fchomo/listeners.js:615
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:674
-#: htdocs/luci-static/resources/fchomo/listeners.js:684
+#: htdocs/luci-static/resources/fchomo/listeners.js:682
+#: htdocs/luci-static/resources/fchomo/listeners.js:692
#: htdocs/luci-static/resources/view/fchomo/node.js:1124
#: htdocs/luci-static/resources/view/fchomo/node.js:1136
msgid "obfs-simple"
@@ -4248,17 +4253,17 @@ msgstr ""
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1346
+#: htdocs/luci-static/resources/fchomo/listeners.js:1361
#: htdocs/luci-static/resources/view/fchomo/node.js:1800
msgid "packet-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:360
+#: htdocs/luci-static/resources/fchomo/listeners.js:368
#: htdocs/luci-static/resources/view/fchomo/node.js:463
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1162
#: htdocs/luci-static/resources/view/fchomo/node.js:1435
msgid "private key"
msgstr "私钥"
@@ -4284,7 +4289,7 @@ msgstr "规则集"
msgid "smux"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
#: htdocs/luci-static/resources/view/fchomo/node.js:462
msgid "split-stream"
msgstr ""
@@ -4293,17 +4298,17 @@ msgstr ""
msgid "src"
msgstr "src"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1344
+#: htdocs/luci-static/resources/fchomo/listeners.js:1359
#: htdocs/luci-static/resources/view/fchomo/node.js:1798
msgid "stream-one"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1345
+#: htdocs/luci-static/resources/fchomo/listeners.js:1360
#: htdocs/luci-static/resources/view/fchomo/node.js:1799
msgid "stream-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1361
+#: htdocs/luci-static/resources/fchomo/listeners.js:1376
msgid "stream-up server seconds"
msgstr ""
@@ -4343,8 +4348,8 @@ msgstr "独立值"
msgid "up"
msgstr "Hysteria 上传速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:385
-#: htdocs/luci-static/resources/fchomo/listeners.js:738
+#: htdocs/luci-static/resources/fchomo/listeners.js:393
+#: htdocs/luci-static/resources/fchomo/listeners.js:746
#: htdocs/luci-static/resources/view/fchomo/node.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:653
#: htdocs/luci-static/resources/view/fchomo/node.js:1110
@@ -4352,27 +4357,27 @@ msgstr "Hysteria 上传速率"
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:386
-#: htdocs/luci-static/resources/fchomo/listeners.js:739
+#: htdocs/luci-static/resources/fchomo/listeners.js:394
+#: htdocs/luci-static/resources/fchomo/listeners.js:747
#: htdocs/luci-static/resources/view/fchomo/node.js:513
#: htdocs/luci-static/resources/view/fchomo/node.js:1111
#: htdocs/luci-static/resources/view/fchomo/node.js:1183
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:387
-#: htdocs/luci-static/resources/fchomo/listeners.js:740
+#: htdocs/luci-static/resources/fchomo/listeners.js:395
+#: htdocs/luci-static/resources/fchomo/listeners.js:748
#: htdocs/luci-static/resources/view/fchomo/node.js:514
#: htdocs/luci-static/resources/view/fchomo/node.js:1184
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:388
+#: htdocs/luci-static/resources/fchomo/listeners.js:396
#: htdocs/luci-static/resources/view/fchomo/node.js:515
msgid "v4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:389
+#: htdocs/luci-static/resources/fchomo/listeners.js:397
#: htdocs/luci-static/resources/view/fchomo/node.js:516
msgid "v5"
msgstr ""
diff --git a/luci-app-fchomo/po/zh_Hant/fchomo.po b/luci-app-fchomo/po/zh_Hant/fchomo.po
index 2ebbd85e..aac4b0e7 100644
--- a/luci-app-fchomo/po/zh_Hant/fchomo.po
+++ b/luci-app-fchomo/po/zh_Hant/fchomo.po
@@ -40,9 +40,9 @@ msgstr "%s 連接埠"
msgid "(Imported)"
msgstr "(已導入)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1156
-#: htdocs/luci-static/resources/fchomo/listeners.js:1164
+#: htdocs/luci-static/resources/fchomo/listeners.js:1165
#: htdocs/luci-static/resources/fchomo/listeners.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1182
#: htdocs/luci-static/resources/view/fchomo/global.js:564
#: htdocs/luci-static/resources/view/fchomo/global.js:570
#: htdocs/luci-static/resources/view/fchomo/node.js:1410
@@ -127,9 +127,9 @@ msgstr "-1 表示停用它。"
msgid "0 or 1 only."
msgstr "僅限 0 或 1。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1134
-#: htdocs/luci-static/resources/fchomo/listeners.js:1149
-#: htdocs/luci-static/resources/fchomo/listeners.js:1174
+#: htdocs/luci-static/resources/fchomo/listeners.js:1143
+#: htdocs/luci-static/resources/fchomo/listeners.js:1158
+#: htdocs/luci-static/resources/fchomo/listeners.js:1183
#: htdocs/luci-static/resources/view/fchomo/node.js:1417
#: htdocs/luci-static/resources/view/fchomo/node.js:1431
msgid "Save your configuration before uploading files!"
@@ -320,7 +320,7 @@ msgstr ""
msgid "Allow access to the local LAN via the exit node."
msgstr "允許透過出口節點存取本地區域網路。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1057
+#: htdocs/luci-static/resources/fchomo/listeners.js:1066
msgid "Allow insecure connections"
msgstr "允許不安全的連線"
@@ -336,7 +336,7 @@ msgstr "已是最新版本。"
msgid "Already in updating."
msgstr "已在更新中。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:409
+#: htdocs/luci-static/resources/fchomo/listeners.js:417
#: htdocs/luci-static/resources/view/fchomo/node.js:541
msgid "Alter ID"
msgstr "額外 ID"
@@ -363,7 +363,7 @@ msgstr "作為 dnsmasq 的最優先上游"
msgid "As the TOP upstream of dnsmasq."
msgstr "作為 dnsmasq 的最優先上游。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:457
+#: htdocs/luci-static/resources/fchomo/listeners.js:465
msgid "Auth timeout"
msgstr "認證逾時"
@@ -375,8 +375,8 @@ msgstr "認證長度"
msgid "Authentication key"
msgstr "認證金鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:361
-#: htdocs/luci-static/resources/fchomo/listeners.js:1343
+#: htdocs/luci-static/resources/fchomo/listeners.js:369
+#: htdocs/luci-static/resources/fchomo/listeners.js:1358
#: htdocs/luci-static/resources/view/fchomo/global.js:423
#: htdocs/luci-static/resources/view/fchomo/node.js:464
#: htdocs/luci-static/resources/view/fchomo/node.js:488
@@ -399,7 +399,7 @@ msgstr "自動更新"
msgid "Auto update resources."
msgstr "自動更新資源文件。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:638
+#: htdocs/luci-static/resources/fchomo/listeners.js:646
#: htdocs/luci-static/resources/view/fchomo/node.js:1074
msgid "BBR profile"
msgstr "BBR 設定檔"
@@ -482,10 +482,10 @@ msgstr "繞過 CN 流量"
msgid "Bypass DSCP"
msgstr "繞過 DSCP"
-#: htdocs/luci-static/resources/fchomo/listeners.js:359
-#: htdocs/luci-static/resources/fchomo/listeners.js:360
-#: htdocs/luci-static/resources/fchomo/listeners.js:361
-#: htdocs/luci-static/resources/fchomo/listeners.js:362
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
+#: htdocs/luci-static/resources/fchomo/listeners.js:368
+#: htdocs/luci-static/resources/fchomo/listeners.js:369
+#: htdocs/luci-static/resources/fchomo/listeners.js:370
#: htdocs/luci-static/resources/view/fchomo/node.js:462
#: htdocs/luci-static/resources/view/fchomo/node.js:463
#: htdocs/luci-static/resources/view/fchomo/node.js:464
@@ -518,7 +518,7 @@ msgid ""
"Certificate fingerprint. Used to implement SSL Pinning and prevent MitM."
msgstr "憑證指紋。用於實現 SSL憑證固定 並防止 MitM。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1111
+#: htdocs/luci-static/resources/fchomo/listeners.js:1120
#: htdocs/luci-static/resources/view/fchomo/node.js:1410
msgid "Certificate path"
msgstr "憑證路徑"
@@ -580,8 +580,8 @@ msgstr ""
"點擊此處下載"
"最新的初始包。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:853
-#: htdocs/luci-static/resources/fchomo/listeners.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
+#: htdocs/luci-static/resources/fchomo/listeners.js:1174
#: htdocs/luci-static/resources/view/fchomo/global.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:1239
#: htdocs/luci-static/resources/view/fchomo/node.js:1411
@@ -590,11 +590,11 @@ msgstr ""
msgid "Client"
msgstr "客戶端"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1164
+#: htdocs/luci-static/resources/fchomo/listeners.js:1173
msgid "Client Auth Certificate path"
msgstr "客戶端認證憑證路徑"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1156
+#: htdocs/luci-static/resources/fchomo/listeners.js:1165
msgid "Client Auth type"
msgstr "客戶端認證類型"
@@ -610,10 +610,6 @@ msgstr "客戶端密鑰"
msgid "Client metadata"
msgstr "客戶端元資料"
-#: htdocs/luci-static/resources/view/fchomo/node.js:601
-msgid "The client metadata sent to the server."
-msgstr "發送到伺服器的客戶端元資料。"
-
#: htdocs/luci-static/resources/view/fchomo/global.js:176
msgid "Client status"
msgstr "客戶端狀態"
@@ -636,7 +632,7 @@ msgstr "常用連接埠(繞過 P2P 流量)"
msgid "Complete"
msgstr "完成"
-#: htdocs/luci-static/resources/fchomo/listeners.js:630
+#: htdocs/luci-static/resources/fchomo/listeners.js:638
#: htdocs/luci-static/resources/view/fchomo/node.js:1056
#: htdocs/luci-static/resources/view/fchomo/node.js:1065
msgid "Congestion controller"
@@ -650,7 +646,7 @@ msgstr "連接檢查"
msgid "Connection reuse"
msgstr "連接重用"
-#: htdocs/luci-static/resources/fchomo/listeners.js:575
+#: htdocs/luci-static/resources/fchomo/listeners.js:583
#: htdocs/luci-static/resources/view/fchomo/node.js:781
msgid "Connection-level receive window size"
msgstr "連接級接收視窗大小"
@@ -775,7 +771,7 @@ msgstr "預設 DNS 伺服器"
msgid "Default selected"
msgstr "預設選中"
-#: htdocs/luci-static/resources/fchomo/listeners.js:547
+#: htdocs/luci-static/resources/fchomo/listeners.js:555
msgid "Default version, Support %s."
msgstr "預設版本,支援 %s。"
@@ -820,7 +816,7 @@ msgstr "直連 IPv6 位址"
msgid "Direct MAC-s"
msgstr "直連 MAC 位址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:485
+#: htdocs/luci-static/resources/fchomo/listeners.js:493
#: htdocs/luci-static/resources/view/fchomo/global.js:424
#: htdocs/luci-static/resources/view/fchomo/node.js:715
#: htdocs/luci-static/resources/view/fchomo/node.js:849
@@ -877,12 +873,12 @@ msgstr "不要在 ClientHello 中傳送伺服器名稱。"
msgid "Donot verifying server certificate."
msgstr "不驗證伺服器憑證。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1395
+#: htdocs/luci-static/resources/fchomo/listeners.js:1410
#: htdocs/luci-static/resources/view/fchomo/node.js:1935
msgid "Download bandwidth"
msgstr "下載頻寬"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1396
+#: htdocs/luci-static/resources/fchomo/listeners.js:1411
#: htdocs/luci-static/resources/view/fchomo/node.js:1936
msgid "Download bandwidth in Mbps."
msgstr "下載頻寬(單位:Mbps)。"
@@ -903,12 +899,12 @@ msgstr "雙棧"
msgid "ECH HTTPS record query servername"
msgstr "ECH HTTPS 記錄查詢網域"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1222
+#: htdocs/luci-static/resources/fchomo/listeners.js:1231
#: htdocs/luci-static/resources/view/fchomo/node.js:1444
msgid "ECH config"
msgstr "ECH 配置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1181
+#: htdocs/luci-static/resources/fchomo/listeners.js:1190
msgid "ECH key"
msgstr "ECH 密鑰"
@@ -1001,12 +997,12 @@ msgstr ""
msgid "Enable ECH"
msgstr "啟用 ECH"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1383
+#: htdocs/luci-static/resources/fchomo/listeners.js:1398
#: htdocs/luci-static/resources/view/fchomo/node.js:1923
msgid "Enable TCP Brutal"
msgstr "啟用 TCP Brutal"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1384
+#: htdocs/luci-static/resources/fchomo/listeners.js:1399
#: htdocs/luci-static/resources/view/fchomo/node.js:1924
msgid "Enable TCP Brutal congestion control algorithm"
msgstr "啟用 TCP Brutal 擁塞控制演算法。"
@@ -1019,12 +1015,12 @@ msgstr "啟用 Fast open"
msgid "Enable multiplexing only for TCP."
msgstr "僅為 TCP 啟用多路復用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:345
+#: htdocs/luci-static/resources/fchomo/listeners.js:353
#: htdocs/luci-static/resources/view/fchomo/node.js:448
msgid "Enable obfuscate for downlink"
msgstr "啟用下行鏈路混淆"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1378
+#: htdocs/luci-static/resources/fchomo/listeners.js:1393
#: htdocs/luci-static/resources/view/fchomo/node.js:1906
msgid "Enable padding"
msgstr "啟用填充"
@@ -1039,7 +1035,7 @@ msgid ""
"Enable the SUoT protocol, requires server support. Conflict with Multiplex."
msgstr "啟用 SUoT 協議,需要服務端支援。與多路復用衝突。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:492
+#: htdocs/luci-static/resources/fchomo/listeners.js:500
#: htdocs/luci-static/resources/view/fchomo/node.js:722
msgid ""
"Enabling obfuscation will make the server incompatible with standard QUIC "
@@ -1050,7 +1046,7 @@ msgstr "啟用混淆將使伺服器與標準的 QUIC 連線不相容,失去 HT
msgid "Encrypted Hello"
msgstr "加密 Hello"
-#: htdocs/luci-static/resources/fchomo/listeners.js:816
+#: htdocs/luci-static/resources/fchomo/listeners.js:825
msgid "Encryption method"
msgstr "加密方法"
@@ -1134,10 +1130,10 @@ msgstr "預期狀態"
#: htdocs/luci-static/resources/fchomo.js:1973
#: htdocs/luci-static/resources/fchomo.js:1982
#: htdocs/luci-static/resources/fchomo/listeners.js:284
-#: htdocs/luci-static/resources/fchomo/listeners.js:331
-#: htdocs/luci-static/resources/fchomo/listeners.js:845
-#: htdocs/luci-static/resources/fchomo/listeners.js:876
-#: htdocs/luci-static/resources/fchomo/listeners.js:977
+#: htdocs/luci-static/resources/fchomo/listeners.js:339
+#: htdocs/luci-static/resources/fchomo/listeners.js:854
+#: htdocs/luci-static/resources/fchomo/listeners.js:885
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
#: htdocs/luci-static/resources/view/fchomo/client.js:71
#: htdocs/luci-static/resources/view/fchomo/client.js:1063
#: htdocs/luci-static/resources/view/fchomo/client.js:1608
@@ -1156,16 +1152,16 @@ msgstr "預期狀態"
msgid "Expecting: %s"
msgstr "請輸入:%s"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1125
+#: htdocs/luci-static/resources/fchomo/listeners.js:1134
msgid "Expecting: Cannot be empty."
msgstr "請輸入:不能為空。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:1245
#: htdocs/luci-static/resources/view/fchomo/node.js:1472
msgid "Expecting: Cannot be enabled when %s is enabled."
msgstr "請輸入:當 %s 啟用時,無法啟用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
+#: htdocs/luci-static/resources/fchomo/listeners.js:1129
msgid "Expecting: Keep empty when %s is enabled."
msgstr "請輸入:啟用 %s 時保持為空。"
@@ -1174,10 +1170,10 @@ msgstr "請輸入:啟用 %s 時保持為空。"
msgid "Expecting: Least one of %s or %s."
msgstr "請輸入:至少包含 %s 或 %s 中的一個。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:684
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/fchomo/listeners.js:1304
-#: htdocs/luci-static/resources/fchomo/listeners.js:1311
+#: htdocs/luci-static/resources/fchomo/listeners.js:692
+#: htdocs/luci-static/resources/fchomo/listeners.js:698
+#: htdocs/luci-static/resources/fchomo/listeners.js:1319
+#: htdocs/luci-static/resources/fchomo/listeners.js:1326
#: htdocs/luci-static/resources/view/fchomo/node.js:1136
#: htdocs/luci-static/resources/view/fchomo/node.js:1142
#: htdocs/luci-static/resources/view/fchomo/node.js:1690
@@ -1219,7 +1215,7 @@ msgid "Failed to upload, error: %s."
msgstr "上傳失敗,錯誤:%s。"
#: htdocs/luci-static/resources/fchomo.js:246
-#: htdocs/luci-static/resources/fchomo/listeners.js:370
+#: htdocs/luci-static/resources/fchomo/listeners.js:378
msgid "Fallback"
msgstr "自動回退"
@@ -1273,7 +1269,7 @@ msgstr "兜底 DNS 伺服器 (用於已被投毒汙染的網域)"
msgid "Firewall"
msgstr "防火牆"
-#: htdocs/luci-static/resources/fchomo/listeners.js:401
+#: htdocs/luci-static/resources/fchomo/listeners.js:409
#: htdocs/luci-static/resources/view/fchomo/node.js:533
msgid "Flow"
msgstr "流控"
@@ -1313,7 +1309,7 @@ msgstr "強制嗅探網域"
msgid "Format"
msgstr "格式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:769
+#: htdocs/luci-static/resources/fchomo/listeners.js:778
msgid "Forwarding rate limit"
msgstr "轉發速率限制"
@@ -1332,7 +1328,7 @@ msgstr ""
msgid "GFW list version"
msgstr "GFW 網域清單版本"
-#: htdocs/luci-static/resources/fchomo/listeners.js:487
+#: htdocs/luci-static/resources/fchomo/listeners.js:495
#: htdocs/luci-static/resources/view/fchomo/node.js:717
msgid "Gecko"
msgstr ""
@@ -1359,8 +1355,8 @@ msgstr "常規設定"
#: htdocs/luci-static/resources/fchomo/listeners.js:262
#: htdocs/luci-static/resources/fchomo/listeners.js:306
#: htdocs/luci-static/resources/fchomo/listeners.js:308
-#: htdocs/luci-static/resources/fchomo/listeners.js:949
-#: htdocs/luci-static/resources/fchomo/listeners.js:1214
+#: htdocs/luci-static/resources/fchomo/listeners.js:958
+#: htdocs/luci-static/resources/fchomo/listeners.js:1223
#: htdocs/luci-static/resources/view/fchomo/global.js:608
#: htdocs/luci-static/resources/view/fchomo/node.js:2266
msgid "Generate"
@@ -1431,7 +1427,7 @@ msgstr "組"
#: htdocs/luci-static/resources/fchomo.js:154
#: htdocs/luci-static/resources/fchomo.js:191
-#: htdocs/luci-static/resources/fchomo/listeners.js:702
+#: htdocs/luci-static/resources/fchomo/listeners.js:710
#: htdocs/luci-static/resources/view/fchomo/node.js:1154
#: htdocs/luci-static/resources/view/fchomo/node.js:1677
#: htdocs/luci-static/resources/view/fchomo/node.js:1690
@@ -1446,12 +1442,12 @@ msgstr ""
msgid "HTTP header"
msgstr "HTTP header"
-#: htdocs/luci-static/resources/fchomo/listeners.js:351
+#: htdocs/luci-static/resources/fchomo/listeners.js:359
#: htdocs/luci-static/resources/view/fchomo/node.js:454
msgid "HTTP mask"
msgstr "HTTP 偽裝"
-#: htdocs/luci-static/resources/fchomo/listeners.js:356
+#: htdocs/luci-static/resources/fchomo/listeners.js:364
#: htdocs/luci-static/resources/view/fchomo/node.js:459
#: htdocs/luci-static/resources/view/fchomo/node.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:496
@@ -1471,7 +1467,7 @@ msgstr "HTTP 偽裝: %s"
msgid "HTTP request method"
msgstr "HTTP 請求方法"
-#: htdocs/luci-static/resources/fchomo/listeners.js:366
+#: htdocs/luci-static/resources/fchomo/listeners.js:374
#: htdocs/luci-static/resources/view/fchomo/node.js:480
msgid "HTTP root path"
msgstr "HTTP 根路徑"
@@ -1480,7 +1476,7 @@ msgstr "HTTP 根路徑"
msgid "HTTP/3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:510
+#: htdocs/luci-static/resources/fchomo/listeners.js:518
msgid ""
"HTTP3 server behavior when authentication fails.
A 404 page will be "
"returned if empty."
@@ -1500,20 +1496,20 @@ msgstr "處理網域"
msgid "Handshake mode"
msgstr "握手模式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:752
+#: htdocs/luci-static/resources/fchomo/listeners.js:760
msgid "Handshake target proxy"
msgstr "握手目標代理"
-#: htdocs/luci-static/resources/fchomo/listeners.js:707
+#: htdocs/luci-static/resources/fchomo/listeners.js:715
msgid "Handshake target that supports TLS 1.3"
msgstr "握手目標 (支援 TLS 1.3)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:338
+#: htdocs/luci-static/resources/fchomo/listeners.js:346
#: htdocs/luci-static/resources/view/fchomo/node.js:1089
msgid "Handshake timeout"
msgstr "握手逾時"
-#: htdocs/luci-static/resources/fchomo/listeners.js:535
+#: htdocs/luci-static/resources/fchomo/listeners.js:543
msgid "Header to read real client IP from (e.g. X-Forwarded-For)"
msgstr "用於讀取客戶端真實 IP 的 Header(例如 X-Forwarded-For)"
@@ -1559,7 +1555,7 @@ msgstr "心跳間隔"
msgid "Hidden"
msgstr "隱藏"
-#: htdocs/luci-static/resources/fchomo/listeners.js:715
+#: htdocs/luci-static/resources/fchomo/listeners.js:723
#: htdocs/luci-static/resources/view/fchomo/node.js:1159
msgid "Host that supports TLS 1.3"
msgstr "主機名稱 (支援 TLS 1.3)"
@@ -1661,7 +1657,7 @@ msgstr "閒置會話檢查間隔"
msgid "Idle session timeout"
msgstr "閒置會話逾時"
-#: htdocs/luci-static/resources/fchomo/listeners.js:647
+#: htdocs/luci-static/resources/fchomo/listeners.js:655
msgid "Idle timeout"
msgstr "閒置逾時"
@@ -1673,7 +1669,7 @@ msgstr "如果選擇了“所有連接埠”,則取消選取“其他”"
msgid "If Block is selected, uncheck others"
msgstr "如果選擇了“封鎖”,則取消選取“其他”"
-#: htdocs/luci-static/resources/fchomo/listeners.js:477
+#: htdocs/luci-static/resources/fchomo/listeners.js:485
msgid "Ignore client bandwidth"
msgstr "忽略客戶端頻寬"
@@ -1706,8 +1702,8 @@ msgstr "導入 mihomo 配置"
msgid "Import rule-set links"
msgstr "導入規則集連結"
-#: htdocs/luci-static/resources/fchomo/listeners.js:466
-#: htdocs/luci-static/resources/fchomo/listeners.js:472
+#: htdocs/luci-static/resources/fchomo/listeners.js:474
+#: htdocs/luci-static/resources/fchomo/listeners.js:480
#: htdocs/luci-static/resources/view/fchomo/node.js:691
#: htdocs/luci-static/resources/view/fchomo/node.js:697
#: htdocs/luci-static/resources/view/fchomo/node.js:2343
@@ -1715,7 +1711,7 @@ msgstr "導入規則集連結"
msgid "In Mbps."
msgstr "單位為 Mbps。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:770
+#: htdocs/luci-static/resources/fchomo/listeners.js:779
msgid "In bps. 0 means no speed limit."
msgstr ""
@@ -1724,6 +1720,7 @@ msgstr ""
msgid "In bytes. %s will be used if empty."
msgstr "單位為位元組。留空則使用 %s。"
+#: htdocs/luci-static/resources/fchomo/listeners.js:1294
#: htdocs/luci-static/resources/view/fchomo/node.js:676
#: htdocs/luci-static/resources/view/fchomo/node.js:683
#: htdocs/luci-static/resources/view/fchomo/node.js:757
@@ -1740,9 +1737,9 @@ msgstr "單位為毫秒。留空則使用 %s。"
msgid "In milliseconds."
msgstr "單位為毫秒。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:339
-#: htdocs/luci-static/resources/fchomo/listeners.js:458
-#: htdocs/luci-static/resources/fchomo/listeners.js:648
+#: htdocs/luci-static/resources/fchomo/listeners.js:347
+#: htdocs/luci-static/resources/fchomo/listeners.js:466
+#: htdocs/luci-static/resources/fchomo/listeners.js:656
#: htdocs/luci-static/resources/view/fchomo/node.js:606
#: htdocs/luci-static/resources/view/fchomo/node.js:613
#: htdocs/luci-static/resources/view/fchomo/node.js:1768
@@ -1766,7 +1763,7 @@ msgid ""
"connection timeout."
msgstr "單位為秒。配置後握手時不受外層連線逾時影響。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:865
+#: htdocs/luci-static/resources/fchomo/listeners.js:874
#: htdocs/luci-static/resources/view/fchomo/node.js:1251
msgid ""
"In the order of one Padding-Length and one Padding-"
@@ -1809,7 +1806,7 @@ msgstr "引入所有代理節點。"
msgid "Info"
msgstr "訊息"
-#: htdocs/luci-static/resources/fchomo/listeners.js:557
+#: htdocs/luci-static/resources/fchomo/listeners.js:565
#: htdocs/luci-static/resources/view/fchomo/node.js:763
msgid "Initial congestion window size"
msgstr "初始擁塞視窗大小"
@@ -1827,11 +1824,11 @@ msgstr "噩夢"
msgid "Interface Control"
msgstr "介面控制"
-#: htdocs/luci-static/resources/fchomo/listeners.js:677
-#: htdocs/luci-static/resources/fchomo/listeners.js:687
-#: htdocs/luci-static/resources/fchomo/listeners.js:692
-#: htdocs/luci-static/resources/fchomo/listeners.js:1122
-#: htdocs/luci-static/resources/fchomo/listeners.js:1238
+#: htdocs/luci-static/resources/fchomo/listeners.js:685
+#: htdocs/luci-static/resources/fchomo/listeners.js:695
+#: htdocs/luci-static/resources/fchomo/listeners.js:700
+#: htdocs/luci-static/resources/fchomo/listeners.js:1131
+#: htdocs/luci-static/resources/fchomo/listeners.js:1247
#: htdocs/luci-static/resources/view/fchomo/node.js:1129
#: htdocs/luci-static/resources/view/fchomo/node.js:1139
#: htdocs/luci-static/resources/view/fchomo/node.js:1144
@@ -1862,12 +1859,12 @@ msgstr "Keep-alive 週期"
msgid "Key"
msgstr "密鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1141
+#: htdocs/luci-static/resources/fchomo/listeners.js:1150
#: htdocs/luci-static/resources/view/fchomo/node.js:1424
msgid "Key path"
msgstr "憑證路徑"
-#: htdocs/luci-static/resources/fchomo/listeners.js:884
+#: htdocs/luci-static/resources/fchomo/listeners.js:893
msgid "Keypairs"
msgstr "密鑰對"
@@ -1902,12 +1899,12 @@ msgstr "怠惰查詢"
msgid "Lazy query."
msgstr "怠惰查詢。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:358
+#: htdocs/luci-static/resources/fchomo/listeners.js:366
#: htdocs/luci-static/resources/view/fchomo/node.js:461
msgid "Legacy"
msgstr "傳統"
-#: htdocs/luci-static/resources/fchomo/listeners.js:410
+#: htdocs/luci-static/resources/fchomo/listeners.js:418
msgid ""
"Legacy protocol support (VMess MD5 Authentication) is provided for "
"compatibility purposes only, use of alterId > 1 is not recommended."
@@ -1919,7 +1916,7 @@ msgstr ""
msgid "Less compatibility and sometimes better performance."
msgstr "有時效能較好。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1064
+#: htdocs/luci-static/resources/fchomo/listeners.js:1073
#: htdocs/luci-static/resources/view/fchomo/node.js:1337
msgid "List of supported application level protocols, in order of preference."
msgstr "支援的應用層協議協商清單,依序排列。"
@@ -2004,7 +2001,7 @@ msgstr "MTU"
msgid "Masque"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:509
+#: htdocs/luci-static/resources/fchomo/listeners.js:517
msgid "Masquerade"
msgstr "偽裝"
@@ -2040,12 +2037,12 @@ msgstr "匹配規則集。"
msgid "Max Early Data"
msgstr "前置數據最大值"
-#: htdocs/luci-static/resources/fchomo/listeners.js:451
+#: htdocs/luci-static/resources/fchomo/listeners.js:459
#: htdocs/luci-static/resources/view/fchomo/node.js:657
msgid "Max UDP relay packet size"
msgstr "UDP 中繼數據包最大尺寸"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1355
+#: htdocs/luci-static/resources/fchomo/listeners.js:1370
msgid "Max buffered posts"
msgstr "POST 最大緩衝"
@@ -2061,17 +2058,17 @@ msgstr "最大連線數"
msgid "Max count of failures"
msgstr "最大失敗次數"
-#: htdocs/luci-static/resources/fchomo/listeners.js:563
+#: htdocs/luci-static/resources/fchomo/listeners.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:769
msgid "Max datagram frame size"
msgstr "最大資料封包大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:471
+#: htdocs/luci-static/resources/fchomo/listeners.js:479
#: htdocs/luci-static/resources/view/fchomo/node.js:696
msgid "Max download speed"
msgstr "最大下載速度"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1366
+#: htdocs/luci-static/resources/fchomo/listeners.js:1381
#: htdocs/luci-static/resources/view/fchomo/node.js:1814
msgid "Max each POST bytes"
msgstr "POST 最大位元組數"
@@ -2080,11 +2077,11 @@ msgstr "POST 最大位元組數"
msgid "Max open streams"
msgstr "限制打開流的數量"
-#: htdocs/luci-static/resources/fchomo/listeners.js:522
+#: htdocs/luci-static/resources/fchomo/listeners.js:530
msgid "Max realms"
msgstr "最大 Realms 數量"
-#: htdocs/luci-static/resources/fchomo/listeners.js:528
+#: htdocs/luci-static/resources/fchomo/listeners.js:536
msgid "Max realms per client IP"
msgstr "每客戶端 IP 最大 Realms 數量"
@@ -2100,7 +2097,7 @@ msgstr "最大可重用秒數"
msgid "Max reuse times"
msgstr "最大重用次數"
-#: htdocs/luci-static/resources/fchomo/listeners.js:465
+#: htdocs/luci-static/resources/fchomo/listeners.js:473
#: htdocs/luci-static/resources/view/fchomo/node.js:690
msgid "Max upload speed"
msgstr "最大上傳速度"
@@ -2118,12 +2115,12 @@ msgstr ""
"在開啟新連線之前,連線中的最大多路復用流數量。
與 %s 和 "
"%s 衝突。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:323
+#: htdocs/luci-static/resources/fchomo/listeners.js:327
#: htdocs/luci-static/resources/view/fchomo/node.js:433
msgid "Maximum padding rate"
msgstr "最大填充率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:331
+#: htdocs/luci-static/resources/fchomo/listeners.js:339
#: htdocs/luci-static/resources/view/fchomo/node.js:441
msgid ""
"Maximum padding rate must be greater than or equal to the minimum padding "
@@ -2187,7 +2184,7 @@ msgstr "混合 系統 TCP 堆栈和 gVisor UDP 堆栈
msgid "Mixed port"
msgstr "混合連接埠"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1373
+#: htdocs/luci-static/resources/fchomo/listeners.js:1388
#: htdocs/luci-static/resources/view/fchomo/node.js:1864
msgid "Multiplex"
msgstr "多路復用"
@@ -2206,7 +2203,7 @@ msgstr "多路復用"
msgid "NOT"
msgstr "NOT"
-#: htdocs/luci-static/resources/fchomo/listeners.js:615
+#: htdocs/luci-static/resources/fchomo/listeners.js:623
msgid "Name of the Proxy group as outbound."
msgstr "出站代理組的名稱。"
@@ -2218,7 +2215,7 @@ msgstr "用於下載供應商訂閱的代理組名稱。"
msgid "Name of the Proxy group to download rule set."
msgstr "用於下載規則集訂閱的代理組名稱。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:603
+#: htdocs/luci-static/resources/fchomo/listeners.js:611
msgid "Name of the Sub rule used for inbound matching."
msgstr "用於入站匹配的子規則名稱。"
@@ -2234,7 +2231,7 @@ msgstr "原生外觀"
msgid "Network"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:654
+#: htdocs/luci-static/resources/fchomo/listeners.js:662
msgid "Network type"
msgstr "網路類型"
@@ -2246,7 +2243,7 @@ msgstr ""
msgid "No Authentication IP ranges"
msgstr "無需認證的 IP 範圍"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1350
+#: htdocs/luci-static/resources/fchomo/listeners.js:1365
msgid "No SSE header"
msgstr "無 SSE header"
@@ -2319,28 +2316,28 @@ msgstr ""
msgid "ON"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:701
+#: htdocs/luci-static/resources/fchomo/listeners.js:709
#: htdocs/luci-static/resources/view/fchomo/node.js:1153
msgid "Obfs Mode"
msgstr "Obfs 模式"
-#: htdocs/luci-static/resources/fchomo/listeners.js:504
+#: htdocs/luci-static/resources/fchomo/listeners.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:734
msgid "Obfuscate maximum packet size"
msgstr "混淆最大資料包大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:499
+#: htdocs/luci-static/resources/fchomo/listeners.js:507
#: htdocs/luci-static/resources/view/fchomo/node.js:729
msgid "Obfuscate minimum packet size"
msgstr "混淆最小資料包大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:491
+#: htdocs/luci-static/resources/fchomo/listeners.js:499
#: htdocs/luci-static/resources/view/fchomo/node.js:721
msgid "Obfuscate password"
msgstr "混淆密碼"
#: htdocs/luci-static/resources/fchomo/listeners.js:291
-#: htdocs/luci-static/resources/fchomo/listeners.js:484
+#: htdocs/luci-static/resources/fchomo/listeners.js:492
#: htdocs/luci-static/resources/view/fchomo/node.js:412
#: htdocs/luci-static/resources/view/fchomo/node.js:714
msgid "Obfuscate type"
@@ -2357,7 +2354,7 @@ msgstr "混淆為%s"
msgid "One or more numbers in the range 0-63 separated by commas"
msgstr "0-63 範圍內的一個或多個數字,以逗號分隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1058
+#: htdocs/luci-static/resources/fchomo/listeners.js:1067
msgid "Only applicable when %s are used as a frontend."
msgstr "僅當 %s 用作前端時適用。"
@@ -2445,25 +2442,25 @@ msgstr "數據包編碼"
msgid "Padding bytes"
msgstr "填充位元組"
-#: htdocs/luci-static/resources/fchomo/listeners.js:440
+#: htdocs/luci-static/resources/fchomo/listeners.js:448
msgid "Padding scheme"
msgstr "填充方案"
-#: htdocs/luci-static/resources/fchomo/listeners.js:863
+#: htdocs/luci-static/resources/fchomo/listeners.js:872
#: htdocs/luci-static/resources/view/fchomo/node.js:1249
msgid "Paddings"
msgstr "填充 (Paddings)"
#: htdocs/luci-static/resources/fchomo/listeners.js:167
#: htdocs/luci-static/resources/fchomo/listeners.js:184
-#: htdocs/luci-static/resources/fchomo/listeners.js:730
+#: htdocs/luci-static/resources/fchomo/listeners.js:738
#: htdocs/luci-static/resources/view/fchomo/node.js:324
#: htdocs/luci-static/resources/view/fchomo/node.js:345
#: htdocs/luci-static/resources/view/fchomo/node.js:1174
msgid "Password"
msgstr "密碼"
-#: htdocs/luci-static/resources/fchomo/listeners.js:581
+#: htdocs/luci-static/resources/fchomo/listeners.js:589
#: htdocs/luci-static/resources/view/fchomo/node.js:787
msgid "Path MTU Discovery"
msgstr "路徑 MTU 發現"
@@ -2476,7 +2473,7 @@ msgstr "捆綁包路徑"
msgid "Path in bundle: %s"
msgstr "在捆綁包%s中的路徑"
-#: htdocs/luci-static/resources/fchomo/listeners.js:803
+#: htdocs/luci-static/resources/fchomo/listeners.js:812
#: htdocs/luci-static/resources/view/fchomo/node.js:2173
#: htdocs/luci-static/resources/view/fchomo/ruleset.js:373
msgid "Payload"
@@ -2544,7 +2541,7 @@ msgstr ""
msgid "Please type %s fields of mihomo config."
msgstr "請輸入 mihomo 配置的 %s 欄位。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:667
+#: htdocs/luci-static/resources/fchomo/listeners.js:675
#: htdocs/luci-static/resources/view/fchomo/node.js:1117
msgid "Plugin"
msgstr "外掛"
@@ -2554,7 +2551,7 @@ msgstr "外掛"
msgid "Plugin fields"
msgstr "外掛欄位"
-#: htdocs/luci-static/resources/fchomo/listeners.js:673
+#: htdocs/luci-static/resources/fchomo/listeners.js:681
#: htdocs/luci-static/resources/view/fchomo/node.js:1123
msgid "Plugin type"
msgstr "外掛類型"
@@ -2584,14 +2581,14 @@ msgstr "連接埠"
msgid "Ports pool"
msgstr "連接埠池"
-#: htdocs/luci-static/resources/fchomo/listeners.js:377
-#: htdocs/luci-static/resources/fchomo/listeners.js:516
+#: htdocs/luci-static/resources/fchomo/listeners.js:385
+#: htdocs/luci-static/resources/fchomo/listeners.js:524
#: htdocs/luci-static/resources/view/fchomo/node.js:504
#: htdocs/luci-static/resources/view/fchomo/node.js:927
msgid "Pre-shared key"
msgstr "預先共用金鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1001
+#: htdocs/luci-static/resources/fchomo/listeners.js:1010
#: htdocs/luci-static/resources/view/fchomo/node.js:1284
msgid "Pre-shared key of rendezvous server"
msgstr "牽線伺服器的預先共用金鑰"
@@ -2698,7 +2695,7 @@ msgstr "代理節點"
msgid "Proxy chain"
msgstr "代理鏈"
-#: htdocs/luci-static/resources/fchomo/listeners.js:614
+#: htdocs/luci-static/resources/fchomo/listeners.js:622
#: htdocs/luci-static/resources/view/fchomo/client.js:813
#: htdocs/luci-static/resources/view/fchomo/client.js:1643
#: htdocs/luci-static/resources/view/fchomo/node.js:2197
@@ -2727,12 +2724,12 @@ msgstr ""
msgid "QUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:552
+#: htdocs/luci-static/resources/fchomo/listeners.js:560
#: htdocs/luci-static/resources/view/fchomo/node.js:751
msgid "QUIC based 0-RTT"
msgstr "基於 QUIC 的 0-RTT"
-#: htdocs/luci-static/resources/fchomo/listeners.js:546
+#: htdocs/luci-static/resources/fchomo/listeners.js:554
#: htdocs/luci-static/resources/view/fchomo/node.js:740
msgid "QUIC versions"
msgstr "QUIC 版本"
@@ -2742,8 +2739,8 @@ msgstr "QUIC 版本"
msgid "Quick Reload"
msgstr "快速重載"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1123
-#: htdocs/luci-static/resources/fchomo/listeners.js:1229
+#: htdocs/luci-static/resources/fchomo/listeners.js:1132
+#: htdocs/luci-static/resources/fchomo/listeners.js:1238
#: htdocs/luci-static/resources/view/fchomo/node.js:1465
msgid "REALITY"
msgstr "REALITY"
@@ -2752,24 +2749,28 @@ msgstr "REALITY"
msgid "REALITY X25519MLKEM768 PQC support"
msgstr "REALITY X25519MLKEM768 後量子加密支援"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1277
+#: htdocs/luci-static/resources/fchomo/listeners.js:1286
msgid "REALITY certificate issued to"
msgstr "REALITY 憑證頒發給"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1245
+#: htdocs/luci-static/resources/fchomo/listeners.js:1254
msgid "REALITY handshake server"
msgstr "REALITY 握手伺服器"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1252
+#: htdocs/luci-static/resources/fchomo/listeners.js:1293
+msgid "REALITY max time difference"
+msgstr ""
+
+#: htdocs/luci-static/resources/fchomo/listeners.js:1261
msgid "REALITY private key"
msgstr "REALITY 私鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1267
+#: htdocs/luci-static/resources/fchomo/listeners.js:1276
#: htdocs/luci-static/resources/view/fchomo/node.js:1481
msgid "REALITY public key"
msgstr "REALITY 公鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1271
+#: htdocs/luci-static/resources/fchomo/listeners.js:1280
#: htdocs/luci-static/resources/view/fchomo/node.js:1486
msgid "REALITY short ID"
msgstr "REALITY 標識符"
@@ -2780,8 +2781,8 @@ msgstr "REALITY 標識符"
msgid "REMATCH-NAME marking"
msgstr "REMATCH-NAME 打標"
-#: htdocs/luci-static/resources/fchomo/listeners.js:834
-#: htdocs/luci-static/resources/fchomo/listeners.js:853
+#: htdocs/luci-static/resources/fchomo/listeners.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:862
#: htdocs/luci-static/resources/view/fchomo/node.js:1239
msgid "RTT"
msgstr ""
@@ -2798,17 +2799,17 @@ msgstr "留空將使用隨機令牌。"
msgid "Randomized traffic characteristics"
msgstr "隨機化流量特徵"
-#: htdocs/luci-static/resources/fchomo/listeners.js:990
+#: htdocs/luci-static/resources/fchomo/listeners.js:999
#: htdocs/luci-static/resources/view/fchomo/node.js:1273
msgid "Realm"
msgstr "Realm"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1006
+#: htdocs/luci-static/resources/fchomo/listeners.js:1015
#: htdocs/luci-static/resources/view/fchomo/node.js:1289
msgid "Realm ID"
msgstr "Realm ID"
-#: htdocs/luci-static/resources/fchomo/listeners.js:539
+#: htdocs/luci-static/resources/fchomo/listeners.js:547
msgid "Realm name pattern"
msgstr "Realm 名稱模式"
@@ -2886,7 +2887,7 @@ msgstr "移除"
msgid "Remove idles"
msgstr "移除閒置"
-#: htdocs/luci-static/resources/fchomo/listeners.js:995
+#: htdocs/luci-static/resources/fchomo/listeners.js:1004
#: htdocs/luci-static/resources/view/fchomo/node.js:1278
msgid "Rendezvous server"
msgstr "牽線伺服器"
@@ -2903,7 +2904,7 @@ msgstr "替換節點名稱"
msgid "Request"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1329
+#: htdocs/luci-static/resources/fchomo/listeners.js:1344
#: htdocs/luci-static/resources/view/fchomo/node.js:1738
#: htdocs/luci-static/resources/view/fchomo/node.js:1745
msgid "Request path"
@@ -2934,11 +2935,11 @@ msgstr "保留字段位元組"
msgid "Resources management"
msgstr "資源管理"
-#: htdocs/luci-static/resources/fchomo/listeners.js:676
-#: htdocs/luci-static/resources/fchomo/listeners.js:686
-#: htdocs/luci-static/resources/fchomo/listeners.js:691
-#: htdocs/luci-static/resources/fchomo/listeners.js:1121
-#: htdocs/luci-static/resources/fchomo/listeners.js:1237
+#: htdocs/luci-static/resources/fchomo/listeners.js:684
+#: htdocs/luci-static/resources/fchomo/listeners.js:694
+#: htdocs/luci-static/resources/fchomo/listeners.js:699
+#: htdocs/luci-static/resources/fchomo/listeners.js:1130
+#: htdocs/luci-static/resources/fchomo/listeners.js:1246
#: htdocs/luci-static/resources/view/fchomo/node.js:1128
#: htdocs/luci-static/resources/view/fchomo/node.js:1138
#: htdocs/luci-static/resources/view/fchomo/node.js:1143
@@ -2946,7 +2947,7 @@ msgstr "資源管理"
msgid "Restls"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:745
+#: htdocs/luci-static/resources/fchomo/listeners.js:753
#: htdocs/luci-static/resources/view/fchomo/node.js:1197
msgid "Restls script"
msgstr "Restls 劇本"
@@ -2983,7 +2984,7 @@ msgstr "路由 DSCP"
msgid "Routing GFW"
msgstr "路由 GFW 流量"
-#: htdocs/luci-static/resources/fchomo/listeners.js:597
+#: htdocs/luci-static/resources/fchomo/listeners.js:605
#: htdocs/luci-static/resources/view/fchomo/global.js:776
#: htdocs/luci-static/resources/view/fchomo/node.js:1966
#: htdocs/luci-static/resources/view/fchomo/node.js:2385
@@ -3070,7 +3071,7 @@ msgstr ""
msgid "STUN"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1012
+#: htdocs/luci-static/resources/fchomo/listeners.js:1021
#: htdocs/luci-static/resources/view/fchomo/node.js:1295
msgid "STUN servers"
msgstr "STUN 伺服器"
@@ -3083,7 +3084,7 @@ msgstr "SUB-RULE"
msgid "SUoT version"
msgstr "SUoT 版本"
-#: htdocs/luci-static/resources/fchomo/listeners.js:486
+#: htdocs/luci-static/resources/fchomo/listeners.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:716
msgid "Salamander"
msgstr "Salamander"
@@ -3131,9 +3132,9 @@ msgstr "同時向%s和%s發起查詢。"
msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse."
msgstr "發送 300-600 秒的隨機票證,以供客戶端 0-RTT 重用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:834
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:843
+#: htdocs/luci-static/resources/fchomo/listeners.js:1121
+#: htdocs/luci-static/resources/fchomo/listeners.js:1151
#: htdocs/luci-static/resources/view/fchomo/server.js:58
#: root/usr/share/luci/menu.d/luci-app-fchomo.json:62
msgid "Server"
@@ -3143,7 +3144,7 @@ msgstr "服務端"
msgid "Server address"
msgstr "伺服器位址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1323
+#: htdocs/luci-static/resources/fchomo/listeners.js:1338
#: htdocs/luci-static/resources/view/fchomo/node.js:1717
#: htdocs/luci-static/resources/view/fchomo/node.js:1723
msgid "Server hostname"
@@ -3166,11 +3167,11 @@ msgstr "服務狀態"
msgid "ShadowQUIC"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:675
-#: htdocs/luci-static/resources/fchomo/listeners.js:685
-#: htdocs/luci-static/resources/fchomo/listeners.js:690
-#: htdocs/luci-static/resources/fchomo/listeners.js:1120
-#: htdocs/luci-static/resources/fchomo/listeners.js:1236
+#: htdocs/luci-static/resources/fchomo/listeners.js:683
+#: htdocs/luci-static/resources/fchomo/listeners.js:693
+#: htdocs/luci-static/resources/fchomo/listeners.js:698
+#: htdocs/luci-static/resources/fchomo/listeners.js:1129
+#: htdocs/luci-static/resources/fchomo/listeners.js:1245
#: htdocs/luci-static/resources/view/fchomo/node.js:1127
#: htdocs/luci-static/resources/view/fchomo/node.js:1137
#: htdocs/luci-static/resources/view/fchomo/node.js:1142
@@ -3183,17 +3184,17 @@ msgstr ""
msgid "Shadowsocks"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:422
+#: htdocs/luci-static/resources/fchomo/listeners.js:430
#: htdocs/luci-static/resources/view/fchomo/node.js:582
msgid "Shadowsocks chipher"
msgstr "Shadowsocks 加密方法"
-#: htdocs/luci-static/resources/fchomo/listeners.js:417
+#: htdocs/luci-static/resources/fchomo/listeners.js:425
#: htdocs/luci-static/resources/view/fchomo/node.js:577
msgid "Shadowsocks encrypt"
msgstr "Shadowsocks 加密"
-#: htdocs/luci-static/resources/fchomo/listeners.js:430
+#: htdocs/luci-static/resources/fchomo/listeners.js:438
#: htdocs/luci-static/resources/view/fchomo/node.js:590
msgid "Shadowsocks password"
msgstr "Shadowsocks 密碼"
@@ -3282,12 +3283,12 @@ msgstr ""
msgid "Strategy"
msgstr "策略"
-#: htdocs/luci-static/resources/fchomo/listeners.js:569
+#: htdocs/luci-static/resources/fchomo/listeners.js:577
#: htdocs/luci-static/resources/view/fchomo/node.js:775
msgid "Stream-level receive window size"
msgstr "流級接收視窗大小"
-#: htdocs/luci-static/resources/fchomo/listeners.js:602
+#: htdocs/luci-static/resources/fchomo/listeners.js:610
#: htdocs/luci-static/resources/view/fchomo/client.js:1400
#: htdocs/luci-static/resources/view/fchomo/client.js:1409
msgid "Sub rule"
@@ -3350,7 +3351,7 @@ msgstr "系統 DNS"
#: htdocs/luci-static/resources/fchomo.js:200
#: htdocs/luci-static/resources/fchomo.js:201
#: htdocs/luci-static/resources/fchomo.js:211
-#: htdocs/luci-static/resources/fchomo/listeners.js:655
+#: htdocs/luci-static/resources/fchomo/listeners.js:663
#: htdocs/luci-static/resources/view/fchomo/client.js:618
#: htdocs/luci-static/resources/view/fchomo/client.js:710
msgid "TCP"
@@ -3392,8 +3393,8 @@ msgstr ""
msgid "TFO"
msgstr "TCP 快速開啟 (TFO)"
-#: htdocs/luci-static/resources/fchomo/listeners.js:703
-#: htdocs/luci-static/resources/fchomo/listeners.js:1022
+#: htdocs/luci-static/resources/fchomo/listeners.js:711
+#: htdocs/luci-static/resources/fchomo/listeners.js:1031
#: htdocs/luci-static/resources/view/fchomo/global.js:550
#: htdocs/luci-static/resources/view/fchomo/node.js:469
#: htdocs/luci-static/resources/view/fchomo/node.js:1155
@@ -3401,7 +3402,7 @@ msgstr "TCP 快速開啟 (TFO)"
msgid "TLS"
msgstr "TLS"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1063
+#: htdocs/luci-static/resources/fchomo/listeners.js:1072
#: htdocs/luci-static/resources/view/fchomo/node.js:1336
msgid "TLS ALPN"
msgstr "TLS ALPN"
@@ -3429,11 +3430,11 @@ msgstr ""
msgid "Tailscale"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:589
+#: htdocs/luci-static/resources/fchomo/listeners.js:597
msgid "Target address"
msgstr "目標位址"
-#: htdocs/luci-static/resources/fchomo/listeners.js:478
+#: htdocs/luci-static/resources/fchomo/listeners.js:486
msgid ""
"Tell the client to use the BBR flow control algorithm instead of Hysteria CC."
msgstr "讓客戶端使用 BBR 流控演算法。"
@@ -3447,13 +3448,13 @@ msgstr "讓客戶端使用 BBR 流控演算法。"
msgid "The %s address used by local machine in the %s network."
msgstr "本機 %s 位址,用於在 %s 網路中使用。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:1151
#: htdocs/luci-static/resources/view/fchomo/node.js:1425
msgid "The %s private key, in PEM format."
msgstr "%s私鑰,需要 PEM 格式。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1112
-#: htdocs/luci-static/resources/fchomo/listeners.js:1165
+#: htdocs/luci-static/resources/fchomo/listeners.js:1121
+#: htdocs/luci-static/resources/fchomo/listeners.js:1174
#: htdocs/luci-static/resources/view/fchomo/global.js:571
#: htdocs/luci-static/resources/view/fchomo/node.js:1411
msgid "The %s public key, in PEM format."
@@ -3473,6 +3474,10 @@ msgstr "Sudoku 伺服器提供的 ED25519 可用私鑰 或 UUID。"
msgid "The ED25519 master public key or UUID generated by Sudoku."
msgstr "Sudoku 產生的 ED25519 主公鑰 或 UUID。"
+#: htdocs/luci-static/resources/view/fchomo/node.js:601
+msgid "The client metadata sent to the server."
+msgstr "發送到伺服器的客戶端元資料。"
+
#: htdocs/luci-static/resources/view/fchomo/global.js:324
msgid "The default value is 2:00 every day."
msgstr "預設值為每天 2:00。"
@@ -3483,7 +3488,7 @@ msgid ""
"connection timeout is used."
msgstr "預設值為%s,表示僅使用外層連線逾時。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:866
+#: htdocs/luci-static/resources/fchomo/listeners.js:875
#: htdocs/luci-static/resources/view/fchomo/node.js:1252
msgid ""
"The first padding must have a probability of 100% and at least 35 bytes."
@@ -3499,16 +3504,16 @@ msgstr "匹配 %s 的將被視為未被投毒汙染。"
msgid "The matching %s will be deemed as poisoned."
msgstr "匹配 %s 的將被視為已被投毒汙染。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:753
+#: htdocs/luci-static/resources/fchomo/listeners.js:761
msgid "The proxy used to connect to the handshake target."
msgstr "用於連接握手目標的代理。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:864
+#: htdocs/luci-static/resources/fchomo/listeners.js:873
#: htdocs/luci-static/resources/view/fchomo/node.js:1250
msgid "The server and client can set different padding parameters."
msgstr "伺服器和客戶端可以設定不同的填充參數。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1223
+#: htdocs/luci-static/resources/fchomo/listeners.js:1232
#: htdocs/luci-static/resources/view/fchomo/global.js:615
msgid "This ECH parameter needs to be added to the HTTPS record of the domain."
msgstr "此 ECH 參數需要加入到網域的 HTTPS 記錄中。"
@@ -3568,7 +3573,7 @@ msgid "Transit proxy node"
msgstr "中轉代理節點"
#: htdocs/luci-static/resources/fchomo/listeners.js:194
-#: htdocs/luci-static/resources/fchomo/listeners.js:1287
+#: htdocs/luci-static/resources/fchomo/listeners.js:1302
#: htdocs/luci-static/resources/view/fchomo/node.js:360
#: htdocs/luci-static/resources/view/fchomo/node.js:1670
msgid "Transport"
@@ -3579,7 +3584,7 @@ msgstr "傳輸層"
msgid "Transport fields"
msgstr "傳輸層欄位"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1292
+#: htdocs/luci-static/resources/fchomo/listeners.js:1307
#: htdocs/luci-static/resources/view/fchomo/node.js:1675
msgid "Transport type"
msgstr "傳輸層類型"
@@ -3598,7 +3603,7 @@ msgstr ""
msgid "TrustTunnel"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:534
+#: htdocs/luci-static/resources/fchomo/listeners.js:542
msgid "Trusted proxy header"
msgstr "可信代理 Header"
@@ -3649,8 +3654,8 @@ msgstr "類型"
#: htdocs/luci-static/resources/fchomo.js:208
#: htdocs/luci-static/resources/fchomo.js:209
#: htdocs/luci-static/resources/fchomo.js:210
-#: htdocs/luci-static/resources/fchomo/listeners.js:656
-#: htdocs/luci-static/resources/fchomo/listeners.js:661
+#: htdocs/luci-static/resources/fchomo/listeners.js:664
+#: htdocs/luci-static/resources/fchomo/listeners.js:669
#: htdocs/luci-static/resources/view/fchomo/client.js:617
#: htdocs/luci-static/resources/view/fchomo/client.js:709
#: htdocs/luci-static/resources/view/fchomo/node.js:1097
@@ -3691,8 +3696,8 @@ msgid "URL test"
msgstr "自動選擇"
#: htdocs/luci-static/resources/fchomo/listeners.js:215
-#: htdocs/luci-static/resources/fchomo/listeners.js:395
-#: htdocs/luci-static/resources/fchomo/listeners.js:445
+#: htdocs/luci-static/resources/fchomo/listeners.js:403
+#: htdocs/luci-static/resources/fchomo/listeners.js:453
#: htdocs/luci-static/resources/view/fchomo/node.js:527
#: htdocs/luci-static/resources/view/fchomo/node.js:626
msgid "UUID"
@@ -3737,18 +3742,18 @@ msgstr "更新失敗。"
msgid "Update interval"
msgstr "更新間隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1389
+#: htdocs/luci-static/resources/fchomo/listeners.js:1404
#: htdocs/luci-static/resources/view/fchomo/node.js:1929
msgid "Upload bandwidth"
msgstr "上傳頻寬"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1390
+#: htdocs/luci-static/resources/fchomo/listeners.js:1405
#: htdocs/luci-static/resources/view/fchomo/node.js:1930
msgid "Upload bandwidth in Mbps."
msgstr "上傳頻寬(單位:Mbps)。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1133
-#: htdocs/luci-static/resources/fchomo/listeners.js:1173
+#: htdocs/luci-static/resources/fchomo/listeners.js:1142
+#: htdocs/luci-static/resources/fchomo/listeners.js:1182
#: htdocs/luci-static/resources/view/fchomo/node.js:1416
msgid "Upload certificate"
msgstr "上傳憑證"
@@ -3757,14 +3762,14 @@ msgstr "上傳憑證"
msgid "Upload initial package"
msgstr "上傳初始資源包"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1148
+#: htdocs/luci-static/resources/fchomo/listeners.js:1157
#: htdocs/luci-static/resources/view/fchomo/node.js:1430
msgid "Upload key"
msgstr "上傳金鑰"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1136
-#: htdocs/luci-static/resources/fchomo/listeners.js:1151
-#: htdocs/luci-static/resources/fchomo/listeners.js:1176
+#: htdocs/luci-static/resources/fchomo/listeners.js:1145
+#: htdocs/luci-static/resources/fchomo/listeners.js:1160
+#: htdocs/luci-static/resources/fchomo/listeners.js:1185
#: htdocs/luci-static/resources/view/fchomo/global.js:306
#: htdocs/luci-static/resources/view/fchomo/node.js:1419
#: htdocs/luci-static/resources/view/fchomo/node.js:1433
@@ -3819,7 +3824,7 @@ msgid "User-hint is mandatory"
msgstr "User-hint 是必填項"
#: htdocs/luci-static/resources/fchomo/listeners.js:162
-#: htdocs/luci-static/resources/fchomo/listeners.js:723
+#: htdocs/luci-static/resources/fchomo/listeners.js:731
#: htdocs/luci-static/resources/view/fchomo/node.js:319
#: htdocs/luci-static/resources/view/fchomo/node.js:1167
msgid "Username"
@@ -3882,8 +3887,8 @@ msgstr "詳細"
msgid "Verify if given"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:384
-#: htdocs/luci-static/resources/fchomo/listeners.js:737
+#: htdocs/luci-static/resources/fchomo/listeners.js:392
+#: htdocs/luci-static/resources/fchomo/listeners.js:745
#: htdocs/luci-static/resources/view/fchomo/node.js:511
#: htdocs/luci-static/resources/view/fchomo/node.js:1181
msgid "Version"
@@ -3914,10 +3919,10 @@ msgstr "以 75% 的機率等待隨機 0-111 毫秒。"
msgid "Warning"
msgstr "警告"
-#: htdocs/luci-static/resources/fchomo/listeners.js:362
-#: htdocs/luci-static/resources/fchomo/listeners.js:1294
-#: htdocs/luci-static/resources/fchomo/listeners.js:1305
-#: htdocs/luci-static/resources/fchomo/listeners.js:1312
+#: htdocs/luci-static/resources/fchomo/listeners.js:370
+#: htdocs/luci-static/resources/fchomo/listeners.js:1309
+#: htdocs/luci-static/resources/fchomo/listeners.js:1320
+#: htdocs/luci-static/resources/fchomo/listeners.js:1327
#: htdocs/luci-static/resources/view/fchomo/node.js:465
#: htdocs/luci-static/resources/view/fchomo/node.js:494
#: htdocs/luci-static/resources/view/fchomo/node.js:1680
@@ -3960,14 +3965,14 @@ msgstr "WireGuard 要求 base64 編碼的私鑰。"
msgid "Wireguard"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1295
-#: htdocs/luci-static/resources/fchomo/listeners.js:1306
+#: htdocs/luci-static/resources/fchomo/listeners.js:1310
+#: htdocs/luci-static/resources/fchomo/listeners.js:1321
#: htdocs/luci-static/resources/view/fchomo/node.js:1681
#: htdocs/luci-static/resources/view/fchomo/node.js:1701
msgid "XHTTP"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1342
+#: htdocs/luci-static/resources/fchomo/listeners.js:1357
#: htdocs/luci-static/resources/view/fchomo/node.js:1796
msgid "XHTTP mode"
msgstr "XHTTP 模式"
@@ -3985,7 +3990,7 @@ msgstr ""
msgid "XMUX:"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:825
+#: htdocs/luci-static/resources/fchomo/listeners.js:834
msgid "XOR mode"
msgstr "XOR 模式"
@@ -4062,8 +4067,8 @@ msgstr "bbr"
msgid "bbr3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1138
-#: htdocs/luci-static/resources/fchomo/listeners.js:1178
+#: htdocs/luci-static/resources/fchomo/listeners.js:1147
+#: htdocs/luci-static/resources/fchomo/listeners.js:1187
#: htdocs/luci-static/resources/view/fchomo/node.js:1421
msgid "certificate"
msgstr "憑證"
@@ -4083,8 +4088,8 @@ msgstr ""
msgid "cubic"
msgstr "cubic"
-#: htdocs/luci-static/resources/fchomo/listeners.js:777
-#: htdocs/luci-static/resources/fchomo/listeners.js:808
+#: htdocs/luci-static/resources/fchomo/listeners.js:786
+#: htdocs/luci-static/resources/fchomo/listeners.js:817
msgid "decryption"
msgstr "decryption"
@@ -4096,20 +4101,20 @@ msgstr "dnsmasq 自行選擇上游服務器。 (可能影響 CDN 準確性)"
msgid "down"
msgstr "Hysteria 下載速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:812
+#: htdocs/luci-static/resources/fchomo/listeners.js:821
#: htdocs/luci-static/resources/view/fchomo/node.js:1204
#: htdocs/luci-static/resources/view/fchomo/node.js:1227
msgid "encryption"
msgstr "encryption"
-#: htdocs/luci-static/resources/fchomo/listeners.js:346
+#: htdocs/luci-static/resources/fchomo/listeners.js:354
#: htdocs/luci-static/resources/view/fchomo/node.js:449
msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink."
msgstr "false = 頻寬最佳化下行 true = 純 Sudoku 下行。"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1293
-#: htdocs/luci-static/resources/fchomo/listeners.js:1304
-#: htdocs/luci-static/resources/fchomo/listeners.js:1311
+#: htdocs/luci-static/resources/fchomo/listeners.js:1308
+#: htdocs/luci-static/resources/fchomo/listeners.js:1319
+#: htdocs/luci-static/resources/fchomo/listeners.js:1326
#: htdocs/luci-static/resources/view/fchomo/node.js:1679
#: htdocs/luci-static/resources/view/fchomo/node.js:1692
#: htdocs/luci-static/resources/view/fchomo/node.js:1699
@@ -4125,7 +4130,7 @@ msgstr ""
msgid "gRPC ping interval"
msgstr "gRPC ping 間隔"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1336
+#: htdocs/luci-static/resources/fchomo/listeners.js:1351
#: htdocs/luci-static/resources/view/fchomo/node.js:1758
msgid "gRPC service name"
msgstr "gRPC 服務名稱"
@@ -4151,7 +4156,7 @@ msgstr ""
msgid "h3-l4proxy"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:977
+#: htdocs/luci-static/resources/fchomo/listeners.js:986
msgid "least one keypair required"
msgstr "至少需要一對密鑰"
@@ -4216,13 +4221,13 @@ msgid "not included \",\""
msgstr "不包含 \",\""
#: htdocs/luci-static/resources/fchomo.js:233
-#: htdocs/luci-static/resources/fchomo/listeners.js:604
-#: htdocs/luci-static/resources/fchomo/listeners.js:607
+#: htdocs/luci-static/resources/fchomo/listeners.js:612
+#: htdocs/luci-static/resources/fchomo/listeners.js:615
msgid "null"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:674
-#: htdocs/luci-static/resources/fchomo/listeners.js:684
+#: htdocs/luci-static/resources/fchomo/listeners.js:682
+#: htdocs/luci-static/resources/fchomo/listeners.js:692
#: htdocs/luci-static/resources/view/fchomo/node.js:1124
#: htdocs/luci-static/resources/view/fchomo/node.js:1136
msgid "obfs-simple"
@@ -4248,17 +4253,17 @@ msgstr ""
msgid "packet addr (v2ray-core v5+)"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1346
+#: htdocs/luci-static/resources/fchomo/listeners.js:1361
#: htdocs/luci-static/resources/view/fchomo/node.js:1800
msgid "packet-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:360
+#: htdocs/luci-static/resources/fchomo/listeners.js:368
#: htdocs/luci-static/resources/view/fchomo/node.js:463
msgid "poll"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1153
+#: htdocs/luci-static/resources/fchomo/listeners.js:1162
#: htdocs/luci-static/resources/view/fchomo/node.js:1435
msgid "private key"
msgstr "私鑰"
@@ -4284,7 +4289,7 @@ msgstr "規則集"
msgid "smux"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:359
+#: htdocs/luci-static/resources/fchomo/listeners.js:367
#: htdocs/luci-static/resources/view/fchomo/node.js:462
msgid "split-stream"
msgstr ""
@@ -4293,17 +4298,17 @@ msgstr ""
msgid "src"
msgstr "src"
-#: htdocs/luci-static/resources/fchomo/listeners.js:1344
+#: htdocs/luci-static/resources/fchomo/listeners.js:1359
#: htdocs/luci-static/resources/view/fchomo/node.js:1798
msgid "stream-one"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1345
+#: htdocs/luci-static/resources/fchomo/listeners.js:1360
#: htdocs/luci-static/resources/view/fchomo/node.js:1799
msgid "stream-up"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:1361
+#: htdocs/luci-static/resources/fchomo/listeners.js:1376
msgid "stream-up server seconds"
msgstr ""
@@ -4343,8 +4348,8 @@ msgstr "獨立值"
msgid "up"
msgstr "Hysteria 上傳速率"
-#: htdocs/luci-static/resources/fchomo/listeners.js:385
-#: htdocs/luci-static/resources/fchomo/listeners.js:738
+#: htdocs/luci-static/resources/fchomo/listeners.js:393
+#: htdocs/luci-static/resources/fchomo/listeners.js:746
#: htdocs/luci-static/resources/view/fchomo/node.js:512
#: htdocs/luci-static/resources/view/fchomo/node.js:653
#: htdocs/luci-static/resources/view/fchomo/node.js:1110
@@ -4352,27 +4357,27 @@ msgstr "Hysteria 上傳速率"
msgid "v1"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:386
-#: htdocs/luci-static/resources/fchomo/listeners.js:739
+#: htdocs/luci-static/resources/fchomo/listeners.js:394
+#: htdocs/luci-static/resources/fchomo/listeners.js:747
#: htdocs/luci-static/resources/view/fchomo/node.js:513
#: htdocs/luci-static/resources/view/fchomo/node.js:1111
#: htdocs/luci-static/resources/view/fchomo/node.js:1183
msgid "v2"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:387
-#: htdocs/luci-static/resources/fchomo/listeners.js:740
+#: htdocs/luci-static/resources/fchomo/listeners.js:395
+#: htdocs/luci-static/resources/fchomo/listeners.js:748
#: htdocs/luci-static/resources/view/fchomo/node.js:514
#: htdocs/luci-static/resources/view/fchomo/node.js:1184
msgid "v3"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:388
+#: htdocs/luci-static/resources/fchomo/listeners.js:396
#: htdocs/luci-static/resources/view/fchomo/node.js:515
msgid "v4"
msgstr ""
-#: htdocs/luci-static/resources/fchomo/listeners.js:389
+#: htdocs/luci-static/resources/fchomo/listeners.js:397
#: htdocs/luci-static/resources/view/fchomo/node.js:516
msgid "v5"
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 bb7a4bed..9dbca0b5 100644
--- a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc
+++ b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc
@@ -354,6 +354,8 @@ uci.foreach(uciconf, uciinbd, (cfg) => {
const listener = parseListener(cfg);
listener.proxy = get_proxy(listener.proxy);
+ if (listener["reality-config"])
+ listener["reality-config"].proxy = get_proxy(listener["reality-config"].proxy);
if (listener["shadow-tls"])
listener["shadow-tls"].handshake.proxy = get_proxy(listener["shadow-tls"].handshake.proxy);
if (listener["res-tls"])
diff --git a/luci-app-fchomo/root/usr/share/ucode/fchomo.uc b/luci-app-fchomo/root/usr/share/ucode/fchomo.uc
index 2941954f..a9ec2b9a 100644
--- a/luci-app-fchomo/root/usr/share/ucode/fchomo.uc
+++ b/luci-app-fchomo/root/usr/share/ucode/fchomo.uc
@@ -447,7 +447,9 @@ export function parseListener(cfg) {
dest: cfg.tls_reality_dest,
"private-key": cfg.tls_reality_private_key,
"short-id": cfg.tls_reality_short_id,
- "server-names": cfg.tls_reality_server_names
+ "server-names": cfg.tls_reality_server_names,
+ "max-time-difference": strToInt(cfg.tls_reality_max_time_difference),
+ proxy: cfg.plugin_opts_dest_proxy, // raw data need post-processing
}
} : {
certificate: cfg.tls_cert_path,
diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile
index 9002615e..568d1514 100644
--- a/luci-app-passwall/Makefile
+++ b/luci-app-passwall/Makefile
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=26.8.12
-PKG_RELEASE:=221
+PKG_RELEASE:=222
PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
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 86991c34..5540c8d4 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
@@ -519,7 +519,7 @@ o.validate = function(self, value, t)
local _dns_mode = s.fields["dns_mode"]:formvalue(t)
local _tcp_node = s.fields["tcp_node"]:formvalue(t)
if _dns_mode and _tcp_node then
- if (m:get(_tcp_node, "type") or ""):lower() ~= _dns_mode and not _tcp_node:find("Socks_") then
+ if (m:get(_tcp_node, "type") or ""):lower() ~= _dns_mode and not _tcp_node:find("socks_") then
return nil, translatef("TCP node must be '%s' type to use FakeDNS.", _dns_mode)
end
end
@@ -527,6 +527,11 @@ o.validate = function(self, value, t)
return value
end
+o = s:option(Value, "remote_rewrite_ttl", translate("Remote DNS") .. " TTL")
+o.datatype = "min(1)"
+o.default = "30"
+o:depends({dns_mode = "sing-box"})
+
o = s:option(ListValue, "chinadns_ng_default_tag", translate("Default DNS"))
o.default = "none"
o:value("gfw", translate("Remote DNS"))
@@ -588,6 +593,7 @@ for k, v in pairs(nodes_table) do
s.fields["singbox_dns_mode"]:depends({ _tcp_node_bool = "1", tcp_node = v.id })
s.fields["_node_sel_shunt"]:depends({ tcp_node = v.id })
+ s.fields["remote_rewrite_ttl"]:depends({ _tcp_node_bool = "1", tcp_node = v.id })
end
else
tcp:value(v.id, v["remark"])
diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
index fbbcbbe6..2f656b45 100644
--- a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
+++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
@@ -480,7 +480,7 @@ o.validate = function(self, value, t)
end
local _tcp_node = s.fields["tcp_node"]:formvalue(t)
if _dns_mode and _tcp_node then
- if (m:get(_tcp_node, "type") or ""):lower() ~= _dns_mode and not _tcp_node:find("Socks_") then
+ if (m:get(_tcp_node, "type") or ""):lower() ~= _dns_mode and not _tcp_node:find("socks_") then
return nil, translatef("TCP node must be '%s' type to use FakeDNS.", _dns_mode)
end
end
@@ -488,6 +488,13 @@ o.validate = function(self, value, t)
return value
end
+o = s:taboption("DNS", Value, "remote_rewrite_ttl", translate("Remote DNS") .. " TTL")
+o.datatype = "min(1)"
+o.default = "30"
+o:depends({dns_mode = "sing-box", dns_shunt = "dnsmasq"})
+o:depends({dns_mode = "sing-box", dns_shunt = "chinadns-ng"})
+o:depends({smartdns_dns_mode = "sing-box", dns_shunt = "smartdns"})
+
o = s:taboption("DNS", ListValue, "chinadns_ng_default_tag", translate("Default DNS"))
o.default = "none"
o:value("gfw", translate("Remote DNS"))
@@ -834,6 +841,7 @@ for k, v in pairs(nodes_table) do
s.fields["xray_dns_mode"]:depends({ tcp_node = v.id })
else
s.fields["singbox_dns_mode"]:depends({ tcp_node = v.id })
+ s.fields["remote_rewrite_ttl"]:depends({ tcp_node = v.id })
end
end
else
diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua
index c5351a9c..a4ce2a19 100644
--- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua
+++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua
@@ -92,7 +92,7 @@ o.write = function(self, section, value)
if old ~= value then
m:foreach("nodes", function(e)
if e["group"] and e["group"]:lower() == old:lower() then
- self:set(e[".name"], "group", value)
+ self.map:set(e[".name"], "group", value)
end
if e["protocol"] and (e["protocol"] == "_balancing" or e["protocol"] == "_urltest") and e["node_group"] then
local gs = ""
@@ -104,7 +104,7 @@ o.write = function(self, section, value)
end
end
gs = api.trim(gs)
- self:set(e[".name"], "node_group", gs)
+ self.map:set(e[".name"], "node_group", gs)
end
end)
end
diff --git a/luci-app-passwall/luasrc/passwall/util_sing-box.lua b/luci-app-passwall/luasrc/passwall/util_sing-box.lua
index 34e310c0..f8f43a9e 100644
--- a/luci-app-passwall/luasrc/passwall/util_sing-box.lua
+++ b/luci-app-passwall/luasrc/passwall/util_sing-box.lua
@@ -1087,6 +1087,7 @@ function gen_config(var)
local remote_dns_client_ip = var["remote_dns_client_ip"]
local remote_dns_query_strategy = var["remote_dns_query_strategy"]
local remote_dns_fake = var["remote_dns_fake"]
+ local remote_rewrite_ttl = var["remote_rewrite_ttl"] or "30"
local dns_cache = var["dns_cache"]
local dns_socks_address = var["dns_socks_address"]
local dns_socks_port = var["dns_socks_port"]
@@ -2015,7 +2016,7 @@ function gen_config(var)
end
if value.outboundTag ~= "block" and value.outboundTag ~= "direct" then
dns_rule.server = "remote"
- dns_rule.rewrite_ttl = 30
+ dns_rule.rewrite_ttl = tonumber(remote_rewrite_ttl)
if true then
local block_rule
if remote_strategy == "ipv4_only" then
@@ -2063,29 +2064,42 @@ function gen_config(var)
end
end
if default_dns_flag == "remote" then
+ local block_rule
local dns_rule_query_type = { "A", "AAAA" }
if remote_strategy == "ipv4_only" then
+ block_rule = {
+ query_type = { "AAAA" },
+ action = "predefined",
+ rcode = "NOERROR"
+ }
dns_rule_query_type = { "A" }
elseif remote_strategy == "ipv6_only" then
+ block_rule = {
+ query_type = { "A" },
+ action = "predefined",
+ rcode = "NOERROR"
+ }
dns_rule_query_type = { "AAAA" }
end
+ if block_rule then
+ table.insert(dns.rules, block_rule)
+ end
if remote_dns_fake then
-- When default is not direct and enable fakedns, default DNS use FakeDNS.
local fakedns_dns_rule = {
query_type = dns_rule_query_type,
server = fakedns_tag,
disable_cache = true,
- rewrite_ttl = 30
+ rewrite_ttl = tonumber(remote_rewrite_ttl)
}
table.insert(dns.rules, fakedns_dns_rule)
- else
- local remote_dns_rule = {
- query_type = dns_rule_query_type,
- server = "remote",
- disable_cache = true,
- }
- table.insert(dns.rules, remote_dns_rule)
end
+ local remote_dns_rule = {
+ server = "remote",
+ disable_cache = true,
+ rewrite_ttl = tonumber(remote_rewrite_ttl)
+ }
+ table.insert(dns.rules, remote_dns_rule)
end
local dns_in_inbound = {
type = "direct",
diff --git a/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall_server b/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall_server
index 00621cc8..195215eb 100644
--- a/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall_server
+++ b/luci-app-passwall/root/etc/uci-defaults/luci-app-passwall_server
@@ -32,6 +32,15 @@ else
fi
uci commit firewall
+# Migrate server sections from the old `user` section type. New user entries
+# also use `user`, so only sections with a server `type` option are renamed.
+for sid in $(uci -q show passwall_server | sed -n 's/^passwall_server\.\([^.=]*\)=user$/\1/p'); do
+ if [ -n "$(uci -q get "passwall_server.${sid}.type")" ]; then
+ uci -q set "passwall_server.${sid}=server"
+ fi
+done
+uci -q commit passwall_server
+
rm -f /tmp/luci-indexcache /tmp/luci-indexcache.*
rm -rf /tmp/luci-modulecache/
killall -HUP rpcd 2>/dev/null
diff --git a/luci-app-passwall/root/usr/share/passwall/app.sh b/luci-app-passwall/root/usr/share/passwall/app.sh
index 0aefb88e..bd4ec5d9 100755
--- a/luci-app-passwall/root/usr/share/passwall/app.sh
+++ b/luci-app-passwall/root/usr/share/passwall/app.sh
@@ -98,7 +98,7 @@ run_ipt2socks() {
run_singbox() {
local flag type node tcp_redir_port tcp_proxy_way udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password
- local dns_listen_port direct_dns_query_strategy direct_dns_port direct_dns_udp_server direct_dns_tcp_server remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port
+ local dns_listen_port direct_dns_query_strategy direct_dns_port direct_dns_udp_server direct_dns_tcp_server remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy remote_rewrite_ttl dns_cache dns_socks_address dns_socks_port
local loglevel log_file config_file server_host server_port no_run use_proxy_list use_gfw_list chn_list
eval_set_val "$@"
[ -z "$type" ] && {
@@ -179,6 +179,7 @@ run_singbox() {
[ -n "$remote_dns_client_ip" ] && json_add_string "remote_dns_client_ip" "${remote_dns_client_ip}"
[ "$remote_fakedns" = "1" ] && json_add_string "remote_dns_fake" "1"
+ [ -n "$remote_rewrite_ttl" ] && json_add_string "remote_rewrite_ttl" "${remote_rewrite_ttl}"
[ -n "$no_run" ] && json_add_string "no_run" "1"
local _json_arg="$(json_dump)"
lua $UTIL_SINGBOX gen_config "${_json_arg}" > $config_file
@@ -763,6 +764,7 @@ run_redir() {
resolve_dns_log="${resolve_dns_log} + FakeDNS"
USE_FAKEDNS=1
}
+ _args="${_args} remote_rewrite_ttl=$(config_t_get global remote_rewrite_ttl)"
NEXT_DNS_LISTEN_PORT=$(expr $NEXT_DNS_LISTEN_PORT + 1)
}
_args="${_args} use_proxy_list=$USE_PROXY_LIST use_gfw_list=$USE_GFW_LIST chn_list=$CHN_LIST"
@@ -1274,6 +1276,7 @@ start_dns() {
_args="${_args} remote_fakedns=1"
USE_FAKEDNS=1
}
+ _args="${_args} remote_rewrite_ttl=$(config_t_get global remote_rewrite_ttl)"
local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip)
[ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}"
TCP_PROXY_DNS=1
@@ -1629,9 +1632,9 @@ acl_app() {
dns_mode=$type
[ "$type" = "xray" ] && [ "$v2ray_dns_mode" = "http3" ] && v2ray_dns_mode="tcp"
}
- dns_cache_key="${dns_mode}_${remote_dns}_${v2ray_dns_mode:-none}_${remote_dns_client_ip:-0}_${remote_fakedns:-0}"
+ dns_cache_key="${dns_mode}_${remote_dns}_${v2ray_dns_mode:-none}_${remote_dns_client_ip:-0}_${remote_fakedns:-0}_${remote_rewrite_ttl:-30}"
([ "$v2ray_dns_mode" = "doh" ] || [ "$v2ray_dns_mode" = "http3" ]) && {
- dns_cache_key="${dns_mode}_${remote_dns_doh:-https://1.1.1.1/dns-query}_${v2ray_dns_mode:-doh}_${remote_dns_client_ip:-0}_${remote_fakedns:-0}"
+ dns_cache_key="${dns_mode}_${remote_dns_doh:-https://1.1.1.1/dns-query}_${v2ray_dns_mode:-doh}_${remote_dns_client_ip:-0}_${remote_fakedns:-0}_${remote_rewrite_ttl:-30}"
}
if [ "$remote_fakedns" = "1" ] || ([ "$protocol" = "_shunt" ] && [ "$(config_n_get $tcp_node fakedns)" = "1" ]); then
@@ -1758,7 +1761,10 @@ acl_app() {
_extra_param="${_extra_param} udp_redir_port=$redir_port"
}
config_file="$TMP_PATH/$config_file"
- [ "${type}" = "sing-box" ] && type="singbox"
+ [ "${type}" = "sing-box" ] && {
+ type="singbox"
+ _extra_param="${_extra_param} remote_rewrite_ttl=${remote_rewrite_ttl:-30}"
+ }
_extra_param="${_extra_param} use_proxy_list=$use_proxy_list use_gfw_list=$use_gfw_list chn_list=$chn_list"
run_${type} flag=$tcp_node node=$tcp_node tcp_redir_port=$redir_port ${_extra_param} config_file=$config_file log_file=$log_file loglevel=$loglevel
else
@@ -1851,7 +1857,7 @@ acl_app() {
}
unset enabled sid remarks sources interface tcp_no_redir_ports udp_no_redir_ports use_global_config tcp_node udp_node use_direct_list use_proxy_list use_block_list use_gfw_list chn_list tcp_proxy_mode udp_proxy_mode filter_proxy_ipv6 dns_mode remote_dns v2ray_dns_mode remote_dns_doh remote_dns_client_ip
unset _ip _mac _iprange _ipset _ip_or_mac source_list tcp_port udp_port config_file _extra_param dns_cache_key log loglevel
- unset _china_ng_listen _chinadns_local_dns _direct_dns_mode chinadns_ng_default_tag dnsmasq_filter_proxy_ipv6 remote_fakedns force_https_soa use_fakedns
+ unset _china_ng_listen _chinadns_local_dns _direct_dns_mode chinadns_ng_default_tag dnsmasq_filter_proxy_ipv6 remote_fakedns force_https_soa use_fakedns remote_rewrite_ttl
done
unset socks_port redir_port dns_port dnsmasq_port chinadns_port
[ -n "${has_enabled}" ] || {
diff --git a/luci-app-passwall2/Makefile b/luci-app-passwall2/Makefile
index f8f12e97..7ca074fa 100644
--- a/luci-app-passwall2/Makefile
+++ b/luci-app-passwall2/Makefile
@@ -6,8 +6,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall2
-PKG_VERSION:=26.8.14
-PKG_RELEASE:=85
+PKG_VERSION:=26.8.16
+PKG_RELEASE:=86
PKG_PO_VERSION:=$(PKG_VERSION)
PKG_CONFIG_DEPENDS:= \
@@ -15,7 +15,6 @@ PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_$(PKG_NAME)_Nftables_Transparent_Proxy \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Haproxy \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria \
- CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Client \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Server \
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Libev_Client \
@@ -110,12 +109,6 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria
select PACKAGE_hysteria
default n
-config PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy
- bool "Include NaiveProxy"
- depends on !(arc||armeb||loongarch64||mips||mips64||powerpc||TARGET_gemini)
- select PACKAGE_naiveproxy
- default n
-
config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Client
bool "Include Shadowsocks Rust Client"
depends on !i386
diff --git a/luci-app-passwall2/luasrc/controller/passwall2.lua b/luci-app-passwall2/luasrc/controller/passwall2.lua
index 60185e85..803ccfb6 100644
--- a/luci-app-passwall2/luasrc/controller/passwall2.lua
+++ b/luci-app-passwall2/luasrc/controller/passwall2.lua
@@ -523,14 +523,13 @@ end
function delete_select_nodes()
local ids = http.formvalue("ids")
local redirect = http.formvalue("redirect")
+ local ids_t = {}
string.gsub(ids, '[^' .. "," .. ']+', function(w)
+ ids_t[#ids_t + 1] = w
if (uci_get("@global[0]", "node") or "") == w then
uci_del('@global[0]', "node")
end
uci_foreach("socks", function(t)
- if t["node"] == w then
- uci_del(t[".name"])
- end
local changed = false
local auto_switch_node_list = uci_get(t[".name"], "autoswitch_backup_node") or {}
for i = #auto_switch_node_list, 1, -1 do
@@ -542,6 +541,14 @@ function delete_select_nodes()
if changed then
uci_set(t[".name"], "autoswitch_backup_node", auto_switch_node_list)
end
+ if t["node"] == w then
+ local new_node = api.get_random_normal_node(ids_t)
+ if new_node then
+ uci_set(t[".name"], "node", new_node[".name"])
+ else
+ uci_set(t[".name"], "enabled", "0")
+ end
+ end
end)
uci_foreach("haproxy_config", function(t)
if t["lbss"] == w then
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua
index c5396953..8bcdb52f 100644
--- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua
+++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/global.lua
@@ -308,6 +308,7 @@ o.rmempty = false
s2 = m:section(TypedSection, "socks", translate("Socks Config"))
s2.template = "cbi/tblsection"
+s2.sortable = true
s2.anonymous = true
s2.addremove = true
s2.extedit = api.url("socks_config", "%s")
@@ -382,6 +383,7 @@ for k, v in pairs(nodes_table) do
end
m:appendTemplate("/global/footer", {shunt_list = api.jsonc.stringify(shunt_list)})
-m:appendTemplate(Template("/global/status_bottom"))
+m:appendTemplate("/global/status_bottom")
+m:appendTemplate("/cbi/sortable", {sectiontype = s2.sectiontype})
return api.return_map(m)
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua
index aba243cc..a748281d 100644
--- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua
+++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/node_subscribe_config.lua
@@ -92,7 +92,7 @@ o.write = function(self, section, value)
if old ~= value then
m:foreach("nodes", function(e)
if e["group"] and e["group"]:lower() == old:lower() then
- self:set(e[".name"], "group", value)
+ self.map:set(e[".name"], "group", value)
end
if e["protocol"] and (e["protocol"] == "_balancing" or e["protocol"] == "_urltest") and e["node_group"] then
local gs = ""
@@ -104,7 +104,7 @@ o.write = function(self, section, value)
end
end
gs = api.trim(gs)
- self:set(e[".name"], "node_group", gs)
+ self.map:set(e[".name"], "node_group", gs)
end
end)
end
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/2_sing-box.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/1_sing-box.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/2_sing-box.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/1_sing-box.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/1_xray.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/2_xray.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/1_xray.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/2_xray.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/4_ss-rust.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/3_ss-rust.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/4_ss-rust.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/3_ss-rust.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/5_ssr.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/4_ssr.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/5_ssr.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/4_ssr.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/3_hysteria2.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/5_hysteria2.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/3_hysteria2.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/5_hysteria2.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/6_naive.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/6_naive.lua
deleted file mode 100644
index 4d5c55ac..00000000
--- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/type/6_naive.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-if not api.is_finded("naive") then
- return
-end
-
--- [[ Naive ]]
-local m, s1 = ...
-local type_name = "Naiveproxy"
-
-s1.fields["type"]:value(type_name, "NaiveProxy")
-
-if s1.val["type"] ~= type_name then
- return
-end
-
-local s = NamedSection(m, arg[1], "server")
-s.type_name = type_name
-s.option_prefix = "naive_"
-
-o = s:option(ListValue, "protocol", translate("Protocol"))
-o:value("https", translate("HTTPS"))
-o:value("quic", translate("QUIC"))
-
-o = s:option(Value, "address", translate("Address (Support Domain Name)"))
-
-o = s:option(Value, "port", translate("Port"))
-o.datatype = "port"
-
-o = s:option(Value, "username", translate("Username"))
-
-o = s:option(Value, "password", translate("Password"))
-o.password = true
-
-api.luci_types(s1, s)
\ No newline at end of file
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/2_sing-box.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/1_sing-box.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/2_sing-box.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/1_sing-box.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/1_xray.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/2_xray.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/1_xray.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/2_xray.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/4_ss-rust.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/3_ss-rust.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/4_ss-rust.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/3_ss-rust.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/5_ssr.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/4_ssr.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/5_ssr.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/4_ssr.lua
diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/3_hysteria2.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/5_hysteria2.lua
similarity index 100%
rename from luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/3_hysteria2.lua
rename to luci-app-passwall2/luasrc/model/cbi/passwall2/server/type/5_hysteria2.lua
diff --git a/luci-app-passwall2/luasrc/passwall2/api.lua b/luci-app-passwall2/luasrc/passwall2/api.lua
index 779bce87..25e68be2 100644
--- a/luci-app-passwall2/luasrc/passwall2/api.lua
+++ b/luci-app-passwall2/luasrc/passwall2/api.lua
@@ -598,7 +598,7 @@ function get_valid_nodes()
local nodes = {}
local default_nodes = {}
local other_nodes = {}
- uci:foreach(c_config, "nodes", function(e)
+ uci_foreach_c("nodes", function(e)
e.id = e[".name"]
if e.type and e.remarks then
local type_name = e.type
@@ -671,8 +671,8 @@ function get_node_list()
socks_list = {},
normal_list = {},
}
- uci:foreach(c_config, "socks", function(s)
- if s.enabled == "1" and s.node then
+ uci_foreach_c("socks", function(s)
+ if s.node then
node_list.socks_list[#node_list.socks_list + 1] = {
id = s[".name"],
remark = i18n.translate("Socks Config") .. " [" .. s.port .. i18n.translate("Port") .. "]",
@@ -760,6 +760,29 @@ function get_full_node_remarks(n)
return remarks
end
+function get_random_normal_node(exclude_id)
+ local exclude_id_lookup = {}
+ if type(exclude_id) == "table" then
+ for i, v in ipairs(exclude_id) do
+ exclude_id_lookup[v] = true
+ end
+ elseif type(exclude_id) == "string" then
+ exclude_id_lookup[exclude_id] = true
+ end
+ local normal_list = {}
+ for k, e in ipairs(get_valid_nodes()) do
+ if e.node_type == "normal" and not exclude_id_lookup[e[".name"]] then
+ normal_list[#normal_list + 1] = e
+ end
+ end
+ if #normal_list > 0 then
+ math.randomseed(os.time())
+ local num = math.random(1, #normal_list)
+ return normal_list[num]
+ end
+ return nil
+end
+
function gen_uuid()
local uuid = sys.exec("echo -n $(cat /proc/sys/kernel/random/uuid)")
return uuid
diff --git a/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua b/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua
deleted file mode 100644
index c4f62638..00000000
--- a/luci-app-passwall2/luasrc/passwall2/util_naiveproxy.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-module("luci.passwall2.util_navieproxy", package.seeall)
-local api = require "luci.passwall2.api"
-local jsonc = api.jsonc
-
-function gen_config(var)
- local node_id = var["node"]
- if not node_id then
- print("node Cannot be empty!")
- return
- end
- local node = api.uci_get_c(node_id)
- local run_type = var["run_type"]
- local local_addr = var["local_addr"]
- local local_port = var["local_port"]
- local server_host = var["server_host"] or (node.address or ""):lower()
- local server_port = var["server_port"] or node.port
-
- if api.is_ipv6(server_host) then
- server_host = api.get_ipv6_full(server_host)
- end
- local server = server_host .. ":" .. server_port
-
- local config = {
- listen = run_type .. "://" .. local_addr .. ":" .. local_port,
- proxy = node.protocol .. "://" .. node.username .. ":" .. node.password .. "@" .. server
- }
-
- return jsonc.stringify(config, 1)
-end
-
-_G.gen_config = gen_config
-
-if arg[1] then
- local func =_G[arg[1]]
- if func then
- local var = nil
- if arg[2] then
- var = jsonc.parse(arg[2])
- end
- print(func(var))
- end
-end
diff --git a/luci-app-passwall2/luasrc/view/passwall2/global/status_bottom.htm b/luci-app-passwall2/luasrc/view/passwall2/global/status_bottom.htm
index 1a07b84e..50648c87 100644
--- a/luci-app-passwall2/luasrc/view/passwall2/global/status_bottom.htm
+++ b/luci-app-passwall2/luasrc/view/passwall2/global/status_bottom.htm
@@ -26,7 +26,7 @@
height: 2.6em;
display: block;
float: left;
- margin-right: 1em;
+ margin: 0 1em;
}
.status-bar .inner .status-info {
@@ -39,7 +39,8 @@
}
.pure-u-1-2, .pure-u-12-24 {
- width: 50%;
+ width: 49%;
+ display: inline-block;
}
@media screen and (max-width: 700px) {
diff --git a/luci-app-passwall2/root/usr/share/passwall2/app.sh b/luci-app-passwall2/root/usr/share/passwall2/app.sh
index 49ae8c66..81baf88e 100755
--- a/luci-app-passwall2/root/usr/share/passwall2/app.sh
+++ b/luci-app-passwall2/root/usr/share/passwall2/app.sh
@@ -12,7 +12,6 @@ LUA_UTIL_PATH=/usr/lib/lua/luci/passwall2
UTIL_SINGBOX=$LUA_UTIL_PATH/util_sing-box.lua
UTIL_SS=$LUA_UTIL_PATH/util_shadowsocks.lua
UTIL_XRAY=$LUA_UTIL_PATH/util_xray.lua
-UTIL_NAIVE=$LUA_UTIL_PATH/util_naiveproxy.lua
UTIL_HYSTERIA2=$LUA_UTIL_PATH/util_hysteria2.lua
SINGBOX_BIN=$(first_type $(config_t_get global_app sing_box_file) sing-box)
XRAY_BIN=$(first_type $(config_t_get global_app xray_file) xray)
@@ -455,14 +454,6 @@ run_socks() {
lua $UTIL_XRAY gen_config "${_json_arg}" > $config_file
[ -z "$no_run" ] && ln_run ${QUEUE_RUN} "$XRAY_BIN" "xray" $log_file run -c "$config_file"
;;
- naiveproxy)
- json_add_string "local_addr" "${bind}"
- json_add_string "local_port" "${socks_port}"
- json_add_string "run_type" "socks"
- local _json_arg="$(json_dump)"
- lua $UTIL_NAIVE gen_config "${_json_arg}" > $config_file
- [ -z "$no_run" ] && ln_run ${QUEUE_RUN} "$(first_type naive)" naive $log_file "$config_file"
- ;;
ssr)
json_add_string "local_addr" "${bind}"
json_add_string "local_port" "${socks_port}"
diff --git a/luci-app-ssr-plus/Makefile b/luci-app-ssr-plus/Makefile
index dd62f23a..c1cb7b7e 100644
--- a/luci-app-ssr-plus/Makefile
+++ b/luci-app-ssr-plus/Makefile
@@ -4,7 +4,7 @@ LUCI_TITLE:=luci-app-ssr-plus
LUCI_PKGARCH:=all
PKG_NAME:=luci-app-ssr-plus
PKG_VERSION:=196
-PKG_RELEASE:=56
+PKG_RELEASE:=57
PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \
diff --git a/luci-app-ssr-plus/luasrc/view/shadowsocksr/status_bottom.htm b/luci-app-ssr-plus/luasrc/view/shadowsocksr/status_bottom.htm
index b301122b..714c92e8 100644
--- a/luci-app-ssr-plus/luasrc/view/shadowsocksr/status_bottom.htm
+++ b/luci-app-ssr-plus/luasrc/view/shadowsocksr/status_bottom.htm
@@ -26,7 +26,7 @@
height: 2.6em;
display: block;
float: left;
- margin-right: 1em;
+ margin: 0 1em;
}
.status-bar .inner .status-info {
@@ -39,7 +39,8 @@
}
.pure-u-1-2, .pure-u-12-24 {
- width: 50%;
+ width: 49%;
+ display: inline-block;
}
@media screen and (max-width: 700px) {
diff --git a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr
index cedae0be..41df5c1c 100755
--- a/luci-app-ssr-plus/root/etc/init.d/shadowsocksr
+++ b/luci-app-ssr-plus/root/etc/init.d/shadowsocksr
@@ -965,20 +965,27 @@ start_socks5_udp_with_ipt2socks() {
local local_port="$2"
local threads="$3"
local ipt2socks_bin
- local auth_opts=""
+ local server_ip
local _i
ipt2socks_bin="$(first_type ipt2socks)"
+ server_ip="$(get_host_ip "$sid")"
[ -x "$ipt2socks_bin" ] || return 1
+ [ -n "$server_ip" ] || {
+ echolog "UDP TPROXY Relay:Socks5 无法解析服务器地址。"
+ return 1
+ }
+ set --
if [ "$(uci_get_by_name "$sid" auth_enable 0)" = "1" ]; then
- auth_opts="-a $(uci_get_by_name "$sid" username) -k $(uci_get_by_name "$sid" password)"
+ set -- -a "$(uci_get_by_name "$sid" username)" \
+ -k "$(uci_get_by_name "$sid" password)"
fi
for _i in $(seq 1 "$threads"); do
ln_start_bin "$ipt2socks_bin" ipt2socks -U -r -b 0.0.0.0 -4 \
- -s "$(uci_get_by_name "$sid" server)" \
+ -s "$server_ip" \
-p "$(uci_get_by_name "$sid" server_port)" \
- -l "$local_port" "$auth_opts"
+ -l "$local_port" "$@"
done
echolog "UDP TPROXY Relay:Socks5 via IPT2Socks $threads Threads Started!"
return 0
@@ -989,21 +996,28 @@ start_socks5_redir_with_ipt2socks() {
local local_port="$2"
local threads="$3"
local ipt2socks_bin
- local auth_opts=""
+ local server_ip
local _i
ipt2socks_bin="$(first_type ipt2socks)"
+ server_ip="$(get_host_ip "$sid")"
[ -x "$ipt2socks_bin" ] || return 1
+ [ -n "$server_ip" ] || {
+ echolog "Main node:Socks5 无法解析服务器地址。"
+ return 1
+ }
+ set --
if [ "$(uci_get_by_name "$sid" auth_enable 0)" = "1" ]; then
- auth_opts="-a $(uci_get_by_name "$sid" username) -k $(uci_get_by_name "$sid" password)"
+ set -- -a "$(uci_get_by_name "$sid" username)" \
+ -k "$(uci_get_by_name "$sid" password)"
fi
for _i in $(seq 1 "$threads"); do
ln_start_bin "$ipt2socks_bin" ipt2socks \
-T -R -r -b 0.0.0.0 -4 \
- -s "$(uci_get_by_name "$sid" server)" \
+ -s "$server_ip" \
-p "$(uci_get_by_name "$sid" server_port)" \
- -l "$local_port" "$auth_opts"
+ -l "$local_port" "$@"
done
echolog "Main node:Socks5 via IPT2Socks $threads Threads Started!"
return 0
diff --git a/luci-app-ssr-plus/root/usr/bin/ssr-rules b/luci-app-ssr-plus/root/usr/bin/ssr-rules
index 0eaf0266..cb738971 100755
--- a/luci-app-ssr-plus/root/usr/bin/ssr-rules
+++ b/luci-app-ssr-plus/root/usr/bin/ssr-rules
@@ -1262,6 +1262,13 @@ compare_rules() {
return 0 # No update needed
}
+append_nftables_comment() {
+ local name="$1"
+ local value
+ value=$(printf '%s' "$2" | tr '\r\n' ' ')
+ printf '# %s: %s\n' "$name" "$value" >> "$NFTABLES_RULES_FILE"
+}
+
# Auto-update persistence rules
persist_nftables_rules() {
if [ "$USE_NFT" != "1" ]; then
@@ -1296,12 +1303,12 @@ persist_nftables_rules() {
echo "# Auto-updated: $(date)" >> "$NFTABLES_RULES_FILE"
echo "# Runmode: ${RUNMODE:-router}" >> "$NFTABLES_RULES_FILE"
echo "# Server: $server, Port: $local_port" >> "$NFTABLES_RULES_FILE"
- echo "# WAN_BP_IP: $WAN_BP_IP" >> "$NFTABLES_RULES_FILE"
- echo "# LAN_AC_IP: $LAN_AC_IP" >> "$NFTABLES_RULES_FILE"
- echo "# LAN_BP_IP: $LAN_BP_IP" >> "$NFTABLES_RULES_FILE"
- echo "# WAN_FW_IP: $WAN_FW_IP" >> "$NFTABLES_RULES_FILE"
- echo "# LAN_FP_IP: $LAN_FP_IP" >> "$NFTABLES_RULES_FILE"
- echo "# LAN_GM_IP: $LAN_GM_IP" >> "$NFTABLES_RULES_FILE"
+ append_nftables_comment "WAN_BP_IP" "$WAN_BP_IP"
+ append_nftables_comment "LAN_AC_IP" "$LAN_AC_IP"
+ append_nftables_comment "LAN_BP_IP" "$LAN_BP_IP"
+ append_nftables_comment "WAN_FW_IP" "$WAN_FW_IP"
+ append_nftables_comment "LAN_FP_IP" "$LAN_FP_IP"
+ append_nftables_comment "LAN_GM_IP" "$LAN_GM_IP"
echo "" >> "$NFTABLES_RULES_FILE"
local HAS_RULES=0
diff --git a/luci-theme-footstrap/Makefile b/luci-theme-footstrap/Makefile
index 84705147..22e38744 100644
--- a/luci-theme-footstrap/Makefile
+++ b/luci-theme-footstrap/Makefile
@@ -17,7 +17,7 @@ LUCI_NAME:=luci-theme-footstrap
FOOTSTRAP_VERSION?=
ifneq ($(FOOTSTRAP_VERSION),)
PKG_VERSION:=$(FOOTSTRAP_VERSION)
-PKG_RELEASE:=20
+PKG_RELEASE:=21
endif
LUCI_TITLE:=Footstrap Theme
diff --git a/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js b/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js
index 34af64c4..4571fde3 100644
--- a/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js
+++ b/luci-theme-footstrap/htdocs/luci-static/resources/fs-appearance.js
@@ -560,7 +560,10 @@ function build() {
'class': 'fs-ap-version',
'href': ver.REPO_URL,
'target': '_blank',
- 'rel': 'noopener noreferrer'
+ /* `noreferrer` alone: it implies noopener wherever it is honoured at all, and the theme's
+ * other outward links — footer.ut's two and the footer's own — spell it that way. Two
+ * spellings of one rule is how they drift. */
+ 'rel': 'noreferrer'
}, [ ver.label() ]);
const defaults = [
diff --git a/luci-theme-footstrap/htdocs/luci-static/resources/fs-chrome.js b/luci-theme-footstrap/htdocs/luci-static/resources/fs-chrome.js
index 906dee69..a17d54c8 100644
--- a/luci-theme-footstrap/htdocs/luci-static/resources/fs-chrome.js
+++ b/luci-theme-footstrap/htdocs/luci-static/resources/fs-chrome.js
@@ -297,11 +297,14 @@ function nameThemeInFooter() {
const host = document.querySelector('footer.fs-footer span');
if (!host || host.querySelector('.fs-footer-self')) return;
const self = E('a', {
- class: 'fs-footer-self',
- href: version.REPO_URL,
- target: '_blank',
- rel: 'noreferrer',
- }, version.label());
+ 'class': 'fs-footer-self',
+ 'href': version.REPO_URL,
+ 'target': '_blank',
+ /* `noreferrer` alone, matching footer.ut's own two anchors: it implies noopener in every
+ * engine that ships `rel=noreferrer` at all, so the pair reads as two rules where there is
+ * one. fs-appearance.js's link to the same URL spells both — the two are now in step. */
+ 'rel': 'noreferrer'
+ }, [ version.label() ]);
/* AFTER THE DISTRIBUTION, not at the end. The sentence lists the software that renders the page
* — LuCI, the distribution, the theme — and footer.ut appends one more fragment after them that
* is not a component but a state: "Lua compatibility mode active". Landing behind it read as if
diff --git a/luci-theme-footstrap/htdocs/luci-static/resources/fs-version.js b/luci-theme-footstrap/htdocs/luci-static/resources/fs-version.js
index 8bb8aa1b..d3a3254a 100644
--- a/luci-theme-footstrap/htdocs/luci-static/resources/fs-version.js
+++ b/luci-theme-footstrap/htdocs/luci-static/resources/fs-version.js
@@ -29,9 +29,10 @@ function isReal() { return ((/^\d+\.\d+/).test(FS_VERSION)) && !((/-dev$/).test(
return baseclass.extend({
VERSION: FS_VERSION,
- /* the project's page, for the link at the foot of the Appearance tab. One string, used once —
- * it was assembled from a separate FS_REPO constant that the retired self-update script needed to build
- * API paths from, and nothing has needed the bare `owner/name` since. */
+ /* the project's page: the link at the foot of the Appearance tab, and the one
+ * nameThemeInFooter() writes into the footer. It was assembled from a separate FS_REPO
+ * constant that the retired self-update script needed to build API paths from, and nothing
+ * has needed the bare `owner/name` since. */
REPO_URL: 'https://github.com/VizzleTF/luci-theme-footstrap',
isReal,
/* what the Appearance tab's version row prints */
diff --git a/luci-theme-footstrap/styles/theme/20-shell.css b/luci-theme-footstrap/styles/theme/20-shell.css
index 193349a2..1f48eafa 100644
--- a/luci-theme-footstrap/styles/theme/20-shell.css
+++ b/luci-theme-footstrap/styles/theme/20-shell.css
@@ -686,8 +686,16 @@
* Found by tools/live-audit.mjs on CI's runner and not on the maintainer's stands: the wrap
* width depends on text metrics, so the same 568px viewport breaks the line there and not
* here. 26px, not 24: the criterion is that the two 24px circles must not meet, so 24 is the
- * boundary rather than a pass, and 26 leaves the footer visually unchanged on one line. */
- line-height: 26px;
+ * boundary rather than a pass, and 26 leaves the footer visually unchanged on one line.
+ *
+ * A FLOOR, not a fixed number, and not a bare ratio either. `--fs-type` is
+ * `calc(13px * --fs-density-type)`, which is 0.9 at Compact and 1.15 at Large, so a plain
+ * `26px` would be the one leading in this file that ignores the Density axis while the text
+ * it leads follows it — and a unitless `2` would follow the axis straight back under 24px at
+ * Compact (11.7px x 2 = 23.4), where the wrap this rule exists for is most likely. `max()`
+ * is both: 26px at the default and at Compact, 29.9px at Large, tracking the axis in the one
+ * direction where tracking it is safe. */
+ line-height: max(26px, calc(var(--fs-type) * 2));
}
footer a { color: var(--fs-dim); }
footer a:hover { color: var(--fs-accent); }
diff --git a/mihomo/Makefile b/mihomo/Makefile
index 04686e65..de7c18cf 100644
--- a/mihomo/Makefile
+++ b/mihomo/Makefile
@@ -5,8 +5,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mihomo
-PKG_VERSION:=1.19.29
-PKG_RELEASE:=31
+PKG_VERSION:=1.19.30
+PKG_RELEASE:=32
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/metacubex/mihomo/tar.gz/v$(PKG_VERSION)?
diff --git a/natflow/Makefile b/natflow/Makefile
index 43b739fe..f76c7a00 100644
--- a/natflow/Makefile
+++ b/natflow/Makefile
@@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=natflow
PKG_VERSION:=20260531
-PKG_RELEASE:=70
+PKG_RELEASE:=71
PKG_SOURCE:=$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/ptpt52/natflow.git
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=bbd26afc851575c8c1b326a5d0bdfa3e6c2723c1
+PKG_SOURCE_VERSION:=6472300c8d6b9082112a27a6a7547ea6057577be
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_MAINTAINER:=Chen Minqiang
PKG_LICENSE:=GPL-2.0