11import ClashMeta_Producer from './clashmeta' ;
22import $ from '@/core/app' ;
33
4+ const detourParser = ( proxy , parsedProxy ) => {
5+ if ( proxy [ 'dialer-proxy' ] ) parsedProxy . detour = proxy [ 'dialer-proxy' ] ;
6+ } ;
47const tfoParser = ( proxy , parsedProxy ) => {
58 parsedProxy . tcp_fast_open = false ;
69 if ( proxy . tfo ) parsedProxy . tcp_fast_open = true ;
@@ -249,6 +252,7 @@ const sshParser = (proxy = {}) => {
249252 parsedProxy . host_key_algorithms = proxy [ 'host-key-algorithms' ] ;
250253 if ( proxy [ 'fast-open' ] ) parsedProxy . udp_fragment = true ;
251254 tfoParser ( proxy , parsedProxy ) ;
255+ detourParser ( proxy , parsedProxy ) ;
252256 return parsedProxy ;
253257} ;
254258
@@ -274,6 +278,7 @@ const httpParser = (proxy = {}) => {
274278 }
275279 if ( proxy [ 'fast-open' ] ) parsedProxy . udp_fragment = true ;
276280 tfoParser ( proxy , parsedProxy ) ;
281+ detourParser ( proxy , parsedProxy ) ;
277282 tlsParser ( proxy , parsedProxy ) ;
278283 return parsedProxy ;
279284} ;
@@ -295,6 +300,7 @@ const socks5Parser = (proxy = {}) => {
295300 if ( proxy [ 'udp-over-tcp' ] ) parsedProxy . udp_over_tcp = true ;
296301 if ( proxy [ 'fast-open' ] ) parsedProxy . udp_fragment = true ;
297302 tfoParser ( proxy , parsedProxy ) ;
303+ detourParser ( proxy , parsedProxy ) ;
298304 return parsedProxy ;
299305} ;
300306
@@ -326,6 +332,7 @@ const shadowTLSParser = (proxy = {}) => {
326332 throw '端口值非法' ;
327333 if ( proxy [ 'fast-open' ] === true ) stPart . udp_fragment = true ;
328334 tfoParser ( proxy , stPart ) ;
335+ detourParser ( proxy , stPart ) ;
329336 smuxParser ( proxy . smux , ssPart ) ;
330337 return { type : 'ss-with-st' , ssPart, stPart } ;
331338} ;
@@ -344,6 +351,7 @@ const ssParser = (proxy = {}) => {
344351 if ( proxy [ 'udp-over-tcp' ] ) parsedProxy . udp_over_tcp = true ;
345352 if ( proxy [ 'fast-open' ] ) parsedProxy . udp_fragment = true ;
346353 tfoParser ( proxy , parsedProxy ) ;
354+ detourParser ( proxy , parsedProxy ) ;
347355 smuxParser ( proxy . smux , parsedProxy ) ;
348356 if ( proxy . plugin ) {
349357 const optArr = [ ] ;
@@ -421,6 +429,7 @@ const ssrParser = (proxy = {}) => {
421429 parsedProxy . protocol_param = proxy [ 'protocol-param' ] ;
422430 if ( proxy [ 'fast-open' ] ) parsedProxy . udp_fragment = true ;
423431 tfoParser ( proxy , parsedProxy ) ;
432+ detourParser ( proxy , parsedProxy ) ;
424433 smuxParser ( proxy . smux , parsedProxy ) ;
425434 return parsedProxy ;
426435} ;
@@ -457,6 +466,7 @@ const vmessParser = (proxy = {}) => {
457466 if ( proxy . network === 'grpc' ) grpcParser ( proxy , parsedProxy ) ;
458467
459468 tfoParser ( proxy , parsedProxy ) ;
469+ detourParser ( proxy , parsedProxy ) ;
460470 tlsParser ( proxy , parsedProxy ) ;
461471 smuxParser ( proxy . smux , parsedProxy ) ;
462472 return parsedProxy ;
@@ -479,6 +489,7 @@ const vlessParser = (proxy = {}) => {
479489 if ( proxy . network === 'grpc' ) grpcParser ( proxy , parsedProxy ) ;
480490
481491 tfoParser ( proxy , parsedProxy ) ;
492+ detourParser ( proxy , parsedProxy ) ;
482493 smuxParser ( proxy . smux , parsedProxy ) ;
483494 tlsParser ( proxy , parsedProxy ) ;
484495 return parsedProxy ;
@@ -499,6 +510,7 @@ const trojanParser = (proxy = {}) => {
499510 if ( proxy . network === 'ws' ) wsParser ( proxy , parsedProxy ) ;
500511
501512 tfoParser ( proxy , parsedProxy ) ;
513+ detourParser ( proxy , parsedProxy ) ;
502514 tlsParser ( proxy , parsedProxy ) ;
503515 smuxParser ( proxy . smux , parsedProxy ) ;
504516 return parsedProxy ;
@@ -545,6 +557,7 @@ const hysteriaParser = (proxy = {}) => {
545557 }
546558 }
547559 tlsParser ( proxy , parsedProxy ) ;
560+ detourParser ( proxy , parsedProxy ) ;
548561 tfoParser ( proxy , parsedProxy ) ;
549562 smuxParser ( proxy . smux , parsedProxy ) ;
550563 return parsedProxy ;
@@ -569,6 +582,7 @@ const hysteria2Parser = (proxy = {}) => {
569582 if ( ! parsedProxy . obfs . type ) delete parsedProxy . obfs ;
570583 tlsParser ( proxy , parsedProxy ) ;
571584 tfoParser ( proxy , parsedProxy ) ;
585+ detourParser ( proxy , parsedProxy ) ;
572586 smuxParser ( proxy . smux , parsedProxy ) ;
573587 return parsedProxy ;
574588} ;
@@ -597,6 +611,7 @@ const tuic5Parser = (proxy = {}) => {
597611 if ( proxy [ 'heartbeat-interval' ] )
598612 parsedProxy . heartbeat = `${ proxy [ 'heartbeat-interval' ] } ms` ;
599613 tfoParser ( proxy , parsedProxy ) ;
614+ detourParser ( proxy , parsedProxy ) ;
600615 tlsParser ( proxy , parsedProxy ) ;
601616 smuxParser ( proxy . smux , parsedProxy ) ;
602617 return parsedProxy ;
@@ -650,6 +665,7 @@ const wireguardParser = (proxy = {}) => {
650665 }
651666 }
652667 tfoParser ( proxy , parsedProxy ) ;
668+ detourParser ( proxy , parsedProxy ) ;
653669 smuxParser ( proxy . smux , parsedProxy ) ;
654670 return parsedProxy ;
655671} ;
@@ -789,6 +805,7 @@ export default function singbox_Producer() {
789805 $ . error ( e . message ?? e ) ;
790806 }
791807 } ) ;
808+
792809 return type === 'internal'
793810 ? list
794811 : JSON . stringify ( { outbounds : list } , null , 2 ) ;
0 commit comments