예제 #1
0
function cloudflare_init()
{
    global $is_cf;
    $is_cf = isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? TRUE : FALSE;
    // only run this logic if the REMOTE_ADDR is populated, to avoid causing notices in CLI mode
    if (isset($_SERVER["REMOTE_ADDR"])) {
        if (strpos($_SERVER["REMOTE_ADDR"], ":") === FALSE) {
            $cf_ip_ranges = array("199.27.128.0/21", "173.245.48.0/20", "103.21.244.0/22", "103.22.200.0/22", "103.31.4.0/22", "141.101.64.0/18", "108.162.192.0/18", "190.93.240.0/20", "188.114.96.0/20", "197.234.240.0/22", "198.41.128.0/17", "162.158.0.0/15", "104.16.0.0/12", "172.64.0.0/13");
            // IPV4: Update the REMOTE_ADDR value if the current REMOTE_ADDR value is in the specified range.
            foreach ($cf_ip_ranges as $range) {
                if (ipv4_in_range($_SERVER["REMOTE_ADDR"], $range)) {
                    if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                        $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                    }
                    break;
                }
            }
        } else {
            $cf_ip_ranges = array("2400:cb00::/32", "2606:4700::/32", "2803:f800::/32", "2405:b500::/32", "2405:8100::/32");
            $ipv6 = get_ipv6_full($_SERVER["REMOTE_ADDR"]);
            foreach ($cf_ip_ranges as $range) {
                if (ipv6_in_range($ipv6, $range)) {
                    if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                        $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                    }
                    break;
                }
            }
        }
    }
    add_action('admin_menu', 'cloudflare_config_page');
}
예제 #2
0
function __rocket_set_real_ip_cloudflare()
{
    global $is_cf;
    $is_cf = isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? TRUE : FALSE;
    // only run this logic if the REMOTE_ADDR is populated, to avoid causing notices in CLI mode
    if (isset($_SERVER["REMOTE_ADDR"])) {
        if (strpos($_SERVER["REMOTE_ADDR"], ":") === FALSE) {
            $cf_ip_ranges = array("199.27.128.0/21", "173.245.48.0/20", "103.21.244.0/22", "103.22.200.0/22", "103.31.4.0/22", "141.101.64.0/18", "108.162.192.0/18", "190.93.240.0/20", "188.114.96.0/20", "197.234.240.0/22", "198.41.128.0/17", "162.158.0.0/15", "104.16.0.0/12");
            // IPV4: Update the REMOTE_ADDR value if the current REMOTE_ADDR value is in the specified range.
            foreach ($cf_ip_ranges as $range) {
                if (ipv4_in_range($_SERVER["REMOTE_ADDR"], $range)) {
                    if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                        $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                    }
                    break;
                }
            }
        } else {
            $cf_ip_ranges = array("2400:cb00::/32", "2606:4700::/32", "2803:f800::/32", "2405:b500::/32", "2405:8100::/32");
            $ipv6 = get_ipv6_full($_SERVER["REMOTE_ADDR"]);
            foreach ($cf_ip_ranges as $range) {
                if (ipv6_in_range($ipv6, $range)) {
                    if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                        $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                    }
                    break;
                }
            }
        }
    }
    // Let people know that the CF WP plugin is turned on.
    if (!headers_sent()) {
        header("X-CF-Powered-By: WP Rocket " . WP_ROCKET_VERSION);
    }
}
예제 #3
0
function fix_cf_ip()
{
    if (!isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        return;
    }
    if (strpos($_SERVER['REMOTE_ADDR'], ':') === FALSE) {
        $cf_ip_ranges = array("204.93.240.0/24", "204.93.177.0/24", "199.27.128.0/21", "173.245.48.0/20", "103.21.244.0/22", "103.22.200.0/22", "103.31.4.0/22", "141.101.64.0/18", "108.162.192.0/18", "190.93.240.0/20", "188.114.96.0/20", "197.234.240.0/22", "198.41.128.0/17", "162.158.0.0/15");
        foreach ($cf_ip_ranges as $range) {
            if (ipv4_in_range($_SERVER['REMOTE_ADDR'], $range)) {
                $_SERVER['REMOTE_ADDR_CF'] = $_SERVER['REMOTE_ADDR'];
                $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
                break;
            }
        }
    } else {
        $cf_ip_ranges = array("2400:cb00::/32", "2606:4700::/32", "2803:f800::/32", "2405:b500::/32", "2405:8100::/32");
        $ipv6 = get_ipv6_full($_SERVER['REMOTE_ADDR']);
        foreach ($cf_ip_ranges as $range) {
            if (ipv6_in_range($ipv6, $range)) {
                $_SERVER['REMOTE_ADDR_CF'] = $_SERVER['REMOTE_ADDR'];
                $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
                break;
            }
        }
    }
}
예제 #4
0
function cloudflare_init()
{
    global $is_cf;
    $is_cf = isset($_SERVER["HTTP_CF_CONNECTING_IP"]) ? TRUE : FALSE;
    // Only run this logic if the REMOTE_ADDR is populated, to avoid causing notices in CLI mode
    if (isset($_SERVER["REMOTE_ADDR"])) {
        if (FALSE === strpos($_SERVER["REMOTE_ADDR"], ":")) {
            // @FIXME daily download to a transient: https://www.cloudflare.com/ips-v4
            $cf_ip_ranges = array("199.27.128.0/21", "173.245.48.0/20", "103.21.244.0/22", "103.22.200.0/22", "103.31.4.0/22", "141.101.64.0/18", "108.162.192.0/18", "190.93.240.0/20", "188.114.96.0/20", "197.234.240.0/22", "198.41.128.0/17", "162.158.0.0/15", "104.16.0.0/12", "172.64.0.0/13");
            // IPV4: Update the REMOTE_ADDR value if the current REMOTE_ADDR value is in the specified range.
            foreach ($cf_ip_ranges as $range) {
                if (ipv4_in_range($_SERVER["REMOTE_ADDR"], $range)) {
                    if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                        $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                    }
                    break;
                }
            }
        } else {
            // @FIXME daily download to a transient: https://www.cloudflare.com/ips-v6
            $cf_ip_ranges = array("2400:cb00::/32", "2606:4700::/32", "2803:f800::/32", "2405:b500::/32", "2405:8100::/32");
            $ipv6 = get_ipv6_full($_SERVER["REMOTE_ADDR"]);
            foreach ($cf_ip_ranges as $range) {
                if (ipv6_in_range($ipv6, $range)) {
                    if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                        $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                    }
                    break;
                }
            }
        }
    }
    // Let people know that the CF WP plugin is turned on.
    if (!headers_sent()) {
        header("X-CF-Powered-By: WP " . CLOUDFLARE_VERSION);
    }
    add_action('admin_menu', 'cloudflare_config_page');
}
예제 #5
0
function cloudflare_init()
{
    global $cf_api_host, $cf_api_port, $is_cf;
    $cf_api_host = "ssl://www.cloudflare.com";
    $cf_api_port = 443;
    $is_cf = $_SERVER["HTTP_CF_CONNECTING_IP"] ? TRUE : FALSE;
    if (strpos($_SERVER["REMOTE_ADDR"], ":") === FALSE) {
        $cf_ip_ranges = array("204.93.240.0/24", "204.93.177.0/24", "199.27.128.0/21", "173.245.48.0/20", "103.22.200.0/22", "141.101.64.0/18", "108.162.192.0/18", "190.93.240.1/20");
        // IPV4: Update the REMOTE_ADDR value if the current REMOTE_ADDR value is in the specified range.
        foreach ($cf_ip_ranges as $range) {
            if (ipv4_in_range($_SERVER["REMOTE_ADDR"], $range)) {
                if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                    $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                }
                break;
            }
        }
    } else {
        $cf_ip_ranges = array("2400:cb00::/32", "2606:4700::/32", "2803:f800::/32");
        $ipv6 = get_ipv6_full($_SERVER["REMOTE_ADDR"]);
        foreach ($cf_ip_ranges as $range) {
            if (ipv6_in_range($ipv6, $range)) {
                if ($_SERVER["HTTP_CF_CONNECTING_IP"]) {
                    $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_CF_CONNECTING_IP"];
                }
                break;
            }
        }
    }
    // Let people know that the CF WP plugin is turned on.
    if (!headers_sent()) {
        header("X-CF-Powered-By: WP " . CLOUDFLARE_VERSION);
    }
    add_action('admin_menu', 'cloudflare_config_page');
    cloudflare_admin_warnings();
}
예제 #6
0
 private function checkSecondaryLists($ip_address)
 {
     if (!$this->config->get('enable_range_search')) {
         return false;
     }
     foreach ($this->dataRepository->firewall->all() as $range) {
         if (IpAddress::ipV4Valid($range['ip_address']) && ipv4_in_range($ip_address, $range['ip_address'])) {
             return $range;
         }
     }
     return false;
 }
