<?php
session_start();
header('Content-Type: application/json');

// Ativar exibição de erros (opcional, remova em produção)
// error_reporting(E_ALL);
// ini_set('display_errors', 1);

define('ENCRYPTION_KEY', 'sua_chave_secreta_32_caracteres_aqui!'); // Mesma chave usada no outro arquivo

// Ler dados JSON do POST
$data = json_decode(file_get_contents('php://input'), true);
if (!$data) {
    echo json_encode(['success' => false, 'message' => 'Dados inválidos']);
    exit;
}

// Verificar token CSRF via cabeçalho
$csrf_token_header = $_SERVER['HTTP_X_CSRF_TOKEN'] ?? '';
if (empty($csrf_token_header) || $csrf_token_header !== ($_SESSION['csrf_token'] ?? '')) {
    echo json_encode(['success' => false, 'message' => 'Token CSRF inválido']);
    exit;
}

// Função para testar conexão IMAP (mesma do arquivo anterior)
function testImapConnection($email, $senha, $host, $port, $encryption) {
    $encryption = strtolower($encryption);
    $ssl_flags = [
        'ssl' => '/ssl/novalidate-cert',
        'tls' => '/tls/novalidate-cert',
        ''    => '/novalidate-cert'
    ];

    $ssl_flag = $ssl_flags[$encryption] ?? '/ssl/novalidate-cert';
    $mailbox = "{{$host}:{$port}/imap{$ssl_flag}}INBOX";

    imap_timeout(IMAP_OPENTIMEOUT, 10);
    imap_timeout(IMAP_READTIMEOUT, 10);
    imap_timeout(IMAP_WRITETIMEOUT, 10);
    imap_timeout(IMAP_CLOSETIMEOUT, 10);

    $original_error_level = error_reporting();
    error_reporting(E_ALL & ~E_WARNING);

    $imap = @imap_open($mailbox, $email, $senha, OP_HALFOPEN, 1);

    if ($imap === false) {
        $error = imap_last_error() ?: "Erro desconhecido ao conectar ao servidor IMAP";
        error_reporting($original_error_level);
        return $error;
    }

    imap_close($imap);
    error_reporting($original_error_level);
    return true;
}

// Validar parâmetros básicos
$email = filter_var($data['email'] ?? '', FILTER_VALIDATE_EMAIL);
$senha = $data['senha'] ?? '';
$imap_host = trim($data['imap_host'] ?? '');
$imap_port = intval($data['imap_port'] ?? 0);
$imap_secure = strtolower($data['imap_secure'] ?? 'ssl');

if (!$email || !$imap_host || $imap_port < 1 || $imap_port > 65535 || empty($senha)) {
    echo json_encode(['success' => false, 'message' => 'Parâmetros inválidos ou incompletos']);
    exit;
}

// Testar conexão
$result = testImapConnection($email, $senha, $imap_host, $imap_port, $imap_secure);
if ($result === true) {
    echo json_encode(['success' => true]);
} else {
    echo json_encode(['success' => false, 'message' => $result]);
}
