}
}
-/**
- * @todo FUCKING DOCUMENT THIS FUCKING FUNCTION
- */
-function wfGetLastIPfromXFF( $xff ) {
- if ( $xff ) {
- // Avoid annoyingly long xff hacks
- $xff = substr( $xff, 0, 255 );
- // Look for the last IP, assuming they are separated by commas or spaces
- $n = ( strrpos($xff, ',') ) ? strrpos($xff, ',') : strrpos($xff, ' ');
- if ( $n !== false ) {
- $last = trim( substr( $xff, $n + 1 ) );
- // Make sure it is an IP
- $m = preg_match('#^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $last);
- $n = preg_match('#^:(:[0-9A-Fa-f]{1,4}){1,7}|[0-9A-Fa-f]{1,4}(:{1,2}[0-9A-Fa-f]{1,4}|::$){1,7}$#', $last);
- if ( $m > 0 )
- $xff_ip = $last;
- else if ( $n > 0 )
- $xff_ip = $last;
- else
- $xff_ip = null;
- } else {
- $xff_ip = null;
- }
- } else {
- $xff_ip = null;
- }
- return $xff_ip;
-}
-
/**
* Returns the browser/OS data from the request header
* Note: headers are spoofable