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

$pdo = getConexaoAtiva(); // Banco Principal (Onde ficam os Streams)
$pdo_int = getConexaoInterna(); // Banco Local (Onde ficam as configs e design)

$pdo->exec("SET NAMES utf8mb4");
$pdo_int->exec("SET NAMES utf8mb4");

// --- PROTEÇÃO GERAL (Admin e Revenda) ---
if (!isset($_SESSION['user_id'])) {
    die("Acesso negado. Por favor, faça login no painel.");
}

$id_usuario = $_SESSION['user_id'];
$nome_usuario = $_SESSION['username'] ?? 'Usuário';
$role = $_SESSION['user_role'] ?? 'revenda';
$is_admin = ($role === 'admin'); 

// Proteção: Somente Administradores podem acessar essa página
if (!$is_admin) { 
    header("Location: dashboard.php"); exit; 
}

// ====================================================================
// INTELIGÊNCIA ARTIFICIAL: DETECTA SE É XUI ONE OU XTREAM UI
// ====================================================================
$modo_ativo = 'interno';
try {
    $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
} catch (Exception $e) {}

$tabela_revendedores = ($modo_ativo === 'xui') ? '`users`' : '`reg_users`';

// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO DINÂMICA (NO BANCO INTERNO) ---
$nome_painel = 'TOP IPTV';
$logo_url = '';
$cor_primaria = '#007bff';

