<?php
if (session_status() === PHP_SESSION_NONE) session_start();

require_once '../config.php';

if (!isLoggedIn() || !isAdmin()) {
    http_response_code(403);
    echo '<div class="alert alert-danger">دسترسی غیرمجاز.</div>';
    exit;
}

$serverId = $_GET['server_id'] ?? 0;

if ($serverId <= 0) {
    http_response_code(400);
    echo '<div class="alert alert-danger">شناسه سرور نامعتبر است.</div>';
    exit;
}

try {
    // Get panel connection details from our main database
    $stmt = $pdo->prepare("SELECT * FROM panels WHERE id = ?");
    $stmt->execute([$serverId]);
    $panel = $stmt->fetch();

    if (!$panel) {
        http_response_code(404);
        echo '<div class="alert alert-danger">سرور (پنل) با این شناسه یافت نشد.</div>';
        exit;
    }

    // Establish connection to the X-UI database
    $xui_pdo = new PDO("mysql:host={$panel['db_host']};dbname={$panel['db_name']};charset=utf8mb4", $panel['db_user'], decrypt_data($panel['db_password']));
    $xui_pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Fetch online clients
    $sql = "
        SELECT 
            cs.email, 
            i.remark, 
            oc.ip, 
            cs.up, 
            cs.down, 
            cs.total
        FROM online_clients oc
        JOIN client_stats cs ON oc.client_id = cs.id
        JOIN inbounds i ON cs.inbound_id = i.id
        ORDER BY cs.email;
    ";
    $online_users = $xui_pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);

    if (empty($online_users)) {
        echo '<div class="alert alert-info text-center">در حال حاضر هیچ کاربری آنلاین نیست.</div>';
        exit;
    }

    // Build the HTML table to return
    $html = '<div class="table-responsive"><table class="table table-striped table-hover"><thead><tr><th>کاربر</th><th>ریمارک</th><th>IP</th><th>آپلود</th><th>دانلود</th></tr></thead><tbody>';
    foreach ($online_users as $user) {
        $html .= '<tr>';
        $html .= '<td>' . htmlspecialchars($user['email']) . '</td>';
        $html .= '<td>' . htmlspecialchars($user['remark']) . '</td>';
        $html .= '<td>' . htmlspecialchars($user['ip']) . '</td>';
        $html .= '<td>' . format_bytes($user['up']) . '</td>';
        $html .= '<td>' . format_bytes($user['down']) . '</td>';
        $html .= '</tr>';
    }
    $html .= '</tbody></table></div>';

    echo $html;

} catch (Exception $e) {
    http_response_code(500);
    // Do not expose detailed error messages to the client
    error_log("Error fetching online users: " . $e->getMessage()); // Log for admin
    echo '<div class="alert alert-danger">خطا در اتصال به دیتابیس پنل یا دریافت اطلاعات. لطفاً اطلاعات اتصال پنل را در بخش «مدیریت پنل‌ها» بررسی کنید.</div>';
}
