roundcubemail/program/lib/Roundcube/rcube_utils.php
public static function remote_addr()
    {
        // Check if any of the headers are set first to improve performance
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) || !empty($_SERVER['HTTP_X_REAL_IP'])) {
            $proxy_whitelist = rcube::get_instance()->config->get('proxy_whitelist', array());
            if (in_array($_SERVER['REMOTE_ADDR'], $proxy_whitelist)) {
                if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                    foreach (array_reverse(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])) as $forwarded_ip) {
                        if (!in_array($forwarded_ip, $proxy_whitelist)) {
                            return $forwarded_ip;
                        }
                    }
                }

                if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
                    return $_SERVER['HTTP_X_REAL_IP'];
                }
            }
        }

        if (!empty($_SERVER['REMOTE_ADDR'])) {
            return $_SERVER['REMOTE_ADDR'];
        }

        return '';
    }
public static function remote_addr()
    {
        // Check if any of the headers are set first to improve performance
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) || !empty($_SERVER['HTTP_X_REAL_IP'])) {
            $proxy_whitelist = rcube::get_instance()->config->get('proxy_whitelist', array());
            if (in_array($_SERVER['REMOTE_ADDR'], $proxy_whitelist)) {
                if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                    foreach (array_reverse(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])) as $forwarded_ip) {
                        if (!in_array($forwarded_ip, $proxy_whitelist)) {
                            return $forwarded_ip;
                        }
                    }
                }

                if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
                    return $_SERVER['HTTP_X_REAL_IP'];
                }
            }
        }

        if (!empty($_SERVER['REMOTE_ADDR'])) {
            return $_SERVER['REMOTE_ADDR'];
        }

        return '';
    }
public static function remote_addr ( ) { // Check if any of the headers are set first to improve performance if ( ! empty ( $ _SERVER [ 'HTTP_X_FORWARDED_FOR' ] ) || ! empty ( $ _SERVER [ 'HTTP_X_REAL_IP' ] ) ) { $ proxy_whitelist = rcube :: get_instance ( ) -> config -> get ( 'proxy_whitelist' , array ( ) ) ; if ( in_array ( $ _SERVER [ 'REMOTE_ADDR' ] , $ proxy_whitelist ) ) { if ( ! empty ( $ _SERVER [ 'HTTP_X_FORWARDED_FOR' ] ) ) { foreach ( array_reverse ( explode ( ',' , $ _SERVER [ 'HTTP_X_FORWARDED_FOR' ] ) ) as $ forwarded_ip ) { if ( ! in_array ( $ forwarded_ip , $ proxy_whitelist ) ) { return $ forwarded_ip ; } } } if ( ! empty ( $ _SERVER [ 'HTTP_X_REAL_IP' ] ) ) { return $ _SERVER [ 'HTTP_X_REAL_IP' ] ; } } } if ( ! empty ( $ _SERVER [ 'REMOTE_ADDR' ] ) ) { return $ _SERVER [ 'REMOTE_ADDR' ] ; } return '' ; }
Returns the real remote IP address

@return string Remote IP address
Returns the real remote IP address