Skip to content

Commit 837667e

Browse files
committed
feat: 手动设置流量信息时, 支持使用链接. 此时使用响应内容
1 parent 0069b0c commit 837667e

4 files changed

Lines changed: 88 additions & 5 deletions

File tree

‎backend/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sub-store",
3-
"version": "2.14.446",
3+
"version": "2.14.447",
44
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
55
"main": "src/main.js",
66
"scripts": {

‎backend/src/restful/download.js‎

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,29 @@ async function downloadSubscription(req, res) {
213213
}
214214
}
215215
if (sub.subUserinfo) {
216+
let subUserInfo;
217+
if (/^https?:\/\//.test(sub.subUserinfo)) {
218+
try {
219+
subUserInfo = await getFlowHeaders(
220+
undefined,
221+
undefined,
222+
undefined,
223+
proxy || sub.proxy,
224+
sub.subUserinfo,
225+
);
226+
} catch (e) {
227+
$.error(
228+
`订阅 ${name} 使用自定义流量链接 ${
229+
sub.subUserinfo
230+
} 获取流量信息时发生错误: ${JSON.stringify(e)}`,
231+
);
232+
}
233+
} else {
234+
subUserInfo = sub.subUserinfo;
235+
}
216236
res.set(
217237
'subscription-userinfo',
218-
[sub.subUserinfo, flowInfo].filter((i) => i).join('; '),
238+
[subUserInfo, flowInfo].filter((i) => i).join('; '),
219239
);
220240
}
221241

@@ -415,9 +435,29 @@ async function downloadCollection(req, res) {
415435
}
416436
}
417437
if (sub.subUserinfo) {
438+
let subUserInfo;
439+
if (/^https?:\/\//.test(sub.subUserinfo)) {
440+
try {
441+
subUserInfo = await getFlowHeaders(
442+
undefined,
443+
undefined,
444+
undefined,
445+
proxy || sub.proxy,
446+
sub.subUserinfo,
447+
);
448+
} catch (e) {
449+
$.error(
450+
`组合订阅 ${name} 使用自定义流量链接 ${
451+
sub.subUserinfo
452+
} 获取流量信息时发生错误: ${JSON.stringify(e)}`,
453+
);
454+
}
455+
} else {
456+
subUserInfo = sub.subUserinfo;
457+
}
418458
res.set(
419459
'subscription-userinfo',
420-
[sub.subUserinfo, flowInfo].filter((i) => i).join('; '),
460+
[subUserInfo, flowInfo].filter((i) => i).join('; '),
421461
);
422462
}
423463
}

‎backend/src/restful/subscriptions.js‎

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,29 @@ async function getFlowInfo(req, res) {
5757
!['localFirst', 'remoteFirst'].includes(sub.mergeSources)
5858
) {
5959
if (sub.subUserinfo) {
60+
let subUserInfo;
61+
if (/^https?:\/\//.test(sub.subUserinfo)) {
62+
try {
63+
subUserInfo = await getFlowHeaders(
64+
undefined,
65+
undefined,
66+
undefined,
67+
sub.proxy,
68+
sub.subUserinfo,
69+
);
70+
} catch (e) {
71+
$.error(
72+
`订阅 ${name} 使用自定义流量链接 ${
73+
sub.subUserinfo
74+
} 获取流量信息时发生错误: ${JSON.stringify(e)}`,
75+
);
76+
}
77+
} else {
78+
subUserInfo = sub.subUserinfo;
79+
}
6080
try {
6181
success(res, {
62-
...parseFlowHeaders(sub.subUserinfo),
82+
...parseFlowHeaders(subUserInfo),
6383
});
6484
} catch (e) {
6585
$.error(
@@ -149,9 +169,29 @@ async function getFlowInfo(req, res) {
149169
startDate: $arguments.startDate,
150170
cycleDays: $arguments.cycleDays,
151171
});
172+
let subUserInfo;
173+
if (/^https?:\/\//.test(sub.subUserinfo)) {
174+
try {
175+
subUserInfo = await getFlowHeaders(
176+
undefined,
177+
undefined,
178+
undefined,
179+
sub.proxy,
180+
sub.subUserinfo,
181+
);
182+
} catch (e) {
183+
$.error(
184+
`订阅 ${name} 使用自定义流量链接 ${
185+
sub.subUserinfo
186+
} 获取流量信息时发生错误: ${JSON.stringify(e)}`,
187+
);
188+
}
189+
} else {
190+
subUserInfo = sub.subUserinfo;
191+
}
152192
const result = {
153193
...parseFlowHeaders(
154-
[sub.subUserinfo, flowHeaders].filter((i) => i).join('; '),
194+
[subUserInfo, flowHeaders].filter((i) => i).join('; '),
155195
),
156196
};
157197
if (remainingDays != null) {

‎backend/src/utils/flow.js‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ export async function getFlowHeaders(
167167
flowInfo = getFlowField(headers);
168168
}
169169
}
170+
if (flowInfo) {
171+
flowInfo = flowInfo.trim();
172+
}
170173
if (flowInfo) {
171174
headersResourceCache.set(id, flowInfo);
172175
}

0 commit comments

Comments
 (0)