aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs33
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(),
))