浏览代码

Merge pull request #1769 from zxlhhyccc/custom

luci-app-ssr-plus: support xray ech
zxl hhyccc 2 月之前
父节点
当前提交
d1f78723a6

+ 33 - 10
luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua

@@ -1125,26 +1125,50 @@ if is_finded("xray") then
 	o:depends({type = "v2ray", tls = true})
 	o:depends({type = "v2ray", tls = true})
 	o:depends({type = "v2ray", reality = true})
 	o:depends({type = "v2ray", reality = true})
 
 
+	o = s:option(Flag, "enable_ech", translate("Enable ECH(optional)"))
+	o.rmempty = true
+	o.default = "0"
+	o:depends({type = "v2ray", tls = true})
+
+	o = s:option(TextValue, "ech_config", translate("ECH Config"))
+	o.description = translate(
+    	"<font><b>" .. translate("If it is not empty, it indicates that the Client has enabled Encrypted Client, see:") .. "</b></font>" ..
+    	" <a href='https://xtls.github.io/config/transport.html#tlsobject' target='_blank'>" ..
+    	"<font style='color:green'><b>" .. translate("Click to the page") .. "</b></font></a>")
+	o:depends("enable_ech", true)
+	o.default = ""
+	o.rows = 5
+	o.wrap = "soft"
+	o.validate = function(self, value)
+    	-- 清理空行和多余换行
+    	return (value:gsub("[\r\n]", "")):gsub("^%s*(.-)%s*$", "%1")
+	end
+
+	o = s:option(ListValue, "ech_ForceQuery", translate("ECH Query Policy"))
+	o.description = translate("Controls the policy used when performing DNS queries for ECH configuration.")
+	o.default = "none"
+	o:value("none")
+	o:value("half")
+	o:value("full")
+	o:depends("enable_ech", true)
+
 	o = s:option(Flag, "enable_mldsa65verify", translate("Enable ML-DSA-65(optional)"))
 	o = s:option(Flag, "enable_mldsa65verify", translate("Enable ML-DSA-65(optional)"))
-	o.description = translate("This item might be an empty string.")
 	o.rmempty = true
 	o.rmempty = true
 	o.default = "0"
 	o.default = "0"
-	o:depends({type = "v2ray", v2ray_protocol = "vless", reality = true})
+	o:depends({type = "v2ray", reality = true})
 
 
-	o = s:option(Value, "reality_mldsa65verify", translate("ML-DSA-65 Public key"))
+	o = s:option(TextValue, "reality_mldsa65verify", translate("ML-DSA-65 Public key"))
 	o.description = translate(
 	o.description = translate(
     	"<font><b>" .. translate("The client has not configured mldsa65Verify, but it will not perform the \"additional verification\" step and can still connect normally, see:") .. "</b></font>" ..
     	"<font><b>" .. translate("The client has not configured mldsa65Verify, but it will not perform the \"additional verification\" step and can still connect normally, see:") .. "</b></font>" ..
     	" <a href='https://github.com/XTLS/Xray-core/pull/4915' target='_blank'>" ..
     	" <a href='https://github.com/XTLS/Xray-core/pull/4915' target='_blank'>" ..
     	"<font style='color:green'><b>" .. translate("Click to the page") .. "</b></font></a>")
     	"<font style='color:green'><b>" .. translate("Click to the page") .. "</b></font></a>")
 	o:depends("enable_mldsa65verify", true)
 	o:depends("enable_mldsa65verify", true)
-	o.rmempty = true
+	o.default = ""
+	o.rows = 5
+	o.wrap = "soft"
 	o.validate = function(self, value)
 	o.validate = function(self, value)
     	-- 清理空行和多余换行
     	-- 清理空行和多余换行
-    	value = value:gsub("\r\n", "\n"):gsub("^[ \t]*\n", ""):gsub("\n[ \t]*$", ""):gsub("\n[ \t]*\n", "\n")
-    	if value:sub(-1) == "\n" then
-        	value = value:sub(1, -2)
-    	end
-    		return value
+    	return (value:gsub("[\r\n]", "")):gsub("^%s*(.-)%s*$", "%1")
 	end
 	end
 end
 end
 
 
@@ -1366,4 +1390,3 @@ end
 
 
 return m
 return m
 
 
-

+ 18 - 0
luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm

@@ -359,6 +359,12 @@ function import_ssr_url(btn, urlname, sid) {
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].checked = true; // 设置 insecure 为 true
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].checked = true; // 设置 insecure 为 true
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].dispatchEvent(event); // 触发事件
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].dispatchEvent(event); // 触发事件
 			}
 			}
+			if (params.get("ech") && params.get("ech").trim() !== "") {
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.enable_ech')[0].checked = true; // 设置 enable_ech 为 true
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.enable_ech')[0].dispatchEvent(event); // 触发事件
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.ech_config')[0].value = params.get("ech");
+				
+			}
 			document.getElementsByName('cbid.shadowsocksr.' + sid + '.transport')[0].value = 
 			document.getElementsByName('cbid.shadowsocksr.' + sid + '.transport')[0].value = 
 				params.get("type") == "http" ? "h2" : 
 				params.get("type") == "http" ? "h2" : 
 				(["tcp", "raw"].includes(params.get("type")) ? "raw" : 
 				(["tcp", "raw"].includes(params.get("type")) ? "raw" : 
@@ -500,6 +506,11 @@ function import_ssr_url(btn, urlname, sid) {
 				}
 				}
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls_host')[0].value = ssm.sni || ssm.host;
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.tls_host')[0].value = ssm.sni || ssm.host;
 			}
 			}
