From 938532dbd3e61efebf4d1311b08887f879771c9a Mon Sep 17 00:00:00 2001 From: gigirassy Date: Sat, 18 Jul 2026 02:00:16 +0200 Subject: [PATCH] add -i flag to serve any "index" file as index --- src/main.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index a067c07..f2d27dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,7 +11,7 @@ const ROOT: &str = "/data"; fn mime(path: &Path) -> &'static str { match path.extension().and_then(|s| s.to_str()).unwrap_or("") { - "html" => "text/html; charset=utf-8", + "html" => "text/html; charset=utf8", "css" => "text/css", "js" => "application/javascript", "json" => "application/json", @@ -40,6 +40,7 @@ fn sanitize(url: &str) -> PathBuf { fn main() { let spa = env::args().any(|a| a == "-s"); + let any_index = env::args().any(|a| a == "-i"); let server = Server::http("0.0.0.0:3000").unwrap(); @@ -47,7 +48,24 @@ fn main() { let mut path = sanitize(req.url()); if path.is_dir() { - path.push("index.html"); + if any_index { + if let Ok(entries) = fs::read_dir(&path) { + if let Some(entry) = entries.flatten().find(|e| { + e.path() + .file_stem() + .and_then(|s| s.to_str()) + == Some("index") + }) { + path = entry.path(); + } else { + path.push("index.html"); + } + } else { + path.push("index.html"); + } + } else { + path.push("index.html"); + } } if !path.exists() && spa {