From b91cc72686c0b6220f95da386bd3932f5d03e43e Mon Sep 17 00:00:00 2001 From: Tamas Levai Date: Sun, 28 Feb 2021 22:02:58 +0100 Subject: Add program version footer --- src/args.rs | 5 +++++ src/auth.rs | 1 + src/file_upload.rs | 7 +++++++ src/listing.rs | 3 +++ src/main.rs | 8 ++++++++ src/renderer.rs | 28 ++++++++++++++++++++++++++++ 6 files changed, 52 insertions(+) (limited to 'src') 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, + + /// 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..27f292b 100644 --- a/src/file_upload.rs +++ b/src/file_upload.rs @@ -113,6 +113,7 @@ pub fn upload_file( css_route: String, default_color_scheme: &str, default_color_scheme_dark: &str, + hide_version_footer: bool, ) -> Pin>>> { let conf = req.app_data::().unwrap(); let return_path = if let Some(header) = req.headers().get(header::REFERER) { @@ -142,6 +143,7 @@ pub fn upload_file( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, )); } }; @@ -164,6 +166,7 @@ pub fn upload_file( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, )); } }; @@ -186,6 +189,7 @@ pub fn upload_file( &css_route, default_color_scheme, default_color_scheme_dark, + hide_version_footer, )); } }; @@ -216,6 +220,7 @@ pub fn upload_file( &css_route, &default_color_scheme, &default_color_scheme_dark, + hide_version_footer, ), }), ) @@ -234,6 +239,7 @@ fn create_error_response( css_route: &str, default_color_scheme: &str, default_color_scheme_dark: &str, + hide_version_footer: bool, ) -> future::Ready> { errors::log_error_chain(description.to_string()); future::ok( @@ -252,6 +258,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, ) -> Result { 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, + + /// 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..6253f69 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -26,6 +26,7 @@ pub fn page( breadcrumbs: Vec, 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 +139,35 @@ pub fn page( a.back href="#top" { (arrow_up()) } + @if !hide_version_footer { + (version_footer()) + } } } } } } +// Get version info +fn get_version_info() -> String { + const PROG_NAME: Option<&'static str> = option_env!("CARGO_PKG_NAME"); + const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION"); + format!( + "{}/{}", + PROG_NAME.unwrap_or("miniserve"), + VERSION.unwrap_or("unknown") + ) +} + +// Partial: version footer +fn version_footer() -> Markup { + html! { + p style="text-align:center;padding-top:1em" { + (get_version_info()) + } + } +} + /// Build the action of the upload form fn build_upload_action( upload_route: &str, @@ -465,6 +489,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 +517,9 @@ pub fn render_error( } } } + @if !hide_version_footer { + (version_footer()) + } } } } -- cgit v1.2.3 From 23570b35fe8cd0b610c72dc793f8a27d0d341d07 Mon Sep 17 00:00:00 2001 From: Tamas Levai Date: Sun, 28 Feb 2021 22:25:36 +0100 Subject: Fix indentation --- src/renderer.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/renderer.rs b/src/renderer.rs index 6253f69..404dd5d 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -139,9 +139,9 @@ pub fn page( a.back href="#top" { (arrow_up()) } - @if !hide_version_footer { - (version_footer()) - } + @if !hide_version_footer { + (version_footer()) + } } } } @@ -517,9 +517,9 @@ pub fn render_error( } } } - @if !hide_version_footer { - (version_footer()) - } + @if !hide_version_footer { + (version_footer()) + } } } } -- cgit v1.2.3 From b1d027129f77e0b30e51b0820c8c8681632b2fbd Mon Sep 17 00:00:00 2001 From: Tamas Levai Date: Mon, 1 Mar 2021 07:51:21 +0100 Subject: Fix clippy warning --- src/file_upload.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/file_upload.rs b/src/file_upload.rs index 27f292b..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, -- cgit v1.2.3 From 4589d67334aeffcddf0b46974863291a5b59c9f6 Mon Sep 17 00:00:00 2001 From: Tamas Levai Date: Mon, 1 Mar 2021 07:55:34 +0100 Subject: Use structopt macros to ge crate info --- src/renderer.rs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/renderer.rs b/src/renderer.rs index 404dd5d..f36636b 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -4,7 +4,7 @@ use chrono_humanize::Humanize; use maud::{html, Markup, PreEscaped, DOCTYPE}; use std::time::SystemTime; use strum::IntoEnumIterator; - +use structopt::clap::{crate_name, crate_version}; use crate::archive::CompressionMethod; use crate::listing::{Breadcrumb, Entry, SortingMethod, SortingOrder}; @@ -148,22 +148,11 @@ pub fn page( } } -// Get version info -fn get_version_info() -> String { - const PROG_NAME: Option<&'static str> = option_env!("CARGO_PKG_NAME"); - const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION"); - format!( - "{}/{}", - PROG_NAME.unwrap_or("miniserve"), - VERSION.unwrap_or("unknown") - ) -} - // Partial: version footer fn version_footer() -> Markup { html! { p style="text-align:center;padding-top:1em" { - (get_version_info()) + (format!("{}/{}", crate_name!(), crate_version!())) } } } -- cgit v1.2.3 From 337e313d5cbec9ca57d4bc66cd77820c7ed3409f Mon Sep 17 00:00:00 2001 From: Tamas Levai Date: Mon, 1 Mar 2021 08:18:38 +0100 Subject: renderer: Follow alphabetical order in package uses --- src/renderer.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/renderer.rs b/src/renderer.rs index f36636b..986a0b3 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -3,8 +3,9 @@ use chrono::{DateTime, Utc}; use chrono_humanize::Humanize; use maud::{html, Markup, PreEscaped, DOCTYPE}; use std::time::SystemTime; -use strum::IntoEnumIterator; use structopt::clap::{crate_name, crate_version}; +use strum::IntoEnumIterator; + use crate::archive::CompressionMethod; use crate::listing::{Breadcrumb, Entry, SortingMethod, SortingOrder}; -- cgit v1.2.3 From 4821160504f36e447f15d6df213d81f44dc044e5 Mon Sep 17 00:00:00 2001 From: Tamas Levai Date: Mon, 1 Mar 2021 08:20:19 +0100 Subject: Use CSS to configure version footer look --- src/renderer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/renderer.rs b/src/renderer.rs index 986a0b3..b3b60cd 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -152,7 +152,7 @@ pub fn page( // Partial: version footer fn version_footer() -> Markup { html! { - p style="text-align:center;padding-top:1em" { + p.footer { (format!("{}/{}", crate_name!(), crate_version!())) } } -- cgit v1.2.3