you ever get bored and just write a raw TCP HTTP server

This commit is contained in:
ari melody 2025-04-14 17:14:22 +01:00
parent b0de168dda
commit eda7f79fb0
Signed by: ari
GPG key ID: 60B5F0386E3DDB7E
5 changed files with 605 additions and 14 deletions

View file

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