Просмотр исходного кода

Merge pull request #1847 from zxlhhyccc/tuic

luci-app-ssr-plus: Fix `TUIC` configuration and subscribe.
zxl hhyccc 5 дней назад
Родитель
Сommit
60286e628b

+ 3 - 0
luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/client-config.lua

@@ -1276,6 +1276,9 @@ o:value("", translate("Default"))
 o:value("h3")
 o:value("h2")
 o:value("h3,h2")
+o:value("http/1.1")
+o:value("h2,http/1.1")
+o:value("h3,h2,http/1.1")
 o:value("spdy/3.1")
 o:value("h3,spdy/3.1")
 o:depends("type", "tuic")

+ 5 - 6
luci-app-ssr-plus/luasrc/view/shadowsocksr/ssrurl.htm

@@ -844,7 +844,7 @@ function import_ssr_url(btn, urlname, sid) {
 			var params = Object.fromEntries(new URLSearchParams(query));
 
 			var sipIndex = url0.indexOf("@");
-			var userInfo = url0.substring(0, sipIndex);      // 格式:uuid:password
+			var userInfo = decodeURIComponent(url0.substring(0, sipIndex));      //  -- 如有Url编码进行解码,格式:uuid:password
 			var hostPart = url0.substring(sipIndex + 1);     // 格式:hostname:port
 			var userInfoSplitIndex = userInfo.indexOf(":");
 			if(userInfoSplitIndex < 0) {
@@ -887,13 +887,12 @@ function import_ssr_url(btn, urlname, sid) {
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.tuic_dual_stack')[0].checked = true;
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.tuic_dual_stack')[0].dispatchEvent(event);
 				if (params.ipstack_prefer && params.ipstack_prefer.trim() !== "") {
-					document.getElementsByName('cbid.shadowsocksr.' + sid + '.ipstack_prefer')[0].value = params.ipstack_prefer;
+					document.getElementsByName('cbid.shadowsocksr.' + sid + '.ipstack_prefer')[0].value = params.ipstack_prefer || "";
 				}
 			}
-			if (params["allowInsecure"] === "1" || params["allowInsecure"] === "true") {
-				document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].checked = true;
-				document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].dispatchEvent(event);
-			}
+			document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].checked =
+				!!(params.allowInsecure ?? params.allowlnsecure ?? params.insecure); // 设置 insecure 为 true
+			document.getElementsByName('cbid.shadowsocksr.' + sid + '.insecure')[0].dispatchEvent(event); // 触发事件
 			if (param != undefined) {
 				document.getElementsByName('cbid.shadowsocksr.' + sid + '.alias')[0].value = decodeURIComponent(param);
 			}

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

@@ -997,10 +997,11 @@ local function processData(szType, content)
 		local Info = content
 		if Info:find("@") then
 			local contents = split(Info, "@")
-			if contents[1]:find(":") then
-				local userinfo = split(contents[1], ":")
-				result.tuic_uuid = UrlDecode(userinfo[1])
-				result.tuic_passwd = UrlDecode(userinfo[2])
+			local userinfo_raw = UrlDecode(contents[1] or "") -- 如有Url编码进行解码
+			if userinfo_raw:find(":") then
+				local userinfo = split(userinfo_raw, ":")
+				result.tuic_uuid = userinfo[1]
+				result.tuic_passwd = userinfo[2]
 			end
 			Info = (contents[2] or ""):gsub("/%?", "?")
 		end
@@ -1077,12 +1078,11 @@ local function processData(szType, content)
 			end
 		end
 
-		-- 处理 insecure 参数
-		if params.allowInsecure then
-			if params.allowinsecure == "1" or params.allowinsecure == "0" then
-				result.insecure = params.allowInsecure
-		else
-				result.insecure = string.lower(params.allowinsecure) == "true" and "1" or "0"
+		-- 兼容 allowInsecure / allowlnsecure / insecure
+		if params.allowInsecure or params.allowlnsecure or params.insecure then
+			local insecure = params.allowInsecure or params.allowlnsecure or params.insecure
+			if insecure == true or insecure == "1" or insecure == "true" then
+				result.insecure = "1"
 			end
 		end
 	end