예제 #7
0
파일: helpers.php 프로젝트: codixor/support
 function ipv4_in_range($ip, $range)
 {
     if (is_array($range)) {
         foreach ($range as $iprange) {
             if (ipv4_in_range($ip, $iprange)) {
                 return true;
             }
         }
         return false;
     }
     // Wildcarded range
     // 192.168.1.*
     if (!str_contains($range, '-') && str_contains($range, '*')) {
         $range = str_replace('*', '0', $range) . '-' . str_replace('*', '255', $range);
     }
     // Dashed range
     //   192.168.1.1-192.168.1.100
     //   0.0.0.0-255.255.255.255
     if (count($twoIps = explode('-', $range)) == 2) {
         $ip1 = ip2long($twoIps[0]);
         $ip2 = ip2long($twoIps[1]);
         return ip2long($ip) >= $ip1 && ip2long($ip) <= $ip2;
     }
     if (count($twoIps = explode('-', $range)) == 2) {
         $ip1 = ip2long($twoIps[0]);
         $ip2 = ip2long($twoIps[1]);
         return ip2long($ip) >= $ip1 && ip2long($ip) <= $ip2;
     }
     // Masked range or fixed IP
     //   192.168.17.1/16 or
     //   127.0.0.1/255.255.255.255 or
     //   10.0.0.1
     return ipv4_match_mask($ip, $range);
 }
예제 #8
0
 private function isTrackableIp()
 {
     return !ipv4_in_range($this->request->getClientIp(), $this->config->get('do_not_track_ips'));
 }
예제 #9
0
 public function ipV4InRange($ip, $range)
 {
     return ipv4_in_range($ip, $range);
 }