diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/args.rs | 5 | ||||
-rw-r--r-- | src/auth.rs | 1 | ||||
-rw-r--r-- | src/file_upload.rs | 8 | ||||
-rw-r--r-- | src/listing.rs | 3 | ||||
-rw-r--r-- | src/main.rs | 8 | ||||
-rw-r--r-- | src/renderer.rs | 18 |
6 files changed, 43 insertions, 0 deletions
diff --git a/src/args.rs b/src/args.rs index 8fdb067..a2564c2 100644 --- a/src/args.rs +++ b/src/args.rs @@ -123,6 +123,10 @@ struct CliArgs { /// Set custom header for responses #[structopt(long = "header", parse(try_from_str = parse_header), number_of_values = 1)] header: Vec<HeaderMap>, + + /// Hide version footer + #[structopt(short = "F", long = "hide-version-footer")] + hide_version_footer: bool, } /// Checks wether an interface is valid, i.e. it can be parsed into an IP address @@ -252,6 +256,7 @@ pub fn parse_args() -> crate::MiniserveConfig { dirs_first: args.dirs_first, title: args.title, header: args.header, + hide_version_footer: args.hide_version_footer, } } diff --git a/src/auth.rs b/src/auth.rs index 9e296ec..1a913d5 100644 --- a/src/auth.rs +++ b/src/auth.rs @@ -126,6 +126,7 @@ fn build_unauthorized_response( &state.css_route, &state.default_color_scheme, &state.default_color_scheme_dark, + state.hide_version_footer, ) .into_string() } diff --git a/src/file_upload.rs b/src/file_upload.rs index 2fe0961..785d72f 100644 --- a/src/file_upload.rs +++ b/src/file_upload.rs @@ -105,6 +105,7 @@ fn handle_multipart( /// server root directory. Any path which will go outside of this directory is considered /// invalid. /// This method returns future. +#[allow(clippy::too_many_arguments)] pub fn upload_file( req: HttpRequest, payload: actix_web::web::Payload, @@ -113,6 +114,7 @@ pub fn upload_file( css_route: String, default_color_scheme: &str, default_color_scheme_dark: &str, + hide_version_footer: bool, ) -> Pin<Box<dyn Future<Output = Result<HttpResponse, actix_web::Error>>>> { let conf = req.app_data::<crate::MiniserveConfig>().unwrap(); let return_path = if let Some(header) = req.headers().get(header::REFERER) { @@ -142,6 +144,7 @@ pub fn upload_file( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, )); } }; @@ -164,6 +167,7 @@ pub fn upload_file( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, )); } }; @@ -186,6 +190,7 @@ pub fn upload_file( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, )); } }; @@ -216,6 +221,7 @@ pub fn upload_file( &css_route, &default_color_scheme, &default_color_scheme_dark, + hide_version_footer, ), }), ) @@ -234,6 +240,7 @@ fn create_error_response( css_route: &str, default_color_scheme: &str, default_color_scheme_dark: &str, + hide_version_footer: bool, ) -> future::Ready<Result<HttpResponse, actix_web::Error>> { errors::log_error_chain(description.to_string()); future::ok( @@ -252,6 +259,7 @@ fn create_error_response( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, ) .into_string(), ), diff --git a/src/listing.rs b/src/listing.rs index d7cfd7e..e28ee76 100644 --- a/src/listing.rs +++ b/src/listing.rs @@ -159,6 +159,7 @@ pub fn directory_listing( tar_enabled: bool, zip_enabled: bool, dirs_first: bool, + hide_version_footer: bool, title: Option<String>, ) -> Result<ServiceResponse, io::Error> { use actix_web::dev::BodyEncoding; @@ -346,6 +347,7 @@ pub fn directory_listing( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, ) .into_string(), ), @@ -411,6 +413,7 @@ pub fn directory_listing( breadcrumbs, tar_enabled, zip_enabled, + hide_version_footer, ) .into_string(), ), diff --git a/src/main.rs b/src/main.rs index a407136..eac6449 100644 --- a/src/main.rs +++ b/src/main.rs @@ -92,6 +92,9 @@ pub struct MiniserveConfig { /// If specified, header will be added pub header: Vec<HeaderMap>, + + /// If enabled, version footer is hidden + pub hide_version_footer: bool, } fn main() { @@ -318,6 +321,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { let tar_enabled = conf.tar_enabled; let zip_enabled = conf.zip_enabled; let dirs_first = conf.dirs_first; + let hide_version_footer = conf.hide_version_footer; let title = conf.title.clone(); upload_route = if let Some(random_route) = conf.random_route.clone() { format!("/{}/upload", random_route) @@ -351,6 +355,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { tar_enabled, zip_enabled, dirs_first, + hide_version_footer, title.clone(), ) }) @@ -364,6 +369,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { let default_color_scheme = conf.default_color_scheme.clone(); let default_color_scheme_dark = conf.default_color_scheme_dark.clone(); + let hide_version_footer = conf.hide_version_footer; if let Some(serve_path) = serve_path { if conf.file_upload { @@ -378,6 +384,7 @@ fn configure_app(app: &mut web::ServiceConfig, conf: &MiniserveConfig) { css_route.clone(), &default_color_scheme, &default_color_scheme_dark, + hide_version_footer, ) })), ) @@ -416,6 +423,7 @@ async fn error_404(req: HttpRequest) -> HttpResponse { &css_route, &conf.default_color_scheme, &conf.default_color_scheme_dark, + conf.hide_version_footer, ) .into_string(), ) diff --git a/src/renderer.rs b/src/renderer.rs index af08285..b3b60cd 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -3,6 +3,7 @@ use chrono::{DateTime, Utc}; use chrono_humanize::Humanize; use maud::{html, Markup, PreEscaped, DOCTYPE}; use std::time::SystemTime; +use structopt::clap::{crate_name, crate_version}; use strum::IntoEnumIterator; use crate::archive::CompressionMethod; @@ -26,6 +27,7 @@ pub fn page( breadcrumbs: Vec<Breadcrumb>, tar_enabled: bool, zip_enabled: bool, + hide_version_footer: bool, ) -> Markup { let upload_action = build_upload_action(upload_route, encoded_dir, sort_method, sort_order); @@ -138,12 +140,24 @@ pub fn page( a.back href="#top" { (arrow_up()) } + @if !hide_version_footer { + (version_footer()) + } } } } } } +// Partial: version footer +fn version_footer() -> Markup { + html! { + p.footer { + (format!("{}/{}", crate_name!(), crate_version!())) + } + } +} + /// Build the action of the upload form fn build_upload_action( upload_route: &str, @@ -465,6 +479,7 @@ pub fn render_error( css_route: &str, default_color_scheme: &str, default_color_scheme_dark: &str, + hide_version_footer: bool, ) -> Markup { let link = if has_referer { return_address.to_string() @@ -492,6 +507,9 @@ pub fn render_error( } } } + @if !hide_version_footer { + (version_footer()) + } } } } |