Skip to content

Commit b23441b

Browse files
clean code
1 parent 121cf47 commit b23441b

File tree

5 files changed

+32
-27
lines changed

5 files changed

+32
-27
lines changed

src/handlers/handshake.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ impl MinecraftServer {
1414
pub async fn handle_handshake(&mut self) -> Result<()> {
1515
let handshake = HandshakePacket::parse(&mut self.buffer)?;
1616

17+
self.session.proto_ver = Some(handshake.proto_ver);
1718
self.session.next_state = match handshake.next_state {
1819
1 => NextStateEnum::Status,
1920
2 => NextStateEnum::Login,
2021
_ => NextStateEnum::Unknown,
2122
};
2223

2324
// Check client's connecting hostname
24-
self.session.proto_ver = Some(handshake.proto_ver);
2525
if let Some(server_ip) = &self.config.server.server_ip {
2626
if server_ip.ne(&handshake.server_addr) {
2727
self.send_disconnect(self.config.messages.using_proxy.clone())

src/packets/status.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@ use bytes::BytesMut;
44
use serde::Serialize;
55
use serde_json::Value;
66

7-
pub struct StatusPacket {}
7+
pub struct StatusPacket {
8+
data: StatusData,
9+
}
810

911
impl StatusPacket {
10-
pub fn build(data: StatusData) -> Result<BytesMut> {
12+
pub fn new(data: StatusData) -> Self {
13+
Self { data }
14+
}
15+
16+
pub fn build(&self) -> Result<BytesMut> {
1117
let mut buffer = BytesMut::new();
1218

1319
write_varint(&mut buffer, 0x00); // Packet id
14-
write_utf8(&mut buffer, &serde_json::to_string(&data)?)?;
20+
write_utf8(&mut buffer, &serde_json::to_string(&self.data)?)?;
1521

1622
Ok(add_size(&buffer))
1723
}

src/responses/ping.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
use anyhow::Result;
22

33
use crate::{packets::ping::PingPacket, server::MinecraftServer};
4-
use bytes::Buf;
54
use tokio::io::AsyncWriteExt;
65

76
impl MinecraftServer {
87
/**
9-
Handle ping and send response
8+
Send ping response
109
*/
11-
pub async fn handle_ping(&mut self) -> Result<()> {
12-
let payload = self.buffer.get_i64();
10+
pub async fn send_ping(&mut self, payload: i64) -> Result<()> {
1311
let packet = PingPacket { payload };
1412

1513
self.stream.writable().await?;

src/responses/status.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
use crate::{
2+
config::get_config,
3+
packets::status::{self, StatusData, StatusPacket},
4+
server::MinecraftServer,
5+
};
16
use anyhow::Result;
2-
3-
use crate::{config::get_config, packets::status, server::MinecraftServer};
47
use serde_json::json;
58
use tokio::io::AsyncWriteExt;
69

@@ -19,7 +22,7 @@ impl MinecraftServer {
1922
config.server.config.protocol
2023
};
2124

22-
let data = status::StatusData {
25+
let packet = StatusPacket::new(StatusData {
2326
version: status::Version {
2427
name: config.server.config.version.clone(),
2528
protocol: proto_ver,
@@ -32,12 +35,10 @@ impl MinecraftServer {
3235
description: json!({"text": config.server.status.description.clone()}),
3336
favicon: config.image.clone(),
3437
enforces_secure_chat: false,
35-
};
38+
});
3639

3740
self.stream.writable().await?;
38-
self.stream
39-
.write_all(&status::StatusPacket::build(data)?)
40-
.await?;
41+
self.stream.write_all(&packet.build()?).await?;
4142
Ok(())
4243
}
4344
}

src/server.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::{
77
};
88
use aes::Aes128;
99
use anyhow::{anyhow, Result};
10-
use bytes::{BufMut, BytesMut};
10+
use bytes::{Buf, BufMut, BytesMut};
1111
use cfb8::Encryptor;
1212
use std::{net::SocketAddr, sync::Arc, time::Duration};
1313
use tokio::net::TcpStream;
@@ -81,7 +81,7 @@ impl MinecraftServer {
8181
}
8282
}
8383

84-
pub async fn _run(&mut self) -> Result<()> {
84+
async fn _run(&mut self) -> Result<()> {
8585
loop {
8686
self.stream.readable().await?;
8787
let mut temp_buf = vec![0; 1024];
@@ -144,7 +144,8 @@ impl MinecraftServer {
144144
match self.session.next_state {
145145
NextStateEnum::Status => {
146146
// Handle ping request
147-
self.handle_ping().await?
147+
let payload = self.buffer.get_i64();
148+
self.send_ping(payload).await?
148149
}
149150
NextStateEnum::Login => {
150151
debug!("Received encryption response");
@@ -159,15 +160,14 @@ impl MinecraftServer {
159160
async fn auth_client(&mut self) -> Result<()> {
160161
let player_data = mojang::join(&mut self.session, self.keys.clone()).await?;
161162

162-
if player_data.is_none() {
163-
debug!("Mojang API error");
164-
self.send_disconnect(self.config.messages.bad_session.clone())
165-
.await?;
166-
return Err(anyhow!("Mojang API error"));
167-
}
168-
169-
// HA-HA: Unwrap is safe, because we already checked for none above
170-
let player_data = player_data.unwrap();
163+
let player_data = match player_data {
164+
Some(x) => x,
165+
None => {
166+
self.send_disconnect(self.config.messages.bad_session.clone())
167+
.await?;
168+
return Err(anyhow!("Mojang API error"));
169+
}
170+
};
171171
let map = get_map().await;
172172
let code = generate_code(6); // Generate 6-digit code
173173

0 commit comments

Comments
 (0)