|
|
@ -429,9 +429,13 @@ impl<'a, 'r> FromRequest<'a, 'r> for ClientIp {
|
|
|
|
fn from_request(req: &'a Request<'r>) -> request::Outcome<Self, Self::Error> {
|
|
|
|
fn from_request(req: &'a Request<'r>) -> request::Outcome<Self, Self::Error> {
|
|
|
|
let ip = if CONFIG._ip_header_enabled() {
|
|
|
|
let ip = if CONFIG._ip_header_enabled() {
|
|
|
|
req.headers().get_one(&CONFIG.ip_header()).and_then(|ip| {
|
|
|
|
req.headers().get_one(&CONFIG.ip_header()).and_then(|ip| {
|
|
|
|
ip.parse()
|
|
|
|
match ip.find(',') {
|
|
|
|
.map_err(|_| warn_!("'{}' header is malformed: {}", CONFIG.ip_header(), ip))
|
|
|
|
Some(idx) => &ip[..idx],
|
|
|
|
.ok()
|
|
|
|
None => ip,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.parse()
|
|
|
|
|
|
|
|
.map_err(|_| warn!("'{}' header is malformed: {}", CONFIG.ip_header(), ip))
|
|
|
|
|
|
|
|
.ok()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
None
|
|
|
|
None
|
|
|
|