Added disconnect packet when player not allowed to connect
This commit is contained in:
parent
bc4c7544ac
commit
4ff193cabe
|
@ -13,8 +13,23 @@ struct Player {
|
||||||
player_uuid: Option<u128>,
|
player_uuid: Option<u128>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn check_player(player: &Player) -> Result<bool> {
|
enum PlayerAllowed {
|
||||||
Ok(true)
|
True(Player),
|
||||||
|
False(String),
|
||||||
|
}
|
||||||
|
|
||||||
|
fn check_player(player: Player) -> Result<PlayerAllowed> {
|
||||||
|
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(
|
pub async fn respond_login(
|
||||||
|
@ -25,7 +40,8 @@ pub async fn respond_login(
|
||||||
) -> Result<bool> {
|
) -> Result<bool> {
|
||||||
let proxy_login = login_to_proxy(client_reader).await?;
|
let proxy_login = login_to_proxy(client_reader).await?;
|
||||||
match proxy_login {
|
match proxy_login {
|
||||||
Some(player) => {
|
PlayerAllowed::True(player) => {
|
||||||
|
println!("Player allowed");
|
||||||
login_to_backend(
|
login_to_backend(
|
||||||
player,
|
player,
|
||||||
client_writer,
|
client_writer,
|
||||||
|
@ -34,13 +50,19 @@ pub async fn respond_login(
|
||||||
).await?;
|
).await?;
|
||||||
return Ok(true)
|
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(
|
async fn login_to_proxy(
|
||||||
client_reader: &mut OwnedReadHalf,
|
client_reader: &mut OwnedReadHalf,
|
||||||
) -> Result<Option<Player>> {
|
) -> Result<PlayerAllowed> {
|
||||||
println!("Logging into proxy");
|
println!("Logging into proxy");
|
||||||
|
|
||||||
let start_packet =
|
let start_packet =
|
||||||
|
@ -51,13 +73,7 @@ async fn login_to_proxy(
|
||||||
player_uuid: start_packet.player_uuid,
|
player_uuid: start_packet.player_uuid,
|
||||||
};
|
};
|
||||||
|
|
||||||
if check_player(&player)? {
|
check_player(player)
|
||||||
println!("Player allowed");
|
|
||||||
Ok(Some(player))
|
|
||||||
} else {
|
|
||||||
println!("Player blocked");
|
|
||||||
Ok(None)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn login_to_backend(
|
async fn login_to_backend(
|
||||||
|
|
Loading…
Reference in New Issue