feat: better looking motd, and kubernetes native motd handling
This commit is contained in:
parent
402e315a93
commit
1454945f32
3 changed files with 34 additions and 6 deletions
|
|
@ -339,6 +339,29 @@ impl MinecraftServerHandle for Server {
|
|||
let port = a.iter().find(|x| x.name.clone().unwrap() == "mc-router")?;
|
||||
port.node_port.map(|x| x.to_string())
|
||||
}
|
||||
|
||||
fn get_motd(&self) -> Option<String> {
|
||||
let all_container_motds = self
|
||||
.dep
|
||||
.spec
|
||||
.clone()?
|
||||
.template
|
||||
.spec?
|
||||
.containers
|
||||
.iter()
|
||||
.map(|cont| match cont.env.clone() {
|
||||
Some(es) => es
|
||||
.iter()
|
||||
.filter(|e| e.name.as_str() == "MOTD")
|
||||
.map(|x| x.value.clone())
|
||||
.collect::<Vec<Option<String>>>()
|
||||
.first()?
|
||||
.clone(),
|
||||
None => None,
|
||||
})
|
||||
.collect::<Vec<Option<String>>>();
|
||||
all_container_motds.first()?.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl Server {
|
||||
|
|
|
|||
16
src/main.rs
16
src/main.rs
|
|
@ -142,7 +142,7 @@ async fn handle_status<T: MinecraftServerHandle>(
|
|||
status_struct.players.max = 0;
|
||||
status_struct.players.online = 0;
|
||||
status_struct.description.text = format!(
|
||||
"Could not find §kserver§r: §f§o{server_addr}§r\nMinecraft Ingress{bye_message}"
|
||||
"Could not find §kserver§r: §f§o{server_addr}§r\nMinecraft Ingress {bye_message}"
|
||||
);
|
||||
|
||||
mc_server::complete_status_request(client_stream, status_struct).await?;
|
||||
|
|
@ -159,9 +159,13 @@ async fn handle_status<T: MinecraftServerHandle>(
|
|||
return Ok(());
|
||||
}
|
||||
};
|
||||
tracing::debug!("kube server status: {:?}", server.query_status().await?);
|
||||
let status = server.query_status().await?;
|
||||
tracing::info!(status = ?status, "status request");
|
||||
let motd = server
|
||||
.get_motd()
|
||||
.unwrap_or("A minecraft server (proxy motd)".to_string());
|
||||
|
||||
tracing::trace!(motd);
|
||||
match status {
|
||||
ServerDeploymentStatus::Connectable(mut server_stream) => {
|
||||
return server
|
||||
|
|
@ -171,13 +175,13 @@ async fn handle_status<T: MinecraftServerHandle>(
|
|||
ServerDeploymentStatus::Starting | ServerDeploymentStatus::PodOk => {
|
||||
status_struct.players.max = 1;
|
||||
status_struct.players.online = 1;
|
||||
status_struct.description.text = format!("\n§2Server is starting...§r{bye_message}");
|
||||
status_struct.description.text =
|
||||
format!("{motd}\n§2Starting!§r §b§oWait a bit§r§b^^§r{bye_message}");
|
||||
}
|
||||
ServerDeploymentStatus::Offline => {
|
||||
status_struct.players.max = 1;
|
||||
status_struct.description.text = format!(
|
||||
"Server is currently §onot§r running. \n§aJoin to start it!§r {bye_message}"
|
||||
);
|
||||
status_struct.description.text =
|
||||
format!("{motd}\n§4Offline§r §2§oJoin to start!§r{bye_message}");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ pub trait MinecraftServerHandle: Clone {
|
|||
fn get_internal_address(&self) -> Option<String>;
|
||||
fn get_addr(&self) -> Option<String>;
|
||||
fn get_port(&self) -> Option<String>;
|
||||
fn get_motd(&self) -> Option<String>;
|
||||
|
||||
async fn query_server_connectable(&self) -> Result<TcpStream, OpaqueError> {
|
||||
let address = self
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue