<?php
// Depto de Engenharia e Automacao - Master Automacao - Autor: Derlivon Silva
// Tela admin: configurar senha de email (criptografada) + testar envio.
//
// Acesso protegido por session com 'senha_admin' do config.php.
// Senha gravada criptografada em emails.php (campo smtp_pass_enc).

session_start();
require_once __DIR__ . '/crypto.php';
require_once __DIR__ . '/SmtpClient.php';

$base = __DIR__;
$cfgFile   = $base . '/config.php';
$emailFile = $base . '/emails.php';

if (!is_file($cfgFile)) { die('config.php nao encontrado'); }
$cfg = include $cfgFile;
$senhaAdmin = (string)($cfg['senha_admin'] ?? '');
$token      = (string)($cfg['token'] ?? '');

// ── Login admin ───────────────────────────────────────────────────────
if (!empty($_POST['_logout'])) { session_destroy(); header('Location: config-email.php'); exit; }
if (empty($_SESSION['admin_ok'])) {
    if (!empty($_POST['_login']) && hash_equals($senhaAdmin, (string)($_POST['senha'] ?? ''))) {
        $_SESSION['admin_ok'] = true;
        header('Location: config-email.php'); exit;
    }
    $errLogin = !empty($_POST['_login']) ? 'Senha incorreta' : '';
    ?><!doctype html><meta charset=utf-8><title>Login</title>
    <style>body{font-family:system-ui;background:#0f1117;color:#e2e8f0;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0}
    .box{background:#1a1f2e;padding:2rem;border-radius:12px;border:1px solid #2d3452;min-width:300px}
    h1{margin:0 0 1rem;font-size:1.1rem;color:#f97316}
    input{width:100%;padding:.7rem;background:#0d1526;border:1px solid #2d3452;color:#e2e8f0;border-radius:6px;font-size:1rem;box-sizing:border-box}
    button{width:100%;margin-top:.8rem;padding:.7rem;background:#f97316;border:0;color:#fff;border-radius:6px;font-size:1rem;font-weight:700;cursor:pointer}
    .err{color:#dc2626;font-size:.85rem;margin-top:.5rem}</style>
    <div class=box><h1>🔒 Painel Central — Admin</h1>
    <form method=post><input type=password name=senha placeholder="Senha de admin" autofocus>
    <button type=submit name=_login value=1>Entrar</button>
    <?php if($errLogin): ?><div class=err><?= htmlspecialchars($errLogin) ?></div><?php endif; ?>
    </form></div><?php
    exit;
}

// ── Le config atual ───────────────────────────────────────────────────
$padrao = [
    'smtp_host' => 'smtp.gmail.com',
    'smtp_port' => 587,
    'smtp_user' => 'derlivon89@gmail.com',
    'de'        => 'derlivon89@gmail.com',
    'para'      => 'derlivon89@gmail.com',
    'smtp_pass_enc' => '',
];
$emailCfg = is_file($emailFile) ? (include $emailFile) : [];
if (!is_array($emailCfg)) $emailCfg = [];
$emailCfg = array_merge($padrao, $emailCfg);

$msg = '';
$tipoMsg = '';

// ── Salvar senha ──────────────────────────────────────────────────────
if (!empty($_POST['_salvar'])) {
    $novaSenha = (string)($_POST['senha_app'] ?? '');
    $novaSenha = preg_replace('/\s+/', '', $novaSenha);  // tira espacos (Google manda com)
    if ($novaSenha === '') {
        $msg = 'Cole a senha de app do Gmail no campo';
        $tipoMsg = 'erro';
    } else {
        $emailCfg['smtp_pass_enc'] = cryptoEncrypt($novaSenha, $token);
        $emailCfg['smtp_user'] = trim((string)($_POST['smtp_user'] ?? $emailCfg['smtp_user']));
        $emailCfg['de']        = $emailCfg['smtp_user'];
        $emailCfg['para']      = trim((string)($_POST['para'] ?? $emailCfg['para']));
        $php = "<?php\n// Gerado pelo painel — NAO editar manualmente. Senha esta criptografada.\nreturn " . var_export($emailCfg, true) . ";\n";
        if (@file_put_contents($emailFile, $php) === false) {
            $msg = 'Erro ao salvar: sem permissao de escrita em ' . $emailFile;
            $tipoMsg = 'erro';
        } else {
            $msg = 'Senha salva com sucesso (criptografada)';
            $tipoMsg = 'ok';
        }
    }
}

// ── Testar envio ──────────────────────────────────────────────────────
if (!empty($_POST['_testar'])) {
    $envio = $emailCfg;
    $envio['smtp_pass'] = cryptoDecrypt((string)$envio['smtp_pass_enc'], $token);
    if ($envio['smtp_pass'] === '') {
        $msg = 'Senha nao configurada ainda. Salve a senha primeiro.';
        $tipoMsg = 'erro';
    } else {
        $r = SmtpClient::enviar(
            $envio,
            '✅ [TESTE] Painel Central de Backups',
            '<h2 style="color:#16a34a">Teste de envio OK</h2>'
            . '<p>Se voce esta lendo este email, o painel central de backups esta configurado corretamente.</p>'
            . '<p><small>Servidor: ' . htmlspecialchars(gethostname()) . ' • ' . date('d/m/Y H:i:s') . '</small></p>'
        );
        if ($r['ok']) {
            $msg = 'Email de teste enviado! Verifique a caixa de entrada de ' . htmlspecialchars($emailCfg['para']);
            $tipoMsg = 'ok';
        } else {
            $msg = 'Falha ao enviar: ' . htmlspecialchars((string)($r['erro'] ?? 'erro desconhecido'));
            $tipoMsg = 'erro';
        }
    }
}

$senhaConfigurada = !empty($emailCfg['smtp_pass_enc']);
?><!doctype html>
<html lang=pt-BR><meta charset=utf-8>
<title>Configurar Email — Painel Central</title>
<style>
body{font-family:system-ui;background:#0f1117;color:#e2e8f0;margin:0;padding:2rem}
.box{max-width:600px;margin:0 auto;background:#1a1f2e;border:1px solid #2d3452;border-radius:12px;padding:2rem}
h1{margin:0 0 .3rem;font-size:1.3rem;color:#f97316}
h2{margin:1.5rem 0 .5rem;font-size:.95rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.05em}
label{display:block;margin:.8rem 0 .3rem;font-size:.8rem;color:#94a3b8}
input,textarea{width:100%;padding:.6rem;background:#0d1526;border:1px solid #2d3452;color:#e2e8f0;border-radius:6px;font-size:.95rem;box-sizing:border-box;font-family:inherit}
input:focus{outline:1px solid #f97316;border-color:#f97316}
button{padding:.65rem 1.2rem;background:#f97316;border:0;color:#fff;border-radius:6px;font-size:.92rem;font-weight:700;cursor:pointer;margin-top:.8rem;margin-right:.5rem}
button.sec{background:#334155}
button.danger{background:#dc2626;float:right}
.msg{padding:.8rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}
.msg.ok{background:rgba(34,197,94,.15);color:#86efac;border:1px solid rgba(34,197,94,.3)}
.msg.erro{background:rgba(239,68,68,.15);color:#fca5a5;border:1px solid rgba(239,68,68,.3)}
.fixo{padding:.6rem;background:#0d1526;border:1px solid #2d3452;border-radius:6px;color:#64748b;font-size:.85rem}
.status{display:inline-block;padding:.2rem .55rem;border-radius:5px;font-size:.7rem;font-weight:700}
.status.ok{background:rgba(34,197,94,.2);color:#86efac}
.status.no{background:rgba(239,68,68,.2);color:#fca5a5}
.help{font-size:.75rem;color:#64748b;margin-top:.3rem;line-height:1.5}
.help a{color:#60a5fa}
a.voltar{color:#64748b;font-size:.85rem;text-decoration:none}
a.voltar:hover{color:#e2e8f0}
hr{border:0;border-top:1px solid #2d3452;margin:1.5rem 0}
</style>
<body>
<div class=box>
  <a href="index.php" class=voltar>← Voltar pro painel</a>
  <h1 style="margin-top:.5rem">🔒 Configuração de Email</h1>
  <p style="color:#64748b;font-size:.85rem;margin:.3rem 0 1rem">
    Status: <?php if($senhaConfigurada): ?><span class="status ok">Senha configurada</span><?php else: ?><span class="status no">Senha ainda não configurada</span><?php endif; ?>
  </p>

  <?php if($msg): ?><div class="msg <?= $tipoMsg ?>"><?= htmlspecialchars($msg) ?></div><?php endif; ?>

  <form method=post>
    <h2>📡 SMTP — Gmail (já configurado)</h2>
    <label>Servidor</label><div class=fixo>smtp.gmail.com : 587 (STARTTLS)</div>

    <label>Email remetente / Usuário</label>
    <input type=email name=smtp_user value="<?= htmlspecialchars($emailCfg['smtp_user'] ?: 'derlivon89@gmail.com') ?>" required>

    <label>Destinatário (separe vários por vírgula)</label>
    <input type=text name=para value="<?= htmlspecialchars($emailCfg['para'] ?: 'derlivon89@gmail.com') ?>" required>

    <h2>🔑 Senha de App do Gmail</h2>
    <label>Senha de app (16 caracteres do Google)</label>
    <?php /* REGRA: senha NUNCA pre-preenchida no value — sempre digitada pelo usuario */ ?>
    <input type=password name=senha_app autocomplete="new-password" placeholder="<?= $senhaConfigurada ? '••••••••  (deixe vazio pra manter a atual)' : 'cole aqui a senha de app' ?>">
    <div class=help>
      Como gerar: <a href="https://myaccount.google.com/apppasswords" target=_blank>myaccount.google.com/apppasswords</a><br>
      Precisa ter Verificação em 2 etapas ativada na conta Google.<br>
      Em "App", escolha "Outro (nome personalizado)" → digite "Painel Backup" → Gerar.<br>
      Cole os 16 caracteres (pode colar com espaços — eles são removidos automaticamente).<br>
      🛡️ A senha é criptografada antes de salvar — quem abrir o arquivo só vê hash.
    </div>

    <hr>
    <button type=submit name=_salvar value=1>💾 Salvar</button>
    <button type=submit name=_testar value=1 class=sec>🔔 Testar envio agora</button>
    <button type=submit name=_logout value=1 class=danger>Sair</button>
  </form>
</div>
</body></html>
