From da4e25d6c56a7aea77d1510a6d05c9daab4e69c3 Mon Sep 17 00:00:00 2001 From: PRESFIL Date: Fri, 26 Dec 2025 16:00:22 +0000 Subject: [PATCH] fix: vless xray link parsing (#1050) * fix: vlessxray: Fully decode xhttp path xhttp path may contain / * fix: useXrayVless: encryption may be empty string According to 3x-ui generated url --- src/configs/common/utils.cpp | 4 ++-- src/configs/common/xrayStreamSetting.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/configs/common/utils.cpp b/src/configs/common/utils.cpp index 78b434c..54afff8 100644 --- a/src/configs/common/utils.cpp +++ b/src/configs/common/utils.cpp @@ -52,8 +52,8 @@ namespace Configs if (query.queryItemValue("type") == "xhttp" || query.queryItemValue("security") == "reality" - || query.queryItemValue("encryption") != "none" + || (query.queryItemValue("encryption") != "none" && query.queryItemValue("encryption") != "") || query.queryItemValue("extra") != "") return true; return false; } -} \ No newline at end of file +} diff --git a/src/configs/common/xrayStreamSetting.cpp b/src/configs/common/xrayStreamSetting.cpp index f699b4d..2a915cd 100644 --- a/src/configs/common/xrayStreamSetting.cpp +++ b/src/configs/common/xrayStreamSetting.cpp @@ -205,7 +205,7 @@ namespace Configs { auto query = QUrlQuery(url.query()); if (query.hasQueryItem("host")) host = query.queryItemValue("host"); - if (query.hasQueryItem("path")) path = query.queryItemValue("path"); + if (query.hasQueryItem("path")) path = query.queryItemValue("path", QUrl::FullyDecoded); if (query.hasQueryItem("mode")) mode = query.queryItemValue("mode"); if (query.hasQueryItem("extra")) ParseExtraJson(query.queryItemValue("extra", QUrl::FullyDecoded)); if (query.hasQueryItem("headers")) headers = query.queryItemValue("headers").split(",");