aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2021-03-01 19:37:14 +0000
committerGitHub <noreply@github.com>2021-03-01 19:37:14 +0000
commit54f755c5e35957910da412eebc51a67bade9d8f0 (patch)
tree4ce3dde09cae1b1a0a4700f24c6da55c2ec3bc0a
parentDon't try to compress every binary using upx (diff)
parentMake footer text a bit smaller (diff)
downloadminiserve-54f755c5e35957910da412eebc51a67bade9d8f0.tar.gz
miniserve-54f755c5e35957910da412eebc51a67bade9d8f0.zip
Merge pull request #456 from levaitamas/version-footer
Add footer with program version
-rw-r--r--data/style.scss13
-rw-r--r--src/args.rs5
-rw-r--r--src/auth.rs1
-rw-r--r--src/file_upload.rs8
-rw-r--r--src/listing.rs3
-rw-r--r--src/main.rs8
-rw-r--r--src/renderer.rs18
7 files changed, 54 insertions, 2 deletions
diff --git a/data/style.scss b/data/style.scss
index 95bc56f..9bfbeaf 100644
--- a/data/style.scss
+++ b/data/style.scss
@@ -42,6 +42,13 @@ body {
word-break: break-word;
}
+.footer {
+ text-align: center;
+ padding-top: 1.5rem;
+ font-size: 0.7em;
+ color: var(--footer_color);
+}
+
a {
text-decoration: none;
}
@@ -564,6 +571,7 @@ th span.active span {
--size_background_color: #323232;
--size_text_color: #ffffff;
--error_color: #d02424;
+ --footer_color: #898989;
}
@mixin theme_archlinux {
@@ -608,6 +616,7 @@ th span.active span {
--size_background_color: #5294e2;
--size_text_color: #fefefe;
--error_color: #e44b4b;
+ --footer_color: #8eabcc;
}
@mixin theme_zenburn {
@@ -652,6 +661,7 @@ th span.active span {
--size_background_color: #7f9f7f;
--size_text_color: #efefef;
--error_color: #d06565;
+ --footer_color: #bfaf9f;
}
@mixin theme_monokai {
@@ -696,6 +706,7 @@ th span.active span {
--size_background_color: #75715e;
--size_text_color: #f8f8f2;
--error_color: #d02929;
+ --footer_color: #56c9df;
}
@@ -730,5 +741,3 @@ th span.active span {
@extend %theme_dark_#{$theme};
}
}
-
-
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())
+ }
}
}
}