mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2025-06-24 03:58:52 +08:00
feat: 读取节点的 ca-str 和 _ca (后端文件路径) 字段, 自动计算 fingerprint
This commit is contained in:
parent
3ad42f2c10
commit
ad3d2270ac
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "sub-store",
|
||||
"version": "2.14.337",
|
||||
"version": "2.14.339",
|
||||
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and ShadowRocket.",
|
||||
"main": "src/main.js",
|
||||
"scripts": {
|
||||
@ -25,6 +25,7 @@
|
||||
"express": "^4.17.1",
|
||||
"http-proxy-middleware": "^2.0.6",
|
||||
"js-base64": "^3.7.2",
|
||||
"jsrsasign": "^11.1.0",
|
||||
"lodash": "^4.17.21",
|
||||
"request": "^2.88.2",
|
||||
"requests": "^0.3.0",
|
||||
|
9
backend/pnpm-lock.yaml
generated
9
backend/pnpm-lock.yaml
generated
@ -29,6 +29,9 @@ dependencies:
|
||||
js-base64:
|
||||
specifier: ^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:
|
||||
specifier: ^4.17.21
|
||||
version: registry.npmmirror.com/lodash@4.17.21
|
||||
@ -6634,6 +6637,12 @@ packages:
|
||||
verror: registry.npmmirror.com/verror@1.10.0
|
||||
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:
|
||||
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
|
||||
|
@ -1,3 +1,4 @@
|
||||
import rs from '@/utils/rs';
|
||||
import YAML from '@/utils/yaml';
|
||||
import download from '@/utils/download';
|
||||
import {
|
||||
@ -463,6 +464,25 @@ function lastParse(proxy) {
|
||||
if (['', 'off'].includes(proxy.sni)) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
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