#!/bin/bash

domain="$1"

if [ -z "$domain" ]; then
    echo "Uso: $0 <domínio>"
    exit 1
fi

# Consulta DNSSEC
output=$(dig +dnssec ANY "$domain")

# Obtém a data atual em segundos desde epoch no fuso horário UTC
current_time=$(date -u +%s)

echo "Expirações relevantes para o domínio $domain:" 
echo "--------------------------------------------------"
echo "$output" | awk -v current_time="$current_time" '{
    if ($4 == "RRSIG") {
        type=$5;  # O quinto campo indica o tipo de registro que está sendo assinado
        exp_date=$9;
        
        # Formata a data de expiração
        formatted_date = substr(exp_date, 1, 4) "-" substr(exp_date, 5, 2) "-" substr(exp_date, 7, 2) " " substr(exp_date, 9, 2) ":" substr(exp_date, 11, 2) ":" substr(exp_date, 13, 2);
        
        # Converte para timestamp Unix corretamente no UTC
        cmd="date -u -d \"" formatted_date " UTC\" +%s";
        cmd | getline exp_timestamp;
        close(cmd);
        
        # Calcula a diferença em dias
        diff_days = int((exp_timestamp - current_time) / 86400);
        
        # Define status (✅ se válido, ❌ se expirado)
        status = (exp_timestamp >= current_time) ? "✅" : "❌";
        
        # Formata saída legível no UTC
        cmd="date -u -d \"" formatted_date " UTC\" \"+%d de %B de %Y às %H:%M:%S UTC\"";
        cmd | getline final_date;
        close(cmd);
        
        printf "%s - RRSIG (%s): Expira em %s (%d dias restantes)\n", status, type, final_date, diff_days;
    }
}'


