#!/bin/bash

# --- CONFIGURAÇÕES ---
URL_ORIGEM="http://infra.ecargoasp.com.br/NovoCertificado.pfx"
DIR_DESTINO="CertUpdate"
PFX_FILE="$DIR_DESTINO/NovoCertificado.pfx"
KEY_FILE="$DIR_DESTINO/modern.key"
CERT_FILE="$DIR_DESTINO/fullchain.pem"

# Lista de namespaces atualizada
NAMESPACES=("ecargo" "ingress-nginx" "ecargo-rosa" "ecargo-verde" "ecargo-azul")

SECRET_NAME="tls-modern"
DOMAIN="rosatms.modern.com.br"

echo "=========================================================="
echo "    AUTOMAÇÃO DE CERTIFICADO - DOMÍNIO: $DOMAIN"
echo "=========================================================="

# --- 1. CRIAR PASTA SE NÃO EXISTIR ---
if [ ! -d "$DIR_DESTINO" ]; then
    echo "Criando pasta $DIR_DESTINO..."
    mkdir -p "$DIR_DESTINO"
fi

# --- 2. DOWNLOAD DO CERTIFICADO ---
echo "Baixando novo certificado de $URL_ORIGEM..."
curl -s -o "$PFX_FILE" "$URL_ORIGEM"

if [ $? -ne 0 ] || [ ! -f "$PFX_FILE" ]; then
    echo "ERRO: Falha ao baixar o arquivo PFX. Verifique a conexão ou a URL."
    exit 1
fi
echo "Download concluído com sucesso."

# --- 3. SOLICITAR SENHA DO PFX ---
read -s -p "Digite a senha do arquivo PFX: " PFX_PASS
echo -e "\nSenha capturada. Iniciando conversão..."

# --- 4. CONVERSÃO DO PFX COM OPENSSL ---
openssl pkcs12 -in "$PFX_FILE" -nocerts -out "$KEY_FILE" -nodes -passin pass:"$PFX_PASS" 2>/dev/null
openssl pkcs12 -in "$PFX_FILE" -nokeys -out "$CERT_FILE" -passin pass:"$PFX_PASS" 2>/dev/null

if [ $? -ne 0 ]; then
    echo "ERRO: Falha na conversão. Senha incorreta?"
    rm -f "$PFX_FILE" "$KEY_FILE" "$CERT_FILE"
    exit 1
fi

echo "Arquivos .key e .pem gerados em $DIR_DESTINO."

# --- 5. ATUALIZAÇÃO NO KUBERNETES ---
for ns in "${NAMESPACES[@]}"; do
    echo "----------------------------------------------------------"
    echo "Atualizando Secret $SECRET_NAME no namespace: $ns"

    kubectl create secret tls "$SECRET_NAME" \
      --cert="$CERT_FILE" \
      --key="$KEY_FILE" \
      -n "$ns" \
      --dry-run=client -o yaml | kubectl apply -f -
done

# --- 6. RESTART DO INGRESS CONTROLLER ---
echo "----------------------------------------------------------"
echo "Reiniciando Ingress Controller..."
kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx

# --- 7. VALIDAÇÃO FINAL ---
echo "Aguardando 5 segundos para propagação..."
sleep 5
echo "VALIDAÇÃO DO CERTIFICADO EM $DOMAIN:"
echo | openssl s_client -connect "$DOMAIN:443" -servername "$DOMAIN" 2>/dev/null | openssl x509 -noout -dates

# --- 8. LIMPEZA DE SEGURANÇA ---
rm -f "$PFX_FILE" "$KEY_FILE" "$CERT_FILE"
echo "----------------------------------------------------------"
echo "PROCESSO CONCLUÍDO! Arquivos sensíveis removidos de $DIR_DESTINO."