[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.189.171.57: ~ $
<?php

namespace WPMailSMTP;

/**
 * Class Geo to work with location, domain, IPs etc.
 *
 * @since 1.5.0
 */
class Geo {

	/**
	 * Get the current site hostname.
	 * In case of CLI we don't have SERVER_NAME, so use host name instead, may be not a domain name.
	 * Examples: example.com, localhost.
	 *
	 * @since 1.5.0
	 *
	 * @return string
	 */
	public static function get_site_domain() {

		return ! empty( $_SERVER['SERVER_NAME'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_NAME'] ) ) : wp_parse_url( get_home_url( get_current_blog_id() ), PHP_URL_HOST );
	}

	/**
	 * Get the domain IP address.
	 * Uses gethostbyname() which is quite slow, but this is done only one time.
	 *
	 * @since 1.5.0
	 *
	 * @param string $domain
	 *
	 * @return string
	 */
	public static function get_ip_by_domain( $domain ) {

		if ( $domain === 'localhost' ) {
			return '127.0.0.1';
		}

		return gethostbyname( $domain );
	}

	/**
	 * Get the location coordinates by IP address.
	 * We make a request to 3rd party services.
	 *
	 * @since 1.5.0
	 * @since 1.6.0 Added new geo API endpoint, provided by WPForms.
	 * @since 2.0.0 Updated the WPForms geo API endpoint to v3.
	 *
	 * @param string $ip The IP address.
	 *
	 * @return array Empty array for localhost.
	 */
	public static function get_location_by_ip( $ip ) {

		// Check for a non-local IP.
		if ( empty( $ip ) || in_array( $ip, [ '127.0.0.1', '::1' ], true ) ) {
			return [];
		}

		$request = wp_remote_get( 'https://geo.wpforms.com/v3/geolocate/json/' . $ip );

		if ( ! is_wp_error( $request ) ) {
			$request = json_decode( wp_remote_retrieve_body( $request ), true );
			if ( ! empty( $request['latitude'] ) && ! empty( $request['longitude'] ) ) {
				$data = [
					'latitude'  => sanitize_text_field( $request['latitude'] ),
					'longitude' => sanitize_text_field( $request['longitude'] ),
					'city'      => isset( $request['city'] ) ? sanitize_text_field( $request['city'] ) : '',
					'region'    => isset( $request['region_name'] ) ? sanitize_text_field( $request['region_name'] ) : '',
					'country'   => isset( $request['country_iso'] ) ? sanitize_text_field( $request['country_iso'] ) : '',
					'postal'    => isset( $request['zip_code'] ) ? sanitize_text_field( $request['zip_code'] ) : '',
				];

				return $data;
			}
		}

		$request = wp_remote_get( 'https://ipapi.co/' . $ip . '/json' );

		if ( ! is_wp_error( $request ) ) {

			$request = json_decode( wp_remote_retrieve_body( $request ), true );

			if ( ! empty( $request['latitude'] ) && ! empty( $request['longitude'] ) ) {

				$data = [
					'latitude'  => sanitize_text_field( $request['latitude'] ),
					'longitude' => sanitize_text_field( $request['longitude'] ),
					'city'      => isset( $request['city'] ) ? sanitize_text_field( $request['city'] ) : '',
					'region'    => isset( $request['region'] ) ? sanitize_text_field( $request['region'] ) : '',
					'country'   => isset( $request['country'] ) ? sanitize_text_field( $request['country'] ) : '',
					'postal'    => isset( $request['postal'] ) ? sanitize_text_field( $request['postal'] ) : '',
				];

				return $data;
			}
		}

		$request = wp_remote_get(
			'https://tools.keycdn.com/geo.json?host=' . $ip,
			[
				'user-agent' => 'keycdn-tools:' . get_home_url(),
			]
		);

		if ( ! is_wp_error( $request ) ) {

			$request = json_decode( wp_remote_retrieve_body( $request ), true );

			if ( ! empty( $request['data']['geo']['latitude'] ) && ! empty( $request['data']['geo']['longitude'] ) ) {

				$data = [
					'latitude'  => sanitize_text_field( $request['data']['geo']['latitude'] ),
					'longitude' => sanitize_text_field( $request['data']['geo']['longitude'] ),
					'city'      => isset( $request['data']['geo']['city'] ) ? sanitize_text_field( $request['data']['geo']['city'] ) : '',
					'region'    => isset( $request['data']['geo']['region_name'] ) ? sanitize_text_field( $request['data']['geo']['region_name'] ) : '',
					'country'   => isset( $request['data']['geo']['country_code'] ) ? sanitize_text_field( $request['data']['geo']['country_code'] ) : '',
					'postal'    => isset( $request['data']['geo']['postal_code'] ) ? sanitize_text_field( $request['data']['geo']['postal_code'] ) : '',
				];

				return $data;
			}
		}

		return [];
	}

	/**
	 * This routine calculates the distance between two points (given the latitude/longitude of those points).
	 * Definitions: South latitudes are negative, east longitudes are positive.
	 *
	 * @see   https://www.geodatasource.com/developers/php
	 *
	 * @since 1.5.0
	 *
	 * @param float  $lat1 Latitude of point 1 (in decimal degrees).
	 * @param float  $lon1 Longitude of point 1 (in decimal degrees).
	 * @param float  $lat2 Latitude of point 2 (in decimal degrees).
	 * @param float  $lon2 Longitude of point 2 (in decimal degrees).
	 * @param string $unit Supported values: M, K, N. Miles by default.
	 *
	 * @return float|int
	 */
	public static function get_distance_between( $lat1, $lon1, $lat2, $lon2, $unit = 'M' ) {

		if ( ( $lat1 === $lat2 ) && ( $lon1 === $lon2 ) ) {
			return 0;
		}

		$theta = $lon1 - $lon2;
		$dist  = sin( deg2rad( $lat1 ) ) * sin( deg2rad( $lat2 ) ) + cos( deg2rad( $lat1 ) ) * cos( deg2rad( $lat2 ) ) * cos( deg2rad( $theta ) );
		$dist  = acos( $dist );
		$dist  = rad2deg( $dist );
		$miles = $dist * 60 * 1.1515;
		$unit  = strtoupper( $unit );

		if ( $unit === 'K' ) {
			return ( $miles * 1.609344 );
		} elseif ( $unit === 'N' ) {
			return ( $miles * 0.8684 );
		}

		return $miles;
	}

	/**
	 * Get the user IP address.
	 *
	 * @since 3.11.0
	 *
	 * Code based on the:
	 *   - WordPress method \WP_Community_Events::get_unsafe_client_ip
	 *   - Cloudflare documentation https://support.cloudflare.com/hc/en-us/articles/206776727
	 *
	 * @return string
	 */
	public static function get_ip() {

		$ip = '127.0.0.1';

		$address_headers = [
			'HTTP_TRUE_CLIENT_IP',
			'HTTP_CF_CONNECTING_IP',
			'HTTP_X_REAL_IP',
			'HTTP_CLIENT_IP',
			'HTTP_X_FORWARDED_FOR',
			'HTTP_X_FORWARDED',
			'HTTP_X_CLUSTER_CLIENT_IP',
			'HTTP_FORWARDED_FOR',
			'HTTP_FORWARDED',
			'REMOTE_ADDR',
		];

		foreach ( $address_headers as $header ) {
			if ( empty( $_SERVER[ $header ] ) ) {
				continue;
			}

			/*
			 * HTTP_X_FORWARDED_FOR can contain a chain of comma-separated addresses, with or without spaces.
			 * The first address is the original client. It can't be trusted for authenticity,
			 * but we don't need to for this purpose.
			 */

			// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
			$address_chain = explode( ',', wp_unslash( $_SERVER[ $header ] ) );
			$ip            = filter_var( trim( $address_chain[0] ), FILTER_VALIDATE_IP );

			break;
		}

		/**
		 * Filter detected IP address.
		 *
		 * @since 3.11.0
		 *
		 * @param string $ip IP address.
		 */
		return filter_var( apply_filters( 'wp_mail_smtp_geo_get_ip', $ip ), FILTER_VALIDATE_IP );
	}
}

Filemanager

Name Type Size Permission Actions
Admin Folder 0755
Compatibility Folder 0755
Helpers Folder 0755
Providers Folder 0755
Queue Folder 0755
Reports Folder 0755
Tasks Folder 0755
UsageTracking Folder 0755
AbstractConnection.php File 1.09 KB 0644
Conflicts.php File 14.42 KB 0644
Connect.php File 9.11 KB 0644
Connection.php File 964 B 0644
ConnectionInterface.php File 1.01 KB 0644
ConnectionsManager.php File 765 B 0644
Core.php File 33.45 KB 0644
DBRepair.php File 6.29 KB 0644
Debug.php File 3.5 KB 0644
Geo.php File 6.76 KB 0644
MailCatcher.php File 1.63 KB 0644
MailCatcherInterface.php File 1.16 KB 0644
MailCatcherTrait.php File 13.14 KB 0644
MailCatcherV6.php File 1.47 KB 0644
Migration.php File 12.11 KB 0644
MigrationAbstract.php File 3.21 KB 0644
Migrations.php File 3.59 KB 0644
OptimizedEmailSending.php File 1.15 KB 0644
Options.php File 43.52 KB 0644
Processor.php File 14.06 KB 0644
SiteHealth.php File 12.63 KB 0644
Upgrade.php File 1.23 KB 0644
Uploads.php File 5.44 KB 0644
WP.php File 18.84 KB 0644
WPMailArgs.php File 4.44 KB 0644
WPMailInitiator.php File 4.38 KB 0644