From 4ff193cabe9877125245c73e04bfd272b043c745 Mon Sep 17 00:00:00 2001 From: Kyler <59854022+KylerOlsen@users.noreply.github.com> Date: Tue, 23 Jan 2024 18:04:43 -0700 Subject: [PATCH] Added disconnect packet when player not allowed to connect --- src/login_handle.rs | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/login_handle.rs b/src/login_handle.rs index 797798c..b91cbc7 100644 --- a/src/login_handle.rs +++ b/src/login_handle.rs @@ -13,8 +13,23 @@ struct Player { player_uuid: Option, } -fn check_player(player: &Player) -> Result { - Ok(true) +enum PlayerAllowed { + True(Player), + False(String), +} + +fn check_player(player: Player) -> Result { + static mut PARITY: bool = true; + let parity: bool; + unsafe { + parity = PARITY; + PARITY = !PARITY; + } + if parity { //player.name.to_lowercase() == "yeahbut" { + Ok(PlayerAllowed::True(player)) + } else { + Ok(PlayerAllowed::False("Testing blocking, try again.".to_string())) + } } pub async fn respond_login( @@ -25,7 +40,8 @@ pub async fn respond_login( ) -> Result { let proxy_login = login_to_proxy(client_reader).await?; match proxy_login { - Some(player) => { + PlayerAllowed::True(player) => { + println!("Player allowed"); login_to_backend( player, client_writer, @@ -34,13 +50,19 @@ pub async fn respond_login( ).await?; return Ok(true) }, - None => return Ok(false) + PlayerAllowed::False(msg) => { + println!("Player blocked: {}", msg); + login::clientbound::Disconnect { + reason: format!("{{\"text\":\"{}\"}}", msg.to_string()) + }.write(client_writer).await?; + return Ok(false) + } } } async fn login_to_proxy( client_reader: &mut OwnedReadHalf, -) -> Result> { +) -> Result { println!("Logging into proxy"); let start_packet = @@ -51,13 +73,7 @@ async fn login_to_proxy( player_uuid: start_packet.player_uuid, }; - if check_player(&player)? { - println!("Player allowed"); - Ok(Some(player)) - } else { - println!("Player blocked"); - Ok(None) - } + check_player(player) } async fn login_to_backend(