2025-04-14 07:20:05 +01:00
|
|
|
use std::io::{Result};
|
|
|
|
use std::net::{ToSocketAddrs};
|
|
|
|
use std::env;
|
|
|
|
|
2025-04-14 17:14:22 +01:00
|
|
|
use mcstatusface::http::HttpServer;
|
|
|
|
use mcstatusface::{MinecraftStatus};
|
2025-04-14 07:20:05 +01:00
|
|
|
|
|
|
|
fn main() -> Result<()> {
|
|
|
|
let args: Vec<String> = env::args().collect();
|
|
|
|
if args.len() < 2 {
|
2025-04-14 17:14:22 +01:00
|
|
|
eprintln!("Usage: {} <serve | address[:port]>", args[0]);
|
2025-04-14 07:20:05 +01:00
|
|
|
std::process::exit(1);
|
|
|
|
}
|
|
|
|
|
2025-04-14 17:14:22 +01:00
|
|
|
if args[1] != "serve" {
|
|
|
|
let mut address = String::from(args[1].as_str());
|
|
|
|
if !address.contains(":") {
|
|
|
|
address += ":25565";
|
|
|
|
}
|
|
|
|
let mut addrs_iter = args[1].to_socket_addrs().unwrap();
|
|
|
|
let address = addrs_iter.next().unwrap();
|
|
|
|
|
|
|
|
let status = MinecraftStatus::fetch(address).unwrap();
|
2025-04-14 07:20:05 +01:00
|
|
|
|
2025-04-14 17:14:22 +01:00
|
|
|
println!("\nVersion: {} ({})", status.version.name, status.version.protocol);
|
|
|
|
println!("Players: {}/{}", status.players.online, status.players.max);
|
|
|
|
println!("MOTD:");
|
|
|
|
println!("{}", status.parse_description());
|
|
|
|
|
|
|
|
return Ok(());
|
|
|
|
}
|
2025-04-14 07:20:05 +01:00
|
|
|
|
2025-04-14 17:14:22 +01:00
|
|
|
HttpServer::new("0.0.0.0").start().unwrap();
|
2025-04-14 07:20:05 +01:00
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|