try {
    $tabela_existe = $pdo_int->query("SHOW TABLES LIKE 'painel_config'")->rowCount() > 0;
    if ($tabela_existe) {
        $config_painel = $pdo_int->query("SELECT * FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC);
        if ($config_painel) {
            $nome_painel = !empty($config_painel['nome_painel']) ? $config_painel['nome_painel'] : $nome_painel;
            $logo_url = !empty($config_painel['logo_url']) ? $config_painel['logo_url'] : $logo_url;
            $cor_primaria = !empty($config_painel['cor_primaria']) ? $config_painel['cor_primaria'] : $cor_primaria;
        }
    }
} catch (Exception $e) {}

$api_conf = ['api_binstream_url' => ''];
try {
    $api_conf = $pdo_int->query("SELECT api_binstream_url FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC) ?: ['api_binstream_url' => ''];
} catch (Exception $e) {}

// Busca saldo
try {
    $user_credits = $pdo->query("SELECT credits FROM $tabela_revendedores WHERE id = " . intval($id_usuario))->fetchColumn() ?: 0;
} catch (Exception $e) { $user_credits = 0; }
// --- FIM: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---

// --- LÓGICA DO SISTEMA DE DNS ---
$msg = "";
$preview = [];
$old_dns = $_POST['old_dns'] ?? '';
$new_dns = $_POST['new_dns'] ?? '';

// 1. GERAR PRÉVIA (NO BANCO EXTERNO ONDE FICAM OS CANAIS)
if (isset($_POST['gerar_previa']) && !empty($old_dns)) {
    // Removemos o http:// e barras para buscar apenas o "miolo" do domínio
    $clean_search = str_replace(['http://', 'https://', '/'], '', $old_dns);
    
    // Busca usando % antes e depois
    $sql = "SELECT stream_display_name as nome, stream_source as link 
            FROM streams 
            WHERE stream_source LIKE :old_dns 
            LIMIT 10";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['old_dns' => "%$clean_search%"]);
    $results = $stmt->fetchAll();
    
    if (count($results) > 0) {
        foreach ($results as $s) {
            // Decodifica o Array JSON para mostrar o link normal e legível
            $link_array = json_decode($s['link'], true);
            $link_limpo = is_array($link_array) ? $link_array[0] : stripslashes(trim($s['link'], '[]"'));
            
            // Troca o texto do DNS antigo pelo novo apenas para visualização
            $novo_link_limpo = str_replace($old_dns, $new_dns, $link_limpo);

            $preview[] = [
                'nome' => $s['nome'], 
                'velho' => $link_limpo, 
                'novo' => $novo_link_limpo
            ];
        }
    } else {
        $msg = "<div class='alert danger'>Não achei nada com '<strong>".htmlspecialchars($old_dns)."</strong>'. <br>Dica: Tente buscar apenas por: <strong>sinalmycn.com</strong> (sem o http).</div>";
    }
}

// 2. EXECUTAR SUBSTITUIÇÃO NO BANCO (NO BANCO EXTERNO ONDE FICAM OS CANAIS)
if (isset($_POST['substituir']) && !empty($old_dns) && !empty($new_dns)) {
    try {
        $pdo->beginTransaction();
        
        // 1. Substituição normal (caso o banco não tenha as barras escapadas)
        $stmt1 = $pdo->prepare("UPDATE streams SET stream_source = REPLACE(stream_source, ?, ?)");
        $stmt1->execute([$old_dns, $new_dns]);
        
        // 2. Substituição escapada (caso o banco tenha as barras JSON \/)
        $old_dns_escaped = str_replace('/', '\/', $old_dns);
        $new_dns_escaped = str_replace('/', '\/', $new_dns);
        
        $stmt2 = $pdo->prepare("UPDATE streams SET stream_source = REPLACE(stream_source, ?, ?)");
        $stmt2->execute([$old_dns_escaped, $new_dns_escaped]);
        
        $pdo->commit();
        $msg = "<div class='alert success'><b>Pronto!</b> Os links foram atualizados com sucesso no painel inteiro.</div>";
        $preview = [];
    } catch (Exception $e) {
        $pdo->rollBack();
        $msg = "<div class='alert danger'>Erro ao atualizar: " . htmlspecialchars($e->getMessage()) . "</div>";
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <link rel="stylesheet" href="tema.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Alterar DNS - <?php echo htmlspecialchars($nome_painel); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        :root { 
            --bg-dark: #121519; 
            --bg-sidebar: #1e2227; 
            --bg-card: #272c33; 
            --text-main: #d1d5da; 
            --text-muted: #8a94a1; 
            --accent: <?php echo $cor_primaria; ?>; 
            --border-color: #3a4149; 
            --success: #28a745; 
        }
        body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: var(--bg-dark); color: var(--text-main); display: flex; height: 100vh; overflow: hidden; }
        
        /* SIDEBAR (HERDADO PELO INCLUDE) */
        .sidebar { width: 260px; background-color: var(--bg-sidebar); display: flex; flex-direction: column; transition: 0.3s; border-right: 1px solid var(--border-color); z-index: 1001; flex-shrink: 0; }
        .sidebar-header { padding: 25px 20px; text-align: center; color: white; border-bottom: 1px solid var(--border-color); font-weight: bold; font-size: 18px;}
        .sidebar-logo { max-width: 180px; max-height: 55px; object-fit: contain; }
        .user-info { padding: 20px; text-align: center; border-bottom: 1px solid var(--border-color); }
        .user-info .badge { background: rgba(0, 123, 255, 0.2); color: var(--accent); padding: 4px 10px; border-radius: 4px; font-size: 11px; text-transform: uppercase; font-weight: bold; margin-top: 5px; display: inline-block; }
        .credits-badge { display: block; margin-top: 10px; color: var(--success); font-weight: bold; font-size: 13px; }
        
        .menu-list { list-style: none; padding: 0; margin: 0; overflow-y: auto; flex: 1; }
        .menu-item { padding: 14px 20px; color: var(--text-main); text-decoration: none; display: flex; align-items: center; transition: 0.2s; font-size: 14px; cursor: pointer; border-left: 3px solid transparent;}
        .menu-item i:first-child { margin-right: 12px; width: 20px; text-align: center; color: var(--text-muted); }
        .menu-item:hover, .menu-item.active { background-color: #2c3138; color: white; border-left-color: var(--accent); }
        .menu-item.active i:first-child { color: var(--accent); }
        .submenu { display: none; background: #16191d; list-style: none; padding: 0; margin: 0; }
        .submenu .menu-item { padding-left: 52px; font-size: 13px; border-left: none; }
        .arrow-icon { margin-left: auto; transition: 0.3s; font-size: 11px; }
        .rotate { transform: rotate(180deg); }
        .menu-category { padding: 20px 20px 8px; font-size: 10px; text-transform: uppercase; color: var(--text-muted); font-weight: bold; }
        .logout-btn { padding: 15px; background-color: #dc3545; color: white; text-align: center; text-decoration: none; font-weight: bold; margin-top: auto;}
        
        /* ÁREA PRINCIPAL */
        .main-content { flex: 1; display: flex; flex-direction: column; overflow-y: auto; position: relative; width: 100vw; max-width: 100%;}
        .topbar { display: flex; justify-content: space-between; align-items: center; padding: 15px 30px; background-color: var(--bg-sidebar); border-bottom: 1px solid var(--border-color); }
        .menu-toggle { display: none; background: none; border: none; color: white; font-size: 24px; cursor: pointer; padding-right: 15px;}
        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); z-index: 1000; }
        
        .mode-badge { padding: 6px 15px; background: rgba(0, 123, 255, 0.15); color: var(--accent); border-radius: 20px; font-size: 12px; font-weight: bold; border: 1px solid var(--accent); white-space: nowrap; display: inline-block; }
        
        .content-area { padding: 30px; flex: 1; }
        .section-title { font-size: 14px; color: var(--text-muted); text-transform: uppercase; font-weight: bold; border-bottom: 1px solid var(--border-color); padding-bottom: 10px; margin: 10px 0 20px 0; letter-spacing: 1px; display: flex; align-items: center; gap: 8px; }
        .section-title i { color: var(--accent); }
        
        /* ESTILOS ESPECÍFICOS DO FORMULÁRIO DE DNS */
        .card { background: var(--bg-card); padding: 25px; border-radius: 10px; border: 1px solid var(--border-color); margin-bottom: 30px; }
        label { color: var(--text-muted); font-size: 13px; margin-bottom: 8px; display: block; font-weight: bold; }
        input { width: 100%; padding: 14px; background: #121519; border: 1px solid var(--border-color); color: white; border-radius: 6px; margin-bottom: 20px; box-sizing: border-box; font-family: inherit; }
        input:focus { outline: none; border-color: var(--accent); }
        
        .btn { padding: 12px 25px; border-radius: 6px; border: none; font-weight: bold; cursor: pointer; transition: 0.2s; font-family: inherit; }
        .btn-blue { background: var(--accent); color: white; }
        .btn-blue:hover { filter: brightness(0.8); }
        .btn-green { background: var(--success); color: white; width: 100%; margin-top: 15px; padding: 15px; }
        .btn-green:hover { background: #218838; }
        
        .preview-box { background: #121519; padding: 20px; border-radius: 8px; border: 1px solid var(--border-color); margin-top: 10px; }
        .preview-item { padding: 12px; border-bottom: 1px solid #222; font-size: 13px; word-break: break-all; }
        .preview-item:last-child { border-bottom: none; }
        .old-link { color: #dc3545; text-decoration: line-through; display: block; margin-bottom: 4px; margin-top: 4px; }
        .new-link { color: var(--success); display: block; font-weight: bold; }
        
        .alert { padding: 15px; border-radius: 6px; margin-bottom: 20px; border: 1px solid transparent; font-size: 14px; }
        .alert.success { background: rgba(40,167,69,0.1); color: var(--success); border-color: var(--success); }
        .alert.danger { background: rgba(220,53,69,0.1); color: #dc3545; border-color: #dc3545; }

        @media (max-width: 768px) { 
            .sidebar { position: fixed; left: -260px; height: 100%; box-shadow: 10px 0 20px rgba(0,0,0,0.5);} 
            .sidebar.active { left: 0; } 
            .menu-toggle { display: block; margin-right: 15px; } 
            .sidebar-overlay.active { display: block; } 
            .topbar { padding: 15px 20px; justify-content: flex-start; } 
            .topbar-right { margin-left: auto; }
            .content-area { padding: 15px; padding-bottom: 100px; } 
        }
    </style>
</head>
<body>
    <div class="sidebar-overlay" id="overlay" onclick="toggleMenu()"></div>
    
    <?php include 'sidebar.php'; ?>

    <div class="main-content">
        <header class="topbar">
            <div style="display:flex; align-items:center;">
                <button class="menu-toggle" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
                <h2 style="margin:0; font-size: 18px; color:white; margin-left: 10px;">Alterar Servidor</h2>
            </div>
            <div class="topbar-right">
                <span class="mode-badge"><i class="fas fa-database"></i> MODO: <?php echo defined('MODO_SISTEMA') ? strtoupper(MODO_SISTEMA) : strtoupper($modo_ativo); ?></span>
            </div>
        </header>

        <div class="content-area">
            <div class="section-title"><i class="fas fa-server"></i> Atualizar Links em Massa</div>
            
            <?php echo $msg; ?>
            
            <div class="card">
                <form method="POST">
                    <label><i class="fas fa-search"></i> COMO ESTÁ NO BANCO (Ex: sinalmycn.com:80)</label>
                    <input type="text" name="old_dns" value="<?php echo htmlspecialchars($old_dns); ?>" placeholder="Cole o DNS antigo ou IP aqui" required>
                    
                    <label><i class="fas fa-pen"></i> NOVO DNS (Ex: novodns.com:80)</label>
                    <input type="text" name="new_dns" value="<?php echo htmlspecialchars($new_dns); ?>" placeholder="Digite o DNS novo completo aqui" required>
                    
                    <button type="submit" name="gerar_previa" class="btn btn-blue"><i class="fas fa-eye"></i> VERIFICAR LINKS E GERAR PRÉVIA</button>
                </form>

                <?php if (!empty($preview)): ?>
                <div class="preview-box">
                    <h4 style="margin-top:0; color:white; border-bottom: 1px solid var(--border-color); padding-bottom: 10px;">Prévia dos links encontrados (Exibindo até 10):</h4>
                    
                    <?php foreach ($preview as $p): ?>
                    <div class="preview-item">
                        <strong><i class="fas fa-tv" style="color:var(--text-muted);"></i> <?php echo htmlspecialchars($p['nome']); ?></strong>
                        <span class="old-link"><i class="fas fa-times-circle"></i> <?php echo htmlspecialchars($p['velho']); ?></span>
                        <span class="new-link"><i class="fas fa-check-circle"></i> <?php echo htmlspecialchars($p['novo']); ?></span>
                    </div>
                    <?php endforeach; ?>
                    
                    <form method="POST" style="margin-top: 20px;" onsubmit="return confirm('ATENÇÃO: Deseja aplicar essa substituição de DNS em TODOS os canais e filmes do painel?')">
                        <input type="hidden" name="old_dns" value="<?php echo htmlspecialchars($old_dns); ?>">
                        <input type="hidden" name="new_dns" value="<?php echo htmlspecialchars($new_dns); ?>">
                        <button type="submit" name="substituir" class="btn btn-green"><i class="fas fa-sync-alt"></i> APLICAR MUDANÇA EM TODO O PAINEL</button>
                    </form>
                </div>
                <?php endif; ?>
            </div>
        </div>
        <?php include 'rodape.php'; ?>
        
    </div>

    <script>
        function toggleMenu() { 
            document.getElementById('sidebar').classList.toggle('active'); 
            document.getElementById('overlay').classList.toggle('active'); 
        }

        function toggleSubmenu(id) {
            const sub = document.getElementById(id);
            const arrow = document.getElementById('arrow-' + id);
            
            if (sub.style.display === "block") {
                sub.style.display = "none";
                if(arrow) arrow.classList.remove('rotate');
            } else {
                sub.style.display = "block";
                if(arrow) arrow.classList.add('rotate');
            }
        }
    </script>
    <script src="tema.js"></script>
</body>
</html>