Private
Public Access
1
0

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

This commit is contained in:
2026-05-17 23:01:01 +00:00
parent 3aff64afb7
commit 024e800708

View File

@ -37,17 +37,20 @@ pub fn router() -> Router<AppState> {
async fn enroll_host(
State(state): State<AppState>,
headers: HeaderMap,
ConnectInfo(addr): ConnectInfo<SocketAddr>,
Json(payload): Json<CreateEnrollmentRequest>,
) -> Result<Response, (StatusCode, Json<serde_json::Value>)> {
// 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
.get("x-forwarded-for")
.and_then(|h| h.to_str().ok())
.and_then(|h| h.split(',').next())
.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