AnonSec Shell
Server IP : 104.21.14.48  /  Your IP : 3.148.109.216   [ Reverse IP ]
Web Server : Apache
System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64
User : root ( 0)
PHP Version : 8.0.30.2
Disable Function : NONE
Domains : 0 Domains
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/wp-content/plugins/defender-security/src/component/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/wp-content/plugins/defender-security/src/component/class-product-analytics.php
<?php
/**
 * Handles product analytics for the WP Defender plugin, specifically using Mixpanel for tracking.
 *
 * @package WP_Defender\Component
 */

namespace WP_Defender\Component;

use WPMUDEV_Analytics;
use Calotes\Base\Component;
use WP_Defender\Traits\Device;
use WP_Defender\Behavior\WPMUDEV;
use WP_Defender\Component\Security_Tweaks\Servers\Server;

/**
 * Handles product analytics for the WP Defender plugin, specifically using Mixpanel for tracking.
 *
 * @since 4.2.0
 */
class Product_Analytics extends Component {

	use Device;

	private const PROJECT_TOKEN = '5d545622e3a040aca63f2089b0e6cae7';

	/**
	 * Holds the Mixpanel analytics instance.
	 *
	 * @var null|WPMUDEV_Analytics
	 */
	private $mixpanel = null;
	/**
	 * Holds the MySQL version.
	 *
	 * @var string|null
	 */
	private $mysql_version;

	/**
	 * Constructor that initializes the Mixpanel instance and sets up the default properties.
	 */
	public function __construct() {
		if ( is_null( $this->mixpanel ) ) {
			// Create new mixpanel instance.
			$this->mixpanel = $this->prepare_mixpanel_instance();
		}
		$this->mixpanel->identify( $this->get_unique_id() );
		$this->mixpanel->registerAll( $this->get_super_properties() );
	}

	/**
	 * Get configured mixpanel instance.
	 *
	 * @return WPMUDEV_Analytics
	 */
	public function get_mixpanel() {
		return $this->mixpanel;
	}

	/**
	 * Handle mixpanel error.
	 *
	 * @param  string $code  Error code.
	 * @param  string $data  Error data.
	 *
	 * @return void
	 */
	private function handle_error( $code, $data ) {
		$this->log( $code . ':' . $data );
	}

	/**
	 * Prepare Mixpanel instance.
	 *
	 * @return WPMUDEV_Analytics
	 */
	private function prepare_mixpanel_instance() {
		if ( ! class_exists( 'WPMUDEV_Analytics' ) ) {
			require_once defender_path( 'extra/wpmudev-analytics/autoload.php' );
		}
		$extra_options  = array(
			'consumers' => array(
				'file'   => 'ConsumerStrategies_FileConsumer',
				'curl'   => 'ConsumerStrategies_CurlConsumer',
				'socket' => 'ConsumerStrategies_SocketConsumer',
			),
			'consumer'  => 'socket',
		);
		$this->mixpanel = new WPMUDEV_Analytics( 'defender', 'Defender', 55, self::PROJECT_TOKEN, $extra_options );

		return $this->mixpanel;
	}

	/**
	 * Get super properties for all events.
	 *
	 * @return array
	 */
	private function get_super_properties(): array {
		global $wp_version;

		return array(
			'active_theme'       => get_stylesheet(),
			'locale'             => get_locale(),
			'mysql_version'      => $this->get_mysql_version(),
			'php_version'        => PHP_VERSION,
			'plugin'             => 'Defender',
			'plugin_type'        => ( new WPMUDEV() )->is_pro() ? 'pro' : 'free',
			'plugin_version'     => DEFENDER_VERSION,
			'server_type'        => Server::get_current_server(),
			'wp_type'            => is_multisite() ? 'multisite' : 'single',
			'wp_version'         => $wp_version,
			'memory_limit'       => $this->convert_to_megabytes( $this->get_memory_limit() ),
			'max_execution_time' => $this->get_max_execution_time(),
			'device'             => $this->get_device(),
			'user_agent'         => defender_get_user_agent(),
		);
	}

	/**
	 * Get unique identity for current site.
	 *
	 * @return string
	 */
	private function get_unique_id(): string {
		$url = str_replace( array( 'http://', 'https://', 'www.' ), '', home_url() );

		return untrailingslashit( $url );
	}

	/**
	 * Retrieves the PHP memory limit in bytes and converts it to an integer.
	 *
	 * @return int The memory limit in bytes.
	 */
	private function get_memory_limit(): int {
		if ( function_exists( 'ini_get' ) ) {
			$memory_limit = ini_get( 'memory_limit' );
		} else {
			// Sensible default.
			$memory_limit = '128M';
		}

		if ( ! $memory_limit || - 1 === $memory_limit ) {
			// Unlimited, set to 32GB.
			$memory_limit = '32000M';
		}

		return (int) $memory_limit * 1024 * 1024;
	}

	/**
	 * Converts a size in bytes to megabytes.
	 *
	 * @param  int $size_in_bytes  The size in bytes.
	 *
	 * @return float The size in megabytes.
	 */
	private function convert_to_megabytes( $size_in_bytes ) {
		if ( empty( $size_in_bytes ) ) {
			return 0;
		}
		$unit_mb = pow( 1024, 2 );

		return round( $size_in_bytes / $unit_mb, 2 );
	}

	/**
	 * Retrieves the maximum execution time for PHP scripts from the ini settings.
	 *
	 * @return int The maximum execution time in seconds.
	 */
	private function get_max_execution_time() {
		return (int) ini_get( 'max_execution_time' );
	}

	/**
	 * Retrieves the MySQL version from the global $wpdb object.
	 *
	 * @return string The MySQL version.
	 */
	private function get_mysql_version() {
		if ( ! $this->mysql_version ) {
			global $wpdb;
			$this->mysql_version = $wpdb->db_version();
		}

		return $this->mysql_version;
	}
}

Anon7 - 2022
AnonSec Team