HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.34
System: Linux atalantini.com 3.10.0-1127.13.1.el7.x86_64 #1 SMP Tue Jun 23 15:46:38 UTC 2020 x86_64
User: root (0)
PHP: 7.2.34
Disabled: NONE
Upload Files
File: //opt/plugins/defender-security/wp-defender.php
<?php
/**
 * Plugin Name: Defender
 * Plugin URI: https://premium.wpmudev.org/project/wp-defender/
 * Version:     2.3.2
 * Description: Get regular security scans, vulnerability reports, safety recommendations and customized hardening for your site in just a few clicks. Defender is the analyst and enforcer who never sleeps.
 * Author:      WPMU DEV
 * Author URI:  http://premium.wpmudev.org/
 * License:     GNU General Public License (Version 2 - GPLv2)
 * Text Domain: defender-security
 * Network: true
 */
class WP_Defender_Free {

	/**
	 * Store the WP_Defender object for singleton implement
	 *
	 * @var WP_Defender_Free
	 */
	private static $_instance;
	/**
	 * @var string
	 */
	private $plugin_path;

	/**
	 * @return string
	 */
	public function getPluginPath() {
		return $this->plugin_path;
	}

	/**
	 * @return string
	 */
	public function getPluginUrl() {
		return $this->plugin_url;
	}

	/**
	 * @var string
	 */
	private $plugin_url;
	/**
	 * @var string
	 */
	public $domain = 'defender-security';

	/**
	 * @var string
	 */
	public $version = "2.3.2";

	/**
	 * @var string
	 */
	public $isFree = false;

	/**
	 * @var bool
	 */
	public $is_membership = false;
	/**
	 * @var array
	 */
	public $global = array();
	/**
	 * @var string
	 */
	public $plugin_slug = 'defender-security/wp-defender.php';

	public $db_version = "2.3.2";

	public $whiteLabel = 0;

	/**
	 * @var int
	 */
	public $hideHeroImage = 0;
	/**
	 * @var null
	 */
	public $heroImage = null;
	/**
	 * @var null
	 */
	public $footerText = null;
	/**
	 * @var bool
	 */
	public $hideDocLinks = false;
	/**
	 * @var bool
	 */
	public $changeFooter = false;

	/**
	 * @return WP_Defender_Free
	 */
	public static function instance() {
		if ( ! is_object( self::$_instance ) ) {
			self::$_instance = new WP_Defender_Free();
		}

		return self::$_instance;
	}

	/**
	 * WP_Defender constructor.
	 */
	private function __construct() {
		$this->initVars();
		$this->includeVendors();
		$this->autoload();
		add_action( 'admin_enqueue_scripts', array( &$this, 'register_styles' ) );
		add_action( 'plugins_loaded', array( &$this, 'loadTextDomain' ) );
		include_once $this->getPluginPath() . 'main-activator.php';
		$this->global['bootstrap'] = new WD_Main_Activator( $this );
		//for the new SUI
		add_filter( 'admin_body_class', array( $this, 'adminBodyClasses' ), 11 );
		do_action(
			'wpmudev-recommended-plugins-register-notice',
			plugin_basename( __FILE__ ), // Plugin basename
			'Defender', // Plugin Name
			array(
				'toplevel_page_wp-defender',
				'toplevel_page_wp-defender-network'
			),
			array( 'after', '.sui-wrap .sui-header' )
		);

//		add_filter(
//			'wpmudev-recommended-plugins-notice-display-seconds-after-registered',
//			function ( $time_trigger ) {
//				// 1 minute trigger
//				$time_trigger = 30;
//
//				return $time_trigger;
//			}
//		);
	}

	public function loadTextDomain() {
		load_plugin_textdomain( $this->domain, false, basename( __DIR__ ) . '/languages' );
	}

	/**
	 * Init values
	 */
	private function initVars() {
		$this->plugin_path = plugin_dir_path( __FILE__ );
		$this->plugin_url  = plugin_dir_url( __FILE__ );
	}

	/**
	 * Including vendors
	 */
	private function includeVendors() {
		$phpVersion = phpversion();
		if ( version_compare( $phpVersion, '5.3', '>=' ) ) {
			if ( function_exists( 'Avada' ) ) {
				define( 'WD_NO_OBJECT_CACHE', 1 );
			}
			include_once $this->plugin_path . 'vendor' . DIRECTORY_SEPARATOR . 'hammer' . DIRECTORY_SEPARATOR . 'bootstrap.php';
		}
		//load gettext helper
		include_once $this->plugin_path . 'vendor' . DIRECTORY_SEPARATOR . 'gettext' . DIRECTORY_SEPARATOR . 'gettext' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'autoloader.php';
		include_once $this->plugin_path . 'vendor' . DIRECTORY_SEPARATOR . 'gettext' . DIRECTORY_SEPARATOR . 'languages' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR . 'autoloader.php';

		require_once __DIR__ . '/recommended-plugins-notice/notice.php';
	}

