mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-10 07:09:00 +08:00
feat: 读取节点的 ca-str 和 _ca (后端文件路径) 字段, 自动计算 fingerprint
This commit is contained in:
parent
3ad42f2c10
commit
ad3d2270ac
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sub-store",
|
"name": "sub-store",
|
||||||
"version": "2.14.337",
|
"version": "2.14.339",
|
||||||
"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": {
|
||||||
@ -25,6 +25,7 @@
|
|||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"http-proxy-middleware": "^2.0.6",
|
"http-proxy-middleware": "^2.0.6",
|
||||||
"js-base64": "^3.7.2",
|
"js-base64": "^3.7.2",
|
||||||
|
"jsrsasign": "^11.1.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
"requests": "^0.3.0",
|
"requests": "^0.3.0",
|
||||||
|
9
backend/pnpm-lock.yaml
generated
9
backend/pnpm-lock.yaml
generated
@ -29,6 +29,9 @@ dependencies:
|
|||||||
js-base64:
|
js-base64:
|
||||||
specifier: ^3.7.2
|
specifier: ^3.7.2
|
||||||
version: registry.npmmirror.com/js-base64@3.7.2
|
version: registry.npmmirror.com/js-base64@3.7.2
|
||||||
|
jsrsasign:
|
||||||
|
specifier: ^11.1.0
|
||||||
|
version: registry.npmmirror.com/jsrsasign@11.1.0
|
||||||
lodash:
|
lodash:
|
||||||
specifier: ^4.17.21
|
specifier: ^4.17.21
|
||||||
version: registry.npmmirror.com/lodash@4.17.21
|
version: registry.npmmirror.com/lodash@4.17.21
|
||||||
@ -6634,6 +6637,12 @@ packages:
|
|||||||
verror: registry.npmmirror.com/verror@1.10.0
|
verror: registry.npmmirror.com/verror@1.10.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
registry.npmmirror.com/jsrsasign@11.1.0:
|
||||||
|
resolution: {integrity: sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/jsrsasign/-/jsrsasign-11.1.0.tgz}
|
||||||
|
name: jsrsasign
|
||||||
|
version: 11.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
registry.npmmirror.com/just-debounce@1.1.0:
|
registry.npmmirror.com/just-debounce@1.1.0:
|
||||||
resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/just-debounce/-/just-debounce-1.1.0.tgz}
|
resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==, registry: http://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/just-debounce/-/just-debounce-1.1.0.tgz}
|
||||||
name: just-debounce
|
name: just-debounce
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import rs from '@/utils/rs';
|
||||||
import YAML from '@/utils/yaml';
|
import YAML from '@/utils/yaml';
|
||||||
import download from '@/utils/download';
|
import download from '@/utils/download';
|
||||||
import {
|
import {
|
||||||
@ -463,6 +464,25 @@ function lastParse(proxy) {
|
|||||||
if (['', 'off'].includes(proxy.sni)) {
|
if (['', 'off'].includes(proxy.sni)) {
|
||||||
proxy['disable-sni'] = true;
|
proxy['disable-sni'] = true;
|
||||||
}
|
}
|
||||||
|
let caStr = proxy['ca_str'];
|
||||||
|
if (proxy['ca-str']) {
|
||||||
|
caStr = proxy['ca-str'];
|
||||||
|
} else if (caStr) {
|
||||||
|
delete proxy['ca_str'];
|
||||||
|
proxy['ca-str'] = caStr;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if ($.env.isNode && !caStr && proxy['_ca']) {
|
||||||
|
caStr = $.node.fs.readFileSync(proxy['_ca'], {
|
||||||
|
encoding: 'utf8',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
$.error(`Read ca file failed\nReason: ${e}`);
|
||||||
|
}
|
||||||
|
if (!proxy['tls-fingerprint'] && caStr) {
|
||||||
|
proxy['tls-fingerprint'] = rs.generateFingerprint(caStr);
|
||||||
|
}
|
||||||
return proxy;
|
return proxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
backend/src/utils/rs.js
Normal file
11
backend/src/utils/rs.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import rs from 'jsrsasign';
|
||||||
|
|
||||||
|
export function generateFingerprint(caStr) {
|
||||||
|
const hex = rs.pemtohex(caStr);
|
||||||
|
const fingerPrint = rs.KJUR.crypto.Util.hashHex(hex, 'sha256');
|
||||||
|
return fingerPrint.match(/.{2}/g).join(':').toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
generateFingerprint,
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user