From c37a12ae15661b74a63053bbfc2a71e9cc93d050 Mon Sep 17 00:00:00 2001 From: int 80h Date: Mon, 27 Apr 2020 18:25:09 -0400 Subject: [PATCH] Adding meta --- Cargo.toml | 2 ++ src/cgi.rs | 5 +---- src/main.rs | 12 +++++++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e4a0e75..fd8bd09 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,3 +16,5 @@ serde = "*" serde_derive = "*" url = "*" chrono = "0.4" +mime_guess = "2.0.3" +mime = "0.3.16" diff --git a/src/cgi.rs b/src/cgi.rs index 1d4955f..e9045ec 100644 --- a/src/cgi.rs +++ b/src/cgi.rs @@ -18,9 +18,9 @@ pub async fn cgi(mut con: util::Connection, path: PathBuf, url: Url) -> Result<( envs.insert("SERVER_PROTOCOL", "GEMINI"); let addr = con.peer_addr.ip().to_string(); envs.insert("REMOTE_ADDR", &addr); + envs.insert("REMOTE_HOST", &addr); let port = con.peer_addr.port().to_string(); envs.insert("REMOTE_PORT", &port); - // envs.insert("SERVER_PORT", con.cfg.port.clone().to_string()); if let Some(q) = url.query() { envs.insert("QUERY_STRING", q); @@ -36,9 +36,6 @@ pub async fn cgi(mut con: util::Connection, path: PathBuf, url: Url) -> Result<( return Ok(()); } let cmd = String::from_utf8(cmd.stdout).unwrap(); - // if cmd.starts_with("20") { con.send_raw(cmd).await?; - //util::send_body(stream, status::Status::Success, "text/gemini", Some(cmd)).await?; - // } return Ok(()); } diff --git a/src/main.rs b/src/main.rs index 4f3a537..cd35d7d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,6 +26,8 @@ use tokio_rustls::server::TlsStream; use tokio_rustls::TlsAcceptor; use url::Url; use chrono::{DateTime, Utc}; +use mime_guess; +use mime; mod cgi; mod config; @@ -114,10 +116,18 @@ async fn handle_connection(mut con: util::Connection) -> Result<(), io::Error> { return Ok(()); } + let mut mime = "text/gemini"; + let m: mime::Mime; + + if path.extension().unwrap().to_str() != Some("gemini") { + m = mime_guess::from_path(&path).first().unwrap(); + mime = m.essence_str(); + } + let content = get_content(path, url)?; con.send_body( status::Status::Success, - "text/gemini", + mime, Some(content), ) .await?;