mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-01 01:02:00 +08:00
feat: 支持 dialer-proxy, detour
This commit is contained in:
parent
cb66c8daa2
commit
93a5ce6c3b
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sub-store",
|
"name": "sub-store",
|
||||||
"version": "2.14.281",
|
"version": "2.14.282",
|
||||||
"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": {
|
||||||
|
@ -751,6 +751,9 @@ function Clash_All() {
|
|||||||
if (proxy.fingerprint) {
|
if (proxy.fingerprint) {
|
||||||
proxy['tls-fingerprint'] = proxy.fingerprint;
|
proxy['tls-fingerprint'] = proxy.fingerprint;
|
||||||
}
|
}
|
||||||
|
if (proxy['dialer-proxy']) {
|
||||||
|
proxy['underlying-proxy'] = proxy['dialer-proxy'];
|
||||||
|
}
|
||||||
|
|
||||||
if (proxy['benchmark-url']) {
|
if (proxy['benchmark-url']) {
|
||||||
proxy['test-url'] = proxy['benchmark-url'];
|
proxy['test-url'] = proxy['benchmark-url'];
|
||||||
|
@ -144,6 +144,12 @@ export default function Clash_Producer() {
|
|||||||
proxy.fingerprint = proxy['tls-fingerprint'];
|
proxy.fingerprint = proxy['tls-fingerprint'];
|
||||||
}
|
}
|
||||||
delete proxy['tls-fingerprint'];
|
delete proxy['tls-fingerprint'];
|
||||||
|
|
||||||
|
if (proxy['underlying-proxy']) {
|
||||||
|
proxy['dialer-proxy'] = proxy['underlying-proxy'];
|
||||||
|
}
|
||||||
|
delete proxy['underlying-proxy'];
|
||||||
|
|
||||||
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
||||||
delete proxy.tls;
|
delete proxy.tls;
|
||||||
}
|
}
|
||||||
|
@ -160,6 +160,12 @@ export default function ClashMeta_Producer() {
|
|||||||
proxy.fingerprint = proxy['tls-fingerprint'];
|
proxy.fingerprint = proxy['tls-fingerprint'];
|
||||||
}
|
}
|
||||||
delete proxy['tls-fingerprint'];
|
delete proxy['tls-fingerprint'];
|
||||||
|
|
||||||
|
if (proxy['underlying-proxy']) {
|
||||||
|
proxy['dialer-proxy'] = proxy['underlying-proxy'];
|
||||||
|
}
|
||||||
|
delete proxy['underlying-proxy'];
|
||||||
|
|
||||||
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
||||||
delete proxy.tls;
|
delete proxy.tls;
|
||||||
}
|
}
|
||||||
|
@ -163,6 +163,12 @@ export default function ShadowRocket_Producer() {
|
|||||||
proxy.fingerprint = proxy['tls-fingerprint'];
|
proxy.fingerprint = proxy['tls-fingerprint'];
|
||||||
}
|
}
|
||||||
delete proxy['tls-fingerprint'];
|
delete proxy['tls-fingerprint'];
|
||||||
|
|
||||||
|
if (proxy['underlying-proxy']) {
|
||||||
|
proxy['dialer-proxy'] = proxy['underlying-proxy'];
|
||||||
|
}
|
||||||
|
delete proxy['underlying-proxy'];
|
||||||
|
|
||||||
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
||||||
delete proxy.tls;
|
delete proxy.tls;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
import ClashMeta_Producer from './clashmeta';
|
import ClashMeta_Producer from './clashmeta';
|
||||||
import $ from '@/core/app';
|
import $ from '@/core/app';
|
||||||
|
|
||||||
|
const detourParser = (proxy, parsedProxy) => {
|
||||||
|
if (proxy['dialer-proxy']) parsedProxy.detour = proxy['dialer-proxy'];
|
||||||
|
};
|
||||||
const tfoParser = (proxy, parsedProxy) => {
|
const tfoParser = (proxy, parsedProxy) => {
|
||||||
parsedProxy.tcp_fast_open = false;
|
parsedProxy.tcp_fast_open = false;
|
||||||
if (proxy.tfo) parsedProxy.tcp_fast_open = true;
|
if (proxy.tfo) parsedProxy.tcp_fast_open = true;
|
||||||
@ -249,6 +252,7 @@ const sshParser = (proxy = {}) => {
|
|||||||
parsedProxy.host_key_algorithms = proxy['host-key-algorithms'];
|
parsedProxy.host_key_algorithms = proxy['host-key-algorithms'];
|
||||||
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -274,6 +278,7 @@ const httpParser = (proxy = {}) => {
|
|||||||
}
|
}
|
||||||
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
@ -295,6 +300,7 @@ const socks5Parser = (proxy = {}) => {
|
|||||||
if (proxy['udp-over-tcp']) parsedProxy.udp_over_tcp = true;
|
if (proxy['udp-over-tcp']) parsedProxy.udp_over_tcp = true;
|
||||||
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -326,6 +332,7 @@ const shadowTLSParser = (proxy = {}) => {
|
|||||||
throw '端口值非法';
|
throw '端口值非法';
|
||||||
if (proxy['fast-open'] === true) stPart.udp_fragment = true;
|
if (proxy['fast-open'] === true) stPart.udp_fragment = true;
|
||||||
tfoParser(proxy, stPart);
|
tfoParser(proxy, stPart);
|
||||||
|
detourParser(proxy, stPart);
|
||||||
smuxParser(proxy.smux, ssPart);
|
smuxParser(proxy.smux, ssPart);
|
||||||
return { type: 'ss-with-st', ssPart, stPart };
|
return { type: 'ss-with-st', ssPart, stPart };
|
||||||
};
|
};
|
||||||
@ -344,6 +351,7 @@ const ssParser = (proxy = {}) => {
|
|||||||
if (proxy['udp-over-tcp']) parsedProxy.udp_over_tcp = true;
|
if (proxy['udp-over-tcp']) parsedProxy.udp_over_tcp = true;
|
||||||
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
if (proxy.plugin) {
|
if (proxy.plugin) {
|
||||||
const optArr = [];
|
const optArr = [];
|
||||||
@ -421,6 +429,7 @@ const ssrParser = (proxy = {}) => {
|
|||||||
parsedProxy.protocol_param = proxy['protocol-param'];
|
parsedProxy.protocol_param = proxy['protocol-param'];
|
||||||
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
@ -457,6 +466,7 @@ const vmessParser = (proxy = {}) => {
|
|||||||
if (proxy.network === 'grpc') grpcParser(proxy, parsedProxy);
|
if (proxy.network === 'grpc') grpcParser(proxy, parsedProxy);
|
||||||
|
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
@ -479,6 +489,7 @@ const vlessParser = (proxy = {}) => {
|
|||||||
if (proxy.network === 'grpc') grpcParser(proxy, parsedProxy);
|
if (proxy.network === 'grpc') grpcParser(proxy, parsedProxy);
|
||||||
|
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
@ -499,6 +510,7 @@ const trojanParser = (proxy = {}) => {
|
|||||||
if (proxy.network === 'ws') wsParser(proxy, parsedProxy);
|
if (proxy.network === 'ws') wsParser(proxy, parsedProxy);
|
||||||
|
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
@ -545,6 +557,7 @@ const hysteriaParser = (proxy = {}) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
@ -569,6 +582,7 @@ const hysteria2Parser = (proxy = {}) => {
|
|||||||
if (!parsedProxy.obfs.type) delete parsedProxy.obfs;
|
if (!parsedProxy.obfs.type) delete parsedProxy.obfs;
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
@ -597,6 +611,7 @@ const tuic5Parser = (proxy = {}) => {
|
|||||||
if (proxy['heartbeat-interval'])
|
if (proxy['heartbeat-interval'])
|
||||||
parsedProxy.heartbeat = `${proxy['heartbeat-interval']}ms`;
|
parsedProxy.heartbeat = `${proxy['heartbeat-interval']}ms`;
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
tlsParser(proxy, parsedProxy);
|
tlsParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
@ -650,6 +665,7 @@ const wireguardParser = (proxy = {}) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
tfoParser(proxy, parsedProxy);
|
tfoParser(proxy, parsedProxy);
|
||||||
|
detourParser(proxy, parsedProxy);
|
||||||
smuxParser(proxy.smux, parsedProxy);
|
smuxParser(proxy.smux, parsedProxy);
|
||||||
return parsedProxy;
|
return parsedProxy;
|
||||||
};
|
};
|
||||||
@ -789,6 +805,7 @@ export default function singbox_Producer() {
|
|||||||
$.error(e.message ?? e);
|
$.error(e.message ?? e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return type === 'internal'
|
return type === 'internal'
|
||||||
? list
|
? list
|
||||||
: JSON.stringify({ outbounds: list }, null, 2);
|
: JSON.stringify({ outbounds: list }, null, 2);
|
||||||
|
@ -242,6 +242,12 @@ export default function Stash_Producer() {
|
|||||||
proxy.fingerprint = proxy['tls-fingerprint'];
|
proxy.fingerprint = proxy['tls-fingerprint'];
|
||||||
}
|
}
|
||||||
delete proxy['tls-fingerprint'];
|
delete proxy['tls-fingerprint'];
|
||||||
|
|
||||||
|
if (proxy['underlying-proxy']) {
|
||||||
|
proxy['dialer-proxy'] = proxy['underlying-proxy'];
|
||||||
|
}
|
||||||
|
delete proxy['underlying-proxy'];
|
||||||
|
|
||||||
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
if (isPresent(proxy, 'tls') && typeof proxy.tls !== 'boolean') {
|
||||||
delete proxy.tls;
|
delete proxy.tls;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user