<?php
/* Script by BoxBR Apks Rebrand Panels (c) - https://t.me/boxbrapk / http://boxbr.k6.com.br */

ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(E_ALL);

// Parâmetros de URL com verificação para evitar Undefined index
$username = isset($_GET["username"]) ? $_GET["username"] : null;
$password = isset($_GET["password"]) ? $_GET["password"] : null;
$action = isset($_GET['action']) ? $_GET['action'] : '';
$category_id = isset($_GET['category_id']) ? $_GET['category_id'] : '';
$stream_id = isset($_GET['stream_id']) ? $_GET['stream_id'] : '';
$vod_id = isset($_GET['vod_id']) ? $_GET['vod_id'] : '';
$series_id = isset($_GET['series_id']) ? $_GET['series_id'] : '';

// Inicializa o banco de dados SQLite
$db = new SQLite3("./.boxbrdb.db");
$res = $db->query("SELECT * FROM dns");
$arr = [];

while ($row = $res->fetchArray(SQLITE3_ASSOC)) {
    $arr[] = $row['url'];  // Adiciona as URLs no array
}

$dns = NULL;

// Tenta autenticar com os DNSs encontrados
foreach ($arr as $dns3) {
    $api_call = call_api($dns3 . "/player_api.php?username=" . $username . "&password=" . $password);
    
    // Verifica se a resposta da API é válida antes de tentar acessar propriedades
    if ($api_call && isset($api_call->user_info) && $api_call->user_info->auth == 1 && $api_call->user_info->status == "Active") {
        $dns = $dns3;
        break;
    }
}

// Se um DNS válido foi encontrado, executa o redirecionamento
if ($dns !== NULL) {
    $url = $dns . '/player_api.php?username=' . $username . '&password=' . $password;

    // Adiciona parâmetros dinâmicos à URL com base nos valores recebidos
    if ($action) {
        $url .= '&action=' . $action;
    }

    if ($category_id) {
        $url .= '&category_id=' . $category_id;
    }

    if ($stream_id) {
        $url .= '&stream_id=' . $stream_id;
    }

    if ($vod_id) {
        $url .= '&vod_id=' . $vod_id;
    }

    if ($series_id) {
        $url .= '&series_id=' . $series_id;
    }

    // Realiza o redirecionamento
    header("Location: " . $url);
    die();
  
}

// Função para chamar a API e obter a resposta
function call_api($api_link)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_link);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    $result = curl_exec($ch);
    
    // Verifica se a resposta não está vazia e tenta decodificar o JSON
    if ($result) {
        $decoded_result = json_decode($result);
        curl_close($ch);
        return $decoded_result;
    } else {
        curl_close($ch);
        return NULL;  // Retorna NULL se a resposta não for válida
    }
}
?>
