spacegate_kernel/utils/
x_forwarded_for.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
use crate::BoxError;
use hyper::{header::HeaderValue, Request};

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