Edit File by line
/home/zeestwma/ajeebong.../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
[18] Fix | Delete
const LOG_TAG = '❄️';
[19] Fix | Delete
[20] Fix | Delete
/**
[21] Fix | Delete
* Base API server URL.
[22] Fix | Delete
*
[23] Fix | Delete
* @var string
[24] Fix | Delete
*/
[25] Fix | Delete
private $_cloud_server = 'https://api.quic.cloud';
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
* Cloud IPs endpoint.
[29] Fix | Delete
*
[30] Fix | Delete
* @var string
[31] Fix | Delete
*/
[32] Fix | Delete
private $_cloud_ips = 'https://quic.cloud/ips';
[33] Fix | Delete
[34] Fix | Delete
/**
[35] Fix | Delete
* Cloud dashboard URL.
[36] Fix | Delete
*
[37] Fix | Delete
* @var string
[38] Fix | Delete
*/
[39] Fix | Delete
private $_cloud_server_dash = 'https://my.quic.cloud';
[40] Fix | Delete
[41] Fix | Delete
/**
[42] Fix | Delete
* Cloud WP API server URL.
[43] Fix | Delete
*
[44] Fix | Delete
* @var string
[45] Fix | Delete
*/
[46] Fix | Delete
protected $_cloud_server_wp = 'https://wpapi.quic.cloud';
[47] Fix | Delete
[48] Fix | Delete
const SVC_D_ACTIVATE = 'd/activate';
[49] Fix | Delete
const SVC_U_ACTIVATE = 'u/wp3/activate';
[50] Fix | Delete
const SVC_D_ENABLE_CDN = 'd/enable_cdn';
[51] Fix | Delete
const SVC_D_LINK = 'd/link';
[52] Fix | Delete
const SVC_D_API = 'd/api';
[53] Fix | Delete
const SVC_D_DASH = 'd/dash';
[54] Fix | Delete
const SVC_D_V3UPGRADE = 'd/v3upgrade';
[55] Fix | Delete
const SVC_U_LINK = 'u/wp3/link';
[56] Fix | Delete
const SVC_U_ENABLE_CDN = 'u/wp3/enablecdn';
[57] Fix | Delete
const SVC_D_STATUS_CDN_CLI = 'd/status/cdn_cli';
[58] Fix | Delete
const SVC_D_NODES = 'd/nodes';
[59] Fix | Delete
const SVC_D_SYNC_CONF = 'd/sync_conf';
[60] Fix | Delete
const SVC_D_USAGE = 'd/usage';
[61] Fix | Delete
const SVC_D_SETUP_TOKEN = 'd/get_token';
[62] Fix | Delete
const SVC_D_DEL_CDN_DNS = 'd/del_cdn_dns';
[63] Fix | Delete
const SVC_PAGE_OPTM = 'page_optm';
[64] Fix | Delete
const SVC_CCSS = 'ccss';
[65] Fix | Delete
const SVC_UCSS = 'ucss';
[66] Fix | Delete
const SVC_VPI = 'vpi';
[67] Fix | Delete
const SVC_LQIP = 'lqip';
[68] Fix | Delete
const SVC_QUEUE = 'queue';
[69] Fix | Delete
const SVC_IMG_OPTM = 'img_optm';
[70] Fix | Delete
const SVC_HEALTH = 'health';
[71] Fix | Delete
const SVC_CDN = 'cdn';
[72] Fix | Delete
[73] Fix | Delete
const IMG_OPTM_DEFAULT_GROUP = 200;
[74] Fix | Delete
[75] Fix | Delete
const IMGOPTM_TAKEN = 'img_optm-taken';
[76] Fix | Delete
[77] Fix | Delete
const TTL_NODE = 3; // Days before node expired
[78] Fix | Delete
const EXPIRATION_REQ = 300; // Seconds of min interval between two unfinished requests
[79] Fix | Delete
const TTL_IPS = 3; // Days for node ip list cache
[80] Fix | Delete
[81] Fix | Delete
const API_REPORT = 'wp/report';
[82] Fix | Delete
const API_NEWS = 'news';
[83] Fix | Delete
const API_VER = 'ver_check';
[84] Fix | Delete
const API_BETA_TEST = 'beta_test';
[85] Fix | Delete
const API_REST_ECHO = 'tool/wp_rest_echo';
[86] Fix | Delete
const API_SERVER_KEY_SIGN = 'key_sign';
[87] Fix | Delete
[88] Fix | Delete
/**
[89] Fix | Delete
* Center services hosted at the central API server.
[90] Fix | Delete
*
[91] Fix | Delete
* @var string[]
[92] Fix | Delete
*/
[93] Fix | Delete
private static $center_svc_set = [
[94] Fix | Delete
self::SVC_D_ACTIVATE,
[95] Fix | Delete
self::SVC_U_ACTIVATE,
[96] Fix | Delete
self::SVC_D_ENABLE_CDN,
[97] Fix | Delete
self::SVC_D_LINK,
[98] Fix | Delete
self::SVC_D_NODES,
[99] Fix | Delete
self::SVC_D_SYNC_CONF,
[100] Fix | Delete
self::SVC_D_USAGE,
[101] Fix | Delete
self::SVC_D_API,
[102] Fix | Delete
self::SVC_D_V3UPGRADE,
[103] Fix | Delete
self::SVC_D_DASH,
[104] Fix | Delete
self::SVC_D_STATUS_CDN_CLI,
[105] Fix | Delete
// self::API_NEWS,
[106] Fix | Delete
self::API_REPORT,
[107] Fix | Delete
// self::API_VER,
[108] Fix | Delete
// self::API_BETA_TEST,
[109] Fix | Delete
self::SVC_D_SETUP_TOKEN,
[110] Fix | Delete
self::SVC_D_DEL_CDN_DNS,
[111] Fix | Delete
];
[112] Fix | Delete
[113] Fix | Delete
/**
[114] Fix | Delete
* Services hosted on the WP API server.
[115] Fix | Delete
*
[116] Fix | Delete
* @var string[]
[117] Fix | Delete
*/
[118] Fix | Delete
private static $wp_svc_set = [ self::API_NEWS, self::API_VER, self::API_BETA_TEST, self::API_REST_ECHO ];
[119] Fix | Delete
[120] Fix | Delete
/**
[121] Fix | Delete
* Public services that do not require an API key.
[122] Fix | Delete
*
[123] Fix | Delete
* @var string[]
[124] Fix | Delete
*/
[125] 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 ];
[126] Fix | Delete
[127] Fix | Delete
/**
[128] Fix | Delete
* Services that should go through the queue.
[129] Fix | Delete
*
[130] Fix | Delete
* @var string[]
[131] Fix | Delete
*/
[132] Fix | Delete
private static $_queue_svc_set = [ self::SVC_CCSS, self::SVC_UCSS, self::SVC_VPI ];
[133] Fix | Delete
[134] Fix | Delete
/**
[135] Fix | Delete
* Services that need load check.
[136] Fix | Delete
*
[137] Fix | Delete
* @var string[]
[138] Fix | Delete
*/
[139] Fix | Delete
public static $services_load_check = [
[140] Fix | Delete
// self::SVC_CCSS,
[141] Fix | Delete
// self::SVC_UCSS,
[142] Fix | Delete
// self::SVC_VPI,
[143] Fix | Delete
self::SVC_LQIP,
[144] Fix | Delete
self::SVC_HEALTH,
[145] Fix | Delete
];
[146] Fix | Delete
[147] Fix | Delete
/**
[148] Fix | Delete
* All supported services.
[149] Fix | Delete
*
[150] Fix | Delete
* @var string[]
[151] Fix | Delete
*/
[152] Fix | Delete
public static $services = [
[153] Fix | Delete
self::SVC_IMG_OPTM,
[154] Fix | Delete
self::SVC_PAGE_OPTM,
[155] Fix | Delete
self::SVC_CCSS,
[156] Fix | Delete
self::SVC_UCSS,
[157] Fix | Delete
self::SVC_VPI,
[158] Fix | Delete
self::SVC_LQIP,
[159] Fix | Delete
self::SVC_CDN,
[160] Fix | Delete
self::SVC_HEALTH,
[161] Fix | Delete
// self::SVC_QUEUE,
[162] Fix | Delete
];
[163] Fix | Delete
[164] Fix | Delete
const TYPE_CLEAR_PROMO = 'clear_promo';
[165] Fix | Delete
const TYPE_REDETECT_CLOUD = 'redetect_cloud';
[166] Fix | Delete
const TYPE_CLEAR_CLOUD = 'clear_cloud';
[167] Fix | Delete
const TYPE_ACTIVATE = 'activate';
[168] Fix | Delete
const TYPE_LINK = 'link';
[169] Fix | Delete
const TYPE_ENABLE_CDN = 'enablecdn';
[170] Fix | Delete
const TYPE_API = 'api';
[171] Fix | Delete
const TYPE_SYNC_USAGE = 'sync_usage';
[172] Fix | Delete
const TYPE_RESET = 'reset';
[173] Fix | Delete
const TYPE_SYNC_STATUS = 'sync_status';
[174] Fix | Delete
[175] Fix | Delete
/**
[176] Fix | Delete
* Summary data for cloud interactions.
[177] Fix | Delete
*
[178] Fix | Delete
* @var array<string,mixed>
[179] Fix | Delete
*/
[180] Fix | Delete
protected $_summary;
[181] Fix | Delete
[182] Fix | Delete
/**
[183] Fix | Delete
* Init
[184] Fix | Delete
*
[185] Fix | Delete
* @since 3.0
[186] Fix | Delete
*/
[187] Fix | Delete
public function __construct() {
[188] Fix | Delete
$allowed_hosts = [ 'wpapi.quic.cloud' ];
[189] Fix | Delete
if ( defined( 'LITESPEED_DEV' ) && constant( 'LITESPEED_DEV' ) ) {
[190] Fix | Delete
$allowed_hosts[] = 'my.preview.quic.cloud';
[191] Fix | Delete
$allowed_hosts[] = 'api.preview.quic.cloud';
[192] Fix | Delete
$this->_cloud_server = 'https://api.preview.quic.cloud';
[193] Fix | Delete
$this->_cloud_ips = 'https://api.preview.quic.cloud/ips';
[194] Fix | Delete
$this->_cloud_server_dash = 'https://my.preview.quic.cloud';
[195] Fix | Delete
$this->_cloud_server_wp = 'https://wpapi.quic.cloud';
[196] Fix | Delete
} else {
[197] Fix | Delete
$allowed_hosts[] = 'my.quic.cloud';
[198] Fix | Delete
$allowed_hosts[] = 'api.quic.cloud';
[199] Fix | Delete
}
[200] Fix | Delete
add_filter( 'allowed_redirect_hosts', function( $hosts ) use ( $allowed_hosts ) {
[201] Fix | Delete
if ( ! is_array ( $hosts ) ) {
[202] Fix | Delete
$hosts = [];
[203] Fix | Delete
}
[204] Fix | Delete
[205] Fix | Delete
return array_merge( $hosts, $allowed_hosts );
[206] Fix | Delete
} );
[207] Fix | Delete
$this->_summary = self::get_summary();
[208] Fix | Delete
}
[209] Fix | Delete
[210] Fix | Delete
/**
[211] Fix | Delete
* Init QC setup preparation
[212] Fix | Delete
*
[213] Fix | Delete
* @since 7.0
[214] Fix | Delete
*/
[215] Fix | Delete
public function init_qc_prepare() {
[216] Fix | Delete
if ( empty( $this->_summary['sk_b64'] ) ) {
[217] Fix | Delete
$keypair = sodium_crypto_sign_keypair();
[218] Fix | Delete
$pk = base64_encode( sodium_crypto_sign_publickey( $keypair ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
[219] Fix | Delete
$sk = base64_encode( sodium_crypto_sign_secretkey( $keypair ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
[220] Fix | Delete
$this->_summary['pk_b64'] = $pk;
[221] Fix | Delete
$this->_summary['sk_b64'] = $sk;
[222] Fix | Delete
$this->save_summary();
[223] Fix | Delete
// ATM `qc_activated` = null
[224] Fix | Delete
return true;
[225] Fix | Delete
}
[226] Fix | Delete
[227] Fix | Delete
return false;
[228] Fix | Delete
}
[229] Fix | Delete
[230] Fix | Delete
/**
[231] Fix | Delete
* Init QC setup
[232] Fix | Delete
*
[233] Fix | Delete
* @since 7.0
[234] Fix | Delete
*/
[235] Fix | Delete
public function init_qc() {
[236] Fix | Delete
$this->init_qc_prepare();
[237] Fix | Delete
[238] Fix | Delete
$ref = $this->_get_ref_url();
[239] Fix | Delete
[240] Fix | Delete
// WPAPI REST echo dryrun
[241] Fix | Delete
$echobox = self::post( self::API_REST_ECHO, false, 60 );
[242] Fix | Delete
if ( false === $echobox ) {
[243] Fix | Delete
self::debugErr( 'REST Echo Failed!' );
[244] Fix | Delete
$msg = __( "QUIC.cloud's access to your WP REST API seems to be blocked.", 'litespeed-cache' );
[245] Fix | Delete
Admin_Display::error( $msg );
[246] Fix | Delete
wp_safe_redirect( $ref );
[247] Fix | Delete
exit;
[248] Fix | Delete
}
[249] Fix | Delete
[250] Fix | Delete
self::debug( 'echo succeeded' );
[251] Fix | Delete
[252] Fix | Delete
// Load separate thread echoed data from storage
[253] Fix | Delete
if ( empty( $echobox['wpapi_ts'] ) || empty( $echobox['wpapi_signature_b64'] ) ) {
[254] Fix | Delete
Admin_Display::error( __( 'Failed to get echo data from WPAPI', 'litespeed-cache' ) );
[255] Fix | Delete
wp_safe_redirect( $ref );
[256] Fix | Delete
exit;
[257] Fix | Delete
}
[258] Fix | Delete
[259] Fix | Delete
$data = [
[260] Fix | Delete
'wp_pk_b64' => $this->_summary['pk_b64'],
[261] Fix | Delete
'wpapi_ts' => $echobox['wpapi_ts'],
[262] Fix | Delete
'wpapi_signature_b64' => $echobox['wpapi_signature_b64'],
[263] Fix | Delete
];
[264] Fix | Delete
$server_ip = $this->conf( self::O_SERVER_IP );
[265] Fix | Delete
if ( $server_ip ) {
[266] Fix | Delete
$data['server_ip'] = $server_ip;
[267] Fix | Delete
}
[268] Fix | Delete
[269] Fix | Delete
// Activation redirect
[270] Fix | Delete
$param = [
[271] Fix | Delete
'site_url' => site_url(),
[272] Fix | Delete
'ver' => Core::VER,
[273] Fix | Delete
'data' => $data,
[274] Fix | Delete
'ref' => $ref,
[275] Fix | Delete
];
[276] Fix | Delete
wp_safe_redirect( $this->_cloud_server_dash . '/' . self::SVC_U_ACTIVATE . '?data=' . rawurlencode( Utility::arr2str( $param ) ) );
[277] Fix | Delete
exit;
[278] Fix | Delete
}
[279] Fix | Delete
[280] Fix | Delete
/**
[281] Fix | Delete
* Decide the ref
[282] Fix | Delete
*
[283] Fix | Delete
* @param string|false $ref Ref slug.
[284] Fix | Delete
* @return string
[285] Fix | Delete
*/
[286] Fix | Delete
private function _get_ref_url( $ref = false ) {
[287] Fix | Delete
$link = 'admin.php?page=litespeed';
[288] Fix | Delete
if ( 'cdn' === $ref ) {
[289] Fix | Delete
$link = 'admin.php?page=litespeed-cdn';
[290] Fix | Delete
}
[291] Fix | Delete
if ( 'online' === $ref ) {
[292] Fix | Delete
$link = 'admin.php?page=litespeed-general';
[293] Fix | Delete
}
[294] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
[295] Fix | Delete
$ref_get = ! empty( $_GET['ref'] ) ? sanitize_text_field( wp_unslash( $_GET['ref'] ) ) : '';
[296] Fix | Delete
if ( $ref_get && 'cdn' === $ref_get ) {
[297] Fix | Delete
$link = 'admin.php?page=litespeed-cdn';
[298] Fix | Delete
}
[299] Fix | Delete
if ( $ref_get && 'online' === $ref_get ) {
[300] Fix | Delete
$link = 'admin.php?page=litespeed-general';
[301] Fix | Delete
}
[302] Fix | Delete
return get_admin_url( null, $link );
[303] Fix | Delete
}
[304] Fix | Delete
[305] Fix | Delete
/**
[306] Fix | Delete
* Init QC setup (CLI)
[307] Fix | Delete
*
[308] Fix | Delete
* @since 7.0
[309] Fix | Delete
*/
[310] Fix | Delete
public function init_qc_cli() {
[311] Fix | Delete
$this->init_qc_prepare();
[312] Fix | Delete
[313] Fix | Delete
$server_ip = $this->conf( self::O_SERVER_IP );
[314] Fix | Delete
if ( ! $server_ip ) {
[315] Fix | Delete
self::debugErr( 'Server IP needs to be set first!' );
[316] Fix | Delete
$msg = sprintf(
[317] Fix | Delete
__( 'You need to set the %1$s first. Please use the command %2$s to set.', 'litespeed-cache' ),
[318] Fix | Delete
'`' . __( 'Server IP', 'litespeed-cache' ) . '`',
[319] Fix | Delete
'`wp litespeed-option set server_ip __your_ip_value__`'
[320] Fix | Delete
);
[321] Fix | Delete
Admin_Display::error( $msg );
[322] Fix | Delete
return;
[323] Fix | Delete
}
[324] Fix | Delete
[325] Fix | Delete
// WPAPI REST echo dryrun
[326] Fix | Delete
$echobox = self::post( self::API_REST_ECHO, false, 60 );
[327] Fix | Delete
if ( false === $echobox ) {
[328] Fix | Delete
self::debugErr( 'REST Echo Failed!' );
[329] Fix | Delete
$msg = __( "QUIC.cloud's access to your WP REST API seems to be blocked.", 'litespeed-cache' );
[330] Fix | Delete
Admin_Display::error( $msg );
[331] Fix | Delete
return;
[332] Fix | Delete
}
[333] Fix | Delete
[334] Fix | Delete
self::debug( 'echo succeeded' );
[335] Fix | Delete
[336] Fix | Delete
// Load separate thread echoed data from storage
[337] Fix | Delete
if ( empty( $echobox['wpapi_ts'] ) || empty( $echobox['wpapi_signature_b64'] ) ) {
[338] Fix | Delete
self::debug( 'Resp: ', $echobox );
[339] Fix | Delete
Admin_Display::error( __( 'Failed to get echo data from WPAPI', 'litespeed-cache' ) );
[340] Fix | Delete
return;
[341] Fix | Delete
}
[342] Fix | Delete
[343] Fix | Delete
$data = [
[344] Fix | Delete
'wp_pk_b64' => $this->_summary['pk_b64'],
[345] Fix | Delete
'wpapi_ts' => $echobox['wpapi_ts'],
[346] Fix | Delete
'wpapi_signature_b64' => $echobox['wpapi_signature_b64'],
[347] Fix | Delete
'server_ip' => $server_ip,
[348] Fix | Delete
];
[349] Fix | Delete
[350] Fix | Delete
$res = $this->post( self::SVC_D_ACTIVATE, $data );
[351] Fix | Delete
return $res;
[352] Fix | Delete
}
[353] Fix | Delete
[354] Fix | Delete
/**
[355] Fix | Delete
* Init QC CDN setup (CLI)
[356] Fix | Delete
*
[357] Fix | Delete
* @since 7.0
[358] Fix | Delete
*
[359] Fix | Delete
* @param string $method Method.
[360] Fix | Delete
* @param string|bool $cert Cert path.
[361] Fix | Delete
* @param string|bool $key Key path.
[362] Fix | Delete
* @param string|bool $cf_token Cloudflare token.
[363] Fix | Delete
*/
[364] Fix | Delete
public function init_qc_cdn_cli( $method, $cert = false, $key = false, $cf_token = false ) {
[365] Fix | Delete
if ( ! $this->activated() ) {
[366] Fix | Delete
Admin_Display::error( __( 'You need to activate QC first.', 'litespeed-cache' ) );
[367] Fix | Delete
return;
[368] Fix | Delete
}
[369] Fix | Delete
[370] Fix | Delete
$server_ip = $this->conf( self::O_SERVER_IP );
[371] Fix | Delete
if ( ! $server_ip ) {
[372] Fix | Delete
self::debugErr( 'Server IP needs to be set first!' );
[373] Fix | Delete
$msg = sprintf(
[374] Fix | Delete
__( 'You need to set the %1$s first. Please use the command %2$s to set.', 'litespeed-cache' ),
[375] Fix | Delete
'`' . __( 'Server IP', 'litespeed-cache' ) . '`',
[376] Fix | Delete
'`wp litespeed-option set server_ip __your_ip_value__`'
[377] Fix | Delete
);
[378] Fix | Delete
Admin_Display::error( $msg );
[379] Fix | Delete
return;
[380] Fix | Delete
}
[381] Fix | Delete
[382] Fix | Delete
if ( $cert ) {
[383] Fix | Delete
if ( ! file_exists( $cert ) || ! file_exists( $key ) ) {
[384] Fix | Delete
Admin_Display::error( __( 'Cert or key file does not exist.', 'litespeed-cache' ) );
[385] Fix | Delete
return;
[386] Fix | Delete
}
[387] Fix | Delete
}
[388] Fix | Delete
[389] Fix | Delete
$data = [
[390] Fix | Delete
'method' => $method,
[391] Fix | Delete
'server_ip' => $server_ip,
[392] Fix | Delete
];
[393] Fix | Delete
if ( $cert ) {
[394] Fix | Delete
$data['cert'] = File::read( $cert );
[395] Fix | Delete
$data['key'] = File::read( $key );
[396] Fix | Delete
}
[397] Fix | Delete
if ( $cf_token ) {
[398] Fix | Delete
$data['cf_token'] = $cf_token;
[399] Fix | Delete
}
[400] Fix | Delete
[401] Fix | Delete
$res = $this->post( self::SVC_D_ENABLE_CDN, $data );
[402] Fix | Delete
return $res;
[403] Fix | Delete
}
[404] Fix | Delete
[405] Fix | Delete
/**
[406] Fix | Delete
* Link to QC setup
[407] Fix | Delete
*
[408] Fix | Delete
* @since 7.0
[409] Fix | Delete
*/
[410] Fix | Delete
public function link_qc() {
[411] Fix | Delete
if ( ! $this->activated() ) {
[412] Fix | Delete
Admin_Display::error( __( 'You need to activate QC first.', 'litespeed-cache' ) );
[413] Fix | Delete
return;
[414] Fix | Delete
}
[415] Fix | Delete
[416] Fix | Delete
$data = [
[417] Fix | Delete
'wp_ts' => time(),
[418] Fix | Delete
];
[419] Fix | Delete
$data['wp_signature_b64'] = $this->_sign_b64( $data['wp_ts'] );
[420] Fix | Delete
[421] Fix | Delete
// Activation redirect
[422] Fix | Delete
$param = [
[423] Fix | Delete
'site_url' => site_url(),
[424] Fix | Delete
'ver' => Core::VER,
[425] Fix | Delete
'data' => $data,
[426] Fix | Delete
'ref' => $this->_get_ref_url(),
[427] Fix | Delete
];
[428] Fix | Delete
wp_safe_redirect( $this->_cloud_server_dash . '/' . self::SVC_U_LINK . '?data=' . rawurlencode( Utility::arr2str( $param ) ) );
[429] Fix | Delete
exit;
[430] Fix | Delete
}
[431] Fix | Delete
[432] Fix | Delete
/**
[433] Fix | Delete
* Show QC Account CDN status
[434] Fix | Delete
*
[435] Fix | Delete
* @since 7.0
[436] Fix | Delete
*/
[437] Fix | Delete
public function cdn_status_cli() {
[438] Fix | Delete
if ( ! $this->activated() ) {
[439] Fix | Delete
Admin_Display::error( __( 'You need to activate QC first.', 'litespeed-cache' ) );
[440] Fix | Delete
return;
[441] Fix | Delete
}
[442] Fix | Delete
[443] Fix | Delete
$data = [];
[444] Fix | Delete
$res = $this->post( self::SVC_D_STATUS_CDN_CLI, $data );
[445] Fix | Delete
return $res;
[446] Fix | Delete
}
[447] Fix | Delete
[448] Fix | Delete
/**
[449] Fix | Delete
* Link to QC Account for CLI
[450] Fix | Delete
*
[451] Fix | Delete
* @since 7.0
[452] Fix | Delete
*
[453] Fix | Delete
* @param string $email Account email.
[454] Fix | Delete
* @param string $key API key.
[455] Fix | Delete
*/
[456] Fix | Delete
public function link_qc_cli( $email, $key ) {
[457] Fix | Delete
if ( ! $this->activated() ) {
[458] Fix | Delete
Admin_Display::error( __( 'You need to activate QC first.', 'litespeed-cache' ) );
[459] Fix | Delete
return;
[460] Fix | Delete
}
[461] Fix | Delete
[462] Fix | Delete
$data = [
[463] Fix | Delete
'qc_acct_email' => $email,
[464] Fix | Delete
'qc_acct_apikey'=> $key,
[465] Fix | Delete
];
[466] Fix | Delete
$res = $this->post( self::SVC_D_LINK, $data );
[467] Fix | Delete
return $res;
[468] Fix | Delete
}
[469] Fix | Delete
[470] Fix | Delete
/**
[471] Fix | Delete
* API link parsed call to QC
[472] Fix | Delete
*
[473] Fix | Delete
* @since 7.0
[474] Fix | Delete
*
[475] Fix | Delete
* @param string $action2 Action slug.
[476] Fix | Delete
*/
[477] Fix | Delete
public function api_link_call( $action2 ) {
[478] Fix | Delete
if ( ! $this->activated() ) {
[479] Fix | Delete
Admin_Display::error( __( 'You need to activate QC first.', 'litespeed-cache' ) );
[480] Fix | Delete
return;
[481] Fix | Delete
}
[482] Fix | Delete
[483] Fix | Delete
$data = [
[484] Fix | Delete
'action2' => $action2,
[485] Fix | Delete
];
[486] Fix | Delete
$res = $this->post( self::SVC_D_API, $data );
[487] Fix | Delete
self::debug( 'API link call result: ', $res );
[488] Fix | Delete
}
[489] Fix | Delete
[490] Fix | Delete
/**
[491] Fix | Delete
* Enable QC CDN
[492] Fix | Delete
*
[493] Fix | Delete
* @since 7.0
[494] Fix | Delete
*/
[495] Fix | Delete
public function enable_cdn() {
[496] Fix | Delete
if ( ! $this->activated() ) {
[497] Fix | Delete
Admin_Display::error( __( 'You need to activate QC first.', 'litespeed-cache' ) );
[498] Fix | Delete
return;
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function