@@ -127,6 +127,106 @@ func TestVless(t *testing.T) {
127
127
}
128
128
}
129
129
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
+
130
230
func TestVlessTls (t * testing.T ) {
131
231
tcpServer := tcp.Server {
132
232
MsgProcessor : xor ,
@@ -377,6 +477,134 @@ func TestVlessXtlsVision(t *testing.T) {
377
477
}
378
478
}
379
479
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
+
380
608
func TestVlessXtlsVisionReality (t * testing.T ) {
381
609
tcpServer := tcp.Server {
382
610
MsgProcessor : xor ,
0 commit comments