From 68d018bd372d1bf9c7eb0993949441ec3e41e41c Mon Sep 17 00:00:00 2001 From: timedout Date: Thu, 9 Jul 2026 20:24:23 +0100 Subject: [PATCH] style: Use string literals instead of u8s --- src/core/config/mod.rs | 23 +++++++++++------------ src/router/layers.rs | 23 ++++++++++++++--------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/core/config/mod.rs b/src/core/config/mod.rs index 0adbf7b09..280e278aa 100644 --- a/src/core/config/mod.rs +++ b/src/core/config/mod.rs @@ -372,25 +372,24 @@ pub struct Config { /// The source to use for discovering the real connecting client IP. /// - /// Takes the number of any of the following options: + /// Takes any of the following options: /// - /// 0 - Use the IP address of the TCP connection - /// 1 - `Cf-Connecting-Ip` header - /// 2 - `CloudFront-Viewer-Address` header - /// 3 - `Fly-Client-IP` header - /// 4 - rightmost value of the `X-Forwarded-For` header - /// 5 - `True-Client-Ip` header - /// 6 - `X-Envoy-External-Address` header - /// 7 - `X-Real-Ip` header + /// cf_connecting_ip - `Cf-Connecting-Ip` header + /// cloudfront_viewer_address - `CloudFront-Viewer-Address` header + /// fly_client_ip - `Fly-Client-IP` header + /// x_forwarded_for - rightmost value of the `X-Forwarded-For` header + /// true_client_ip - `True-Client-Ip` header + /// x_envoy_external_address - `X-Envoy-External-Address` header + /// x_real_ip - `X-Real-Ip` header /// - /// Only change this from `0` if you are certain only your reverse proxy + /// Only set this if you are certain only your reverse proxy /// will send the expected header. There is no "is the connecting IP allowed /// to set this header" check; if the header selected is present, it is /// used. /// - /// default: 0 + /// Defaults to the IP address actually making the connection. #[serde(default)] - pub request_ip_source: u8, + pub request_ip_source: Option, /// Max request size for file uploads in bytes. Defaults to 20MB. /// Also limits incoming federated media. diff --git a/src/router/layers.rs b/src/router/layers.rs index 8404e97cb..0d2ed6d43 100644 --- a/src/router/layers.rs +++ b/src/router/layers.rs @@ -48,15 +48,20 @@ pub(crate) fn build(services: &Arc) -> Result<(Router, Guard)> { ))] let layers = layers.layer(compression_layer(server)); - let client_ip_layer = match services.config.request_ip_source { - | 1 => ClientIpSource::CfConnectingIp, - | 2 => ClientIpSource::CloudFrontViewerAddress, - | 3 => ClientIpSource::FlyClientIp, - | 4 => ClientIpSource::RightmostXForwardedFor, - | 5 => ClientIpSource::TrueClientIp, - | 6 => ClientIpSource::XEnvoyExternalAddress, - | 7 => ClientIpSource::XRealIp, - | _ => ClientIpSource::ConnectInfo, + let client_ip_layer = match services + .config + .request_ip_source + .as_ref() + .map(AsRef::as_ref) + { + | Some("cf_connecting_ip") => ClientIpSource::CfConnectingIp, + | Some("cloudfront_viewer_address") => ClientIpSource::CloudFrontViewerAddress, + | Some("fly_client_ip") => ClientIpSource::FlyClientIp, + | Some("x_forwarded_for") => ClientIpSource::RightmostXForwardedFor, + | Some("true_client_ip") => ClientIpSource::TrueClientIp, + | Some("x_envoy_external_address") => ClientIpSource::XEnvoyExternalAddress, + | Some("x_real_ip") => ClientIpSource::XRealIp, + | None | Some(_) => ClientIpSource::ConnectInfo, }; let services_ = services.clone();