From 38eccca8b47c06cf2fe29d13740ff3b7d4a326ed Mon Sep 17 00:00:00 2001 From: xream Date: Tue, 24 Dec 2024 01:20:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=84=E5=90=88=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=89=8B=E5=8A=A8=E8=AE=BE=E7=BD=AE=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E4=BF=A1=E6=81=AF.=20=E6=94=AF=E6=8C=81=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E9=93=BE=E6=8E=A5.=20=E6=AD=A4=E6=97=B6=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=93=8D=E5=BA=94=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/package.json | 2 +- backend/src/restful/download.js | 44 +++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/backend/package.json b/backend/package.json index 1b0e074..c70a57e 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,6 @@ { "name": "sub-store", - "version": "2.14.448", + "version": "2.14.449", "description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.", "main": "src/main.js", "scripts": { diff --git a/backend/src/restful/download.js b/backend/src/restful/download.js index ac621fd..5b924e8 100644 --- a/backend/src/restful/download.js +++ b/backend/src/restful/download.js @@ -375,13 +375,12 @@ async function downloadCollection(req, res) { proxy, noCache, }); - + let subUserInfoOfSub; // forward flow header from the first subscription in this collection const allSubs = $.read(SUBS_KEY); const subnames = collection.subscriptions; if (subnames.length > 0) { const sub = findByName(allSubs, subnames[0]); - let flowInfo; if ( sub.source !== 'local' || ['localFirst', 'remoteFirst'].includes(sub.mergeSources) @@ -415,16 +414,13 @@ async function downloadCollection(req, res) { } } if (!$arguments.noFlow) { - flowInfo = await getFlowHeaders( + subUserInfoOfSub = await getFlowHeaders( $arguments?.insecure ? `${url}#insecure` : url, $arguments.flowUserAgent, undefined, proxy || sub.proxy || collection.proxy, $arguments.flowUrl, ); - if (flowInfo) { - res.set('subscription-userinfo', flowInfo); - } } } catch (err) { $.error( @@ -455,13 +451,41 @@ async function downloadCollection(req, res) { } else { subUserInfo = sub.subUserinfo; } - res.set( - 'subscription-userinfo', - [subUserInfo, flowInfo].filter((i) => i).join('; '), - ); + subUserInfoOfSub = [subUserInfo, subUserInfoOfSub] + .filter((i) => i) + .join('; '); } } + $.info(`组合订阅 ${name} 透传的的流量信息: ${subUserInfoOfSub}`); + + let subUserInfoOfCol; + if (/^https?:\/\//.test(collection.subUserinfo)) { + try { + subUserInfoOfCol = await getFlowHeaders( + undefined, + undefined, + undefined, + proxy || collection.proxy, + collection.subUserinfo, + ); + } catch (e) { + $.error( + `组合订阅 ${name} 使用自定义流量链接 ${ + collection.subUserinfo + } 获取流量信息时发生错误: ${JSON.stringify(e)}`, + ); + } + } else { + subUserInfoOfCol = collection.subUserinfo; + } + res.set( + 'subscription-userinfo', + [subUserInfoOfCol, subUserInfoOfSub] + .filter((i) => i) + .join('; '), + ); + if (platform === 'JSON') { if (resultFormat === 'nezha') { output = nezhaTransform(output);