From 574f9fa5673e8c8298ea2ba1bfcbf239b60af925 Mon Sep 17 00:00:00 2001 From: Kyler <59854022+KylerOlsen@users.noreply.github.com> Date: Sun, 2 Jun 2024 23:15:54 -0600 Subject: [PATCH] Added listener::AuthenticationMethod to listener::ProxyInfo --- src/listener.rs | 9 ++++++++- src/login_handle.rs | 19 +++++++++++++------ src/main.rs | 6 ++++-- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/listener.rs b/src/listener.rs index 29e9cd6..bc3ddfc 100644 --- a/src/listener.rs +++ b/src/listener.rs @@ -10,14 +10,21 @@ pub enum OnlineStatus { Offline, } +#[derive(Copy, Clone)] +pub enum AuthenticationMethod { + Mojang, + None, +} + #[derive(Clone)] pub struct ProxyInfo { pub proxy_addr: String, pub proxy_port: u16, - pub online_status: OnlineStatus, pub backend_addr: String, pub backend_port: u16, pub private_key: RsaPrivateKey, + pub online_status: OnlineStatus, + pub authentication_method: AuthenticationMethod, } impl ProxyInfo { diff --git a/src/login_handle.rs b/src/login_handle.rs index cb6b99a..faa8dd7 100644 --- a/src/login_handle.rs +++ b/src/login_handle.rs @@ -175,14 +175,21 @@ async fn check_player( proxy_info.private_key.clone())?; encryption_request.write(client_conn).await?; let encryption_response = - login::serverbound::EncryptionResponse::read(client_conn).await?; + login::serverbound::EncryptionResponse::read( + client_conn).await?; client_conn.handle_encryption_response(encryption_response)?; let server_id = client_conn.server_id_hash().await?; - match multiplayer_auth::joined(&player.name, &server_id, None).await { - Ok(_) => Ok(check_player_whitelist(player)), - Err(_) => - Ok(PlayerAllowed::False( - "Mojang Authentication Failed".to_string())), + match proxy_info.authentication_method { + listener::AuthenticationMethod::Mojang => { + match multiplayer_auth::joined( + &player.name, &server_id, None).await { + Ok(_) => Ok(check_player_whitelist(player)), + Err(_) => Ok(PlayerAllowed::False( + "Mojang Authentication Failed".to_string() + )), + }}, + listener::AuthenticationMethod::None => + Ok(check_player_whitelist(player)) } }, listener::OnlineStatus::Offline => diff --git a/src/main.rs b/src/main.rs index aac69a5..85bcb9c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,18 +15,20 @@ async fn main() -> Result<(), Box> { let offline_info = listener::ProxyInfo{ proxy_addr: "127.0.0.1".to_string(), proxy_port: 25565, - online_status: listener::OnlineStatus::Offline, backend_addr: "127.0.0.1".to_string(), backend_port: 25564, private_key: private_key.clone(), + online_status: listener::OnlineStatus::Offline, + authentication_method: listener::AuthenticationMethod::None, }; let online_info = listener::ProxyInfo{ proxy_addr: "127.0.0.1".to_string(), proxy_port: 25566, - online_status: listener::OnlineStatus::Online, backend_addr: "127.0.0.1".to_string(), backend_port: 25564, private_key: private_key.clone(), + online_status: listener::OnlineStatus::Online, + authentication_method: listener::AuthenticationMethod::Mojang, }; let listener_offline: listener::TcpListenerWrapper =