mirror of
https://github.com/sub-store-org/Sub-Store.git
synced 2025-08-10 00:52:40 +00:00
feat: 支持 tls 的 plugin 中跳过证书验证; Surge Shadow TLS 默认版本为 2; sing-box 支持 Shadowsocks Shadow TLS
This commit is contained in:
@@ -126,6 +126,12 @@ export default function Clash_Producer() {
|
||||
proxy['h2-opts'].headers.host = [host];
|
||||
}
|
||||
}
|
||||
if (proxy['plugin-opts']?.tls) {
|
||||
if (isPresent(proxy, 'skip-cert-verify')) {
|
||||
proxy['plugin-opts']['skip-cert-verify'] =
|
||||
proxy['skip-cert-verify'];
|
||||
}
|
||||
}
|
||||
if (
|
||||
['trojan', 'tuic', 'hysteria', 'hysteria2'].includes(
|
||||
proxy.type,
|
||||
|
||||
@@ -89,6 +89,18 @@ export default function ClashMeta_Producer() {
|
||||
proxy.servername = proxy.sni;
|
||||
delete proxy.sni;
|
||||
}
|
||||
} else if (proxy.type === 'ss') {
|
||||
if (
|
||||
isPresent(proxy, 'shadow-tls-password') &&
|
||||
!isPresent(proxy, 'plugin')
|
||||
) {
|
||||
proxy.plugin = 'shadow-tls';
|
||||
proxy['plugin-opts'] = {
|
||||
host: proxy['shadow-tls-sni'],
|
||||
password: proxy['shadow-tls-password'],
|
||||
version: proxy['shadow-tls-version'],
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
@@ -129,6 +141,13 @@ export default function ClashMeta_Producer() {
|
||||
proxy['h2-opts'].headers.host = [host];
|
||||
}
|
||||
}
|
||||
|
||||
if (proxy['plugin-opts']?.tls) {
|
||||
if (isPresent(proxy, 'skip-cert-verify')) {
|
||||
proxy['plugin-opts']['skip-cert-verify'] =
|
||||
proxy['skip-cert-verify'];
|
||||
}
|
||||
}
|
||||
if (
|
||||
['trojan', 'tuic', 'hysteria', 'hysteria2'].includes(
|
||||
proxy.type,
|
||||
|
||||
@@ -145,7 +145,12 @@ export default function ShadowRocket_Producer() {
|
||||
proxy['h2-opts'].headers.host = [host];
|
||||
}
|
||||
}
|
||||
|
||||
if (proxy['plugin-opts']?.tls) {
|
||||
if (isPresent(proxy, 'skip-cert-verify')) {
|
||||
proxy['plugin-opts']['skip-cert-verify'] =
|
||||
proxy['skip-cert-verify'];
|
||||
}
|
||||
}
|
||||
if (
|
||||
['trojan', 'tuic', 'hysteria', 'hysteria2'].includes(
|
||||
proxy.type,
|
||||
|
||||
@@ -263,6 +263,37 @@ const socks5Parser = (proxy = {}) => {
|
||||
return parsedProxy;
|
||||
};
|
||||
|
||||
const shadowTLSParser = (proxy = {}) => {
|
||||
const ssPart = {
|
||||
tag: proxy.name,
|
||||
type: 'shadowsocks',
|
||||
method: proxy.cipher,
|
||||
password: proxy.password,
|
||||
detour: `${proxy.name}_shadowtls`,
|
||||
};
|
||||
const stPart = {
|
||||
tag: `${proxy.name}_shadowtls`,
|
||||
type: 'shadowtls',
|
||||
server: proxy.server,
|
||||
server_port: parseInt(`${proxy.port}`, 10),
|
||||
version: proxy['plugin-opts'].version,
|
||||
password: proxy['plugin-opts'].password,
|
||||
tls: {
|
||||
enabled: true,
|
||||
server_name: proxy['plugin-opts'].host,
|
||||
utls: {
|
||||
enabled: true,
|
||||
fingerprint: proxy['client-fingerprint'],
|
||||
},
|
||||
},
|
||||
};
|
||||
if (stPart.server_port < 1 || stPart.server_port > 65535)
|
||||
throw '端口值非法';
|
||||
if (proxy['fast-open'] === true) stPart.udp_fragment = true;
|
||||
tfoParser(proxy, stPart);
|
||||
smuxParser(proxy.smux, ssPart);
|
||||
return { type: 'ss-with-st', ssPart, stPart };
|
||||
};
|
||||
const ssParser = (proxy = {}) => {
|
||||
const parsedProxy = {
|
||||
tag: proxy.name,
|
||||
@@ -607,9 +638,10 @@ export default function singbox_Producer() {
|
||||
break;
|
||||
case 'ss':
|
||||
if (proxy.plugin === 'shadow-tls') {
|
||||
throw new Error(
|
||||
`Platform sing-box does not support proxy type: ${proxy.type} with shadow-tls`,
|
||||
);
|
||||
const { ssPart, stPart } =
|
||||
shadowTLSParser(proxy);
|
||||
list.push(ssPart);
|
||||
list.push(stPart);
|
||||
} else {
|
||||
list.push(ssParser(proxy));
|
||||
}
|
||||
|
||||
@@ -225,6 +225,12 @@ export default function Stash_Producer() {
|
||||
proxy['h2-opts'].headers.host = [host];
|
||||
}
|
||||
}
|
||||
if (proxy['plugin-opts']?.tls) {
|
||||
if (isPresent(proxy, 'skip-cert-verify')) {
|
||||
proxy['plugin-opts']['skip-cert-verify'] =
|
||||
proxy['skip-cert-verify'];
|
||||
}
|
||||
}
|
||||
if (
|
||||
['trojan', 'tuic', 'hysteria', 'hysteria2'].includes(
|
||||
proxy.type,
|
||||
|
||||
Reference in New Issue
Block a user