	/**
	 * Register the autoload
	 */
	private function autoload() {
		spl_autoload_register( array( &$this, '_autoload' ) );
	}

	public function adminBodyClasses( $classes ) {
		$pages = [
			'wp-defender',
			'wdf-hardener',
			'wdf-scan',
			'wdf-logging',
			'wdf-ip-lockout',
			'wdf-advanced-tools',
			'wdf-setting',
			'wdf-debug',
			'wdf-2fa',
			'wdf-waf',
			'wdf-tutorial'
		];
		$page  = isset( $_GET['page'] ) ? $_GET['page'] : null;
		if ( ! in_array( $page, $pages, true ) ) {
			return $classes;
		}
		$classes .= ' sui-2-9-6 ';

		return $classes;
	}

	/**
	 * Register globally css, js will be load on each module
	 */
	public function register_styles() {
		wp_enqueue_style( 'defender-menu', $this->getPluginUrl() . 'assets/css/defender-icon.css' );

		$css_files = array(
			'defender' => $this->plugin_url . 'assets/css/styles.css'
		);

		foreach ( $css_files as $slug => $file ) {
			wp_register_style( $slug, $file, array(), $this->version );
		}

		$is_min   = ! defined( 'SCRIPT_DEBUG' ) ? '.min' : '';
		$js_files = array(
			'wpmudev-sui' => $this->plugin_url . 'assets/js/shared-ui.js',
			'defender'    => $this->plugin_url . 'assets/js/scripts.js',
			'def-vue'     => $this->plugin_url . 'assets/js/vendor/vue.runtime' . $is_min . '.js',
		);

		foreach ( $js_files as $slug => $file ) {
			wp_register_script( $slug, $file, array( 'jquery', 'clipboard' ), $this->version, true );
		}


		wp_localize_script( 'def-vue', 'defender', array(
			'whitelabel'   => \WP_Defender\Behavior\WPMUDEV::instance()->whiteLabelStatus(),
			'misc'         => [
				'high_contrast' => \WP_Defender\Behavior\WPMUDEV::instance()->maybeHighContrast(),
			],
			'site_url'     => network_site_url(),
			'admin_url'    => network_admin_url(),
			'defender_url' => $this->getPluginUrl(),
			'is_free'      => $this->isFree,
			'days_of_week' => \WP_Defender\Behavior\Utils::instance()->getDaysOfWeek(),
			'times_of_day' => \WP_Defender\Behavior\Utils::instance()->getTimes()
		) );
		do_action( 'defender_enqueue_assets' );
	}

	/**
	 * @param $class
	 */
	public function _autoload( $class ) {
		$base_path = __DIR__ . DIRECTORY_SEPARATOR;
		$pools     = explode( '\\', $class );

		if ( $pools[0] != 'WP_Defender' ) {
			return;
		}
		if ( $pools[1] == 'Vendor' ) {
			unset( $pools[0] );
		} else {
			$pools[0] = 'App';
		}

		//build the path
		$path = implode( DIRECTORY_SEPARATOR, $pools );
		$path = $base_path . strtolower( str_replace( '_', '-', $path ) ) . '.php';
		if ( file_exists( $path ) ) {
			include_once $path;
		}
	}
}

if ( ! function_exists( 'wp_defender' ) ) {
	if ( ! function_exists( 'is_plugin_active' ) ) {
		include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
	}

	if ( is_plugin_active( 'wp-defender/wp-defender.php' ) ) {
		return;
	}
	/**
	 * Shorthand to get the instance
	 * @return WP_Defender_Free
	 */
	function wp_defender() {
		return WP_Defender_Free::instance();
	}

	//init
	wp_defender();

	function wp_defender_deactivate() {
		//we disable any cron running
		wp_clear_scheduled_hook( 'processScanCron' );
		wp_clear_scheduled_hook( 'lockoutReportCron' );
		wp_clear_scheduled_hook( 'auditReportCron' );
		wp_clear_scheduled_hook( 'cleanUpOldLog' );
		wp_clear_scheduled_hook( 'scanReportCron' );
		wp_clear_scheduled_hook( 'tweaksSendNotification' );
	}

	function wp_defender_activate() {
		$phpVersion = phpversion();
		if ( version_compare( $phpVersion, '5.3', '>=' ) ) {
			wp_defender()->global['bootstrap']->activationHook();
		}

		$hs            = \WP_Defender\Module\Hardener\Model\Settings::instance();
		$hs->last_seen = time();
		$hs->save();
	}

	register_deactivation_hook( __FILE__, 'wp_defender_deactivate' );
	register_activation_hook( __FILE__, 'wp_defender_activate' );
}