use axum::http::HeaderMap;
use lazy_static::lazy_static;
use regex::Regex;
lazy_static! {
pub static ref FORWARED_FOR_RE: Regex = Regex::new(r"(?i:for=)(.*)^[;]").unwrap();
}
pub fn get_forwarded(headers: &HeaderMap) -> String {
if !headers.contains_key("Forwarded") {
return "unknown".to_string();
}
let v = &headers["Forwarded"].to_str();
if let Ok(f_str) = v {
let caps = FORWARED_FOR_RE.captures(f_str);
if let Some(caps) = caps {
if let Some(forwared_for_id) = caps.get(1) {
return forwared_for_id.as_str().to_string();
}
}
}
"unknown".to_string()
}