+			if (ssm.tls == "tls") {
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.enable_ech')[0].checked = true;
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.enable_ech')[0].dispatchEvent(event);
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.ech_config')[0].value = ssm.ech;
+			}
 			if (ssm.mux !== undefined) {
 			if (ssm.mux !== undefined) {
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.mux')[0].checked = true;
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.mux')[0].checked = true;
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.mux')[0].dispatchEvent(event);
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.mux')[0].dispatchEvent(event);
@@ -554,6 +565,13 @@ function import_ssr_url(btn, urlname, sid) {
 				setElementValue('cbid.shadowsocksr.' + sid + '.' + params.get("security"), true);
 				setElementValue('cbid.shadowsocksr.' + sid + '.' + params.get("security"), true);
 				dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.' + params.get("security"), event);
 				dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.' + params.get("security"), event);
 
 
+				if (params.get("security") === "tls") {
+					if (params.get("ech") && params.get("ech").trim() !== "") {
+						setElementValue('cbid.shadowsocksr.' + sid + '.enable_ech', true); // 设置 enable_ech 为 true
+						dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.enable_ech', event); // 触发事件
+						setElementValue('cbid.shadowsocksr.' + sid + '.ech_config', params.get("ech") || "");
+					}
+				}
 				if (params.get("security") === "reality") {
 				if (params.get("security") === "reality") {
 					setElementValue('cbid.shadowsocksr.' + sid + '.reality_publickey', params.get("pbk") ? decodeURIComponent(params.get("pbk")) : "");
 					setElementValue('cbid.shadowsocksr.' + sid + '.reality_publickey', params.get("pbk") ? decodeURIComponent(params.get("pbk")) : "");
 					setElementValue('cbid.shadowsocksr.' + sid + '.reality_shortid', params.get("sid") || "");
 					setElementValue('cbid.shadowsocksr.' + sid + '.reality_shortid', params.get("sid") || "");

+ 90 - 69
luci-app-ssr-plus/po/templates/ssr-plus.pot

@@ -20,7 +20,7 @@ msgstr ""
 msgid "128 Threads"
 msgid "128 Threads"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1223
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1247
 msgid "16"
 msgid "16"
 msgstr ""
 msgstr ""
 
 
@@ -56,7 +56,7 @@ msgstr ""
 msgid "64 Threads"
 msgid "64 Threads"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1210
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1234
 msgid "8"
 msgid "8"
 msgstr ""
 msgstr ""
 
 
@@ -69,7 +69,8 @@ msgid "<font style='color:red'>"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:831
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:831
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1136
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1135
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1162
 msgid "<font><b>"
 msgid "<font><b>"
 msgstr ""
 msgstr ""
 
 
@@ -80,9 +81,9 @@ msgstr ""
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:151
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:151
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:177
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:177
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:211
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:211
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1203
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1216
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1230
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1227
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1240
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1254
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:174
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:174
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:200
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:200
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:235
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:235
@@ -198,7 +199,7 @@ msgid "Auto Update Server subscription, GFW list and CHN route"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:604
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:604
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1264
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1288
 msgid "BBR"
 msgid "BBR"
 msgstr ""
 msgstr ""
 
 
@@ -244,7 +245,7 @@ msgid "CNNIC SDNS (1.2.4.8)"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:605
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:605
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1265
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1289
 msgid "CUBIC"
 msgid "CUBIC"
 msgstr ""
 msgstr ""
 
 
@@ -253,7 +254,7 @@ msgstr ""
 msgid "Camouflage Type"
 msgid "Camouflage Type"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1171
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1195
 msgid "Certificate fingerprint"
 msgid "Certificate fingerprint"
 msgstr ""
 msgstr ""
 
 
@@ -319,7 +320,8 @@ msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:382
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:382
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:833
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:833
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1138
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1137
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1164
 msgid "Click to the page"
 msgid "Click to the page"
 msgstr ""
 msgstr ""
 
 
@@ -368,6 +370,11 @@ msgstr ""
 msgid "Connection Timeout"
 msgid "Connection Timeout"
 msgstr ""
 msgstr ""
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1148
+msgid ""
+"Controls the policy used when performing DNS queries for ECH configuration."
+msgstr ""
+
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:78
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:78
 msgid "Copy SSR to clipboard successfully."
 msgid "Copy SSR to clipboard successfully."
 msgstr ""
 msgstr ""
@@ -376,11 +383,11 @@ msgstr ""
 msgid "Create Backup File"
 msgid "Create Backup File"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1300
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1324
 msgid "Create upload file error."
 msgid "Create upload file error."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1320
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1344
 msgid "Current Certificate Path"
 msgid "Current Certificate Path"
 msgstr ""
 msgstr ""
 
 
@@ -448,7 +455,7 @@ msgstr ""
 msgid "Default"
 msgid "Default"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1231
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1255
 msgid "Default reject rejects traffic."
 msgid "Default reject rejects traffic."
 msgstr ""
 msgstr ""
 
 
@@ -456,13 +463,13 @@ msgstr ""
 msgid "Default value 0 indicatesno heartbeat."
 msgid "Default value 0 indicatesno heartbeat."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1204
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1228
 msgid ""
 msgid ""
 "Default: disable. When entering a negative number, such as -1, The Mux "
 "Default: disable. When entering a negative number, such as -1, The Mux "
 "module will not be used to carry TCP traffic."
 "module will not be used to carry TCP traffic."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1217
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1241
 msgid ""
 msgid ""
 "Default:16. When entering a negative number, such as -1, The Mux module will "
 "Default:16. When entering a negative number, such as -1, The Mux module will "
 "not be used to carry UDP traffic, Use original UDP transmission method of "
 "not be used to carry UDP traffic, Use original UDP transmission method of "
@@ -562,6 +569,14 @@ msgstr ""
 msgid "Dual-stack Listening Socket"
 msgid "Dual-stack Listening Socket"
 msgstr ""
 msgstr ""
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1133
+msgid "ECH Config"
+msgstr ""
+
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1147
+msgid "ECH Query Policy"
+msgstr ""
+
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:764
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:764
 msgid "Early Data Header Name"
 msgid "Early Data Header Name"
 msgstr ""
 msgstr ""
@@ -587,25 +602,29 @@ msgid "Enable Authentication"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:54
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:54
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1334
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1358
 msgid "Enable Auto Switch"
 msgid "Enable Auto Switch"
 msgstr ""
 msgstr ""
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1128
+msgid "Enable ECH(optional)"
+msgstr ""
+
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:446
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:446
 msgid "Enable Lazy Mode"
 msgid "Enable Lazy Mode"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1128
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1155
 msgid "Enable ML-DSA-65(optional)"
 msgid "Enable ML-DSA-65(optional)"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1249
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1273
 msgid ""
 msgid ""
 "Enable Multipath TCP, need to be enabled in both server and client "
 "Enable Multipath TCP, need to be enabled in both server and client "
 "configuration."
 "configuration."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1177
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1201
 msgid "Enable Mux.Cool"
 msgid "Enable Mux.Cool"
 msgstr ""
 msgstr ""
 
 
@@ -641,7 +660,7 @@ msgstr ""
 msgid "Enable V3 protocol."
 msgid "Enable V3 protocol."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1195
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1219
 msgid "Enable Xudp Mux"
 msgid "Enable Xudp Mux"
 msgstr ""
 msgstr ""
 
 
@@ -666,8 +685,8 @@ msgid "Enabled Mixed"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1243
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1326
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1267
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1350
 msgid "Enabling TCP Fast Open Requires Server Support."
 msgid "Enabling TCP Fast Open Requires Server Support."
 msgstr ""
 msgstr ""
 
 
@@ -936,30 +955,36 @@ msgstr ""
 msgid "If empty, Not change Apple domains parsing DNS (Default is empty)"
 msgid "If empty, Not change Apple domains parsing DNS (Default is empty)"
 msgstr ""
 msgstr ""
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1135
+msgid ""
+"If it is not empty, it indicates that the Client has enabled Encrypted "
+"Client, see:"
+msgstr ""
+
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:658
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:658
 msgid "If this option is not set, the socket behavior is platform dependent."
 msgid "If this option is not set, the socket behavior is platform dependent."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1168
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1192
 msgid ""
 msgid ""
 "If true, allowss insecure connection at TLS client, e.g., TLS server uses "
 "If true, allowss insecure connection at TLS client, e.g., TLS server uses "
 "unverifiable certificates."
 "unverifiable certificates."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1284
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1308
 msgid "If you have a self-signed certificate,please check the box"
 msgid "If you have a self-signed certificate,please check the box"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:635
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:661
 msgid "Import"
 msgid "Import"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:160
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:160
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:295
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:327
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:420
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:503
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:626
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:303
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:335
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:434
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:522
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:652
 msgid "Import configuration information successfully."
 msgid "Import configuration information successfully."
 msgstr ""
 msgstr ""
 
 
@@ -979,7 +1004,7 @@ msgstr ""
 msgid "Invalid JSON format"
 msgid "Invalid JSON format"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:629
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:655
 msgid "Invalid format."
 msgid "Invalid format."
 msgstr ""
 msgstr ""
 
 
@@ -987,19 +1012,19 @@ msgstr ""
 msgid "KcpTun"
 msgid "KcpTun"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1344
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1368
 msgid "KcpTun Enable"
 msgid "KcpTun Enable"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1361
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1385
 msgid "KcpTun Param"
 msgid "KcpTun Param"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1356
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1380
 msgid "KcpTun Password"
 msgid "KcpTun Password"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1350
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1374
 msgid "KcpTun Port"
 msgid "KcpTun Port"
 msgstr ""
 msgstr ""
 
 
@@ -1089,7 +1114,7 @@ msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:340
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:340
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1338
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1362
 msgid "Local Port"
 msgid "Local Port"
 msgstr ""
 msgstr ""
 
 
@@ -1113,11 +1138,11 @@ msgstr ""
 msgid "Loyalsoldier/v2ray-rules-dat"
 msgid "Loyalsoldier/v2ray-rules-dat"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1134
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1160
 msgid "ML-DSA-65 Public key"
 msgid "ML-DSA-65 Public key"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1249
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1273
 msgid "MPTCP"
 msgid "MPTCP"
 msgstr ""
 msgstr ""
 
 
@@ -1137,13 +1162,13 @@ msgstr ""
 msgid "Maximum packet size the socks5 server can receive from external"
 msgid "Maximum packet size the socks5 server can receive from external"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1218
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1242
 msgid ""
 msgid ""
 "Min value is 1, Max value is 1024. When omitted or set to 0, Will same path "
 "Min value is 1, Max value is 1024. When omitted or set to 0, Will same path "
 "as TCP traffic."
 "as TCP traffic."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1205
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1229
 msgid ""
 msgid ""
 "Min value is 1, Max value is 128. When omitted or set to 0, it equals 8."
 "Min value is 1, Max value is 128. When omitted or set to 0, it equals 8."
 msgstr ""
 msgstr ""
@@ -1165,7 +1190,7 @@ msgstr ""
 msgid "Multi Threads Option"
 msgid "Multi Threads Option"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1177
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1201
 msgid "Mux"
 msgid "Mux"
 msgstr ""
 msgstr ""
 
 
@@ -1231,7 +1256,7 @@ msgstr ""
 msgid "No new data!"
 msgid "No new data!"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1316
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1340
 msgid "No specify upload file."
 msgid "No specify upload file."
 msgstr ""
 msgstr ""
 
 
@@ -1365,7 +1390,7 @@ msgstr ""
 msgid "Ping Latency"
 msgid "Ping Latency"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1323
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1347
 msgid "Please confirm the current certificate path"
 msgid "Please confirm the current certificate path"
 msgstr ""
 msgstr ""
 
 
@@ -1499,7 +1524,7 @@ msgstr ""
 msgid "Refresh..."
 msgid "Refresh..."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1266
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1290
 msgid "Reno"
 msgid "Reno"
 msgstr ""
 msgstr ""
 
 
@@ -1578,7 +1603,7 @@ msgstr ""
 msgid "Selection ShadowSocks Node Use Version."
 msgid "Selection ShadowSocks Node Use Version."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1276
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1300
 msgid "Self-signed Certificate"
 msgid "Self-signed Certificate"
 msgstr ""
 msgstr ""
 
 
@@ -1768,8 +1793,8 @@ msgid "Switch check cycly(second)"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1243
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1326
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1267
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1350
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua:149
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua:149
 msgid "TCP Fast Open"
 msgid "TCP Fast Open"
 msgstr ""
 msgstr ""
@@ -1793,11 +1818,11 @@ msgstr ""
 msgid "TLS 1.3 Strict mode"
 msgid "TLS 1.3 Strict mode"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1158
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1182
 msgid "TLS ALPN"
 msgid "TLS ALPN"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1151
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1175
 msgid "TLS Host"
 msgid "TLS Host"
 msgstr ""
 msgstr ""
 
 
@@ -1834,7 +1859,7 @@ msgstr ""
 msgid "TWNIC-101 DNSCrypt SDNS"
 msgid "TWNIC-101 DNSCrypt SDNS"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1136
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1162
 msgid ""
 msgid ""
 "The client has not configured mldsa65Verify, but it will not perform the "
 "The client has not configured mldsa65Verify, but it will not perform the "
 "\"additional verification\" step and can still connect normally, see:"
 "\"additional verification\" step and can still connect normally, see:"
@@ -1848,10 +1873,6 @@ msgstr ""
 msgid "The keep-alive period.(Unit:second)"
 msgid "The keep-alive period.(Unit:second)"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1129
-msgid "This item might be an empty string."
-msgstr ""
-
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:135
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:135
 msgid "Through proxy update"
 msgid "Through proxy update"
 msgstr ""
 msgstr ""
@@ -1965,7 +1986,7 @@ msgstr ""
 msgid "Uplink Capacity(Default:Mbps)"
 msgid "Uplink Capacity(Default:Mbps)"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1286
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1310
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm:3
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm:3
 msgid "Upload"
 msgid "Upload"
 msgstr ""
 msgstr ""
@@ -2176,7 +2197,7 @@ msgstr ""
 msgid "Xray Noise Packets"
 msgid "Xray Noise Packets"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1195
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1219
 msgid "Xudp Mux"
 msgid "Xudp Mux"
 msgstr ""
 msgstr ""
 
 
@@ -2188,15 +2209,15 @@ msgstr ""
 msgid "aes-128-gcm"
 msgid "aes-128-gcm"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1238
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1262
 msgid "allow"
 msgid "allow"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1232
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1256
 msgid "allow: Allows use Mux connection."
 msgid "allow: Allows use Mux connection."
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1164
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1188
 msgid "allowInsecure"
 msgid "allowInsecure"
 msgstr ""
 msgstr ""
 
 
@@ -2229,21 +2250,21 @@ msgstr ""
 msgid "cloudflare-dns.com DNSCrypt SDNS"
 msgid "cloudflare-dns.com DNSCrypt SDNS"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1263
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1287
 msgid "comment_tcpcongestion_disable"
 msgid "comment_tcpcongestion_disable"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1201
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1225
 msgid "concurrency"
 msgid "concurrency"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1260
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1284
 msgid "custom_tcpcongestion"
 msgid "custom_tcpcongestion"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1124
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1124
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1209
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1222
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1233
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1246
 msgid "disable"
 msgid "disable"
 msgstr ""
 msgstr ""
 
 
@@ -2337,7 +2358,7 @@ msgstr ""
 msgid "randomized"
 msgid "randomized"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1237
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1261
 msgid "reject"
 msgid "reject"
 msgstr ""
 msgstr ""
 
 
@@ -2357,11 +2378,11 @@ msgstr ""
 msgid "shadowTLS protocol Version"
 msgid "shadowTLS protocol Version"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1239
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1263
 msgid "skip"
 msgid "skip"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1233
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1257
 msgid ""
 msgid ""
 "skip: Not use Mux module to carry UDP 443 traffic, Use original UDP "
 "skip: Not use Mux module to carry UDP 443 traffic, Use original UDP "
 "transmission method of proxy protocol."
 "transmission method of proxy protocol."
@@ -2395,10 +2416,10 @@ msgstr ""
 msgid "xtls-rprx-vision"
 msgid "xtls-rprx-vision"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1214
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1238
 msgid "xudpConcurrency"
 msgid "xudpConcurrency"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1228
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1252
 msgid "xudpProxyUDP443"
 msgid "xudpProxyUDP443"
 msgstr ""
 msgstr ""

+ 93 - 72
luci-app-ssr-plus/po/zh_Hans/ssr-plus.po

@@ -22,7 +22,7 @@ msgstr "单线程"
 msgid "128 Threads"
 msgid "128 Threads"
 msgstr "128 线程"
 msgstr "128 线程"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1223
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1247
 msgid "16"
 msgid "16"
 msgstr ""
 msgstr ""
 
 
@@ -58,7 +58,7 @@ msgstr "4 线程"
 msgid "64 Threads"
 msgid "64 Threads"
 msgstr "64 线程"
 msgstr "64 线程"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1210
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1234
 msgid "8"
 msgid "8"
 msgstr ""
 msgstr ""
 
 
@@ -71,7 +71,8 @@ msgid "<font style='color:red'>"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:831
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:831
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1136
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1135
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1162
 msgid "<font><b>"
 msgid "<font><b>"
 msgstr ""
 msgstr ""
 
 
@@ -82,9 +83,9 @@ msgstr "<h3>支持 SS/SSR/V2RAY/XRAY/TROJAN/NAIVEPROXY/SOCKS5/TUN 等协议。</
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:151
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:151
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:177
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:177
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:211
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:211
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1203
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1216
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1230
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1227
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1240
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1254
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:174
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:174
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:200
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:200
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:235
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client.lua:235
@@ -200,7 +201,7 @@ msgid "Auto Update Server subscription, GFW list and CHN route"
 msgstr "自动更新服务器订阅、GFW 列表和中国大陆 IP 段"
 msgstr "自动更新服务器订阅、GFW 列表和中国大陆 IP 段"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:604
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:604
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1264
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1288
 msgid "BBR"
 msgid "BBR"
 msgstr ""
 msgstr ""
 
 
@@ -246,7 +247,7 @@ msgid "CNNIC SDNS (1.2.4.8)"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:605
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:605
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1265
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1289
 msgid "CUBIC"
 msgid "CUBIC"
 msgstr ""
 msgstr ""
 
 
@@ -255,7 +256,7 @@ msgstr ""
 msgid "Camouflage Type"
 msgid "Camouflage Type"
 msgstr "伪装类型"
 msgstr "伪装类型"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1171
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1195
 msgid "Certificate fingerprint"
 msgid "Certificate fingerprint"
 msgstr "证书指纹"
 msgstr "证书指纹"
 
 
@@ -321,7 +322,8 @@ msgstr "点击此处查看或管理 DNS 列表文件"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:382
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:382
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:833
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:833
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1138
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1137
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1164
 msgid "Click to the page"
 msgid "Click to the page"
 msgstr "点击前往"
 msgstr "点击前往"
 
 
@@ -348,7 +350,7 @@ msgstr "正在收集数据中..."
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:831
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:831
 msgid "Configure XHTTP Extra Settings (JSON format), see:"
 msgid "Configure XHTTP Extra Settings (JSON format), see:"
-msgstr "配置 XHTTP 额外设置(JSON 格式),请参见:"
+msgstr "配置 XHTTP 额外设置(JSON 格式),具体请参见:"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1005
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1005
 msgid "Congestion"
 msgid "Congestion"
@@ -370,6 +372,11 @@ msgstr "连接正常"
 msgid "Connection Timeout"
 msgid "Connection Timeout"
 msgstr "连接超时"
 msgstr "连接超时"
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1148
+msgid ""
+"Controls the policy used when performing DNS queries for ECH configuration."
+msgstr "控制使用 DNS 查询 ECH 配置时的策略。"
+
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:78
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:78
 msgid "Copy SSR to clipboard successfully."
 msgid "Copy SSR to clipboard successfully."
 msgstr "成功复制 SSR 网址到剪贴板。"
 msgstr "成功复制 SSR 网址到剪贴板。"
@@ -378,11 +385,11 @@ msgstr "成功复制 SSR 网址到剪贴板。"
 msgid "Create Backup File"
 msgid "Create Backup File"
 msgstr "创建备份文件"
 msgstr "创建备份文件"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1300
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1324
 msgid "Create upload file error."
 msgid "Create upload file error."
 msgstr "创建上传文件错误。"
 msgstr "创建上传文件错误。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1320
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1344
 msgid "Current Certificate Path"
 msgid "Current Certificate Path"
 msgstr "当前证书路径"
 msgstr "当前证书路径"
 
 
@@ -454,7 +461,7 @@ msgstr "DTLS 1.2 数据包"
 msgid "Default"
 msgid "Default"
 msgstr "默认"
 msgstr "默认"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1231
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1255
 msgid "Default reject rejects traffic."
 msgid "Default reject rejects traffic."
 msgstr "默认 reject 拒绝流量。"
 msgstr "默认 reject 拒绝流量。"
 
 
@@ -462,13 +469,13 @@ msgstr "默认 reject 拒绝流量。"
 msgid "Default value 0 indicatesno heartbeat."
 msgid "Default value 0 indicatesno heartbeat."
 msgstr "默认为 0 表示无心跳。"
 msgstr "默认为 0 表示无心跳。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1204
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1228
 msgid ""
 msgid ""
 "Default: disable. When entering a negative number, such as -1, The Mux "
 "Default: disable. When entering a negative number, such as -1, The Mux "
 "module will not be used to carry TCP traffic."
 "module will not be used to carry TCP traffic."
 msgstr "默认:禁用。填负数时,如 -1,不使用 Mux 模块承载 TCP 流量。"
 msgstr "默认:禁用。填负数时,如 -1,不使用 Mux 模块承载 TCP 流量。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1217
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1241
 msgid ""
 msgid ""
 "Default:16. When entering a negative number, such as -1, The Mux module will "
 "Default:16. When entering a negative number, such as -1, The Mux module will "
 "not be used to carry UDP traffic, Use original UDP transmission method of "
 "not be used to carry UDP traffic, Use original UDP transmission method of "
@@ -572,6 +579,14 @@ msgstr "下行链路容量(默认:Mbps)"
 msgid "Dual-stack Listening Socket"
 msgid "Dual-stack Listening Socket"
 msgstr "双栈 Socket 监听"
 msgstr "双栈 Socket 监听"
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1133
+msgid "ECH Config"
+msgstr "ECH 配置"
+
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1147
+msgid "ECH Query Policy"
+msgstr "ECH 查询策略"
+
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:764
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:764
 msgid "Early Data Header Name"
 msgid "Early Data Header Name"
 msgstr "前置数据标头"
 msgstr "前置数据标头"
@@ -597,25 +612,29 @@ msgid "Enable Authentication"
 msgstr "启用用户名/密码认证"
 msgstr "启用用户名/密码认证"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:54
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:54
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1334
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1358
 msgid "Enable Auto Switch"
 msgid "Enable Auto Switch"
 msgstr "启用自动切换"
 msgstr "启用自动切换"
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1128
+msgid "Enable ECH(optional)"
+msgstr "启用 ECH (可选)"
+
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:446
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:446
 msgid "Enable Lazy Mode"
 msgid "Enable Lazy Mode"
 msgstr "启用懒狗模式"
 msgstr "启用懒狗模式"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1128
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1155
 msgid "Enable ML-DSA-65(optional)"
 msgid "Enable ML-DSA-65(optional)"
 msgstr "启用 ML-DSA-65 (可选)"
 msgstr "启用 ML-DSA-65 (可选)"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1249
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1273
 msgid ""
 msgid ""
 "Enable Multipath TCP, need to be enabled in both server and client "
 "Enable Multipath TCP, need to be enabled in both server and client "
 "configuration."
 "configuration."
 msgstr "启用 Multipath TCP,需在服务端和客户端配置中同时启用。"
 msgstr "启用 Multipath TCP,需在服务端和客户端配置中同时启用。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1177
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1201
 msgid "Enable Mux.Cool"
 msgid "Enable Mux.Cool"
 msgstr "启用 Mux.Cool"
 msgstr "启用 Mux.Cool"
 
 
@@ -651,7 +670,7 @@ msgstr "开启 V2 协议。"
 msgid "Enable V3 protocol."
 msgid "Enable V3 protocol."
 msgstr "开启 V3 协议。"
 msgstr "开启 V3 协议。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1195
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1219
 msgid "Enable Xudp Mux"
 msgid "Enable Xudp Mux"
 msgstr "启用 Xudp Mux"
 msgstr "启用 Xudp Mux"
 
 
@@ -676,8 +695,8 @@ msgid "Enabled Mixed"
 msgstr "启用 Mixed"
 msgstr "启用 Mixed"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1243
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1326
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1267
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1350
 msgid "Enabling TCP Fast Open Requires Server Support."
 msgid "Enabling TCP Fast Open Requires Server Support."
 msgstr "启用 TCP 快速打开需要服务端支持。"
 msgstr "启用 TCP 快速打开需要服务端支持。"
 
 
@@ -757,7 +776,7 @@ msgstr "配备中国大陆 CDN 的 Apple 域名,始终应答中国大陆 CDN 
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:380
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:380
 msgid "For specific usage, see:"
 msgid "For specific usage, see:"
-msgstr "具体使用方法,请参见:"
+msgstr "具体使用方法,具体请参见:"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:419
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:419
 msgid ""
 msgid ""
@@ -946,31 +965,37 @@ msgstr "绕过中国大陆 IP 模式"
 msgid "If empty, Not change Apple domains parsing DNS (Default is empty)"
 msgid "If empty, Not change Apple domains parsing DNS (Default is empty)"
 msgstr "如果为空,则不更改 Apple 域名解析 DNS(默认为空)"
 msgstr "如果为空,则不更改 Apple 域名解析 DNS(默认为空)"
 
 
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1135
+msgid ""
+"If it is not empty, it indicates that the Client has enabled Encrypted "
+"Client, see:"
+msgstr "如果不为空,表示客户端已启用加密客户端,具体请参见:"
+
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:658
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:658
 msgid "If this option is not set, the socket behavior is platform dependent."
 msgid "If this option is not set, the socket behavior is platform dependent."
 msgstr "如果未设置此选项,则 Socket 行为依赖于平台。"
 msgstr "如果未设置此选项,则 Socket 行为依赖于平台。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1168
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1192
 msgid ""
 msgid ""
 "If true, allowss insecure connection at TLS client, e.g., TLS server uses "
 "If true, allowss insecure connection at TLS client, e.g., TLS server uses "
 "unverifiable certificates."
 "unverifiable certificates."
 msgstr ""
 msgstr ""
 "是否允许不安全连接。当选择时,将不会检查远端主机所提供的 TLS 证书的有效性。"
 "是否允许不安全连接。当选择时,将不会检查远端主机所提供的 TLS 证书的有效性。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1284
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1308
 msgid "If you have a self-signed certificate,please check the box"
 msgid "If you have a self-signed certificate,please check the box"
 msgstr "如果你使用自签证书,请选择"
 msgstr "如果你使用自签证书,请选择"
 
 
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:635
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:661
 msgid "Import"
 msgid "Import"
 msgstr "导入配置信息"
 msgstr "导入配置信息"
 
 
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:160
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:160
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:295
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:327
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:420
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:503
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:626
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:303
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:335
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:434
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:522
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:652
 msgid "Import configuration information successfully."
 msgid "Import configuration information successfully."
 msgstr "导入配置信息成功。"
 msgstr "导入配置信息成功。"
 
 
@@ -990,7 +1015,7 @@ msgstr "接口控制"
 msgid "Invalid JSON format"
 msgid "Invalid JSON format"
 msgstr "无效的 JSON 格式"
 msgstr "无效的 JSON 格式"
 
 
-#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:629
+#: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm:655
 msgid "Invalid format."
 msgid "Invalid format."
 msgstr "无效的格式。"
 msgstr "无效的格式。"
 
 
@@ -998,19 +1023,19 @@ msgstr "无效的格式。"
 msgid "KcpTun"
 msgid "KcpTun"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1344
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1368
 msgid "KcpTun Enable"
 msgid "KcpTun Enable"
 msgstr "KcpTun 启用"
 msgstr "KcpTun 启用"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1361
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1385
 msgid "KcpTun Param"
 msgid "KcpTun Param"
 msgstr "KcpTun 参数"
 msgstr "KcpTun 参数"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1356
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1380
 msgid "KcpTun Password"
 msgid "KcpTun Password"
 msgstr "KcpTun 密码"
 msgstr "KcpTun 密码"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1350
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1374
 msgid "KcpTun Port"
 msgid "KcpTun Port"
 msgstr "KcpTun 端口"
 msgstr "KcpTun 端口"
 
 
@@ -1100,7 +1125,7 @@ msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
 msgstr ""
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:340
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua:340
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1338
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1362
 msgid "Local Port"
 msgid "Local Port"
 msgstr "本地端口"
 msgstr "本地端口"
 
 
@@ -1124,11 +1149,11 @@ msgstr ""
 msgid "Loyalsoldier/v2ray-rules-dat"
 msgid "Loyalsoldier/v2ray-rules-dat"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1134
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1160
 msgid "ML-DSA-65 Public key"
 msgid "ML-DSA-65 Public key"
 msgstr "ML-DSA-65 公钥"
 msgstr "ML-DSA-65 公钥"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1249
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1273
 msgid "MPTCP"
 msgid "MPTCP"
 msgstr ""
 msgstr ""
 
 
@@ -1148,7 +1173,7 @@ msgstr "最大前置数据"
 msgid "Maximum packet size the socks5 server can receive from external"
 msgid "Maximum packet size the socks5 server can receive from external"
 msgstr "socks5 服务器可以从外部接收的最大数据包大小(单位:字节)"
 msgstr "socks5 服务器可以从外部接收的最大数据包大小(单位:字节)"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1218
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1242
 msgid ""
 msgid ""
 "Min value is 1, Max value is 1024. When omitted or set to 0, Will same path "
 "Min value is 1, Max value is 1024. When omitted or set to 0, Will same path "
 "as TCP traffic."
 "as TCP traffic."
@@ -1156,7 +1181,7 @@ msgstr ""
 "最小值 1,最大值 1024。 省略或者填 0 时,将与 TCP 流量走同一条路,也就是传统"
 "最小值 1,最大值 1024。 省略或者填 0 时,将与 TCP 流量走同一条路,也就是传统"
 "的行为。"
 "的行为。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1205
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1229
 msgid ""
 msgid ""
 "Min value is 1, Max value is 128. When omitted or set to 0, it equals 8."
 "Min value is 1, Max value is 128. When omitted or set to 0, it equals 8."
 msgstr "最小值 1,最大值 128。省略或者填 0 时都等于 8。"
 msgstr "最小值 1,最大值 128。省略或者填 0 时都等于 8。"
@@ -1178,7 +1203,7 @@ msgstr ""
 msgid "Multi Threads Option"
 msgid "Multi Threads Option"
 msgstr "多线程并发转发"
 msgstr "多线程并发转发"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1177
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1201
 msgid "Mux"
 msgid "Mux"
 msgstr ""
 msgstr ""
 
 
@@ -1244,7 +1269,7 @@ msgstr "未检查"
 msgid "No new data!"
 msgid "No new data!"
 msgstr "你已经是最新数据,无需更新!"
 msgstr "你已经是最新数据,无需更新!"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1316
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1340
 msgid "No specify upload file."
 msgid "No specify upload file."
 msgstr "没有上传证书。"
 msgstr "没有上传证书。"
 
 
@@ -1378,7 +1403,7 @@ msgstr "允许无数据流"
 msgid "Ping Latency"
 msgid "Ping Latency"
 msgstr "Ping 延迟"
 msgstr "Ping 延迟"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1323
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1347
 msgid "Please confirm the current certificate path"
 msgid "Please confirm the current certificate path"
 msgstr "请选择确认所传证书,证书不正确将无法运行"
 msgstr "请选择确认所传证书,证书不正确将无法运行"
 
 
@@ -1512,7 +1537,7 @@ msgstr "更新成功!"
 msgid "Refresh..."
 msgid "Refresh..."
 msgstr "正在更新,请稍候..."
 msgstr "正在更新,请稍候..."
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1266
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1290
 msgid "Reno"
 msgid "Reno"
 msgstr ""
 msgstr ""
 
 
@@ -1592,7 +1617,7 @@ msgstr "选择 DNS 解析方式"
 msgid "Selection ShadowSocks Node Use Version."
 msgid "Selection ShadowSocks Node Use Version."
 msgstr "选择 ShadowSocks 节点使用版本。"
 msgstr "选择 ShadowSocks 节点使用版本。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1276
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1300
 msgid "Self-signed Certificate"
 msgid "Self-signed Certificate"
 msgstr "自签证书"
 msgstr "自签证书"
 
 
@@ -1782,8 +1807,8 @@ msgid "Switch check cycly(second)"
 msgstr "自动切换检查周期(秒)"
 msgstr "自动切换检查周期(秒)"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:524
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1243
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1326
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1267
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1350
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua:149
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/server-config.lua:149
 msgid "TCP Fast Open"
 msgid "TCP Fast Open"
 msgstr "TCP 快速打开"
 msgstr "TCP 快速打开"
@@ -1807,11 +1832,11 @@ msgstr ""
 msgid "TLS 1.3 Strict mode"
 msgid "TLS 1.3 Strict mode"
 msgstr "TLS 1.3 限定模式"
 msgstr "TLS 1.3 限定模式"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1158
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1182
 msgid "TLS ALPN"
 msgid "TLS ALPN"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1151
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1175
 msgid "TLS Host"
 msgid "TLS Host"
 msgstr "TLS 主机名"
 msgstr "TLS 主机名"
 
 
@@ -1848,13 +1873,13 @@ msgstr "发送窗口(无需确认即可发送的最大字节数:默认8Mb*2
 msgid "TWNIC-101 DNSCrypt SDNS"
 msgid "TWNIC-101 DNSCrypt SDNS"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1136
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1162
 msgid ""
 msgid ""
 "The client has not configured mldsa65Verify, but it will not perform the "
 "The client has not configured mldsa65Verify, but it will not perform the "
 "\"additional verification\" step and can still connect normally, see:"
 "\"additional verification\" step and can still connect normally, see:"
 msgstr ""
 msgstr ""
 "客户端若未配置 mldsa65Verify,但它不会执行 \"附加验证\" 步骤,仍可以正常连"
 "客户端若未配置 mldsa65Verify,但它不会执行 \"附加验证\" 步骤,仍可以正常连"
-"接,请参见:"
+"接,具体请参见:"
 
 
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/reset.htm:10
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/reset.htm:10
 msgid "The content entered is incorrect!"
 msgid "The content entered is incorrect!"
@@ -1864,10 +1889,6 @@ msgstr "输入的内容不正确!"
 msgid "The keep-alive period.(Unit:second)"
 msgid "The keep-alive period.(Unit:second)"
 msgstr "心跳包发送间隔(单位:秒)"
 msgstr "心跳包发送间隔(单位:秒)"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1129
-msgid "This item might be an empty string."
-msgstr "此项可以是空字符串。"
-
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:135
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/servers.lua:135
 msgid "Through proxy update"
 msgid "Through proxy update"
 msgstr "通过代理更新"
 msgstr "通过代理更新"
@@ -1981,7 +2002,7 @@ msgstr "更新时间(每天)"
 msgid "Uplink Capacity(Default:Mbps)"
 msgid "Uplink Capacity(Default:Mbps)"
 msgstr "上行链路容量(默认:Mbps)"
 msgstr "上行链路容量(默认:Mbps)"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1286
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1310
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm:3
 #: applications/luci-app-ssr-plus/luasrc/view/shadowsocksr/certupload.htm:3
 msgid "Upload"
 msgid "Upload"
 msgstr "上传"
 msgstr "上传"
@@ -2194,7 +2215,7 @@ msgstr "Xray 分片设置"
 msgid "Xray Noise Packets"
 msgid "Xray Noise Packets"
 msgstr "Xray 噪声数据包"
 msgstr "Xray 噪声数据包"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1195
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1219
 msgid "Xudp Mux"
 msgid "Xudp Mux"
 msgstr ""
 msgstr ""
 
 
@@ -2206,15 +2227,15 @@ msgstr "广告屏蔽更新 URL"
 msgid "aes-128-gcm"
 msgid "aes-128-gcm"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1238
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1262
 msgid "allow"
 msgid "allow"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1232
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1256
 msgid "allow: Allows use Mux connection."
 msgid "allow: Allows use Mux connection."
 msgstr "allow:允许走 Mux 连接。"
 msgstr "allow:允许走 Mux 连接。"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1164
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1188
 msgid "allowInsecure"
 msgid "allowInsecure"
 msgstr "允许不安全连接"
 msgstr "允许不安全连接"
 
 
@@ -2247,21 +2268,21 @@ msgstr ""
 msgid "cloudflare-dns.com DNSCrypt SDNS"
 msgid "cloudflare-dns.com DNSCrypt SDNS"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1263
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1287
 msgid "comment_tcpcongestion_disable"
 msgid "comment_tcpcongestion_disable"
 msgstr "系统默认值"
 msgstr "系统默认值"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1201
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1225
 msgid "concurrency"
 msgid "concurrency"
 msgstr "TCP 最大并发连接数"
 msgstr "TCP 最大并发连接数"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1260
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1284
 msgid "custom_tcpcongestion"
 msgid "custom_tcpcongestion"
 msgstr "连接服务器节点的 TCP 拥塞控制算法"
 msgstr "连接服务器节点的 TCP 拥塞控制算法"
 
 
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1124
 #: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1124
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1209
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1222
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1233
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1246
 msgid "disable"
 msgid "disable"
 msgstr "禁用"
 msgstr "禁用"
 
 
@@ -2355,7 +2376,7 @@ msgstr ""
 msgid "randomized"
 msgid "randomized"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1237
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1261
 msgid "reject"
 msgid "reject"
 msgstr ""
 msgstr ""
 
 
@@ -2375,11 +2396,11 @@ msgstr ""
 msgid "shadowTLS protocol Version"
 msgid "shadowTLS protocol Version"
 msgstr "ShadowTLS 协议版本"
 msgstr "ShadowTLS 协议版本"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1239
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1263
 msgid "skip"
 msgid "skip"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1233
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1257
 msgid ""
 msgid ""
 "skip: Not use Mux module to carry UDP 443 traffic, Use original UDP "
 "skip: Not use Mux module to carry UDP 443 traffic, Use original UDP "
 "transmission method of proxy protocol."
 "transmission method of proxy protocol."
@@ -2414,11 +2435,11 @@ msgstr ""
 msgid "xtls-rprx-vision"
 msgid "xtls-rprx-vision"
 msgstr ""
 msgstr ""
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1214
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1238
 msgid "xudpConcurrency"
 msgid "xudpConcurrency"
 msgstr "UDP 最大并发连接数"
 msgstr "UDP 最大并发连接数"
 
 
-#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1228
+#: applications/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua:1252
 msgid "xudpProxyUDP443"
 msgid "xudpProxyUDP443"
 msgstr "对被代理的 UDP/443 流量处理方式"
 msgstr "对被代理的 UDP/443 流量处理方式"
 
 

+ 2 - 0
luci-app-ssr-plus/root/usr/share/shadowsocksr/gen_config.lua

@@ -217,6 +217,8 @@ end
 						usage = "verify",
 						usage = "verify",
 						certificateFile = server.certpath
 						certificateFile = server.certpath
 					} or nil,
 					} or nil,
+					echConfigList = (server.enable_ech == "1") and server.ech_config or nil,
+					echForceQuery = (server.enable_ech == "1") and (server.ech_ForceQuery or "none") or nil
 				} or nil,
 				} or nil,
 				xtlsSettings = (server.xtls == '1') and server.tls_host and {
 				xtlsSettings = (server.xtls == '1') and server.tls_host and {
 					-- xtls
 					-- xtls

+ 26 - 5
luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua

@@ -195,7 +195,7 @@ local function processData(szType, content)
 
 
 		-- 如果 hy2 程序未安装则跳过订阅	
 		-- 如果 hy2 程序未安装则跳过订阅	
 		if not hy2_type then
 		if not hy2_type then
-		 return nil
+			return nil
 		end
 		end
 
 
 		result.alias = url.fragment and UrlDecode(url.fragment) or nil
 		result.alias = url.fragment and UrlDecode(url.fragment) or nil
@@ -346,6 +346,10 @@ local function processData(szType, content)
 			elseif info.host then
 			elseif info.host then
 				result.tls_host = info.host
 				result.tls_host = info.host
 			end
 			end
+			if info.ech and info.ech ~= "" then
+				result.enable_ech = "1"
+				result.ech_config = params.ech
+			end
 			result.insecure = allow_insecure
 			result.insecure = allow_insecure
 		else
 		else
 			result.tls = "0"
 			result.tls = "0"
@@ -435,10 +439,10 @@ local function processData(szType, content)
 			log("SS 节点服务器信息格式错误:", host_port)
 			log("SS 节点服务器信息格式错误:", host_port)
 			return nil
 			return nil
 		end
 		end
-		
+
 		-- 如果 SS 程序未安装则跳过订阅	
 		-- 如果 SS 程序未安装则跳过订阅	
 		if not (v2_ss or has_ss_type) then
 		if not (v2_ss or has_ss_type) then
-		 return nil
+			return nil
 		end
 		end
 
 
 		-- 填充 result
 		-- 填充 result
@@ -451,6 +455,14 @@ local function processData(szType, content)
 		result.server = server
 		result.server = server
 		result.server_port = port
 		result.server_port = port
 
 
+		-- 仅在 v2ray + shadowsocks 协议时处理 ECH
+		if v2_ss == "v2ray" and result.v2ray_protocol == "shadowsocks" then
+			if params.ech and params.ech ~= "" then
+				result.enable_ech = "1"
+				result.ech_config = ech
+			end
+		end
+
 		-- 插件处理
 		-- 插件处理
 		if params.plugin then
 		if params.plugin then
 			local plugin_info = UrlDecode(params.plugin)
 			local plugin_info = UrlDecode(params.plugin)
@@ -619,10 +631,10 @@ local function processData(szType, content)
 		else
 		else
 			result.server_port = port
 			result.server_port = port
 		end
 		end
-		
+
 		-- 如果 Tojan 程序未安装则跳过订阅	
 		-- 如果 Tojan 程序未安装则跳过订阅	
 		if not v2_tj then
 		if not v2_tj then
-		 return nil
+			return nil
 		end
 		end
 
 
 		if v2_tj ~= "trojan" then
 		if v2_tj ~= "trojan" then
@@ -630,6 +642,11 @@ local function processData(szType, content)
 				-- 处理 fingerprint 参数
 				-- 处理 fingerprint 参数
 				result.fingerprint = params.fp
 				result.fingerprint = params.fp
 			end
 			end
+			-- 处理 ech 参数
+			if params.ech then
+				result.enable_ech = "1"
+				result.ech_config = params.ech
+			end
 			-- 处理传输协议
 			-- 处理传输协议
 			result.transport = params.type or "tcp" -- 默认传输协议为 tcp
 			result.transport = params.type or "tcp" -- 默认传输协议为 tcp
 			if result.transport == "tcp" then
 			if result.transport == "tcp" then
@@ -710,6 +727,9 @@ local function processData(szType, content)
 		result.reality_publickey = params.pbk and UrlDecode(params.pbk) or nil
 		result.reality_publickey = params.pbk and UrlDecode(params.pbk) or nil
 		result.reality_shortid = params.sid
 		result.reality_shortid = params.sid
 		result.reality_spiderx = params.spx and UrlDecode(params.spx) or nil
 		result.reality_spiderx = params.spx and UrlDecode(params.spx) or nil
+		-- 检查 ech 参数是否存在且非空
+		result.enable_ech = (params.ech and params.ech ~= "") and "1" or nil
+		result.ech_config = (params.ech and params.ech ~= "") and params.ech or nil
 		-- 检查 pqv 参数是否存在且非空
 		-- 检查 pqv 参数是否存在且非空
 		result.enable_mldsa65verify = (params.pqv and params.pqv ~= "") and "1" or nil
 		result.enable_mldsa65verify = (params.pqv and params.pqv ~= "") and "1" or nil
 		result.reality_mldsa65verify = (params.pqv and params.pqv ~= "") and params.pqv or nil
 		result.reality_mldsa65verify = (params.pqv and params.pqv ~= "") and params.pqv or nil
@@ -1107,3 +1127,4 @@ if subscribe_url and #subscribe_url > 0 then
 		end
 		end
 	end)
 	end)
 end
 end
+