<?php

// Exibe os erros para depuração
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Conecta ao banco de dados SQLite
$db = new SQLite3('./a/.eggziedb.db');
$db->exec('CREATE TABLE IF NOT EXISTS ibo(id INTEGER PRIMARY KEY NOT NULL, mac_address VARCHAR(100), username VARCHAR(100), password VARCHAR(100), expire_date VARCHAR(100), url VARCHAR(100), title VARCHAR(100), created_at VARCHAR(100))');

// Função para extrair os parâmetros do link M3U
function extractM3UData($m3uLink) {
    $data = [];

    // Tenta extrair a URL do servidor (DNS) de maneira mais robusta
    preg_match('/^(https?:\/\/[^\/]+)/', $m3uLink, $matches); // Regex para capturar a URL base
    $data['server_url'] = $matches[1] ?? 'DNS não encontrado';  // Usar o valor extraído ou um fallback

    // Extrai os outros parâmetros do link M3U
    $data['username'] = getParameterByName("username", $m3uLink); // Extrai o nome de usuário
    $data['password'] = getParameterByName("password", $m3uLink); // Extrai a senha
    $data['mac_address'] = getParameterByName("mac", $m3uLink); // Extrai o MAC
    return $data;
}

// Função para buscar parâmetros da URL
function getParameterByName($name, $url) {
    $name = preg_quote($name, '/');
    $regex = "/[?&]{$name}(=([^&#]*)|&|#|$)/";
    preg_match($regex, $url, $matches);
    return isset($matches[2]) ? urldecode($matches[2]) : null;
}

// Processa o formulário quando o usuário clica no botão de cadastro
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $macAddress = strtoupper($_POST['mac_address']);
    $m3uLink = $_POST['m3u_address'];

    // Extrai dados do link M3U
    $data = extractM3UData($m3uLink);

    // A data de expiração pode ser definida automaticamente (se necessário), ou pode ser fixada
    $expireDate = '9000-12-30'; // Exemplo de data de expiração padrão

    // Gera o timestamp de criação
    $createdAt = date('Y-m-d\TH:i:s.000000Z');

    // Insere os dados no banco de dados
    $stmt = $db->prepare('INSERT INTO ibo(mac_address, username, password, expire_date, url, title, created_at) VALUES(:mac_address, :username, :password, :expire_date, :url, :title, :created_at)');
    $stmt->bindValue(':mac_address', $macAddress);
    $stmt->bindValue(':username', $data['username']);
    $stmt->bindValue(':password', $data['password']);
    $stmt->bindValue(':expire_date', $expireDate);
    $stmt->bindValue(':url', $data['server_url']); // Garante que o DNS seja inserido corretamente
    $stmt->bindValue(':title', $data['username']); // Preenche com o 'username' do link M3U
    $stmt->bindValue(':created_at', $createdAt);
    $stmt->execute();

    // Redireciona para a página de usuários após o cadastro
    header('Location: users.php');
    exit();
}

include 'includes/header.php';
?>

<div class="container-fluid">
    <h1 class="h3 mb-1 text-gray-800">Ativar Usuário</h1>
    <div class="card border-left-primary shadow h-100 card shadow mb-4">
        <div class="card-header py-3">
            <h6 class="m-0 font-weight-bold text-primary"><i class="fas fa-user"></i> Detalhes do usuário</h6>
        </div>
        <div class="card-body">
            <form method="post">
                <!-- Campo para o link M3U -->
                <div class="form-group">
                    <label class="control-label" for="m3u_address">
                        <strong>Link M3U</strong>
                    </label>
                    <div class="input-group">
                        <input class="form-control text-primary" id="m3u_address" name="m3u_address" placeholder="Cole Aqui o LINK M3U" type="text" required/>
                    </div>
                </div>

                <!-- Campo para o código MAC -->
                <div class="form-group">
                    <label class="control-label" for="mac_address">
                        <strong>Endereço MAC</strong>
                    </label>
                    <div class="input-group">
                        <input class="form-control text-primary" id="mac_address" name="mac_address" placeholder="Digite o Endereço MAC Aqui" type="text" required/>
                    </div>
                </div>

                <!-- Campo para o nome (oculto) -->
                <div class="form-group" style="display:none;">
                    <label class="control-label" for="nome">
                        <strong>Nome</strong>
                    </label>
                    <div class="input-group">
                        <input type="text" class="form-control text-primary" name="nome" id="nome" placeholder="Nome" value="" readonly/>
                    </div>
                </div>

                <!-- Campo para a senha do usuário (oculto) -->
                <div class="form-group" style="display:none;">
                    <label class="control-label" for="password">
                        <strong>Senha</strong>
                    </label>
                    <div class="input-group">
                        <input type="text" class="form-control text-primary" name="password" id="password" placeholder="Senha" value="" readonly/>
                    </div>
                </div>

                <!-- Campo DNS (oculto) -->
                <div class="form-group" style="display:none;">
                    <label class="control-label" for="dns">
                        <strong>Servidor DNS</strong>
                    </label>
                    <div class="input-group">
                        <input type="text" class="form-control text-primary" name="dns" id="dns" placeholder="DNS do servidor" value="" readonly/>
                    </div>
                </div>

                <!-- Campo de expiração (ocultado) -->
                <div class="form-group" style="display:none;">
                    <label class="control-label" for="expire_date">
                        <strong>Expiração do Acesso</strong>
                    </label>
                    <div class="input-group">
                        <input type="text" class="form-control text-primary" name="expire_date" id="expire_date" value="9000-12-30" readonly/>
                    </div>
                </div>

                <!-- Botão de cadastro -->
                <div class="form-group">
                    <div>
                        <button class="btn btn-success btn-icon-split" type="submit">
                            <span class="icon text-white-50"><i class="fas fa-check"></i></span><span class="text">Cadastrar</span>
                        </button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
// Função para preencher automaticamente os campos com base no link M3U
document.addEventListener("DOMContentLoaded", function() {
    document.getElementById("m3u_address").addEventListener("input", function() {
        var m3uLink = this.value;
        var data = extractM3UData(m3uLink);

        document.getElementById("nome").value = data.username; // Preenche o campo "Nome" com o username
        document.getElementById("password").value = data.password;
        document.getElementById("dns").value = data.server_url; // Preenche corretamente o DNS
    });
});

// Função que extrai os dados do link M3U
function extractM3UData(m3uLink) {
    return {
        server_url: m3uLink.split("/get.php")[0],  // Extrai corretamente o DNS
        username: getParameterByName("username", m3uLink),
        password: getParameterByName("password", m3uLink),
        mac_address: getParameterByName("mac", m3uLink)
    };
}

// Função para obter parâmetros da URL
function getParameterByName(name, url) {
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return "";
    if (!results[2]) return "";
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}
</script>

<?php include 'includes/footer.php'; ?>
