fix: use trust_cloudflare config value instead of env var

This commit is contained in:
Zomatree
2025-09-18 21:09:53 +01:00
parent a392b347a4
commit a6d3373c3f
4 changed files with 11 additions and 7 deletions

1
Cargo.lock generated
View File

@@ -6574,6 +6574,7 @@ dependencies = [
"axum",
"dashmap",
"log",
"revolt-config",
"revolt-database",
"revolt-result",
"revolt_rocket_okapi",

View File

@@ -12,6 +12,7 @@ default = ["rocket", "axum"]
[dependencies]
revolt-database = { version = "0.8.8", path = "../database"}
revolt-result = { version = "0.8.8", path = "../result" }
revolt-config = { version = "0.8.8", path = "../config" }
rocket = { version = "0.5.1", optional = true }
revolt_rocket_okapi = { version = "0.10.0", optional = true }

View File

@@ -11,6 +11,7 @@ use axum::{
routing::get,
};
use revolt_database::{Database, User};
use revolt_config::config;
use crate::ratelimiter::{RatelimitInformation, Ratelimiter, RequestKind};
@@ -31,8 +32,8 @@ fn to_ip(parts: &Parts) -> String {
.unwrap_or_default()
}
fn to_real_ip(parts: &Parts) -> String {
if let Ok(true) = std::env::var("TRUST_CLOUDFLARE").map(|x| x == "1") {
async fn to_real_ip(parts: &Parts) -> String {
if config().await.api.security.trust_cloudflare {
parts
.headers
.get("CF-Connecting-IP")
@@ -62,7 +63,7 @@ where
let identifier = if let Ok(user) = parts.extract_with_state::<User, _>(state).await {
user.id
} else {
to_real_ip(parts)
to_real_ip(parts).await
};
let (bucket, resource) = storage.resolver.resolve_bucket(parts);

View File

@@ -6,6 +6,7 @@ use rocket::http::{Method, Status};
use rocket::request::{FromRequest, Outcome};
use rocket::serde::json::Json;
use rocket::{Data, Request, Response, State};
use revolt_config::config;
use revolt_rocket_okapi::r#gen::OpenApiGenerator;
use revolt_rocket_okapi::request::{OpenApiFromRequest, RequestHeaderInput};
@@ -33,8 +34,8 @@ fn to_ip(request: &'_ rocket::Request<'_>) -> String {
}
/// Find the actual IP of the client
fn to_real_ip(request: &'_ rocket::Request<'_>) -> String {
if let Ok(true) = std::env::var("TRUST_CLOUDFLARE").map(|x| x == "1") {
async fn to_real_ip(request: &'_ rocket::Request<'_>) -> String {
if config().await.api.security.trust_cloudflare {
request
.headers()
.get_one("CF-Connecting-IP")
@@ -60,7 +61,7 @@ impl<'r> FromRequest<'r> for Ratelimiter {
{
session.id
} else {
to_real_ip(request)
to_real_ip(request).await
};
let (bucket, resource) = storage.resolver.resolve_bucket(request);
@@ -105,7 +106,7 @@ impl Fairing for RatelimitFairing {
info!(
"User rate-limited on route {}! (IP = {:?})",
request.uri(),
to_real_ip(request)
to_real_ip(request).await
);
request.set_method(Method::Get);