<?php
session_start();
if (!isset($_SESSION['logado']) || $_SESSION['logado'] !== true) {
    header("Location: login.php");
    exit;
}
require_once 'conexao.php';

// ==========================================================
// 1. BUSCA DADOS DO SERVIDOR NO BANCO
// ==========================================================
$csp_ip = '127.0.0.1'; $csp_port = '8080'; $csp_user = 'admin'; $csp_pass = '';

try {
    $sql = "SELECT url, porta, usuario, senha FROM servidor ORDER BY id DESC LIMIT 1";
    $stmt = $connGeral->query($sql);
    $servidor = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($servidor) {
        $csp_ip   = $servidor['url'];
        $csp_port = $servidor['porta'];
        $csp_user = $servidor['usuario'];
        $csp_pass = $servidor['senha'];
    }
} catch (Exception $e) { }

// ==========================================================
// 2. LER A PÁGINA INICIAL (ROOT) - "SCRAPING"
// ==========================================================
$lista_online = [];
$debug_msg = "";

function lerPaginaRoot($ip, $port, $user, $pass) {
    global $debug_msg;
    
    // AQUI ESTÁ A CORREÇÃO: Removemos o "/status" e deixamos apenas a raiz "/"
    $url = "http://$ip:$port/"; 
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)');
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    
    $html = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $erro = curl_error($ch);
    curl_close($ch);

    if ($http_code == 200 && !empty($html)) {
        return $html;
    } else {
        if ($http_code == 401) $debug_msg = "Erro 401: Login ou Senha incorretos no 'Gerenciar Servidores'.";
        elseif ($http_code == 0) $debug_msg = "Erro de Rede: Não conectou em $ip:$port. ($erro)";
        else $debug_msg = "Erro HTTP $http_code ao tentar acessar $url";
        return false;
    }
}

// EXECUTA
$html = lerPaginaRoot($csp_ip, $csp_port, $csp_user, $csp_pass);

if ($html) {
    // Processa o HTML para achar a tabela
    $dom = new DOMDocument();
    @$dom->loadHTML($html);
    $xpath = new DOMXPath($dom);

    // Busca todas as linhas da tabela
    $linhas = $xpath->query("//tr");

    foreach ($linhas as $linha) {
        $colunas = $linha->getElementsByTagName('td');
        
        // Baseado no seu print, a tabela tem várias colunas
        // Coluna 0: User | Coluna 2: IP | Coluna 3: Connected (Tempo)
        if ($colunas->length >= 4) {
            $nome_user = trim($colunas->item(0)->nodeValue); // Nome
            $ip_user   = trim($colunas->item(2)->nodeValue); // IP
            $tempo     = trim($colunas->item(3)->nodeValue); // Tempo conectado
            
            // Limpa nome
            $nome_user = preg_replace('/\s+/', '', $nome_user);

            // Verifica se é uma linha de usuário válida
            // Ignora linhas que não sejam usuários (ex: cabeçalhos ou totais)
            if (!empty($nome_user) && $nome_user != 'User' && strpos($tempo, 's') !== false) {
                
                // Busca Revendedor
                $revenda = "---";
                try {
                    $stmt = $connUser->prepare("SELECT CadUser FROM usuario WHERE usuario = ? UNION SELECT CadUser FROM teste WHERE usuario = ?");
                    $stmt->execute([$nome_user, $nome_user]);
                    $dado = $stmt->fetchColumn();
                    if($dado) $revenda = $dado;
                } catch(Exception $e){}

                // Filtro Admin/Revenda
                if ($_SESSION['nivel'] !== 'admin' && $revenda !== $_SESSION['usuario']) continue; 

                $lista_online[] = [
                    'usuario' => $nome_user,
                    'ip' => $ip_user,
                    'canal' => '---', // CSP nessa versão não mostra canal fácil na home
                    'tempo' => $tempo,
                    'revenda' => $revenda
                ];
            }
        }
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Status Online</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <style>
        body { background: #151521; color: #e0e0e0; font-family: 'Segoe UI', sans-serif; }
        .sidebar { width: 260px; height: 100vh; position: fixed; background: #1e1e2d; padding: 20px; border-right: 1px solid #333; z-index: 1000; }
        .main-content { margin-left: 260px; padding: 30px; }
        .card-custom { background: #1e1e2d; border: 1px solid rgba(255,255,255,0.05); border-radius: 12px; }
        .table-dark { background: #1e1e2d; --bs-table-bg: #1e1e2d; color: #fff; }
        .table-dark td { border-color: #333; vertical-align: middle; }
        .badge-rev { background: rgba(115, 103, 240, 0.2); color: #7367f0; padding: 4px 8px; border-radius: 4px; font-weight: bold; font-size: 0.8rem; }
        @media (max-width: 768px) { .sidebar{display:none;} .main-content{margin-left:0; padding: 15px;} }
    </style>
</head>
<body>

<nav class="sidebar">
    <h4 class="mb-4 fw-bold text-white"><i class="fas fa-tv text-primary"></i> Painel</h4>
    <div class="nav flex-column gap-2">
        <a href="index.php" class="btn btn-dark text-start border-0 py-2"><i class="fas fa-home me-2"></i> Voltar</a>
        <a href="status_online.php" class="btn btn-primary text-start border-0 py-2"><i class="fas fa-wifi me-2"></i> Online Agora</a>
    </div>
</nav>

<main class="main-content">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <div>
            <h3 class="fw-bold text-white">Status dos Usuários (HTML)</h3>
            <p class="text-white-50 m-0">Conectado em: <b class="text-info"><?= $csp_ip ?>:<?= $csp_port ?></b></p>
        </div>
        <button onclick="location.reload()" class="btn btn-sm btn-outline-light"><i class="fas fa-sync-alt"></i> Atualizar</button>
    </div>

    <div class="card card-custom">
        <div class="table-responsive">
            <table class="table table-dark table-hover mb-0 align-middle">
                <thead>
                    <tr><th>Status</th><th>Usuário</th><th>Revendedor</th><th>IP</th><th>Tempo</th></tr>
                </thead>
                <tbody>
                    <?php if(empty($lista_online)): ?>
                        <tr>
                            <td colspan="5" class="text-center py-5">
                                <?php if($debug_msg): ?>
                                    <div class="alert alert-danger d-inline-block text-start">
                                        <i class="fas fa-bug"></i> <b>Falha na Leitura</b><br><?= $debug_msg ?>
                                    </div>
                                <?php else: ?>
                                    <i class="fas fa-user-slash text-secondary fs-1 mb-3"></i><br>
                                    <span class="text-white-50">Nenhum usuário conectado no momento.</span>
                                <?php endif; ?>
                            </td>
                        </tr>
                    <?php else: ?>
                        <?php foreach($lista_online as $u): ?>
                        <tr>
                            <td class="ps-4"><span class="badge bg-success">ONLINE</span></td>
                            <td class="fw-bold text-white"><?= $u['usuario'] ?></td>
                            <td><span class="badge-rev"><?= $u['revenda'] ?></span></td>
                            <td><?= $u['ip'] ?></td>
                            <td class="text-info fw-bold"><?= $u['tempo'] ?></td>
                        </tr>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
    </div>
</main>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
