fix: remove ConnectInfo extractor to fix public endpoint 500 error
Some checks failed
CI Pipeline / Rust Format Check (push) Failing after 3s
CI Pipeline / Clippy Lints (push) Successful in 53s
CI Pipeline / Rust Unit Tests (push) Successful in 1m11s
CI Pipeline / Security Audit (push) Successful in 4s
CI Pipeline / Frontend Lint & Type Check (push) Successful in 14s
CI Pipeline / Build .deb & Release (push) Has been skipped
Some checks failed
CI Pipeline / Rust Format Check (push) Failing after 3s
CI Pipeline / Clippy Lints (push) Successful in 53s
CI Pipeline / Rust Unit Tests (push) Successful in 1m11s
CI Pipeline / Security Audit (push) Successful in 4s
CI Pipeline / Frontend Lint & Type Check (push) Successful in 14s
CI Pipeline / Build .deb & Release (push) Has been skipped
This commit is contained in:
@ -37,17 +37,20 @@ pub fn router() -> Router<AppState> {
|
|||||||
async fn enroll_host(
|
async fn enroll_host(
|
||||||
State(state): State<AppState>,
|
State(state): State<AppState>,
|
||||||
headers: HeaderMap,
|
headers: HeaderMap,
|
||||||
ConnectInfo(addr): ConnectInfo<SocketAddr>,
|
|
||||||
Json(payload): Json<CreateEnrollmentRequest>,
|
Json(payload): Json<CreateEnrollmentRequest>,
|
||||||
) -> Result<Response, (StatusCode, Json<serde_json::Value>)> {
|
) -> Result<Response, (StatusCode, Json<serde_json::Value>)> {
|
||||||
// 1. IP-based Rate Limiting
|
// 1. IP-based Rate Limiting
|
||||||
// Prefer real IP from headers if behind proxy (e.g., X-Forwarded-For), else use SocketAddr
|
// Prefer real IP from headers if behind proxy (e.g., X-Forwarded-For)
|
||||||
let ip = headers
|
let ip = headers
|
||||||
.get("x-forwarded-for")
|
.get("x-forwarded-for")
|
||||||
.and_then(|h| h.to_str().ok())
|
.and_then(|h| h.to_str().ok())
|
||||||
.and_then(|h| h.split(',').next())
|
.and_then(|h| h.split(',').next())
|
||||||
.and_then(|h| h.trim().parse::<IpAddr>().ok())
|
.and_then(|h| h.trim().parse::<IpAddr>().ok())
|
||||||
.unwrap_or_else(|| addr.ip());
|
.unwrap_or_else(|| {
|
||||||
|
tracing::warn!("No X-Forwarded-For header found for enrollment request from public endpoint");
|
||||||
|
// Default to a placeholder IP since we can't extract the socket addr without the ConnectInfo layer
|
||||||
|
"0.0.0.0".parse().unwrap()
|
||||||
|
});
|
||||||
|
|
||||||
{
|
{
|
||||||
let mut rate_limits = state
|
let mut rate_limits = state
|
||||||
|
|||||||
Reference in New Issue
Block a user