From 9e54507bbb71b0f76e7377e4c0d58bc2384a54dd Mon Sep 17 00:00:00 2001 From: xream Date: Mon, 21 Aug 2023 21:20:31 +0800 Subject: [PATCH] fix: double quotes in Surge vmess ws-headers Host --- backend/package.json | 2 +- backend/src/core/proxy-utils/parsers/peggy/surge.js | 3 +++ backend/src/core/proxy-utils/parsers/peggy/surge.peg | 3 +++ backend/src/core/proxy-utils/producers/surge.js | 8 +++++++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/backend/package.json b/backend/package.json index 2761a93c2..20db01522 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.14.13", + "version": "2.14.14", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/core/proxy-utils/parsers/peggy/surge.js b/backend/src/core/proxy-utils/parsers/peggy/surge.js index 3adf0d33f..013259969 100644 --- a/backend/src/core/proxy-utils/parsers/peggy/surge.js +++ b/backend/src/core/proxy-utils/parsers/peggy/surge.js @@ -25,6 +25,9 @@ const grammars = String.raw` proxy.network = "ws"; $set(proxy, "ws-opts.path", obfs.path); $set(proxy, "ws-opts.headers", obfs['ws-headers']); + if (proxy['ws-opts'] && proxy['ws-opts']['headers'] && proxy['ws-opts']['headers'].Host) { + proxy['ws-opts']['headers'].Host = proxy['ws-opts']['headers'].Host.replace(/^"(.*)"$/, '$1') + } } } } diff --git a/backend/src/core/proxy-utils/parsers/peggy/surge.peg b/backend/src/core/proxy-utils/parsers/peggy/surge.peg index d22cd66b7..461de8a76 100644 --- a/backend/src/core/proxy-utils/parsers/peggy/surge.peg +++ b/backend/src/core/proxy-utils/parsers/peggy/surge.peg @@ -23,6 +23,9 @@ proxy.network = "ws"; $set(proxy, "ws-opts.path", obfs.path); $set(proxy, "ws-opts.headers", obfs['ws-headers']); + if (proxy['ws-opts'] && proxy['ws-opts']['headers'] && proxy['ws-opts']['headers'].Host) { + proxy['ws-opts']['headers'].Host = proxy['ws-opts']['headers'].Host.replace(/^"(.*)"$/, '$1') + } } } } diff --git a/backend/src/core/proxy-utils/producers/surge.js b/backend/src/core/proxy-utils/producers/surge.js index 08abeef14..855888a30 100644 --- a/backend/src/core/proxy-utils/producers/surge.js +++ b/backend/src/core/proxy-utils/producers/surge.js @@ -301,7 +301,13 @@ function handleTransport(result, proxy) { if (isPresent(proxy, 'ws-opts.headers')) { const headers = proxy['ws-opts'].headers; const value = Object.keys(headers) - .map((k) => `${k}:${headers[k]}`) + .map((k) => { + let v = headers[k]; + if (['Host'].includes(k)) { + v = `"${v}"`; + } + return `${k}:${v}`; + }) .join('|'); if (isNotBlank(value)) { result.append(`,ws-headers=${value}`);