@@ -366,15 +366,23 @@ const socks5Parser = (proxy = {}) => {
366366 type : 'socks' ,
367367 server : proxy . server ,
368368 server_port : parseInt ( `${ proxy . port } ` , 10 ) ,
369- password : proxy . password ,
370369 version : '5' ,
371370 } ;
372371 if ( parsedProxy . server_port < 0 || parsedProxy . server_port > 65535 )
373372 throw 'invalid port' ;
374373 if ( proxy . username ) parsedProxy . username = proxy . username ;
375374 if ( proxy . password ) parsedProxy . password = proxy . password ;
376375 if ( proxy . uot ) parsedProxy . udp_over_tcp = true ;
377- if ( proxy [ 'udp-over-tcp' ] ) parsedProxy . udp_over_tcp = true ;
376+ if ( proxy [ 'udp-over-tcp' ] ) {
377+ parsedProxy . udp_over_tcp = {
378+ enabled : true ,
379+ version :
380+ ! proxy [ 'udp-over-tcp-version' ] ||
381+ proxy [ 'udp-over-tcp-version' ] === 1
382+ ? 1
383+ : 2 ,
384+ } ;
385+ }
378386 if ( proxy [ 'fast-open' ] ) parsedProxy . udp_fragment = true ;
379387 networkParser ( proxy , parsedProxy ) ;
380388 tfoParser ( proxy , parsedProxy ) ;
@@ -625,6 +633,45 @@ const trojanParser = (proxy = {}) => {
625633 ipVersionParser ( proxy , parsedProxy ) ;
626634 return parsedProxy ;
627635} ;
636+ const naiveParser = ( proxy = { } ) => {
637+ const parsedProxy = {
638+ tag : proxy . name ,
639+ type : 'naive' ,
640+ server : proxy . server ,
641+ server_port : parseInt ( `${ proxy . port } ` , 10 ) ,
642+ tls : { enabled : true , server_name : proxy . server , insecure : false } ,
643+ } ;
644+ if ( parsedProxy . server_port < 0 || parsedProxy . server_port > 65535 )
645+ throw 'invalid port' ;
646+ if ( proxy . username ) parsedProxy . username = proxy . username ;
647+ if ( proxy . password ) parsedProxy . password = proxy . password ;
648+ if ( proxy . uot ) parsedProxy . udp_over_tcp = true ;
649+ if ( proxy [ 'udp-over-tcp' ] ) {
650+ parsedProxy . udp_over_tcp = {
651+ enabled : true ,
652+ version :
653+ ! proxy [ 'udp-over-tcp-version' ] ||
654+ proxy [ 'udp-over-tcp-version' ] === 1
655+ ? 1
656+ : 2 ,
657+ } ;
658+ }
659+ const insecure_concurrency = parseInt (
660+ `${ proxy [ 'insecure-concurrency' ] } ` ,
661+ 10 ,
662+ ) ;
663+ if ( Number . isInteger ( insecure_concurrency ) && insecure_concurrency >= 0 )
664+ parsedProxy . insecure_concurrency = insecure_concurrency ;
665+ if ( proxy [ 'extra-headers' ] )
666+ parsedProxy . extra_headers = proxy [ 'extra-headers' ] ;
667+ if ( proxy [ 'fast-open' ] ) parsedProxy . udp_fragment = true ;
668+ tfoParser ( proxy , parsedProxy ) ;
669+ detourParser ( proxy , parsedProxy ) ;
670+ tlsParser ( proxy , parsedProxy ) ;
671+ smuxParser ( proxy . smux , parsedProxy ) ;
672+ ipVersionParser ( proxy , parsedProxy ) ;
673+ return parsedProxy ;
674+ } ;
628675const hysteriaParser = ( proxy = { } ) => {
629676 const parsedProxy = {
630677 tag : proxy . name ,
@@ -941,6 +988,9 @@ export default function singbox_Producer() {
941988 ) ;
942989 }
943990 break ;
991+ case 'naive' :
992+ list . push ( naiveParser ( proxy ) ) ;
993+ break ;
944994 case 'hysteria' :
945995 list . push ( hysteriaParser ( proxy ) ) ;
946996 break ;
0 commit comments