use std::io::{Read, Write}; use std::net::{SocketAddr, TcpListener}; use crate::shared::net::ManagementInfo; pub fn spawn_management_server(bind: SocketAddr, info: ManagementInfo) { let listener = TcpListener::bind(bind).expect("failed to bind management TCP socket"); let body = serde_json::to_string(&info).expect("failed to serialize management info"); std::thread::spawn(move || { for stream in listener.incoming() { let Ok(mut stream) = stream else { continue }; let body = body.clone(); std::thread::spawn(move || { let mut buf = [0u8; 1024]; let _ = stream.read(&mut buf); let response = format!( "HTTP/1.1 200 OK\r\n\ Content-Type: application/json\r\n\ Access-Control-Allow-Origin: *\r\n\ Content-Length: {}\r\n\ Connection: close\r\n\ \r\n\ {body}", body.len(), ); let _ = stream.write_all(response.as_bytes()); }); } }); }