spacegate_kernel/utils/
x_forwarded_for.rs

1use crate::BoxError;
2use hyper::{header::HeaderValue, Request};
3
4use crate::{extension::PeerAddr, SgBody};
5const X_FORWARDED_FOR: &str = "x-forwarded-for";
6/// Add `x-forwarded-for` for request, based on [`PeerAddr`](`crate::extension::PeerAddr`)
7/// # Errors
8/// missing peer addr ext
9pub fn x_forwarded_for(req: &mut Request<SgBody>) -> Result<(), BoxError> {
10    if let Some(peer_ip) = req.extensions().get::<PeerAddr>().map(|x| x.0.ip()) {
11        req.headers_mut().append(X_FORWARDED_FOR, HeaderValue::from_str(&peer_ip.to_string())?);
12    }
13    Ok(())
14}