summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-30 06:01:19 +0200
committermetamuffin <metamuffin@disroot.org>2025-03-30 06:01:19 +0200
commit1300089bc4cdab99a5ce2f5eda58cccf086a7e64 (patch)
tree73334aaca617a461113a15315860933445ec2868
parent7ef1b6952874a40373562aa610dc78a119a4f075 (diff)
downloadgnix-1300089bc4cdab99a5ce2f5eda58cccf086a7e64.tar
gnix-1300089bc4cdab99a5ce2f5eda58cccf086a7e64.tar.bz2
gnix-1300089bc4cdab99a5ce2f5eda58cccf086a7e64.tar.zst
disablable server header
-rw-r--r--src/config.rs2
-rw-r--r--src/main.rs28
2 files changed, 17 insertions, 13 deletions
diff --git a/src/config.rs b/src/config.rs
index 5f925ea..8eb7d8d 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -38,6 +38,8 @@ pub struct Config {
#[serde(default)]
pub limits: Limits,
pub handler: DynNode,
+ #[serde(default = "return_true")]
+ pub disable_server_header: bool
}
fn random_bytes() -> [u8; 32] {
diff --git a/src/main.rs b/src/main.rs
index af9c30b..7fb07ca 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -403,19 +403,21 @@ async fn service(
};
let mut resp = config.handler.handle(&mut context, request).await?;
- let server_header = resp.headers().get(SERVER).cloned();
- resp.headers_mut().insert(
- SERVER,
- if let Some(o) = server_header {
- HeaderValue::from_str(&format!(
- "{} via gnix",
- o.to_str().ok().unwrap_or("invalid")
- ))
- .unwrap()
- } else {
- HeaderValue::from_static("gnix")
- },
- );
+ if !config.disable_server_header {
+ let server_header = resp.headers().get(SERVER).cloned();
+ resp.headers_mut().insert(
+ SERVER,
+ if let Some(o) = server_header {
+ HeaderValue::from_str(&format!(
+ "{} via gnix",
+ o.to_str().ok().unwrap_or("invalid")
+ ))
+ .unwrap()
+ } else {
+ HeaderValue::from_static("gnix")
+ },
+ );
+ }
Ok(resp)
}