X-Git-Url: https://git.p6c8.net/jirafeau_mojo42.git/blobdiff_plain/9dd7c6e4445ed2b0fedcbd018cc9e54868649a3d..d9647e1afea29401470efd68730d2562659be006:/lib/functions.php diff --git a/lib/functions.php b/lib/functions.php index 27e4fc3..77acae1 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -1108,3 +1108,29 @@ function jirafeau_challenge_upload_ip ($cfg, $ip) return false; } +/** + * Get the ip address of the client from REMOTE_ADDR + * or from HTTP_X_FORWARDED_FOR if behind a proxy + * @returns an the client ip address + */ +function get_ip_address($cfg) { + if (count ($cfg['proxy_ip']) == 0 || + empty ($_SERVER['HTTP_X_FORWARDED_FOR'])) + return $_SERVER['REMOTE_ADDR']; + + $iplist = explode (',', $_SERVER['HTTP_X_FORWARDED_FOR']); + if (count ($iplist) == 0) + return $_SERVER['REMOTE_ADDR']; + + foreach ($cfg['proxy_ip'] as $proxy_ip) + { + if ($_SERVER['REMOTE_ADDR'] != $proxy_ip) + continue; + + // Take the last IP (the one which has been set by our proxy). + $ip = end($iplist); + $ip = preg_replace ('/\s+/', '', $ip); + return $ip; + } + return $_SERVER['REMOTE_ADDR']; +}