fix: use trust_cloudflare config value instead of env var
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -6574,6 +6574,7 @@ dependencies = [
|
|||||||
"axum",
|
"axum",
|
||||||
"dashmap",
|
"dashmap",
|
||||||
"log",
|
"log",
|
||||||
|
"revolt-config",
|
||||||
"revolt-database",
|
"revolt-database",
|
||||||
"revolt-result",
|
"revolt-result",
|
||||||
"revolt_rocket_okapi",
|
"revolt_rocket_okapi",
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ default = ["rocket", "axum"]
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
revolt-database = { version = "0.8.8", path = "../database"}
|
revolt-database = { version = "0.8.8", path = "../database"}
|
||||||
revolt-result = { version = "0.8.8", path = "../result" }
|
revolt-result = { version = "0.8.8", path = "../result" }
|
||||||
|
revolt-config = { version = "0.8.8", path = "../config" }
|
||||||
|
|
||||||
rocket = { version = "0.5.1", optional = true }
|
rocket = { version = "0.5.1", optional = true }
|
||||||
revolt_rocket_okapi = { version = "0.10.0", optional = true }
|
revolt_rocket_okapi = { version = "0.10.0", optional = true }
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ use axum::{
|
|||||||
routing::get,
|
routing::get,
|
||||||
};
|
};
|
||||||
use revolt_database::{Database, User};
|
use revolt_database::{Database, User};
|
||||||
|
use revolt_config::config;
|
||||||
|
|
||||||
use crate::ratelimiter::{RatelimitInformation, Ratelimiter, RequestKind};
|
use crate::ratelimiter::{RatelimitInformation, Ratelimiter, RequestKind};
|
||||||
|
|
||||||
@@ -31,8 +32,8 @@ fn to_ip(parts: &Parts) -> String {
|
|||||||
.unwrap_or_default()
|
.unwrap_or_default()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_real_ip(parts: &Parts) -> String {
|
async fn to_real_ip(parts: &Parts) -> String {
|
||||||
if let Ok(true) = std::env::var("TRUST_CLOUDFLARE").map(|x| x == "1") {
|
if config().await.api.security.trust_cloudflare {
|
||||||
parts
|
parts
|
||||||
.headers
|
.headers
|
||||||
.get("CF-Connecting-IP")
|
.get("CF-Connecting-IP")
|
||||||
@@ -62,7 +63,7 @@ where
|
|||||||
let identifier = if let Ok(user) = parts.extract_with_state::<User, _>(state).await {
|
let identifier = if let Ok(user) = parts.extract_with_state::<User, _>(state).await {
|
||||||
user.id
|
user.id
|
||||||
} else {
|
} else {
|
||||||
to_real_ip(parts)
|
to_real_ip(parts).await
|
||||||
};
|
};
|
||||||
|
|
||||||
let (bucket, resource) = storage.resolver.resolve_bucket(parts);
|
let (bucket, resource) = storage.resolver.resolve_bucket(parts);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ use rocket::http::{Method, Status};
|
|||||||
use rocket::request::{FromRequest, Outcome};
|
use rocket::request::{FromRequest, Outcome};
|
||||||
use rocket::serde::json::Json;
|
use rocket::serde::json::Json;
|
||||||
use rocket::{Data, Request, Response, State};
|
use rocket::{Data, Request, Response, State};
|
||||||
|
use revolt_config::config;
|
||||||
|
|
||||||
use revolt_rocket_okapi::r#gen::OpenApiGenerator;
|
use revolt_rocket_okapi::r#gen::OpenApiGenerator;
|
||||||
use revolt_rocket_okapi::request::{OpenApiFromRequest, RequestHeaderInput};
|
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
|
/// Find the actual IP of the client
|
||||||
fn to_real_ip(request: &'_ rocket::Request<'_>) -> String {
|
async fn to_real_ip(request: &'_ rocket::Request<'_>) -> String {
|
||||||
if let Ok(true) = std::env::var("TRUST_CLOUDFLARE").map(|x| x == "1") {
|
if config().await.api.security.trust_cloudflare {
|
||||||
request
|
request
|
||||||
.headers()
|
.headers()
|
||||||
.get_one("CF-Connecting-IP")
|
.get_one("CF-Connecting-IP")
|
||||||
@@ -60,7 +61,7 @@ impl<'r> FromRequest<'r> for Ratelimiter {
|
|||||||
{
|
{
|
||||||
session.id
|
session.id
|
||||||
} else {
|
} else {
|
||||||
to_real_ip(request)
|
to_real_ip(request).await
|
||||||
};
|
};
|
||||||
|
|
||||||
let (bucket, resource) = storage.resolver.resolve_bucket(request);
|
let (bucket, resource) = storage.resolver.resolve_bucket(request);
|
||||||
@@ -105,7 +106,7 @@ impl Fairing for RatelimitFairing {
|
|||||||
info!(
|
info!(
|
||||||
"User rate-limited on route {}! (IP = {:?})",
|
"User rate-limited on route {}! (IP = {:?})",
|
||||||
request.uri(),
|
request.uri(),
|
||||||
to_real_ip(request)
|
to_real_ip(request).await
|
||||||
);
|
);
|
||||||
|
|
||||||
request.set_method(Method::Get);
|
request.set_method(Method::Get);
|
||||||
|
|||||||
Reference in New Issue
Block a user