Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/litespee.../src
File: cloud.cls.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Cloud service cls
[2] Fix | Delete
*
[3] Fix | Delete
* @package LiteSpeed
[4] Fix | Delete
* @since 3.0
[5] Fix | Delete
*/
[6] Fix | Delete
[7] Fix | Delete
namespace LiteSpeed;
[8] Fix | Delete
[9] Fix | Delete
defined( 'WPINC' ) || exit();
[10] Fix | Delete
[11] Fix | Delete
/**
[12] Fix | Delete
* Class Cloud
[13] Fix | Delete
*
[14] Fix | Delete
* Handles QUIC.cloud communication, node detection, activation, and related utilities.
[15] Fix | Delete
*/
[16] Fix | Delete
class Cloud extends Base {
[17] Fix | Delete
use Cloud_Auth;
[18] Fix | Delete
use Cloud_Request;
[19] Fix | Delete
use Cloud_Node;
[20] Fix | Delete
use Cloud_Misc;
[21] Fix | Delete
[22] Fix | Delete
const LOG_TAG = '❄️';
[23] Fix | Delete
[24] Fix | Delete
/**
[25] Fix | Delete
* Base API server URL.
[26] Fix | Delete
*
[27] Fix | Delete
* @var string
[28] Fix | Delete
*/
[29] Fix | Delete
private $_cloud_server = 'https://api.quic.cloud';
[30] Fix | Delete
[31] Fix | Delete
/**
[32] Fix | Delete
* Cloud IPs endpoint.
[33] Fix | Delete
*
[34] Fix | Delete
* @var string
[35] Fix | Delete
*/
[36] Fix | Delete
private $_cloud_ips = 'https://quic.cloud/ips';
[37] Fix | Delete
[38] Fix | Delete
/**
[39] Fix | Delete
* Cloud dashboard URL.
[40] Fix | Delete
*
[41] Fix | Delete
* @var string
[42] Fix | Delete
*/
[43] Fix | Delete
private $_cloud_server_dash = 'https://my.quic.cloud';
[44] Fix | Delete
[45] Fix | Delete
/**
[46] Fix | Delete
* Cloud WP API server URL.
[47] Fix | Delete
*
[48] Fix | Delete
* @var string
[49] Fix | Delete
*/
[50] Fix | Delete
protected $_cloud_server_wp = 'https://wpapi.quic.cloud';
[51] Fix | Delete
[52] Fix | Delete
const SVC_D_ACTIVATE = 'd/activate';
[53] Fix | Delete
const SVC_U_ACTIVATE = 'u/wp3/activate';
[54] Fix | Delete
const SVC_D_ENABLE_CDN = 'd/enable_cdn';
[55] Fix | Delete
const SVC_D_LINK = 'd/link';
[56] Fix | Delete
const SVC_D_API = 'd/api';
[57] Fix | Delete
const SVC_D_DASH = 'd/dash';
[58] Fix | Delete
const SVC_D_V3UPGRADE = 'd/v3upgrade';
[59] Fix | Delete
const SVC_U_LINK = 'u/wp3/link';
[60] Fix | Delete
const SVC_U_ENABLE_CDN = 'u/wp3/enablecdn';
[61] Fix | Delete
const SVC_D_STATUS_CDN_CLI = 'd/status/cdn_cli';
[62] Fix | Delete
const SVC_D_NODES = 'd/nodes';
[63] Fix | Delete
const SVC_D_SYNC_CONF = 'd/sync_conf';
[64] Fix | Delete
const SVC_D_USAGE = 'd/usage';
[65] Fix | Delete
const SVC_D_SETUP_TOKEN = 'd/get_token';
[66] Fix | Delete
const SVC_D_DEL_CDN_DNS = 'd/del_cdn_dns';
[67] Fix | Delete
const SVC_PAGE_OPTM = 'page_optm';
[68] Fix | Delete
const SVC_CCSS = 'ccss';
[69] Fix | Delete
const SVC_UCSS = 'ucss';
[70] Fix | Delete
const SVC_VPI = 'vpi';
[71] Fix | Delete
const SVC_LQIP = 'lqip';
[72] Fix | Delete
const SVC_QUEUE = 'queue';
[73] Fix | Delete
const SVC_IMG_OPTM = 'img_optm';
[74] Fix | Delete
const SVC_HEALTH = 'health';
[75] Fix | Delete
const SVC_CDN = 'cdn';
[76] Fix | Delete
const SVC_OPTIMAX = 'optimax';
[77] Fix | Delete
[78] Fix | Delete
const IMG_OPTM_DEFAULT_GROUP = 200;
[79] Fix | Delete
[80] Fix | Delete
const IMGOPTM_TAKEN = 'img_optm-taken';
[81] Fix | Delete
[82] Fix | Delete
const TTL_NODE = 3; // Days before node expired
[83] Fix | Delete
const EXPIRATION_REQ = 300; // Seconds of min interval between two unfinished requests
[84] Fix | Delete
const TTL_IPS = 3; // Days for node ip list cache
[85] Fix | Delete
[86] Fix | Delete
const API_REPORT = 'wp/report';
[87] Fix | Delete
const API_NEWS = 'news';
[88] Fix | Delete
const API_VER = 'ver_check';
[89] Fix | Delete
const API_BETA_TEST = 'beta_test';
[90] Fix | Delete
const API_REST_ECHO = 'tool/wp_rest_echo';
[91] Fix | Delete
const API_SERVER_KEY_SIGN = 'key_sign';
[92] Fix | Delete
[93] Fix | Delete
/**
[94] Fix | Delete
* Center services hosted at the central API server.
[95] Fix | Delete
*
[96] Fix | Delete
* @var string[]
[97] Fix | Delete
*/
[98] Fix | Delete
private static $center_svc_set = [
[99] Fix | Delete
self::SVC_D_ACTIVATE,
[100] Fix | Delete
self::SVC_U_ACTIVATE,
[101] Fix | Delete
self::SVC_D_ENABLE_CDN,
[102] Fix | Delete
self::SVC_D_LINK,
[103] Fix | Delete
self::SVC_D_NODES,
[104] Fix | Delete
self::SVC_D_SYNC_CONF,
[105] Fix | Delete
self::SVC_D_USAGE,
[106] Fix | Delete
self::SVC_D_API,
[107] Fix | Delete
self::SVC_D_V3UPGRADE,
[108] Fix | Delete
self::SVC_D_DASH,
[109] Fix | Delete
self::SVC_D_STATUS_CDN_CLI,
[110] Fix | Delete
// self::API_NEWS,
[111] Fix | Delete
self::API_REPORT,
[112] Fix | Delete
// self::API_VER,
[113] Fix | Delete
// self::API_BETA_TEST,
[114] Fix | Delete
self::SVC_D_SETUP_TOKEN,
[115] Fix | Delete
self::SVC_D_DEL_CDN_DNS,
[116] Fix | Delete
];
[117] Fix | Delete
[118] Fix | Delete
/**
[119] Fix | Delete
* Services hosted on the WP API server.
[120] Fix | Delete
*
[121] Fix | Delete
* @var string[]
[122] Fix | Delete
*/
[123] Fix | Delete
private static $wp_svc_set = [ self::API_NEWS, self::API_VER, self::API_BETA_TEST, self::API_REST_ECHO ];
[124] Fix | Delete
[125] Fix | Delete
/**
[126] Fix | Delete
* Public services that do not require an API key.
[127] Fix | Delete
*
[128] Fix | Delete
* @var string[]
[129] Fix | Delete
*/
[130] Fix | Delete
private static $_pub_svc_set = [ self::API_NEWS, self::API_REPORT, self::API_VER, self::API_BETA_TEST, self::API_REST_ECHO, self::SVC_D_V3UPGRADE, self::SVC_D_DASH ];
[131] Fix | Delete
[132] Fix | Delete
/**
[133] Fix | Delete
* Services that should go through the queue.
[134] Fix | Delete
*
[135] Fix | Delete
* @var string[]
[136] Fix | Delete
*/
[137] Fix | Delete
private static $_queue_svc_set = [ self::SVC_CCSS, self::SVC_UCSS, self::SVC_VPI ];
[138] Fix | Delete
[139] Fix | Delete
/**
[140] Fix | Delete
* Services that need load check.
[141] Fix | Delete
*
[142] Fix | Delete
* @var string[]
[143] Fix | Delete
*/
[144] Fix | Delete
public static $services_load_check = [
[145] Fix | Delete
// self::SVC_CCSS,
[146] Fix | Delete
// self::SVC_UCSS,
[147] Fix | Delete
// self::SVC_VPI,
[148] Fix | Delete
self::SVC_LQIP,
[149] Fix | Delete
self::SVC_HEALTH,
[150] Fix | Delete
];
[151] Fix | Delete
[152] Fix | Delete
/**
[153] Fix | Delete
* All supported services.
[154] Fix | Delete
*
[155] Fix | Delete
* @var string[]
[156] Fix | Delete
*/
[157] Fix | Delete
public static $services = [
[158] Fix | Delete
self::SVC_IMG_OPTM,
[159] Fix | Delete
self::SVC_PAGE_OPTM,
[160] Fix | Delete
self::SVC_CCSS,
[161] Fix | Delete
self::SVC_UCSS,
[162] Fix | Delete
self::SVC_VPI,
[163] Fix | Delete
self::SVC_LQIP,
[164] Fix | Delete
self::SVC_CDN,
[165] Fix | Delete
self::SVC_HEALTH,
[166] Fix | Delete
self::SVC_OPTIMAX,
[167] Fix | Delete
// self::SVC_QUEUE,
[168] Fix | Delete
];
[169] Fix | Delete
[170] Fix | Delete
const TYPE_CLEAR_PROMO = 'clear_promo';
[171] Fix | Delete
const TYPE_REDETECT_CLOUD = 'redetect_cloud';
[172] Fix | Delete
const TYPE_CLEAR_CLOUD = 'clear_cloud';
[173] Fix | Delete
const TYPE_ACTIVATE = 'activate';
[174] Fix | Delete
const TYPE_LINK = 'link';
[175] Fix | Delete
const TYPE_ENABLE_CDN = 'enablecdn';
[176] Fix | Delete
const TYPE_API = 'api';
[177] Fix | Delete
const TYPE_SYNC_USAGE = 'sync_usage';
[178] Fix | Delete
const TYPE_RESET = 'reset';
[179] Fix | Delete
const TYPE_SYNC_STATUS = 'sync_status';
[180] Fix | Delete
[181] Fix | Delete
/**
[182] Fix | Delete
* Summary data for cloud interactions.
[183] Fix | Delete
*
[184] Fix | Delete
* @var array<string,mixed>
[185] Fix | Delete
*/
[186] Fix | Delete
protected $_summary;
[187] Fix | Delete
[188] Fix | Delete
/**
[189] Fix | Delete
* Init
[190] Fix | Delete
*
[191] Fix | Delete
* @since 3.0
[192] Fix | Delete
*/
[193] Fix | Delete
public function __construct() {
[194] Fix | Delete
$allowed_hosts = [ 'wpapi.quic.cloud' ];
[195] Fix | Delete
if ( defined( 'LITESPEED_DEV' ) && constant( 'LITESPEED_DEV' ) ) {
[196] Fix | Delete
$allowed_hosts[] = 'my.preview.quic.cloud';
[197] Fix | Delete
$allowed_hosts[] = 'api.preview.quic.cloud';
[198] Fix | Delete
$this->_cloud_server = 'https://api.preview.quic.cloud';
[199] Fix | Delete
$this->_cloud_ips = 'https://api.preview.quic.cloud/ips';
[200] Fix | Delete
$this->_cloud_server_dash = 'https://my.preview.quic.cloud';
[201] Fix | Delete
$this->_cloud_server_wp = 'https://wpapi.quic.cloud';
[202] Fix | Delete
} else {
[203] Fix | Delete
$allowed_hosts[] = 'my.quic.cloud';
[204] Fix | Delete
$allowed_hosts[] = 'api.quic.cloud';
[205] Fix | Delete
}
[206] Fix | Delete
add_filter( 'allowed_redirect_hosts', function( $hosts ) use ( $allowed_hosts ) {
[207] Fix | Delete
if ( ! is_array ( $hosts ) ) {
[208] Fix | Delete
$hosts = [];
[209] Fix | Delete
}
[210] Fix | Delete
[211] Fix | Delete
return array_merge( $hosts, $allowed_hosts );
[212] Fix | Delete
} );
[213] Fix | Delete
$this->_summary = self::get_summary();
[214] Fix | Delete
}
[215] Fix | Delete
[216] Fix | Delete
/**
[217] Fix | Delete
* Return succeeded response
[218] Fix | Delete
*
[219] Fix | Delete
* @since 3.0
[220] Fix | Delete
*
[221] Fix | Delete
* @param array $data Additional data.
[222] Fix | Delete
* @return array
[223] Fix | Delete
*/
[224] Fix | Delete
public static function ok( $data = [] ) {
[225] Fix | Delete
$data['_res'] = 'ok';
[226] Fix | Delete
return $data;
[227] Fix | Delete
}
[228] Fix | Delete
[229] Fix | Delete
/**
[230] Fix | Delete
* Return error
[231] Fix | Delete
*
[232] Fix | Delete
* @since 3.0
[233] Fix | Delete
*
[234] Fix | Delete
* @param string $code Error code.
[235] Fix | Delete
* @return array
[236] Fix | Delete
*/
[237] Fix | Delete
public static function err( $code ) {
[238] Fix | Delete
self::debug( '❌ Error response code: ' . $code );
[239] Fix | Delete
return [
[240] Fix | Delete
'_res' => 'err',
[241] Fix | Delete
'_msg' => $code,
[242] Fix | Delete
];
[243] Fix | Delete
}
[244] Fix | Delete
[245] Fix | Delete
/**
[246] Fix | Delete
* Handle all request actions from main cls
[247] Fix | Delete
*
[248] Fix | Delete
* @since 3.0
[249] Fix | Delete
* @access public
[250] Fix | Delete
*/
[251] Fix | Delete
public function handler() {
[252] Fix | Delete
$type = Router::verify_type();
[253] Fix | Delete
[254] Fix | Delete
switch ( $type ) {
[255] Fix | Delete
case self::TYPE_CLEAR_CLOUD:
[256] Fix | Delete
$this->clear_cloud();
[257] Fix | Delete
break;
[258] Fix | Delete
[259] Fix | Delete
case self::TYPE_REDETECT_CLOUD:
[260] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
[261] Fix | Delete
$svc = ! empty( $_GET['svc'] ) ? sanitize_text_field( wp_unslash( $_GET['svc'] ) ) : '';
[262] Fix | Delete
if ( $svc ) {
[263] Fix | Delete
$this->detect_cloud( $svc, true );
[264] Fix | Delete
}
[265] Fix | Delete
break;
[266] Fix | Delete
[267] Fix | Delete
case self::TYPE_CLEAR_PROMO:
[268] Fix | Delete
$this->_clear_promo();
[269] Fix | Delete
break;
[270] Fix | Delete
[271] Fix | Delete
case self::TYPE_RESET:
[272] Fix | Delete
$this->reset_qc();
[273] Fix | Delete
break;
[274] Fix | Delete
[275] Fix | Delete
case self::TYPE_ACTIVATE:
[276] Fix | Delete
$this->init_qc();
[277] Fix | Delete
break;
[278] Fix | Delete
[279] Fix | Delete
case self::TYPE_LINK:
[280] Fix | Delete
$this->link_qc();
[281] Fix | Delete
break;
[282] Fix | Delete
[283] Fix | Delete
case self::TYPE_ENABLE_CDN:
[284] Fix | Delete
$this->enable_cdn();
[285] Fix | Delete
break;
[286] Fix | Delete
[287] Fix | Delete
case self::TYPE_API:
[288] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
[289] Fix | Delete
$action2 = ! empty( $_GET['action2'] ) ? sanitize_text_field( wp_unslash( $_GET['action2'] ) ) : '';
[290] Fix | Delete
if ( $action2 ) {
[291] Fix | Delete
$this->api_link_call( $action2 );
[292] Fix | Delete
}
[293] Fix | Delete
break;
[294] Fix | Delete
[295] Fix | Delete
case self::TYPE_SYNC_STATUS:
[296] Fix | Delete
$this->load_qc_status_for_dash( 'cdn_dash', true );
[297] Fix | Delete
$msg = __( 'Sync QUIC.cloud status successfully.', 'litespeed-cache' );
[298] Fix | Delete
Admin_Display::success( $msg );
[299] Fix | Delete
break;
[300] Fix | Delete
[301] Fix | Delete
case self::TYPE_SYNC_USAGE:
[302] Fix | Delete
$this->sync_usage();
[303] Fix | Delete
[304] Fix | Delete
$msg = __( 'Sync credit allowance with Cloud Server successfully.', 'litespeed-cache' );
[305] Fix | Delete
Admin_Display::success( $msg );
[306] Fix | Delete
break;
[307] Fix | Delete
[308] Fix | Delete
default:
[309] Fix | Delete
break;
[310] Fix | Delete
}
[311] Fix | Delete
[312] Fix | Delete
Admin::redirect();
[313] Fix | Delete
}
[314] Fix | Delete
}
[315] Fix | Delete
[316] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function