mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-13 18:36:02 +08:00
feat: 默认输出格式改为 V2Ray; accept 为 application/json 时, 输出 JSON; 响应增加 X-Powered-By Sub-Store
This commit is contained in:
parent
bc1247efaf
commit
7d8132d7cd
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sub-store",
|
"name": "sub-store",
|
||||||
"version": "2.14.422",
|
"version": "2.14.423",
|
||||||
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
|
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
|
||||||
"main": "src/main.js",
|
"main": "src/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -6,21 +6,19 @@ import $ from '@/core/app';
|
|||||||
import headersResourceCache from '@/utils/headers-resource-cache';
|
import headersResourceCache from '@/utils/headers-resource-cache';
|
||||||
|
|
||||||
export function getFlowField(headers) {
|
export function getFlowField(headers) {
|
||||||
let subKey = '';
|
const keys = Object.keys(headers);
|
||||||
let webPageKey = '';
|
let sub = '';
|
||||||
|
let webPage = '';
|
||||||
Object.keys(headers).some((k) => {
|
for (let k of keys) {
|
||||||
if (/SUBSCRIPTION-USERINFO/i.test(k)) {
|
const lower = k.toLowerCase();
|
||||||
subKey = k;
|
if (lower === 'subscription-userinfo') {
|
||||||
} else if (/PROFILE-WEB-PAGE-URL/i.test(k)) {
|
sub = headers[k];
|
||||||
webPageKey = k;
|
} else if (lower === 'profile-web-page-url') {
|
||||||
|
webPage = headers[k];
|
||||||
}
|
}
|
||||||
return subKey && webPageKey;
|
}
|
||||||
});
|
|
||||||
|
|
||||||
return `${headers[subKey] || ''}${
|
return `${sub || ''}${webPage ? `;app_url=${webPage}` : ''}`;
|
||||||
webPageKey ? `;app_url=${headers[webPageKey]}` : ''
|
|
||||||
}`;
|
|
||||||
}
|
}
|
||||||
export async function getFlowHeaders(
|
export async function getFlowHeaders(
|
||||||
rawUrl,
|
rawUrl,
|
||||||
|
@ -2,16 +2,20 @@ export function getUserAgentFromHeaders(headers) {
|
|||||||
const keys = Object.keys(headers);
|
const keys = Object.keys(headers);
|
||||||
let UA = '';
|
let UA = '';
|
||||||
let ua = '';
|
let ua = '';
|
||||||
|
let accept = '';
|
||||||
for (let k of keys) {
|
for (let k of keys) {
|
||||||
if (/USER-AGENT/i.test(k)) {
|
const lower = k.toLowerCase();
|
||||||
|
if (lower === 'user-agent') {
|
||||||
UA = headers[k];
|
UA = headers[k];
|
||||||
ua = UA.toLowerCase();
|
ua = UA.toLowerCase();
|
||||||
break;
|
} else if (lower === 'accept') {
|
||||||
|
accept = headers[k];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { UA, ua };
|
return { UA, ua, accept };
|
||||||
}
|
}
|
||||||
export function getPlatformFromUserAgent({ ua, UA }) {
|
|
||||||
|
export function getPlatformFromUserAgent({ ua, UA, accept }) {
|
||||||
if (UA.indexOf('Quantumult%20X') !== -1) {
|
if (UA.indexOf('Quantumult%20X') !== -1) {
|
||||||
return 'QX';
|
return 'QX';
|
||||||
} else if (UA.indexOf('Surfboard') !== -1) {
|
} else if (UA.indexOf('Surfboard') !== -1) {
|
||||||
@ -35,15 +39,18 @@ export function getPlatformFromUserAgent({ ua, UA }) {
|
|||||||
return 'ClashMeta';
|
return 'ClashMeta';
|
||||||
} else if (ua.indexOf('clash') !== -1) {
|
} else if (ua.indexOf('clash') !== -1) {
|
||||||
return 'Clash';
|
return 'Clash';
|
||||||
} else if (ua.indexOf('v2ray') !== -1) {
|
} else if (ua.indexOf('v2ray') !== -1 || ua.indexOf('egern') !== -1) {
|
||||||
return 'V2Ray';
|
return 'V2Ray';
|
||||||
} else if (ua.indexOf('sing-box') !== -1) {
|
} else if (ua.indexOf('sing-box') !== -1) {
|
||||||
return 'sing-box';
|
return 'sing-box';
|
||||||
} else {
|
} else if (accept.indexOf('application/json') === 0) {
|
||||||
return 'JSON';
|
return 'JSON';
|
||||||
|
} else {
|
||||||
|
return 'V2Ray';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getPlatformFromHeaders(headers) {
|
export function getPlatformFromHeaders(headers) {
|
||||||
const { UA, ua } = getUserAgentFromHeaders(headers);
|
const { UA, ua, accept } = getUserAgentFromHeaders(headers);
|
||||||
return getPlatformFromUserAgent({ ua, UA });
|
return getPlatformFromUserAgent({ ua, UA, accept });
|
||||||
}
|
}
|
||||||
|
1
backend/src/vendor/express.js
vendored
1
backend/src/vendor/express.js
vendored
@ -9,6 +9,7 @@ export default function express({ substore: $, port, host }) {
|
|||||||
'Access-Control-Allow-Methods': 'POST,GET,OPTIONS,PATCH,PUT,DELETE',
|
'Access-Control-Allow-Methods': 'POST,GET,OPTIONS,PATCH,PUT,DELETE',
|
||||||
'Access-Control-Allow-Headers':
|
'Access-Control-Allow-Headers':
|
||||||
'Origin, X-Requested-With, Content-Type, Accept',
|
'Origin, X-Requested-With, Content-Type, Accept',
|
||||||
|
'X-Powered-By': 'Sub-Store',
|
||||||
};
|
};
|
||||||
|
|
||||||
// node support
|
// node support
|
||||||
|
Loading…
x
Reference in New Issue
Block a user