lintel 0.2.0
Loading...
Searching...
No Matches
Public Member Functions | List of all members
lintel::ClientIpResolver Class Reference

#include <ClientIpResolver.h>

Public Member Functions

 ClientIpResolver ()=default
 
 ClientIpResolver (std::vector< std::string > trustedProxies)
 
void setTrustedProxies (std::vector< std::string > trustedProxies)
 
std::string resolveClientIp (const std::string &remoteAddress, const std::string &forwardedFor) const
 

Detailed Description

Resolves the client IP address of an HTTP request.

The X-Forwarded-For header is only honored when the direct peer (the socket remote address) is a configured trusted proxy. Untrusted peers cannot spoof their IP, so the header is ignored by default. Trusted proxies are matched as exact IPs or CIDR ranges (e.g. "10.0.0.0/8").

Constructor & Destructor Documentation

◆ ClientIpResolver() [1/2]

lintel::ClientIpResolver::ClientIpResolver ( )
default

◆ ClientIpResolver() [2/2]

lintel::ClientIpResolver::ClientIpResolver ( std::vector< std::string >  trustedProxies)
explicit
Parameters
trustedProxiesIPs or CIDR ranges allowed to forward X-Forwarded-For

Member Function Documentation

◆ resolveClientIp()

std::string lintel::ClientIpResolver::resolveClientIp ( const std::string &  remoteAddress,
const std::string &  forwardedFor 
) const

Determine the client IP of a request.

Parameters
remoteAddressthe direct peer address (socket remote address)
forwardedForthe raw X-Forwarded-For header value (may be empty)
Returns
the client IP; falls back to the remote address unless a trusted proxy provided a valid, non-empty X-Forwarded-For entry

◆ setTrustedProxies()

void lintel::ClientIpResolver::setTrustedProxies ( std::vector< std::string >  trustedProxies)

Replace the list of trusted proxies (exact IPs or CIDR ranges).


The documentation for this class was generated from the following file: