/home/vianto5/distritosatelite.mx/wp-content/plugins/litespeed-cache/src
NameSizeModeActions
cdn/-0755rm
data_structure/-0755rm
activation.cls.php180400644editdlrm
admin-display.cls.php501090644editdlrm
admin-settings.cls.php130780644editdlrm
admin.cls.php62760644editdlrm
api.cls.php101510644editdlrm
avatar.cls.php94610644editdlrm
base.cls.php387470644editdlrm
cdn.cls.php181830644editdlrm
cloud-auth-callback.trait.php238870644editdlrm
cloud-auth-ip.trait.php20940644editdlrm
cloud-auth.trait.php93600644editdlrm
cloud-misc.trait.php111230644editdlrm
cloud-node.trait.php60900644editdlrm
cloud-queue-svc.cls.php96420644editdlrm
cloud-request.trait.php197230644editdlrm
cloud.cls.php88480644editdlrm
conf.cls.php200000644editdlrm
control.cls.php249130644editdlrm
core.cls.php220460644editdlrm
crawler-map.cls.php228330644editdlrm
crawler.cls.php449890644editdlrm
css.cls.php70340644editdlrm
data.cls.php227330644editdlrm
data.upgrade.func.php65640644editdlrm
db-optm.cls.php157160644editdlrm
debug2.cls.php188320644editdlrm
doc.cls.php55770644editdlrm
error.cls.php75300644editdlrm
esi.cls.php327950644editdlrm
file.cls.php204720644editdlrm
guest.cls.php22630644editdlrm
gui.cls.php358170644editdlrm
health.cls.php46940644editdlrm
htaccess.cls.php305260644editdlrm
img-optm-manage.trait.php306270644editdlrm
img-optm-notify.trait.php91130644editdlrm
img-optm-pull.trait.php139630644editdlrm
img-optm-send.trait.php215450644editdlrm
img-optm.cls.php52650644editdlrm
img.cls.php114270644editdlrm
import.cls.php43720644editdlrm
import.preset.cls.php56100644editdlrm
lang.cls.php174300644editdlrm
localization.cls.php39410644editdlrm
media.cls.php451170644editdlrm
metabox.cls.php54190644editdlrm
object-cache-wp.cls.php192680644editdlrm
object-cache.cls.php223460644editdlrm
object.lib.php141800644editdlrm
optimax.cls.php124290644editdlrm
optimize.cls.php393350644editdlrm
optimizer.cls.php129730644editdlrm
placeholder.cls.php179500644editdlrm
purge.cls.php363300644editdlrm
report.cls.php76680644editdlrm
rest.cls.php104040644editdlrm
root.cls.php150180644editdlrm
router.cls.php213620644editdlrm
str.cls.php31560644editdlrm
tag.cls.php94810644editdlrm
task.cls.php91930644editdlrm
tool.cls.php46870644editdlrm
ucss.cls.php74510644editdlrm
utility.cls.php284930644editdlrm
vary.cls.php218420644editdlrm
vpi.cls.php42120644editdlrm
Edit: /home/vianto5/distritosatelite.mx/wp-content/plugins/litespeed-cache/src/optimax.cls.php (12429B)
_summary = self::get_summary(); } /** * Svc id slug — drives queue type, Cloud::SVC_OPTIMAX, and summary key prefix. * * @return string */ protected function _svc_id() { return 'optimax'; } /** * Response field carrying the optimization payload (nested object). * * @return string */ protected function _data_key() { return 'data_optimax'; } /** * Optimax processes whole pages — needs a longer PHP execution window. * * @return int */ protected function _php_time_limit() { return 1200; } /** * Legacy summary key for the try_later deadline; kept across upgrades. * * @return string */ protected function _next_run_after_key() { return 'ox_next_run_after'; } /** * Reject malformed legacy queue rows before dispatch. * * @since 7.9.1 * * @param string $queue_k Queue key. * @param array $v Queue item. * @return bool */ protected function _valid_queue_item( $queue_k, $v ) { foreach ( [ 'url', 'user_agent', 'url_tag', 'vary' ] as $key ) { if ( ! is_array( $v ) || ! isset( $v[ $key ] ) || ! is_string( $v[ $key ] ) ) { return false; } } return '' !== $queue_k && '' !== $v['url'] && '' !== $v['url_tag'] && ( empty( $v['is_nextgen'] ) || in_array( $v['is_nextgen'], [ 'webp', 'avif' ], true ) ); } /** * Build the request body for Cloud::post. * * @param string $queue_k Queue key. * @param array $v Queue item. * @return array */ protected function _build_payload( $queue_k, $v ) { return [ 'url' => $v['url'], 'queue_k' => $queue_k, 'user_agent' => $v['user_agent'], 'is_mobile' => ! empty( $v['is_mobile'] ) ? 1 : 0, 'is_nextgen' => ! empty( $v['is_nextgen'] ) ? $v['is_nextgen'] : '', 'optm_ori' => $this->conf( self::O_IMG_OPTM_ORI ) ? 1 : 0, ]; } /** * Fan out the nested optimization payload to four save targets. * * @param array $ox data_optimax payload. * @param string $queue_k Queue key. * @param array $v Queue item. * @return bool False when HTML is missing (abort), true otherwise. */ protected function _save_result( $ox, $queue_k, $v ) { if ( ! is_array( $ox ) || empty( $ox['html'] ) || ! is_string( $ox['html'] ) ) { self::debug( '❌ No HTML in data_optimax.' ); return false; } if ( isset( $ox['imgs'] ) && ! is_array( $ox['imgs'] ) ) { return false; } foreach ( [ 'ucss', 'ccss' ] as $field ) { if ( isset( $ox[ $field ] ) && ! is_string( $ox[ $field ] ) ) { return false; } } $is_mobile = ! empty( $v['is_mobile'] ); $is_nextgen = ! empty( $v['is_nextgen'] ) ? $v['is_nextgen'] : ''; if ( ! empty( $ox['imgs'] ) && ! $this->_save_imgs( $ox['imgs'] ) ) { return false; } if ( ! empty( $ox['ucss'] ) && ! $this->_save_css_con( 'ucss', $ox['ucss'], $v['url_tag'], $v['vary'], $queue_k, $is_mobile, $is_nextgen ) ) { return false; } if ( ! empty( $ox['ccss'] ) && ! $this->_save_css_con( 'ccss', $ox['ccss'], $v['url_tag'], $v['vary'], $queue_k, $is_mobile, $is_nextgen ) ) { return false; } return $this->_save_con( $ox['html'], $queue_k, $is_mobile, $is_nextgen, $v ); } /** * Generate URL tag for Optimax. * * @since 8.0 * * @param string $request_url Current request URL. * @return string The URL tag. */ public static function get_url_tag( $request_url ) { if ( is_404() ) { return '404'; } if ( apply_filters( 'litespeed_optimax_per_pagetype', false ) ) { return Utility::page_type(); } return $request_url; } /** * Get User Agent. * * @since 8.0 * * @return string The user agent string. */ private function _get_ua() { return ! empty( $_SERVER['HTTP_USER_AGENT'] ) ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : ''; } /** * Serve optimized page from cache if available. * * Called during buffer finalization as the first priority check. * If ox HTML is found, returns it to skip all other optimization hooks. * * @since 8.0 * * @return string|false The optimized HTML content, or false if not available. */ public function serve() { // Check if ox is enabled if ( ! $this->conf( self::O_OPTIMAX ) ) { return false; } $request_url = Utility::request_url(); // Check URI exclusions $exc = apply_filters( 'litespeed_optimax_exc', $this->conf( self::O_OPTIMAX_EXC ) ); $hit = $exc ? Utility::str_hit_array( $request_url, $exc ) : false; if ( $hit ) { self::debug( 'serve() bypassed due to URI Exclude: ' . $hit ); return false; } $filepath_prefix = $this->_build_filepath_prefix( 'optimax' ); $url_tag = self::get_url_tag( $request_url ); $vary = $this->cls( 'Vary' )->finalize_full_varies(); $filename = $this->cls( 'Data' )->load_url_file( $url_tag, $vary, 'optimax' ); if ( $filename ) { $static_file = LITESPEED_STATIC_DIR . $filepath_prefix . $filename . '.html'; if ( file_exists( $static_file ) ) { $html = File::read( $static_file ); if ( $html ) { self::debug( 'serve() hit: ' . $filepath_prefix . $filename . '.html' ); Core::comment( 'Optimax served' ); return $html; } self::debug( 'serve() empty file: ' . $static_file ); } else { self::debug( 'serve() file missing: ' . $static_file ); } } // No cached optimax, add to queue $uid = get_current_user_id(); $ua = $this->_get_ua(); $this->_queue = $this->load_queue( 'optimax' ); $queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag; if ( ! isset( $this->_queue[ $queue_k ] ) && count( $this->_queue ) >= $this->_max_queue_size() ) { self::debug( 'Queue is full - ' . $this->_max_queue_size() ); return false; } $this->_queue[ $queue_k ] = [ 'url' => apply_filters( 'litespeed_optimax_url', $request_url ), 'user_agent' => substr( $ua, 0, 200 ), 'is_mobile' => $this->_separate_mobile(), 'is_nextgen' => $this->cls( 'Media' )->webp_support(), 'uid' => $uid, 'vary' => $vary, 'url_tag' => $url_tag, ]; $this->save_queue( 'optimax', $this->_queue ); self::debug( 'Added Optimax queue item [request] ' . substr( hash( 'sha256', $queue_k ), 0, 12 ) ); // Prepare cache tag for later purge Tag::add( 'OPTIMAX.' . md5( $queue_k ) ); Core::comment( 'QUIC.cloud Optimax in queue' ); return false; } /** * Download and save optimized images locally. * * Each image entry has src and any requested ori/webp/avif artifact. * Optimized images are saved beside their WordPress image targets. * * @since 8.0 * * @param array $imgs Array of image optimization data. * @return bool */ private function _save_imgs( $imgs ) { if ( ! is_array( $imgs ) ) { return false; } $hooks = [ 'ori' => 'litespeed_img_pull_ori', 'webp' => 'litespeed_img_pull_webp', 'avif' => 'litespeed_img_pull_avif', ]; $types = [ 'webp', 'avif' ]; $optm_ori = (bool) $this->conf( self::O_IMG_OPTM_ORI ); $preserve_ori = $optm_ori && ! $this->conf( self::O_IMG_OPTM_RM_BKUP ); if ( $optm_ori ) { $types[] = 'ori'; } foreach ( $imgs as $img ) { if ( ! is_array( $img ) ) { return false; } $artifacts = []; foreach ( $types as $type ) { $url_key = $type . '_url'; $digest_key = $type . '_sha256'; if ( empty( $img[ $url_key ] ) ) { continue; } $url = Img::normalize_cloud_url( $img[ $url_key ] ); if ( ! $url || empty( $img[ $digest_key ] ) || ! is_string( $img[ $digest_key ] ) || ! preg_match( '/^[a-f0-9]{64}$/iD', $img[ $digest_key ] ) ) { return false; } $artifacts[ $type ] = [ 'url' => $url, 'digest' => strtolower( $img[ $digest_key ] ), ]; } if ( empty( $artifacts ) ) { continue; } if ( empty( $img['src'] ) || ! is_string( $img['src'] ) || 2048 < strlen( $img['src'] ) ) { self::debug( 'Skip Optimax image entry without a usable local source.' ); continue; } $local = $this->_image_target( $img ); if ( ! $local ) { self::debug( 'Skip Optimax image entry without a WordPress image target.' ); continue; } list( $local_path, $local_root, $row ) = $local; $published = []; foreach ( $artifacts as $type => $artifact ) { $target = 'ori' === $type ? $local_path : $local_path . '.' . $type; $res = Img::save( $artifact['url'], $target, $artifact['digest'], 'sha256', $type, $local_root, 'ori' === $type && $preserve_ori ); if ( is_wp_error( $res ) ) { // Log the URL without its query string: it may carry a token. $parts = wp_parse_url( $artifact['url'] ); $label = $parts['host'] . ( ! empty( $parts['path'] ) ? $parts['path'] : '/' ); $detail = $res->get_error_data(); self::debug( '❌ Failed to save img [url] ' . $label . ' [error] ' . $res->get_error_code() . ( '' !== (string) $detail ? ':' . $detail : '' ) ); return false; } $published[ $type ] = $target; } if ( $row ) { foreach ( $hooks as $type => $hook ) { if ( isset( $published[ $type ] ) ) { do_action( $hook, $row, $published[ $type ] ); } } } } return true; } /** * Resolve an image to a local target and optional attachment hook context. * * @param array $img Cloud image entry. * @return array|false `[ path, bound root, hook row ]`, or false. */ private function _image_target( $img ) { $post_id = attachment_url_to_postid( $img['src'] ); if ( 0 < $post_id ) { $uploads = wp_upload_dir(); $base = ! empty( $uploads['basedir'] ) ? trailingslashit( wp_normalize_path( $uploads['basedir'] ) ) : ''; $attached = get_attached_file( $post_id, true ); $attached = is_string( $attached ) ? wp_normalize_path( $attached ) : ''; $url_path = wp_parse_url( $img['src'], PHP_URL_PATH ); $filename = is_string( $url_path ) ? rawurldecode( basename( $url_path ) ) : ''; if ( $base && 0 === strpos( $attached, $base ) && $filename ) { $dir = dirname( substr( $attached, strlen( $base ) ) ); $short = ( '.' === $dir ? '' : trailingslashit( $dir ) ) . $filename; $local = Img::normalize_cloud_path( $short ) === $short ? Img::local_file( apply_filters( 'litespeed_realpath', $base . $short ) ) : false; if ( $local && ( file_exists( $local[0] ) || $this->cls( 'Media' )->info( $short, $post_id ) ) ) { return [ $local[0], $local[1], (object) [ 'post_id' => $post_id, 'src' => $short ] ]; } } } $local = Utility::is_internal_file( $img['src'] ); $local = $local && ! empty( $local[0] ) ? Img::local_file( $local[0] ) : false; return $local ? [ $local[0], $local[1], false ] : false; } /** * Save optimized HTML content. * * @param string $content The optimized content. * @param string $queue_k The queue key. * @param bool $is_mobile Whether is mobile. * @param string $is_nextgen Next-gen image format ('webp', 'avif', or ''). * @param array $v Queue item. * @return bool */ private function _save_con( $content, $queue_k, $is_mobile, $is_nextgen, $v ) { $content = apply_filters( 'litespeed_optimax', $content, $queue_k ); if ( ! is_string( $content ) ) { return false; } $content = File::remove_zero_space( $content ); // Write to file $filecon_md5 = md5( $content ); $filepath_prefix = $this->_build_filepath_prefix( 'optimax' ); $static_file = LITESPEED_STATIC_DIR . $filepath_prefix . $filecon_md5 . '.html'; if ( ! File::save_atomic( $static_file, $content ) ) { return false; } $url_tag = $v['url_tag']; $vary = $v['vary']; self::debug2( "Save URL to file [file] $static_file [vary] $vary" ); $data = $this->cls( 'Data' ); $data->save_url( $url_tag, $vary, 'optimax', $filecon_md5, dirname( $static_file ), $is_mobile, $is_nextgen ); if ( $filecon_md5 !== $data->load_url_file( $url_tag, $vary, 'optimax' ) ) { return false; } Purge::add( 'OPTIMAX.' . md5( $queue_k ) ); return true; } }