Skip to content

Commit 7d8132d

Browse files
committed
feat: 默认输出格式改为 V2Ray; accept 为 application/json 时, 输出 JSON; 响应增加 X-Powered-By Sub-Store
1 parent bc1247e commit 7d8132d

File tree

4 files changed

+28
-22
lines changed

4 files changed

+28
-22
lines changed

backend/package.json

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

backend/src/utils/flow.js

+11-13
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,19 @@ import $ from '@/core/app';
66
import headersResourceCache from '@/utils/headers-resource-cache';
77

88
export function getFlowField(headers) {
9-
let subKey = '';
10-
let webPageKey = '';
11-
12-
Object.keys(headers).some((k) => {
13-
if (/SUBSCRIPTION-USERINFO/i.test(k)) {
14-
subKey = k;
15-
} else if (/PROFILE-WEB-PAGE-URL/i.test(k)) {
16-
webPageKey = k;
9+
const keys = Object.keys(headers);
10+
let sub = '';
11+
let webPage = '';
12+
for (let k of keys) {
13+
const lower = k.toLowerCase();
14+
if (lower === 'subscription-userinfo') {
15+
sub = headers[k];
16+
} else if (lower === 'profile-web-page-url') {
17+
webPage = headers[k];
1718
}
18-
return subKey && webPageKey;
19-
});
19+
}
2020

21-
return `${headers[subKey] || ''}${
22-
webPageKey ? `;app_url=${headers[webPageKey]}` : ''
23-
}`;
21+
return `${sub || ''}${webPage ? `;app_url=${webPage}` : ''}`;
2422
}
2523
export async function getFlowHeaders(
2624
rawUrl,

backend/src/utils/user-agent.js

+15-8
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,20 @@ export function getUserAgentFromHeaders(headers) {
22
const keys = Object.keys(headers);
33
let UA = '';
44
let ua = '';
5+
let accept = '';
56
for (let k of keys) {
6-
if (/USER-AGENT/i.test(k)) {
7+
const lower = k.toLowerCase();
8+
if (lower === 'user-agent') {
79
UA = headers[k];
810
ua = UA.toLowerCase();
9-
break;
11+
} else if (lower === 'accept') {
12+
accept = headers[k];
1013
}
1114
}
12-
return { UA, ua };
15+
return { UA, ua, accept };
1316
}
14-
export function getPlatformFromUserAgent({ ua, UA }) {
17+
18+
export function getPlatformFromUserAgent({ ua, UA, accept }) {
1519
if (UA.indexOf('Quantumult%20X') !== -1) {
1620
return 'QX';
1721
} else if (UA.indexOf('Surfboard') !== -1) {
@@ -35,15 +39,18 @@ export function getPlatformFromUserAgent({ ua, UA }) {
3539
return 'ClashMeta';
3640
} else if (ua.indexOf('clash') !== -1) {
3741
return 'Clash';
38-
} else if (ua.indexOf('v2ray') !== -1) {
42+
} else if (ua.indexOf('v2ray') !== -1 || ua.indexOf('egern') !== -1) {
3943
return 'V2Ray';
4044
} else if (ua.indexOf('sing-box') !== -1) {
4145
return 'sing-box';
42-
} else {
46+
} else if (accept.indexOf('application/json') === 0) {
4347
return 'JSON';
48+
} else {
49+
return 'V2Ray';
4450
}
4551
}
52+
4653
export function getPlatformFromHeaders(headers) {
47-
const { UA, ua } = getUserAgentFromHeaders(headers);
48-
return getPlatformFromUserAgent({ ua, UA });
54+
const { UA, ua, accept } = getUserAgentFromHeaders(headers);
55+
return getPlatformFromUserAgent({ ua, UA, accept });
4956
}

backend/src/vendor/express.js

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export default function express({ substore: $, port, host }) {
99
'Access-Control-Allow-Methods': 'POST,GET,OPTIONS,PATCH,PUT,DELETE',
1010
'Access-Control-Allow-Headers':
1111
'Origin, X-Requested-With, Content-Type, Accept',
12+
'X-Powered-By': 'Sub-Store',
1213
};
1314

1415
// node support

0 commit comments

Comments
 (0)