diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/main.rs b/src/main.rs index 11cf5c7..9b9c628 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,12 +2,11 @@ use actix_web::http::{Method, StatusCode}; use actix_web::{fs, middleware, server, App, HttpRequest, HttpResponse}; -use structopt::clap::crate_version; -use simplelog::{Config, LevelFilter, TermLogger, TerminalMode}; use std::io::{self, Write}; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::thread; use std::time::Duration; +use structopt::clap::crate_version; use yansi::{Color, Paint}; mod archive; @@ -80,12 +79,23 @@ fn run() -> Result<(), ContextualError> { let sys = actix::System::new("miniserve"); let miniserve_config = args::parse_args(); - let _ = if miniserve_config.verbose { - TermLogger::init(LevelFilter::Info, Config::default(), TerminalMode::default()) + let log_level = if miniserve_config.verbose { + simplelog::LevelFilter::Info } else { - TermLogger::init(LevelFilter::Error, Config::default(), TerminalMode::default()) + simplelog::LevelFilter::Error }; + if simplelog::TermLogger::init( + log_level, + simplelog::Config::default(), + simplelog::TerminalMode::Mixed, + ) + .is_err() + { + simplelog::SimpleLogger::init(log_level, simplelog::Config::default()) + .expect("Couldn't initialize logger") + } + if miniserve_config.no_symlinks { let is_symlink = miniserve_config .path @@ -277,6 +287,7 @@ fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { }; let random_route = app.state().random_route.clone().unwrap_or_default(); + let uses_random_route = app.state().random_route.clone().is_some(); let full_route = format!("/{}", random_route); if let Some(s) = s { @@ -285,7 +296,7 @@ fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { // Allow file upload app.resource(&upload_route, move |r| { r.method(Method::POST) - .f(move |file| file_upload::upload_file(file, default_color_scheme)) + .f(move |file| file_upload::upload_file(file, default_color_scheme, uses_random_route)) }) // Handle directories .handler(&full_route, s) @@ -305,11 +316,7 @@ fn configure_app(app: App<MiniserveConfig>) -> App<MiniserveConfig> { fn error_404(req: &HttpRequest<crate::MiniserveConfig>) -> Result<HttpResponse, io::Error> { let err_404 = ContextualError::RouteNotFoundError(req.path().to_string()); let default_color_scheme = req.state().default_color_scheme; - let return_address = match &req.state().random_route { - Some(random_route) => format!("/{}", random_route), - None => "/".to_string(), - }; - + let uses_random_route = req.state().random_route.is_some(); let query_params = listing::extract_query_parameters(req); let color_scheme = query_params.theme.unwrap_or(default_color_scheme); @@ -319,13 +326,13 @@ fn error_404(req: &HttpRequest<crate::MiniserveConfig>) -> Result<HttpResponse, renderer::render_error( &err_404.to_string(), StatusCode::NOT_FOUND, - &return_address, + "/", query_params.sort, query_params.order, color_scheme, default_color_scheme, false, - true, + !uses_random_route, ) .into_string(), )) |