@@ -2,6 +2,25 @@ import ClashMeta_Producer from './clashmeta';
22import $ from '@/core/app' ;
33import { 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+ } ;
524const 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} ;
376399const 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} ;
546573const 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} ;
567595const 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} ;
616645const 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} ;
649679const 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} ;
680711const 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