mirror of
https://codeberg.org/icewind/real-ip.git
synced 2026-10-01 09:04:12 +02:00
parent
04e964f81c
commit
e60f654544
2 changed files with 20 additions and 18 deletions
12
src/lib.rs
12
src/lib.rs
|
|
@ -55,21 +55,19 @@
|
|||
|
||||
pub mod headers;
|
||||
|
||||
use crate::headers::{
|
||||
extract_forwarded_header, extract_real_ip_header, extract_x_forwarded_for_header,
|
||||
};
|
||||
use http::HeaderMap;
|
||||
pub use ipnet::IpNet;
|
||||
use itertools::Either;
|
||||
use std::iter::{empty, once};
|
||||
use std::net::IpAddr;
|
||||
use crate::headers::{extract_forwarded_header, extract_real_ip_header, extract_x_forwarded_for_header};
|
||||
pub use ipnet::IpNet;
|
||||
|
||||
/// Get the "real-ip" of an incoming request.
|
||||
///
|
||||
/// See the [top level documentation](crate) for more usage details.
|
||||
pub fn real_ip(
|
||||
headers: &HeaderMap,
|
||||
remote: IpAddr,
|
||||
trusted_proxies: &[IpNet],
|
||||
) -> Option<IpAddr> {
|
||||
pub fn real_ip(headers: &HeaderMap, remote: IpAddr, trusted_proxies: &[IpNet]) -> Option<IpAddr> {
|
||||
let mut hops = get_forwarded_for(headers).chain(once(remote));
|
||||
let first = hops.next();
|
||||
let hops = first.iter().copied().chain(hops);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue