From faab34d44f11af3821c23d7075575f6570f984bd Mon Sep 17 00:00:00 2001 From: Jan Wolff Date: Sun, 17 May 2020 19:46:48 +0200 Subject: update readme, default configuration path --- src/main.rs | 16 ++++++++++------ src/mime/mod.rs | 1 + src/server/handler.rs | 12 ++++++++++-- 3 files changed, 21 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 5639158..7e5787a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,6 +20,10 @@ fn parse_args() -> Option { loop { match args.next() { Some(arg) => { + if arg == "-h" || arg == "--help" { + help(); + return None; + } if arg == "-c" || arg == "--config" { let config_fname = args.next().unwrap(); return Some(config_fname); @@ -29,7 +33,7 @@ fn parse_args() -> Option { } } - None + Some("/etc/sheldond.conf".to_string()) } fn parse_config(fname: String) -> server::ServerConfig { @@ -38,8 +42,8 @@ fn parse_config(fname: String) -> server::ServerConfig { let file = match File::open(path) { Ok(file) => BufReader::new(file), - Err(e) => { - panic!(e); + Err(_) => { + panic!("could not open config file: {}", fname); } }; @@ -77,13 +81,13 @@ fn parse_config(fname: String) -> server::ServerConfig { } fn main() { - let config = match parse_args() { - Some(config_fname) => parse_config(config_fname), + let config_fname = match parse_args() { + Some(config_fname) => config_fname, None => { - help(); return; } }; + let config = parse_config(config_fname); let server = server::Server::new(&config); server.serve(); diff --git a/src/mime/mod.rs b/src/mime/mod.rs index 6fc0f9f..156dd0d 100644 --- a/src/mime/mod.rs +++ b/src/mime/mod.rs @@ -14,6 +14,7 @@ pub fn get_mime_type(extension: &OsStr) -> &'static str { match ext_str { "gmi" => "text/gemini", + "gemini" => "text/gemini", "txt" => "text/plain", _ => default_mime_type(), } diff --git a/src/server/handler.rs b/src/server/handler.rs index 84d9d17..5f77f93 100644 --- a/src/server/handler.rs +++ b/src/server/handler.rs @@ -5,7 +5,7 @@ use openssl::ssl::SslStream; use std::fs::File; use std::io::{copy, BufReader, BufWriter}; use std::net::TcpStream; -use std::path::Path; +use std::path::{Path, PathBuf}; use url::Url; fn send_header(stream: &mut SslStream, header: &response::Header) { @@ -50,6 +50,13 @@ pub fn handle_request(config: &ServerConfig, mut stream: SslStream) { handle_response(config, location, &mut stream); } +fn gen_path_index(path: &Path) -> PathBuf { + match path.is_dir() { + true => path.join("index.gmi"), + false => PathBuf::from(path), + } +} + fn handle_response(config: &ServerConfig, url: Url, mut stream: &mut SslStream) { if url.scheme() != "gemini" { send_header(&mut stream, &response::permanent_failure()); @@ -68,7 +75,8 @@ fn handle_response(config: &ServerConfig, url: Url, mut stream: &mut SslStream file, -- cgit v1.2.3