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}