403Webshell
Server IP : 213.132.222.41  /  Your IP : 216.73.216.254
Web Server : Apache
System : Linux plesk4.nlhosting.net 6.1.0-0.deb11.50-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1~deb11u1 (2026-07-02) x86_64
User : thecovenant ( 10927)
PHP Version : 8.3.32
Disable Function : opcache_get_status
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/vhosts/thecovenant.nl/httpdocs/wp-content/plugins/wp-cloudflare-page-cache/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/vhosts/thecovenant.nl/httpdocs/wp-content/plugins/wp-cloudflare-page-cache/bootstrap.php
<?php
/**
 * Plugin bootstrap file.
 */

use SPC\Constants;
use SPC\Models\Asset_Rules;
use SPC\Services\Cloudflare_Integration;
use SPC\Services\Settings_Store;
use SPC\Utils\Helpers;
use SPC\Utils\Logger;

if ( ! class_exists( 'SW_CLOUDFLARE_PAGECACHE' ) ) {
	define( 'SPC_PATH', defined( 'SPC_PRO_PATH' ) ? SPC_PRO_PATH : SPC_FREE_PATH );

	define( 'SWCFPC_PLUGIN_PATH', plugin_dir_path( SPC_PATH ) );
	define( 'SWCFPC_PLUGIN_URL', plugin_dir_url( SPC_PATH ) );
	define( 'SWCFPC_BASEFILE', SPC_PATH );
	define( 'SWCFPC_PRODUCT_SLUG', basename( dirname( SPC_PATH ) ) );
	define( 'SWCFPC_PLUGIN_REVIEWS_URL', 'https://wordpress.org/support/plugin/wp-cloudflare-page-cache/reviews/' );
	define( 'SWCFPC_PLUGIN_FORUM_URL', 'https://wordpress.org/support/plugin/wp-cloudflare-page-cache/' );
	define( 'SWCFPC_AUTH_MODE_API_KEY', 0 );
	define( 'SWCFPC_AUTH_MODE_API_TOKEN', 1 );
	define( 'SWCFPC_VERSION', '5.3.2' );
	if ( ! defined( 'SPC_METRICS_DIR' ) ) {
		$home_url_parts = parse_url( home_url() );
		$home_url_host  = ! empty( $home_url_parts['host'] ) ? $home_url_parts['host'] : '';
		$home_url_path  = ( is_multisite() && ! is_subdomain_install() && isset( $home_url_parts['path'] ) ) ? trim( $home_url_parts['path'], '/' ) : '';
		$site_dir_slug  = '' === $home_url_path ? $home_url_host : $home_url_host . '_' . preg_replace( '/[^A-Za-z0-9_-]+/', '-', $home_url_path );

		define( 'SPC_METRICS_DIR', WP_CONTENT_DIR . "/wp-cloudflare-super-page-cache/{$site_dir_slug}/metrics" );
	}

	if ( ! defined( 'SWCFPC_PRELOADER_MAX_POST_NUMBER' ) ) {
		define( 'SWCFPC_PRELOADER_MAX_POST_NUMBER', 50 );
	}

	if ( ! defined( 'SWCFPC_CACHE_BUSTER' ) ) {
		define( 'SWCFPC_CACHE_BUSTER', 'swcfpc' );
	}

	if ( ! defined( 'SWCFPC_CURL_TIMEOUT' ) ) {
		define( 'SWCFPC_CURL_TIMEOUT', 10 );
	}

	if ( ! defined( 'SWCFPC_PURGE_CACHE_LOCK_SECONDS' ) ) {
		define( 'SWCFPC_PURGE_CACHE_LOCK_SECONDS', 10 );
	}

	if ( ! defined( 'SWCFPC_HOME_PAGE_SHOWS_POSTS' ) ) {
		define( 'SWCFPC_HOME_PAGE_SHOWS_POSTS', true );
	}

	if ( file_exists( SWCFPC_PLUGIN_PATH . 'vendor/autoload.php' ) ) {
		require_once SWCFPC_PLUGIN_PATH . 'vendor/autoload.php';
	}

	add_filter(
		'themesle_sdk_namespace_' . md5( SPC_PATH ),
		function ( $encoded_basefile ) {
			return 'spc';
		}
	);

	class SW_CLOUDFLARE_PAGECACHE {

		/**
		 * The plugin version.
		 */
		private $version = SWCFPC_VERSION;

		/**
		 * The core loader.
		 * @var \SPC\Loader|null $core_loader
		 */
		private $core_loader = null;

		/**
		 * The pro modules.
		 * @var \SPC_Pro\Loader $pro_loader
		 */
		private $pro_loader;

		/**
		 * The redirect option key.
		 */
		public const REDIRECT_KEY = 'swcfpc_dashboard_redirect';

		/**
		 * SW_CLOUDFLARE_PAGECACHE constructor.
		 */
		public function __construct() {
			register_deactivation_hook( SPC_PATH, [ $this, 'deactivate_plugin' ] );

			if ( ! file_exists( Helpers::get_plugin_content_dir() ) ) {
				Helpers::create_plugin_content_dir();
			}

			$this->update_plugin();
			$this->boot_services();
			$this->actions();
		}

		/**
		 * Load the textdomain.
		 */
		public function load_textdomain() {
			load_plugin_textdomain( 'wp-cloudflare-page-cache', false, basename( dirname( SPC_PATH ) ) . '/languages/' );
		}

		/**
		 * Boot the Loader + its modules. Idempotent.
		 */
		private function boot_services() {
			if ( $this->core_loader !== null ) {
				return;
			}

			include_once ABSPATH . 'wp-includes/pluggable.php';

			$this->core_loader = new SPC\Loader();

			$this->maybe_load_pro_modules();
			$this->core_loader->load_modules();
		}

		/**
		 * Run actions.
		 */
		private function actions() {
			add_action( 'admin_init', [ $this, 'maybe_deactivate_free' ] );
			add_filter( 'themeisle_sdk_products', [ $this, 'load_sdk' ] );
			add_action( 'plugins_loaded', [ $this, 'load_textdomain' ] );
			add_filter( SWCFPC_PRODUCT_SLUG . '_sdk_migrations_path', [ $this, 'register_migrations_path' ] );
			add_action( 'themeisle_sdk_update_' . SWCFPC_PRODUCT_SLUG, [ $this, 'on_plugin_upgrade' ] );
		}

		/**
		 * Filter callback that points the SDK migrator at our migrations directory.
		 *
		 * @return string
		 */
		public function register_migrations_path() {
			return SWCFPC_PLUGIN_PATH . 'migrations/';
		}

		/**
		 * Action callback fired by the SDK on a detected version change.
		 *
		 * Captures the previous version into a stable option so SDK migrations
		 * can read it from `should_run()`, and schedules the cache-rule sync /
		 * advanced-cache.php relink that has to run on every upgrade.
		 *
		 * @param string $previous_version Version before this upgrade.
		 *
		 * @return void
		 */
		public function on_plugin_upgrade( $previous_version = '' ) {
			update_option( 'swcfpc_previous_version', (string) $previous_version );

			add_action( 'shutdown', [ $this, 'run_post_upgrade_tasks' ] );
		}

		/**
		 * Tasks that run on every plugin upgrade.
		 *
		 * @return void
		 */
		public function run_post_upgrade_tasks() {
			Logger::log( 'upgrader::post_upgrade', 'Running post-upgrade tasks.' );

			$this->boot_services();

			$cloudflare = new Cloudflare_Integration();
			$cf_error   = '';

			$cloudflare->update_cache_rule_if_diff( $cf_error );

			if ( $cf_error ) {
				Logger::log( 'upgrader::post_upgrade', sprintf( 'Cache rule sync error: %s', $cf_error ), true );
			}

			if ( defined( 'SWCFPC_ADVANCED_CACHE' ) ) {
				$store          = Settings_Store::get_instance();
				$cache_enabled  = (int) $store->get( Constants::SETTING_CF_CACHE_ENABLED ) > 0;
				$fallback_cache = (int) $store->get( Constants::SETTING_ENABLE_FALLBACK_CACHE ) > 0;
				$curl_enabled   = (int) $store->get( Constants::SETTING_FALLBACK_CACHE_CURL ) > 0;
				$handler        = $this->core_loader->fallback_cache();

				if ( $cache_enabled && $fallback_cache && ! $curl_enabled ) {
					$handler->fallback_cache_advanced_cache_disable();
					$handler->fallback_cache_advanced_cache_enable();
				} else {
					// Stale drop-in exists but should not be active; remove it.
					$handler->fallback_cache_advanced_cache_disable();
				}
			}

			do_action( 'swcfpc_after_plugin_upgrader_run' );
		}

		/**
		 * Load the SDK.
		 *
		 * @param array $products
		 *
		 * @return array
		 */
		public function load_sdk( $products ) {
			$products[] = SWCFPC_BASEFILE;

			return $products;
		}

		/**
		 * Keep the legacy `swcfpc_version` option in sync with the running plugin version.
		 *
		 * The SDK migrator handles version-gated migrations on its own; this method
		 * exists to keep the option current for the few consumers that still read it
		 * (CLI `version` command, uninstall cleanup) and to handle the free→pro
		 * transition where the version doesn't actually change.
		 *
		 * @return void
		 */
		private function update_plugin() {
			$current_version = get_option( 'swcfpc_version', false );

			if ( get_option( 'cf_will_run_free_to_pro_migrations' ) === 'yes' ) {
				delete_option( 'cf_will_run_free_to_pro_migrations' );
				// Free→pro keeps the same plugin version, so the SDK update action
				// won't fire. Schedule the post-upgrade tasks ourselves.
				add_action( 'shutdown', [ $this, 'run_post_upgrade_tasks' ] );
			}

			if ( version_compare( $current_version, $this->version, '!=' ) ) {
				update_option( 'swcfpc_version', $this->version );
			}
		}

		/**
		 * Deactivate the plugin.
		 *
		 * @hooked register_deactivation_hook()
		 *
		 * @return void
		 */
		public function deactivate_plugin() {
			// Preserve shared settings during a Free → Pro upgrade, but always
			// remove the runtime cache. Pro may only be installed (not active yet),
			// and leaving the content directory in place would allow the drop-in to
			// keep serving cached pages after Free is deactivated.
			if ( Helpers::is_pro_installed() ) {
				Helpers::delete_plugin_content_dir();
				return;
			}

			$keep_settings = Settings_Store::get_instance()->get( Constants::SETTING_KEEP_ON_DEACTIVATION );

			if ( ! $keep_settings ) {
				Settings_Store::get_instance()->reset();
				Asset_Rules::remove_database_table();
			}

			Helpers::delete_plugin_content_dir();
		}

		/**
		 * If both free & pro are active, we attempt to deactivate the free version.
		 *
		 * @return void
		 */
		public function maybe_deactivate_free() {
			if ( defined( 'SPC_PRO_PATH' ) && defined( 'SPC_FREE_PATH' ) ) {
				require_once ABSPATH . 'wp-admin/includes/plugin.php';

				deactivate_plugins( SPC_FREE_PATH );

				add_action(
					'admin_notices',
					function () {
						printf(
							'<div class="notice notice-warning"><p><strong>%s</strong><br>%s</p></div>',
							sprintf(
								/* translators: %s: Name of deactivated plugin */
								__( '%s plugin deactivated.', 'wp-cloudflare-page-cache' ),
								'Super Page Cache for Cloudflare (Free)'
							),
							__( 'The Premium version of Super Page Cache for Cloudflare does not require the Free version.', 'wp-cloudflare-page-cache' )
						);
					}
				);

				update_option( 'cf_will_run_free_to_pro_migrations', 'yes' );
				do_action( 'swcfpc_after_free_deactivation' );
			}
		}

		/**
		 * Get the modules.
		 *
		 * @return array
		 */
		public function get_modules() {
			return $this->core_loader ? $this->core_loader->get_modules() : [];
		}

		/**
		 * Get the modules.
		 *
		 * Legacy function to preserve backward compatibility for old `advanced-cache.php` files.
		 *
		 * @return array
		 *
		 * @deprecated Use get_modules() instead.
		 */
		public function get_objects() {
			return $this->get_modules();
		}

		/**
		 * Get a single configuration value.
		 *
		 * Legacy method to preserve backward compatibility for old advanced-cache.php drop-ins.
		 *
		 * @param string $key
		 * @param mixed  $default_value
		 * @return mixed
		 *
		 * @deprecated Use Settings_Store::get_instance()->get() instead.
		 */
		public function get_single_config( string $key, $default_value = false ) {
			return Settings_Store::get_instance()->get( $key, $default_value );
		}

		/**
		 * Check if current user can purge cache.
		 *
		 * @return bool
		 */
		public function can_current_user_purge_cache() {
			return Helpers::can_current_user_purge_cache();
		}

		/**
		 * Maybe load the pro modules.
		 *
		 * @return void
		 */
		private function maybe_load_pro_modules() {
			if (
				! is_file( SWCFPC_PLUGIN_PATH . 'pro/Loader.php' ) ||
				! defined( 'SPC_PRO_PATH' ) ||
				! class_exists( 'SPC_Pro\\Loader' )
			) {
				return;
			}

			$this->pro_loader = new SPC_Pro\Loader();
			$this->pro_loader->init();
		}

		/**
		 * Get the core loader.
		 *
		 * @return SPC\Loader
		 */
		public function get_core_loader() {
			return $this->core_loader;
		}
		/**
		 * Get the plugin version.
		 *
		 * @return string
		 */
		public function get_plugin_version() {
			return $this->version;
		}
	}

	// Activate this plugin as last plugin
	add_action(
		'plugins_loaded',
		function () {
			global $sw_cloudflare_pagecache;

			if ( ! isset( $sw_cloudflare_pagecache ) || empty( $sw_cloudflare_pagecache ) ) {
				$sw_cloudflare_pagecache = new SW_CLOUDFLARE_PAGECACHE();
			}
		},
		PHP_INT_MAX
	);

	/**
	 * Register the activation hook.
	 *
	 * @return void
	 */
	register_activation_hook(
		SPC_PATH,
		function () {
			update_option( SW_CLOUDFLARE_PAGECACHE::REDIRECT_KEY, true );
		}
	);
}

Youez - 2016 - github.com/yon3zu
LinuXploit