Skip to content

Commit 572044c

Browse files
committed
fix: 修复 sing-box 和 mihomo 的 ip-version
1 parent c266635 commit 572044c

3 files changed

Lines changed: 47 additions & 1 deletion

File tree

backend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sub-store",
3-
"version": "2.19.71",
3+
"version": "2.19.72",
44
"description": "Advanced Subscription Manager for QX, Loon, Surge, Stash and Shadowrocket.",
55
"main": "src/main.js",
66
"scripts": {

backend/src/core/proxy-utils/producers/clashmeta.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
import { isPresent } from '@/core/proxy-utils/producers/utils';
22

3+
const ipVersions = {
4+
dual: 'dual',
5+
'v4-only': 'ipv4',
6+
'v6-only': 'ipv6',
7+
'prefer-v4': 'ipv4-prefer',
8+
'prefer-v6': 'ipv6-prefer',
9+
};
10+
311
export default function ClashMeta_Producer() {
412
const type = 'ALL';
513
const produce = (proxies, type, opts = {}) => {
@@ -242,6 +250,11 @@ export default function ClashMeta_Producer() {
242250
delete proxy[`${proxy.network}-opts`]['_grpc-type'];
243251
delete proxy[`${proxy.network}-opts`]['_grpc-authority'];
244252
}
253+
254+
if (proxy['ip-version']) {
255+
proxy['ip-version'] =
256+
ipVersions[proxy['ip-version']] || proxy['ip-version'];
257+
}
245258
return proxy;
246259
});
247260

backend/src/core/proxy-utils/producers/sing-box.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,25 @@ import ClashMeta_Producer from './clashmeta';
22
import $ from '@/core/app';
33
import { isIPv4, isIPv6 } from '@/utils';
44

5+
const ipVersions = {
6+
ipv4: 'ipv4_only',
7+
ipv6: 'ipv6_only',
8+
'v4-only': 'ipv4_only',
9+
'v6-only': 'ipv6_only',
10+
'ipv4-prefer': 'prefer_ipv4',
11+
'ipv6-prefer': 'prefer_ipv6',
12+
'prefer-v4': 'prefer_ipv4',
13+
'prefer-v6': 'prefer_ipv6',
14+
};
15+
16+
const ipVersionParser = (proxy, parsedProxy) => {
17+
const strategy = ipVersions[proxy['ip-version']];
18+
if (strategy) {
19+
parsedProxy.domain_resolver = {
20+
strategy,
21+
};
22+
}
23+
};
524
const detourParser = (proxy, parsedProxy) => {
625
parsedProxy.detour = proxy['dialer-proxy'] || proxy.detour;
726
};
@@ -278,6 +297,7 @@ const sshParser = (proxy = {}) => {
278297
if (proxy['fast-open']) parsedProxy.udp_fragment = true;
279298
tfoParser(proxy, parsedProxy);
280299
detourParser(proxy, parsedProxy);
300+
ipVersionParser(proxy, parsedProxy);
281301
return parsedProxy;
282302
};
283303

@@ -305,6 +325,7 @@ const httpParser = (proxy = {}) => {
305325
tfoParser(proxy, parsedProxy);
306326
detourParser(proxy, parsedProxy);
307327
tlsParser(proxy, parsedProxy);
328+
ipVersionParser(proxy, parsedProxy);
308329
return parsedProxy;
309330
};
310331

@@ -327,6 +348,7 @@ const socks5Parser = (proxy = {}) => {
327348
networkParser(proxy, parsedProxy);
328349
tfoParser(proxy, parsedProxy);
329350
detourParser(proxy, parsedProxy);
351+
ipVersionParser(proxy, parsedProxy);
330352
return parsedProxy;
331353
};
332354

@@ -371,6 +393,7 @@ const shadowTLSParser = (proxy = {}) => {
371393
tfoParser(proxy, stPart);
372394
detourParser(proxy, stPart);
373395
smuxParser(proxy.smux, ssPart);
396+
ipVersionParser(proxy, stPart);
374397
return { type: 'ss-with-st', ssPart, stPart };
375398
};
376399
const ssParser = (proxy = {}) => {
@@ -400,6 +423,7 @@ const ssParser = (proxy = {}) => {
400423
tfoParser(proxy, parsedProxy);
401424
detourParser(proxy, parsedProxy);
402425
smuxParser(proxy.smux, parsedProxy);
426+
ipVersionParser(proxy, parsedProxy);
403427
if (proxy.plugin) {
404428
const optArr = [];
405429
if (proxy.plugin === 'obfs') {
@@ -478,6 +502,7 @@ const ssrParser = (proxy = {}) => {
478502
tfoParser(proxy, parsedProxy);
479503
detourParser(proxy, parsedProxy);
480504
smuxParser(proxy.smux, parsedProxy);
505+
ipVersionParser(proxy, parsedProxy);
481506
return parsedProxy;
482507
};
483508

@@ -516,6 +541,7 @@ const vmessParser = (proxy = {}) => {
516541
detourParser(proxy, parsedProxy);
517542
tlsParser(proxy, parsedProxy);
518543
smuxParser(proxy.smux, parsedProxy);
544+
ipVersionParser(proxy, parsedProxy);
519545
return parsedProxy;
520546
};
521547

@@ -541,6 +567,7 @@ const vlessParser = (proxy = {}) => {
541567
detourParser(proxy, parsedProxy);
542568
smuxParser(proxy.smux, parsedProxy);
543569
tlsParser(proxy, parsedProxy);
570+
ipVersionParser(proxy, parsedProxy);
544571
return parsedProxy;
545572
};
546573
const trojanParser = (proxy = {}) => {
@@ -562,6 +589,7 @@ const trojanParser = (proxy = {}) => {
562589
detourParser(proxy, parsedProxy);
563590
tlsParser(proxy, parsedProxy);
564591
smuxParser(proxy.smux, parsedProxy);
592+
ipVersionParser(proxy, parsedProxy);
565593
return parsedProxy;
566594
};
567595
const hysteriaParser = (proxy = {}) => {
@@ -611,6 +639,7 @@ const hysteriaParser = (proxy = {}) => {
611639
detourParser(proxy, parsedProxy);
612640
tfoParser(proxy, parsedProxy);
613641
smuxParser(proxy.smux, parsedProxy);
642+
ipVersionParser(proxy, parsedProxy);
614643
return parsedProxy;
615644
};
616645
const hysteria2Parser = (proxy = {}) => {
@@ -644,6 +673,7 @@ const hysteria2Parser = (proxy = {}) => {
644673
tfoParser(proxy, parsedProxy);
645674
detourParser(proxy, parsedProxy);
646675
smuxParser(proxy.smux, parsedProxy);
676+
ipVersionParser(proxy, parsedProxy);
647677
return parsedProxy;
648678
};
649679
const tuic5Parser = (proxy = {}) => {
@@ -675,6 +705,7 @@ const tuic5Parser = (proxy = {}) => {
675705
detourParser(proxy, parsedProxy);
676706
tlsParser(proxy, parsedProxy);
677707
smuxParser(proxy.smux, parsedProxy);
708+
ipVersionParser(proxy, parsedProxy);
678709
return parsedProxy;
679710
};
680711
const anytlsParser = (proxy = {}) => {
@@ -697,6 +728,7 @@ const anytlsParser = (proxy = {}) => {
697728
);
698729
detourParser(proxy, parsedProxy);
699730
tlsParser(proxy, parsedProxy);
731+
ipVersionParser(proxy, parsedProxy);
700732
return parsedProxy;
701733
};
702734

@@ -754,6 +786,7 @@ const wireguardParser = (proxy = {}) => {
754786
tfoParser(proxy, parsedProxy);
755787
detourParser(proxy, parsedProxy);
756788
smuxParser(proxy.smux, parsedProxy);
789+
ipVersionParser(proxy, parsedProxy);
757790
return parsedProxy;
758791
};
759792

0 commit comments

Comments
 (0)