aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTamas Levai <levait@tmit.bme.hu>2021-02-28 21:02:58 +0000
committerTamas Levai <levait@tmit.bme.hu>2021-02-28 21:02:58 +0000
commitb91cc72686c0b6220f95da386bd3932f5d03e43e (patch)
tree1ef3acddb5c399f6614d28c26b4459b272a37f33 /src
parentDon't try to compress every binary using upx (diff)
downloadminiserve-b91cc72686c0b6220f95da386bd3932f5d03e43e.tar.gz
miniserve-b91cc72686c0b6220f95da386bd3932f5d03e43e.zip
Add program version footer
Diffstat (limited to 'src')
-rw-r--r--src/args.rs5
-rw-r--r--src/auth.rs1
-rw-r--r--src/file_upload.rs7
-rw-r--r--src/listing.rs3
-rw-r--r--src/main.rs8
-rw-r--r--src/renderer.rs28
6 files changed, 52 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..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<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 +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<Result<HttpResponse, actix_web::Error>> {
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<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..6253f69 100644
--- a/src/renderer.rs
+++ b/src/renderer.rs
@@ -26,6 +26,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 +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())
+ }
}
}
}