Jelajahi Sumber

luci-app-ssr-plus: Add import/subscribe support tfo params.

zxlhhyccc 1 hari lalu
induk
melakukan
dfbdfb54d7

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

@@ -184,6 +184,11 @@ function import_ssr_url(btn, urlname, sid) {
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].dispatchEvent(event); // 触发事件
 			}
 
+			if (params.get("tfo") === "1") {
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.fast_open')[0].checked = true; // 设置 fast_open 为 true
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.fast_open')[0].dispatchEvent(event); // 触发事件
+			}
+
 			s.innerHTML = "<font style=\'color:green\'><%:Import configuration information successfully.%></font>";
 			return false;
 		case "ss":
@@ -326,6 +331,11 @@ function import_ssr_url(btn, urlname, sid) {
 					document.getElementsByName('cbid.shadowsocksr.' + sid + '.enable_plugin')[0].checked = false;
 				}
 
+				if (params.tfo === "1") {
+					document.getElementsByName('cbid.shadowsocksr.' + sid + '.fast_open')[0].checked = true; // 设置 fast_open 为 true
+					document.getElementsByName('cbid.shadowsocksr.' + sid + '.fast_open')[0].dispatchEvent(event); // 触发事件
+				}
+
 				if (param != undefined) {
 					document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURIComponent(param);
 				}
@@ -509,6 +519,10 @@ function import_ssr_url(btn, urlname, sid) {
 			document.getElementsByName('cbid.shadowsocksr.' + sid + '.password')[0].value = b64decsafe(ssm[6]);
 			document.getElementsByName('cbid.shadowsocksr.' + sid + '.obfs_param')[0].value = dictvalue(pdict, 'obfsparam');
 			document.getElementsByName('cbid.shadowsocksr.' + sid + '.protocol_param')[0].value = dictvalue(pdict, 'protoparam');
+			if (pdict.tfo === "1") {
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.fast_open')[0].checked = true; // 设置 fast_open 为 true
+				document.getElementsByName('cbid.shadowsocksr.' + sid + '.fast_open')[0].dispatchEvent(event); // 触发事件
+			}
 			var rem = pdict['remarks'];
 			if (typeof (rem) != 'undefined' && rem != '' && rem.length > 0) document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = b64decutf8safe(rem);
 			s.innerHTML = "<font style=\'color:green\'><%:Import configuration information successfully.%></font>";
@@ -855,6 +869,10 @@ function import_ssr_url(btn, urlname, sid) {
 					dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.enable_xhttp_extra', event); // 触发事件
 					setElementValue('cbid.shadowsocksr.' + sid + '.xhttp_extra', params.get("extra") || "");
 				}
+				if (params.get("tfo") === "1") {
+					setElementValue('cbid.shadowsocksr.' + sid + '.fast_open', true); // 设置 fast_open 为 true
+					dispatchEventIfExists('cbid.shadowsocksr.' + sid + '.fast_open', event); // 触发事件
+				}
 				break;
 			case "kcp":
 				setElementValue('cbid.shadowsocksr.' + sid + '.kcp_guise', params.get("headerType") || "none");

+ 18 - 0
luci-app-ssr-plus/root/usr/share/shadowsocksr/subscribe.lua

@@ -282,6 +282,10 @@ local function processData(szType, content)
 				result.insecure = "1"
 			end
 		end
+		if params.tfo then
+			-- 处理 fast open 参数
+			result.fast_open = params.tfo
+		end
 	elseif szType == 'ssr' then
 		-- 去掉前后空白和#注释
 		local link = trim(content:gsub("#.*$", ""))
@@ -309,6 +313,11 @@ local function processData(szType, content)
 		result.obfs_param = base64Decode(params.obfsparam or '')
 		result.protocol_param = base64Decode(params.protoparam or '')
 
+		if params.tfo then
+			-- 处理 fast open 参数
+			result.fast_open = params.tfo
+		end
+
 		local group = base64Decode(params.group or '')
 		local remarks = base64Decode(params.remarks or '')
 
@@ -560,6 +569,11 @@ local function processData(szType, content)
 			result.server = server
 			result.server_port = port
 
+			if params.tfo then
+				-- 处理 fast open 参数
+				result.fast_open = params.tfo
+			end
+
 			-- 插件处理
 			if params.plugin then
 				local plugin_info = UrlDecode(params.plugin)
@@ -1035,6 +1049,10 @@ local function processData(szType, content)
 			result.xhttp_mode = params.mode or "auto"
 			result.xhttp_host = params.host and UrlDecode(params.host) or nil
 			result.xhttp_path = params.path and UrlDecode(params.path) or "/"
+			if params.tfo then
+				-- 处理 fast open 参数
+				result.fast_open = params.tfo
+			end
 			if params.extra and params.extra ~= "" then
 				result.enable_xhttp_extra = "1"
 				result.xhttp_extra = params.extra