@@ -127,6 +127,106 @@ func TestVless(t *testing.T) {
127127 }
128128}
129129
130+ func TestVlessSeedWithIndependentScheduler (t * testing.T ) {
131+ tcpServer := tcp.Server {
132+ MsgProcessor : xor ,
133+ }
134+ dest , err := tcpServer .Start ()
135+ common .Must (err )
136+ defer tcpServer .Close ()
137+
138+ userID := protocol .NewID (uuid .New ())
139+ serverPort := tcp .PickPort ()
140+ serverConfig := & core.Config {
141+ App : []* serial.TypedMessage {
142+ serial .ToTypedMessage (& log.Config {
143+ ErrorLogLevel : clog .Severity_Debug ,
144+ ErrorLogType : log .LogType_Console ,
145+ }),
146+ },
147+ Inbound : []* core.InboundHandlerConfig {
148+ {
149+ ReceiverSettings : serial .ToTypedMessage (& proxyman.ReceiverConfig {
150+ PortList : & net.PortList {Range : []* net.PortRange {net .SinglePortRange (serverPort )}},
151+ Listen : net .NewIPOrDomain (net .LocalHostIP ),
152+ }),
153+ ProxySettings : serial .ToTypedMessage (& inbound.Config {
154+ Clients : []* protocol.User {
155+ {
156+ Account : serial .ToTypedMessage (& vless.Account {
157+ Id : userID .String (),
158+ Seed : "1" ,
159+ }),
160+ },
161+ },
162+ }),
163+ },
164+ },
165+ Outbound : []* core.OutboundHandlerConfig {
166+ {
167+ ProxySettings : serial .ToTypedMessage (& freedom.Config {}),
168+ },
169+ },
170+ }
171+
172+ clientPort := tcp .PickPort ()
173+ clientConfig := & core.Config {
174+ App : []* serial.TypedMessage {
175+ serial .ToTypedMessage (& log.Config {
176+ ErrorLogLevel : clog .Severity_Debug ,
177+ ErrorLogType : log .LogType_Console ,
178+ }),
179+ },
180+ Inbound : []* core.InboundHandlerConfig {
181+ {
182+ ReceiverSettings : serial .ToTypedMessage (& proxyman.ReceiverConfig {
183+ PortList : & net.PortList {Range : []* net.PortRange {net .SinglePortRange (clientPort )}},
184+ Listen : net .NewIPOrDomain (net .LocalHostIP ),
185+ }),
186+ ProxySettings : serial .ToTypedMessage (& dokodemo.Config {
187+ Address : net .NewIPOrDomain (dest .Address ),
188+ Port : uint32 (dest .Port ),
189+ NetworkList : & net.NetworkList {
190+ Network : []net.Network {net .Network_TCP },
191+ },
192+ }),
193+ },
194+ },
195+ Outbound : []* core.OutboundHandlerConfig {
196+ {
197+ ProxySettings : serial .ToTypedMessage (& outbound.Config {
198+ Vnext : []* protocol.ServerEndpoint {
199+ {
200+ Address : net .NewIPOrDomain (net .LocalHostIP ),
201+ Port : uint32 (serverPort ),
202+ User : []* protocol.User {
203+ {
204+ Account : serial .ToTypedMessage (& vless.Account {
205+ Id : userID .String (),
206+ Seed : "1" ,
207+ }),
208+ },
209+ },
210+ },
211+ },
212+ }),
213+ },
214+ },
215+ }
216+
217+ servers , err := InitializeServerConfigs (serverConfig , clientConfig )
218+ common .Must (err )
219+ defer CloseAllServers (servers )
220+
221+ var errg errgroup.Group
222+ for i := 0 ; i < 10 ; i ++ {
223+ errg .Go (testTCPConn (clientPort , 1024 * 1024 , time .Second * 30 ))
224+ }
225+ if err := errg .Wait (); err != nil {
226+ t .Error (err )
227+ }
228+ }
229+
130230func TestVlessTls (t * testing.T ) {
131231 tcpServer := tcp.Server {
132232 MsgProcessor : xor ,
@@ -377,6 +477,134 @@ func TestVlessXtlsVision(t *testing.T) {
377477 }
378478}
379479
480+ func TestVlessXtlsVisionWithSeed (t * testing.T ) {
481+ tcpServer := tcp.Server {
482+ MsgProcessor : xor ,
483+ }
484+ dest , err := tcpServer .Start ()
485+ common .Must (err )
486+ defer tcpServer .Close ()
487+
488+ userID := protocol .NewID (uuid .New ())
489+ serverPort := tcp .PickPort ()
490+ serverConfig := & core.Config {
491+ App : []* serial.TypedMessage {
492+ serial .ToTypedMessage (& log.Config {
493+ ErrorLogLevel : clog .Severity_Debug ,
494+ ErrorLogType : log .LogType_Console ,
495+ }),
496+ },
497+ Inbound : []* core.InboundHandlerConfig {
498+ {
499+ ReceiverSettings : serial .ToTypedMessage (& proxyman.ReceiverConfig {
500+ PortList : & net.PortList {Range : []* net.PortRange {net .SinglePortRange (serverPort )}},
501+ Listen : net .NewIPOrDomain (net .LocalHostIP ),
502+ StreamSettings : & internet.StreamConfig {
503+ Protocol : internet .TransportProtocol_TCP ,
504+ SecurityType : serial .GetMessageType (& tls.Config {}),
505+ SecuritySettings : []* serial.TypedMessage {
506+ serial .ToTypedMessage (& tls.Config {
507+ Certificate : []* tls.Certificate {tls .ParseCertificate (cert .MustGenerate (nil ))},
508+ }),
509+ },
510+ },
511+ }),
512+ ProxySettings : serial .ToTypedMessage (& inbound.Config {
513+ Clients : []* protocol.User {
514+ {
515+ Account : serial .ToTypedMessage (& vless.Account {
516+ Id : userID .String (),
517+ Flow : vless .XRV ,
518+ Seed : "1" ,
519+ }),
520+ },
521+ },
522+ }),
523+ },
524+ },
525+ Outbound : []* core.OutboundHandlerConfig {
526+ {
527+ ProxySettings : serial .ToTypedMessage (& freedom.Config {}),
528+ },
529+ },
530+ }
531+
532+ clientPort := tcp .PickPort ()
533+ clientConfig := & core.Config {
534+ App : []* serial.TypedMessage {
535+ serial .ToTypedMessage (& log.Config {
536+ ErrorLogLevel : clog .Severity_Debug ,
537+ ErrorLogType : log .LogType_Console ,
538+ }),
539+ },
540+ Inbound : []* core.InboundHandlerConfig {
541+ {
542+ ReceiverSettings : serial .ToTypedMessage (& proxyman.ReceiverConfig {
543+ PortList : & net.PortList {Range : []* net.PortRange {net .SinglePortRange (clientPort )}},
544+ Listen : net .NewIPOrDomain (net .LocalHostIP ),
545+ }),
546+ ProxySettings : serial .ToTypedMessage (& dokodemo.Config {
547+ Address : net .NewIPOrDomain (dest .Address ),
548+ Port : uint32 (dest .Port ),
549+ NetworkList : & net.NetworkList {
550+ Network : []net.Network {net .Network_TCP },
551+ },
552+ }),
553+ },
554+ },
555+ Outbound : []* core.OutboundHandlerConfig {
556+ {
557+ ProxySettings : serial .ToTypedMessage (& outbound.Config {
558+ Vnext : []* protocol.ServerEndpoint {
559+ {
560+ Address : net .NewIPOrDomain (net .LocalHostIP ),
561+ Port : uint32 (serverPort ),
562+ User : []* protocol.User {
563+ {
564+ Account : serial .ToTypedMessage (& vless.Account {
565+ Id : userID .String (),
566+ Flow : vless .XRV ,
567+ Seed : "1" ,
568+ }),
569+ },
570+ },
571+ },
572+ },
573+ }),
574+ SenderSettings : serial .ToTypedMessage (& proxyman.SenderConfig {
575+ StreamSettings : & internet.StreamConfig {
576+ Protocol : internet .TransportProtocol_TCP ,
577+ TransportSettings : []* internet.TransportConfig {
578+ {
579+ Protocol : internet .TransportProtocol_TCP ,
580+ Settings : serial .ToTypedMessage (& transtcp.Config {}),
581+ },
582+ },
583+ SecurityType : serial .GetMessageType (& tls.Config {}),
584+ SecuritySettings : []* serial.TypedMessage {
585+ serial .ToTypedMessage (& tls.Config {
586+ AllowInsecure : true ,
587+ }),
588+ },
589+ },
590+ }),
591+ },
592+ },
593+ }
594+
595+ servers , err := InitializeServerConfigs (serverConfig , clientConfig )
596+ common .Must (err )
597+ defer CloseAllServers (servers )
598+
599+ var errg errgroup.Group
600+ for i := 0 ; i < 10 ; i ++ {
601+ errg .Go (testTCPConn (clientPort , 1024 * 1024 , time .Second * 30 ))
602+ }
603+ if err := errg .Wait (); err != nil {
604+ t .Error (err )
605+ }
606+ }
607+
380608func TestVlessXtlsVisionReality (t * testing.T ) {
381609 tcpServer := tcp.Server {
382610 MsgProcessor : xor ,
0 commit comments