/var/www/html/wp-content/plugins/woocommerce/vendor/automattic/jetpack-status/src/class-visitor.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
 * Status and information regarding the site visitor.
 *
 * @package automattic/jetpack-status
 */

namespace Automattic\Jetpack\Status;

/**
 * Visitor class.
 */
class Visitor {

    
/**
     * Gets current user IP address.
     *
     * @param  bool $check_all_headers Check all headers? Default is `false`.
     *
     * @return string                  Current user IP address.
     */
    
public function get_ip$check_all_headers false ) {
        if ( 
$check_all_headers ) {
            foreach ( array(
                
'HTTP_CF_CONNECTING_IP',
                
'HTTP_CLIENT_IP',
                
'HTTP_X_FORWARDED_FOR',
                
'HTTP_X_FORWARDED',
                
'HTTP_X_CLUSTER_CLIENT_IP',
                
'HTTP_FORWARDED_FOR',
                
'HTTP_FORWARDED',
                
'HTTP_VIA',
            ) as 
$key ) {
                if ( ! empty( 
$_SERVER$key ] ) ) {
                    
// @todo Some of these might actually be lists of IPs (e.g. HTTP_X_FORWARDED_FOR) or something else entirely (HTTP_VIA).
                    
return filter_varwp_unslash$_SERVER$key ] ) );
                }
            }
        }

        return ! empty( 
$_SERVER['REMOTE_ADDR'] ) ? filter_varwp_unslash$_SERVER['REMOTE_ADDR'] ) ) : '';
    }

    
/**
     * Simple gate check for a11n feature testing purposes using AT_PROXIED_REQUEST constant.
     * IMPORTANT: Only use it for internal feature test purposes, not authorization.
     *
     * The goal of this function is to help us gate features by using a similar function name
     * we find on simple sites: is_automattician().
     *
     * @return bool True if the current request is PROXIED, false otherwise.
     */
    
public function is_automattician_feature_flags_only() {
        return ( 
defined'AT_PROXIED_REQUEST' ) && AT_PROXIED_REQUEST );
    }
}