Respond with real server MOTD if it is currently started

This commit is contained in:
timvisee
2021-11-17 18:28:55 +01:00
parent a71b3cb24f
commit 74d772ab42
2 changed files with 9 additions and 3 deletions

View File

@@ -82,7 +82,7 @@ fn route(inbound: TcpStream, config: Arc<Config>, server: Arc<Server>) {
// Check ban state, just drop connection if enabled // Check ban state, just drop connection if enabled
let banned = server.is_banned_ip_blocking(&peer.ip()); let banned = server.is_banned_ip_blocking(&peer.ip());
if config.server.drop_banned_ips { if config.server.drop_banned_ips {
warn!(target: "lazymc", "Connection from banned IP {}, dropping", peer.ip()); info!(target: "lazymc", "Connection from banned IP {}, dropping", peer.ip());
return; return;
} }

View File

@@ -130,7 +130,7 @@ pub async fn serve(
// Kick if client is banned // Kick if client is banned
if let Some(ban) = server.ban_entry(&client.peer.ip()).await { if let Some(ban) = server.ban_entry(&client.peer.ip()).await {
if ban.is_banned() { if ban.is_banned() {
warn!(target: "lazymc", "Login from banned IP {} ({}), disconnecting", client.peer.ip(), &ban.reason); info!(target: "lazymc", "Login from banned IP {} ({}), disconnecting", client.peer.ip(), &ban.reason);
action::kick(&client, &ban.reason, &mut writer).await?; action::kick(&client, &ban.reason, &mut writer).await?;
break; break;
} }
@@ -177,6 +177,12 @@ pub async fn serve(
/// Build server status object to respond to client with. /// Build server status object to respond to client with.
async fn server_status(config: &Config, server: &Server) -> ServerStatus { async fn server_status(config: &Config, server: &Server) -> ServerStatus {
let status = server.status().await; let status = server.status().await;
let server_state = server.state();
// Respond with real server status if started
if server_state == server::State::Started && status.is_some() {
return status.as_ref().unwrap().clone();
}
// Select version and player max from last known server status // Select version and player max from last known server status
let (version, max) = match status.as_ref() { let (version, max) = match status.as_ref() {
@@ -195,7 +201,7 @@ async fn server_status(config: &Config, server: &Server) -> ServerStatus {
if config.motd.from_server && status.is_some() { if config.motd.from_server && status.is_some() {
status.as_ref().unwrap().description.clone() status.as_ref().unwrap().description.clone()
} else { } else {
Message::new(Payload::text(match server.state() { Message::new(Payload::text(match server_state {
server::State::Stopped | server::State::Started => &config.motd.sleeping, server::State::Stopped | server::State::Started => &config.motd.sleeping,
server::State::Starting => &config.motd.starting, server::State::Starting => &config.motd.starting,
server::State::Stopping => &config.motd.stopping, server::State::Stopping => &config.motd.stopping,