GRAYBYTE WORDPRESS FILE MANAGER7171

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /home/giriqfky/nioscentre.in/wp-content/plugins/forminator/library/
Upload Files :
Current_dir [ Writeable ] Document_root [ Writeable ]

Command :


Current File : /home/giriqfky/nioscentre.in/wp-content/plugins/forminator/library//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 );
	}
}

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
abstracts
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
addon
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
calculator
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
external
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
field-autofill-providers
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
fields
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
gateways
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
helpers
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
lib
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
mixpanel
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
model
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
modules
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
protection
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
render
--
July 01 2025 09:31:58
giriqfky / giriqfky
0755
class-api.php
54.263 KB
March 03 2025 16:08:12
giriqfky / giriqfky
0644
class-autofill-loader.php
6.81 KB
September 02 2024 15:32:28
giriqfky / giriqfky
0644
class-captcha-verification.php
3.651 KB
April 14 2025 14:55:34
giriqfky / giriqfky
0644
class-core.php
23.631 KB
May 19 2025 19:14:58
giriqfky / giriqfky
0644
class-database-tables.php
5.178 KB
September 02 2024 15:32:28
giriqfky / giriqfky
0644
class-export-result.php
2.566 KB
September 02 2024 15:32:28
giriqfky / giriqfky
0644
class-export.php
60.804 KB
March 17 2025 17:29:02
giriqfky / giriqfky
0644
class-form-fields.php
4.995 KB
February 03 2025 17:11:02
giriqfky / giriqfky
0644
class-forminator-hub-connector.php
7.856 KB
March 17 2025 17:29:02
giriqfky / giriqfky
0644
class-geo.php
4.382 KB
September 02 2024 15:32:28
giriqfky / giriqfky
0644
class-integration-loader.php
19.328 KB
February 03 2025 17:11:02
giriqfky / giriqfky
0644
class-loader.php
2.536 KB
February 03 2025 17:11:02
giriqfky / giriqfky
0644
class-migration.php
28.507 KB
December 24 2024 20:31:58
giriqfky / giriqfky
0644
class-modules.php
1.98 KB
September 02 2024 15:32:28
giriqfky / giriqfky
0644
class-page-cache.php
8.049 KB
September 02 2024 15:32:28
giriqfky / giriqfky
0644
class-protection.php
1.034 KB
September 02 2024 15:32:28
giriqfky / giriqfky
0644
class-reports.php
7.193 KB
February 03 2025 17:11:02
giriqfky / giriqfky
0644
class-shortcode-generator.php
16.426 KB
November 25 2024 21:22:22
giriqfky / giriqfky
0644
class-template-api.php
7.535 KB
March 03 2025 16:08:12
giriqfky / giriqfky
0644
class-upgrade.php
1.499 KB
February 03 2025 17:11:02
giriqfky / giriqfky
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF