<?php
// Conectar ao banco de dados
$db = new SQLite3("./api/.ansdb.db");

// Função para verificar se a conta está online com cURL
function verificarUsuarioCurl($username, $password, $dns) {
    // Usa o DNS vindo do banco, em vez da URL fixa
    $url = "http://$dns/player_api.php?username=$username&password=$password";
    
    // Inicializa a sessão cURL
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); // Timeout opcional
    $response = curl_exec($ch);
    curl_close($ch);
    
    $data = json_decode($response, true);
    $conexoes = isset($data['user_info']['active_cons']) ? $data['user_info']['active_cons'] : 0;
    return $conexoes > 0 ? $conexoes : 0;
}

// Função para obter clientes online
function obterClientesOnline($db) {
    $stmt = $db->prepare("SELECT title, username, password, mac_address, dns FROM ibo");
    $result = $stmt->execute();

    $onlineUsers = [];
    $onlineCount = 0;

    while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
        $dns = $row['dns']; // Obtém o DNS da tabela
        $conexoes = verificarUsuarioCurl($row['username'], $row['password'], $dns); // Usa o DNS do cliente
        if ($conexoes > 0) {
            $onlineUsers[] = [
                'nome' => $row['title'],
                'mac' => $row['mac_address'],
                'conexoes' => $conexoes
            ];
            $onlineCount++;
        }
    }

    return [
        'total_online' => $onlineCount,
        'clientes_online' => $onlineUsers
    ];
}

// Obter dados dos clientes online
$dados_online = obterClientesOnline($db);

// Retornar os dados como JSON
echo json_encode($dados_online);
?>
