feat: 输出到 Clash/Stash/Shadowrocket 时, 会过滤掉配置了前置代理的节点, 并提示使用对应的功能

This commit is contained in:
xream 2025-04-26 13:46:58 +08:00
parent 4c4bda563a
commit da9b1d8795
No known key found for this signature in database
GPG Key ID: 1D2C5225471789F9
4 changed files with 14 additions and 6 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "sub-store", "name": "sub-store",
"version": "2.19.32", "version": "2.19.33",
"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": {

View File

@ -1,4 +1,5 @@
import { isPresent } from '@/core/proxy-utils/producers/utils'; import { isPresent } from '@/core/proxy-utils/producers/utils';
import $ from '@/core/app';
export default function Clash_Producer() { export default function Clash_Producer() {
const type = 'ALL'; const type = 'ALL';
@ -46,6 +47,11 @@ export default function Clash_Producer() {
proxy['reality-opts'])) proxy['reality-opts']))
) { ) {
return false; return false;
} else if (proxy['underlying-proxy'] || proxy['dialer-proxy']) {
$.error(
`Clash 不支持前置代理字段. 已过滤节点 ${proxy.name}`,
);
return false;
} }
return true; return true;
}) })
@ -152,11 +158,6 @@ export default function Clash_Producer() {
} }
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;
} }

View File

@ -1,4 +1,5 @@
import { isPresent } from '@/core/proxy-utils/producers/utils'; import { isPresent } from '@/core/proxy-utils/producers/utils';
import $ from '@/core/app';
export default function Shadowrocket_Producer() { export default function Shadowrocket_Producer() {
const type = 'ALL'; const type = 'ALL';
@ -10,6 +11,11 @@ export default function Shadowrocket_Producer() {
return false; return false;
} else if (['mieru', 'anytls'].includes(proxy.type)) { } else if (['mieru', 'anytls'].includes(proxy.type)) {
return false; return false;
} else if (proxy['underlying-proxy'] || proxy['dialer-proxy']) {
$.error(
`Shadowrocket 不支持前置代理字段. 已过滤节点 ${proxy.name}. 请使用 App 内的 "代理通过" 功能`,
);
return false;
} }
return true; return true;
}) })

View File

@ -17,6 +17,7 @@ function operator(proxies = [], targetPlatform, context) {
// 只给 mihomo 输出的话, `dialer-proxy` 也行 // 只给 mihomo 输出的话, `dialer-proxy` 也行
// 只给 sing-box 输出的话, `detour` 也行 // 只给 sing-box 输出的话, `detour` 也行
// 只给 egern 输出的话, `prev_hop` 也行 // 只给 egern 输出的话, `prev_hop` 也行
// 输出到 Clash/Stash/Shadowrocket 时, 会过滤掉配置了前置代理的节点, 并提示使用对应的功能.
// 9. `trojan`, `tuic`, `hysteria`, `hysteria2`, `juicity` 会在解析时设置 `tls`: true (会使用 tls 类协议的通用逻辑), 输出时删除 // 9. `trojan`, `tuic`, `hysteria`, `hysteria2`, `juicity` 会在解析时设置 `tls`: true (会使用 tls 类协议的通用逻辑), 输出时删除
// 10. `sni` 在某些协议里会自动与 `servername` 转换 // 10. `sni` 在某些协议里会自动与 `servername` 转换
// 11. 读取节点的 ca-str 和 _ca (后端文件路径) 字段, 自动计算 fingerprint (参考 https://t.me/zhetengsha/1512) // 11. 读取节点的 ca-str 和 _ca (后端文件路径) 字段, 自动计算 fingerprint (参考 https://t.me/zhetengsha/1512)