<?php
session_start();
require_once 'conexao.php';

// 1. RECEBE O USUÁRIO DIGITADO NO FRONTEND
$usuario_kikar = trim($_GET['user'] ?? '');

if (empty($usuario_kikar)) {
    die("ERRO: Por favor, digite um usuário válido.");
}

try {
    // 2. VERIFICA SE O USUÁRIO EXISTE NO SEU BANCO DE DADOS
    $check = $connUser->prepare("
        SELECT usuario FROM usuario WHERE usuario = ? 
        UNION 
        SELECT usuario FROM teste WHERE usuario = ?
    ");
    $check->execute([$usuario_kikar, $usuario_kikar]);
    
    if ($check->rowCount() == 0) {
        die("ERRO: Este usuário não existe no sistema.");
    }

    // 3. BUSCA TODOS OS SERVIDORES CSP ATIVOS NA SUA TABELA 'painel'
    $stmt = $connGeral->query("SELECT url, porta, usuario, senha, protocolo FROM painel WHERE block != 'sim' OR block IS NULL");
    $servidores = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (count($servidores) == 0) {
        die("ERRO: Nenhum servidor CSP configurado no seu 'Gerenciar Servidores'.");
    }

    $sucesso = false;
    $erros_detalhados = "";

    // 4. SIMULA O ACESSO AO PAINEL ADMIN E ENVIA O KICK
    foreach ($servidores as $srv) {
        $ip = str_replace(['http://', 'https://', '/'], '', $srv['url']);
        $porta = trim($srv['porta']); // DEVE SER A 2095
        $user_csp = trim($srv['usuario']);
        $pass_csp = trim($srv['senha']);
        $protocolo = !empty($srv['protocolo']) ? $srv['protocolo'] : 'http';

        $user_url = urlencode($usuario_kikar);

        // VAMOS DISPARAR O KICK NOS 3 FORMATOS PADRÕES DO CSP BOWMAN PARA GARANTIR
        // Formato 1: Via Painel Web (O mesmo que você clica no vídeo)
        $url_1 = "{$protocolo}://{$ip}:{$porta}/?command=kick-user&user={$user_url}";
        // Formato 2: Via API XML (Se o seu CSP aceitar comandos XML)
        $url_2 = "{$protocolo}://{$ip}:{$porta}/xmlHandler?command=kick-user&name={$user_url}";
        // Formato 3: Variação comum do painel Web
        $url_3 = "{$protocolo}://{$ip}:{$porta}/?cmd=kick-user&user={$user_url}";

        $urls_para_tentar = [$url_1, $url_2, $url_3];
        $deu_certo_neste_servidor = false;

        foreach ($urls_para_tentar as $url_comando) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url_comando);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_USERPWD, "$user_csp:$pass_csp"); // Entra com o login de admin
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_TIMEOUT, 3);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

            $resposta = curl_exec($ch);
            $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);

            // Código 200 significa que o painel admin autorizou e processou!
            if ($httpcode == 200) {
                $deu_certo_neste_servidor = true;
                $sucesso = true;
                break; // Se deu certo nesta URL, não precisa testar as outras
            }
        }

        if (!$deu_certo_neste_servidor) {
            $erros_detalhados .= "Falha no IP $ip Porta $porta.<br>";
            if ($httpcode == 401) {
                $erros_detalhados .= "-> Motivo: <b>Usuário ou Senha de Admin do CSP Incorretos.</b><br>";
            } elseif ($httpcode == 404) {
                $erros_detalhados .= "-> Motivo: Erro 404 (Página não encontrada na CSP).<br>";
            } elseif ($httpcode == 0) {
                $erros_detalhados .= "-> Motivo: <b>Conexão recusada.</b> A porta $porta está certa?<br>";
            }
            $erros_detalhados .= "<br>";
        }
    }

    // 5. RETORNA O RESULTADO PARA A TELA
    if ($sucesso) {
        echo "SUCESSO!\nSua rota foi limpa e reiniciada no servidor.\nTente trocar de canal na sua TV agora.";
    } else {
        echo "ERRO DETALHADO DO SISTEMA:<br><br>" . $erros_detalhados;
    }

} catch (Exception $e) {
    echo "ERRO INTERNO: " . $e->getMessage();
}
?>
