<?php
// play.php - MODO OCULTO COM REDIRECIONAMENTO INTELIGENTE (XUI/LB)
ob_start();
error_reporting(0);
require_once 'config.php';

$token = $_GET['token'] ?? '';
$id = $_GET['id'] ?? '';

// Tenta pegar a extensão da URL se não vier no GET
$url_completa = $_SERVER['REQUEST_URI'];
$ext = $_GET['ext'] ?? 'ts'; 
if (preg_match('/\.([a-zA-Z0-9]{2,4})$/', $url_completa, $matches)) {
    $ext = strtolower($matches[1]);
}

if (strpos($token, 'NBR_') === 0) {
    $base64 = substr($token, 4);
    $decoded = base64_decode(strtr($base64, '-_', '+/'));
    
    if ($decoded && strpos($decoded, ':') !== false) {
        list($user, $pass) = explode(':', $decoded);
        
        // ==========================================================
        // 1. DESCOBRE O SERVIDOR REAL DE STREAMING (LOAD BALANCER OU XUI)
        // ==========================================================
        $pdo = getConexaoAtiva();
        $pdo_int = getConexaoInterna();
        
        $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? "https://" : "http://";
        $streamHost = $protocol . $_SERVER['HTTP_HOST']; // Fallback
        $dns_encontrado = false;

        // Tenta Load Balancer
        try {
            $stmtLb = $pdo->query("SELECT ip_servidor, porta FROM servidores_lb WHERE status = 1 ORDER BY id DESC LIMIT 1");
            $lbAtivo = $stmtLb->fetch(PDO::FETCH_ASSOC);
            if ($lbAtivo && !empty($lbAtivo['ip_servidor'])) {
                $porta_lb = (isset($lbAtivo['porta']) && $lbAtivo['porta'] != 80 && $lbAtivo['porta'] != '') ? ":" . $lbAtivo['porta'] : "";
                $dns_val = trim($lbAtivo['ip_servidor']) . $porta_lb;
                if (strpos($dns_val, 'http') !== 0) $dns_val = "http://" . $dns_val;
                $streamHost = rtrim($dns_val, '/');
                $dns_encontrado = true;
            }
        } catch(Exception $e){}

        // Tenta Servidor Oficial (XUI/Xtream)
        if (!$dns_encontrado) {
            try {
                $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
                $tabela_servidores = ($modo_ativo === 'xui') ? 'servers' : 'streaming_servers';
                $stmtDns = $pdo->query("SELECT * FROM $tabela_servidores ORDER BY id ASC LIMIT 1");
                $serverInfo = $stmtDns->fetch(PDO::FETCH_ASSOC);
                if ($serverInfo) {
                    $dns_val = '';
                    if (isset($serverInfo['domain_name']) && !empty(trim($serverInfo['domain_name']))) $dns_val = trim($serverInfo['domain_name']);
                    elseif (isset($serverInfo['server_ip']) && !empty(trim($serverInfo['server_ip']))) $dns_val = trim($serverInfo['server_ip']);

                    if (!empty($dns_val)) {
                        if (strpos($dns_val, 'http') !== 0) $dns_val = "http://" . $dns_val;
                        $streamHost = rtrim($dns_val, '/');
                    }
                }
            } catch(Exception $e){}
        }

        // ==========================================================
        // 2. DESCOBRE SE É FILME, SÉRIE OU CANAL
        // ==========================================================
        $tipo = 'live'; // Padrão
        try {
            $stmtType = $pdo->prepare("SELECT type FROM streams WHERE id = ? LIMIT 1");
            $stmtType->execute([$id]);
            $row = $stmtType->fetch(PDO::FETCH_ASSOC);
            if($row) {
                if($row['type'] == 2) $tipo = 'movie';
                elseif ($row['type'] == 5) $tipo = 'series';
            }
        } catch(Exception $e){}

        // Verifica se é episódio de série
        if ($tipo == 'live' || $tipo == 'movie') {
            try {
                $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
                $tabela_ep = ($modo_ativo === 'xui') ? 'streams_episodes' : 'series_episodes';
                $stmtEp = $pdo->prepare("SELECT id FROM $tabela_ep WHERE stream_id = ? LIMIT 1");
                $stmtEp->execute([$id]);
                if($stmtEp->fetch()) {
                    $tipo = 'series';
                }
            } catch (Exception $e){}
        }

        // ==========================================================
        // 3. MONTA O LINK REAL DO XUI E REDIRECIONA
        // ==========================================================
        if ($tipo === 'movie') {
            $link_real = "{$streamHost}/movie/{$user}/{$pass}/{$id}.{$ext}";
        } elseif ($tipo === 'series') {
            $link_real = "{$streamHost}/series/{$user}/{$pass}/{$id}.{$ext}";
        } else {
            $ext_final = ($ext === 'm3u8') ? 'm3u8' : 'ts';
            $link_real = "{$streamHost}/live/{$user}/{$pass}/{$id}.{$ext_final}";
        }
        
        ob_clean();
        header("Location: " . $link_real);
        exit;
    }
}

header("HTTP/1.0 403 Forbidden");
exit;