54
54
C : AsyncRead + AsyncWrite + Unpin + Send + Sync ,
55
55
S : AsyncRead + AsyncWrite + Unpin + Send + Sync ,
56
56
{
57
- info ! ( "started RDP proxy!" ) ;
58
-
59
57
let RdpProxy {
60
58
conf,
61
59
session_info,
@@ -85,42 +83,31 @@ where
85
83
tls_conf. acceptor . clone ( ) ,
86
84
) ) ;
87
85
88
- info ! ( "gateway public key is here" ) ;
89
-
90
86
// -- Dual handshake with the client and the server until the TLS security upgrade -- //
91
87
92
88
let mut client_framed = ironrdp_tokio:: TokioFramed :: new_with_leftover ( client_stream, client_stream_leftover_bytes) ;
93
89
let mut server_framed = ironrdp_tokio:: TokioFramed :: new ( server_stream) ;
94
90
95
- info ! ( "framed streams are here" ) ;
96
-
97
91
let handshake_result =
98
92
dual_handshake_until_tls_upgrade ( & mut client_framed, & mut server_framed, credential_mapping) . await ?;
99
- info ! ( "the handshakes are done!" ) ;
100
93
101
94
let client_stream = client_framed. into_inner_no_leftover ( ) ;
102
95
let server_stream = server_framed. into_inner_no_leftover ( ) ;
103
96
104
- info ! ( "Handshake is done!" ) ;
105
-
106
97
// -- Perform the TLS upgrading for both the client and the server, effectively acting as a man-in-the-middle -- //
107
98
108
99
let client_tls_upgrade_fut = tls_conf. acceptor . accept ( client_stream) ;
109
100
let server_tls_upgrade_fut = crate :: tls:: connect ( server_dns_name. clone ( ) , server_stream) ;
110
101
111
102
let ( client_stream, server_stream) = tokio:: join!( client_tls_upgrade_fut, server_tls_upgrade_fut) ;
112
103
113
- info ! ( "TLS upgrade futures finished!" ) ;
114
-
115
104
let client_stream = client_stream
116
105
. inspect_err ( |err| warn ! ( ?err, "client stream error" ) )
117
106
. context ( "TLS upgrade with client failed" ) ?;
118
107
let server_stream = server_stream
119
108
. inspect_err ( |err| warn ! ( ?err, "server stream error" ) )
120
109
. context ( "TLS upgrade with server failed" ) ?;
121
110
122
- info ! ( "TLS upgrade is done!" ) ;
123
-
124
111
let server_public_key =
125
112
extract_tls_server_public_key ( & server_stream) . context ( "extract target server TLS public key" ) ?;
126
113
let gateway_public_key = gateway_public_key_handle. await ??;
@@ -130,8 +117,6 @@ where
130
117
let mut client_framed = ironrdp_tokio:: TokioFramed :: new ( client_stream) ;
131
118
let mut server_framed = ironrdp_tokio:: TokioFramed :: new ( server_stream) ;
132
119
133
- warn ! ( "START CREDSSPS STAGES" ) ;
134
-
135
120
let krb_server_config = if conf. debug . enable_unstable {
136
121
if let Some ( KerberosServer {
137
122
max_time_skew,
@@ -193,7 +178,6 @@ where
193
178
// client_credssp_res.context("CredSSP with client")?;
194
179
// server_credssp_res.context("CredSSP with server")?;
195
180
client_credssp_fut. await . context ( "CredSSP with client" ) ?;
196
- warn ! ( "CREDSASPWITHCLIENTFINISHED" ) ;
197
181
server_credssp_fut. await . context ( "CredSSP with server" ) ?;
198
182
199
183
// -- Intercept the Connect Confirm PDU, to override the server_security_protocol field -- //
@@ -341,17 +325,11 @@ where
341
325
. await
342
326
. context ( "send connection request to server" ) ?;
343
327
344
- info ! ( "sent" ) ;
345
-
346
328
let ( _, received_frame) = server_framed. read_pdu ( ) . await . context ( "read PDU from server" ) ?;
347
- info ! ( "pdu has been read" ) ;
348
-
349
329
let received_connection_confirm: x224:: X224 < nego:: ConnectionConfirm > =
350
330
ironrdp_core:: decode ( & received_frame) . context ( "decode PDU from server" ) ?;
351
331
trace ! ( message = ?received_connection_confirm, "Received Connection Confirm PDU from server" ) ;
352
332
353
- debug ! ( "before match" ) ;
354
-
355
333
let ( connection_confirm_to_send, handshake_result) = match & received_connection_confirm. 0 {
356
334
nego:: ConnectionConfirm :: Response {
357
335
flags,
@@ -408,8 +386,6 @@ where
408
386
{
409
387
use ironrdp_tokio:: FramedWrite as _;
410
388
411
- info ! ( ?credentials, "CREDSFORTHESERVER targetccredscheck" ) ;
412
-
413
389
let ( credentials, domain) = match credentials {
414
390
crate :: credential:: AppCredential :: UsernamePassword {
415
391
username,
@@ -424,8 +400,6 @@ where
424
400
) ,
425
401
} ;
426
402
427
- info ! ( ?credentials, "CREDSFORTHESERVER" ) ;
428
-
429
403
let ( mut sequence, mut ts_request) = ironrdp_connector:: credssp:: CredsspSequence :: init (
430
404
credentials,
431
405
domain,
@@ -445,10 +419,9 @@ where
445
419
let mut generator = sequence. process_ts_request ( ts_request) ;
446
420
447
421
if let Some ( network_client_ref) = network_client. as_deref_mut ( ) {
448
- trace ! ( "resolving network" ) ;
449
422
resolve_client_generator ( & mut generator, network_client_ref) . await ?
450
423
} else {
451
- panic ! ( "network client is missing" )
424
+ generator . resolve_to_result ( ) . context ( "sspi generator resolve" ) ?
452
425
}
453
426
} ; // drop generator
454
427
@@ -482,7 +455,7 @@ where
482
455
async fn resolve_server_generator (
483
456
generator : & mut CredsspServerProcessGenerator < ' _ > ,
484
457
network_client : & mut dyn AsyncSendableNetworkClient ,
485
- ) -> Result < ServerState , Box < ServerError > > {
458
+ ) -> Result < ServerState , ServerError > {
486
459
let mut state = generator. start ( ) ;
487
460
488
461
loop {
@@ -553,8 +526,6 @@ where
553
526
. await ;
554
527
555
528
if security_protocol. intersects ( nego:: SecurityProtocol :: HYBRID_EX ) {
556
- trace ! ( ?result, "HYBRID_EX" ) ;
557
-
558
529
let result = if result. is_ok ( ) {
559
530
EarlyUserAuthResult :: Success
560
531
} else {
@@ -595,8 +566,6 @@ where
595
566
password : password. expose_secret ( ) . to_owned ( ) . into ( ) ,
596
567
} ;
597
568
598
- info ! ( ?identity, ?client_computer_name, "CREDSFORTHECLIENT" ) ;
599
-
600
569
let mut sequence = ironrdp_acceptor:: credssp:: CredsspSequence :: init (
601
570
& identity,
602
571
client_computer_name,
@@ -624,7 +593,7 @@ where
624
593
if let Some ( network_client_ref) = network_client. as_deref_mut ( ) {
625
594
resolve_server_generator ( & mut generator, network_client_ref) . await
626
595
} else {
627
- panic ! ( "network client is missing" ) ;
596
+ generator . resolve_to_result ( )
628
597
}
629
598
} ; // drop generator
630
599
0 commit comments