#!/bin/bash

# 1. Validar que se haya pasado la ruta del proyecto
if [ -z "$1" ]; then
    echo "?? Error: Debes indicar la ruta del proyecto."
    echo "?? Uso: ./buscar_aws_final.sh /var/www/html/emergencias"
    exit 1
fi

DIRECTORIO=${1%/} # Quita la barra final si el usuario la pone
NOMBRE_PROYECTO=$(basename "$DIRECTORIO" | tr '[:lower:]' '[:upper:]')
REPORTE="reporte_aws_$(basename "$DIRECTORIO")_$(date +%F_%H-%M).txt"

echo "?? Escaneando archivos y base de datos en: $DIRECTORIO..."

# --- ARCHIVOS TEMPORALES SEGUROS ---
TMP_FULL=$(mktemp)

# 2. ESCANEO ÚNICO MAESTRO: Ignora carpetas pesadas y extensiones binarias
grep -rnIE --exclude-dir={cache,logs,node_modules,vendor,.tmb,updraft} \
           --exclude=\*.{png,jpg,jpeg,gif,svg,ico,pdf,zip,tar,gz,mp4} \
           "(cloudfront\.net|s3\.amazonaws\.com)" "$DIRECTORIO" > "$TMP_FULL"

# Extraer URLs limpias para contar
TOTAL_URLS=$(wc -l < "$TMP_FULL")
CF_UNICOS=$(grep -oE "https?://[a-zA-Z0-9.-]*cloudfront\.net" "$TMP_FULL" | sort -u)
S3_UNICOS=$(grep -oE "https?://[a-zA-Z0-9.-]*s3\.amazonaws\.com" "$TMP_FULL" | sort -u)

# --- CONSTRUCCIÓN DEL REPORTE ---
{
    echo "------------------------------------------------------------"
    echo "REPORTE DE CLOUDFRONT Y S3 ($NOMBRE_PROYECTO)"
    echo "------------------------------------------------------------"
    echo ""
    echo "?? Total de URLs encontradas en código: $TOTAL_URLS"
    echo "?? CloudFronts ÚNICOS encontrados: $(echo -n "$CF_UNICOS" | grep -c '^')"
    echo "?? S3 ÚNICOS encontrados: $(echo -n "$S3_UNICOS" | grep -c '^')"
    echo ""

    echo " Lista de CloudFronts únicos:"
    [ -n "$CF_UNICOS" ] && echo "$CF_UNICOS" | sed 's/^/  - /' || echo "  - (Ninguno)"
    echo ""

    echo " Lista de S3 únicos:"
    [ -n "$S3_UNICOS" ] && echo "$S3_UNICOS" | sed 's/^/  - /' || echo "  - (Ninguno)"
    echo ""

    echo "------------------------------------------------------------"
    echo " Ubicaciones exactas en el código:"
    # Formateo limpio: [Archivo: ruta | Línea: X] -> Contenido
    awk -F':' '{
        file=$1; line=$2; 
        content=$3; for(i=4; i<=NF; i++) content=content":"$i;
        print "  [Archivo: " file " | Línea: " line "] -> " content
    }' "$TMP_FULL"

    echo ""
    echo "------------------------------------------------------------"
    echo " RESULTADOS EN BASE DE DATOS (wp_posts, wp_postmeta, wp_options)"
    echo "------------------------------------------------------------"
    
    # Búsqueda en base de datos sin necesidad de hacer "cd" usando el parámetro --path
    if wp core is-installed --path="$DIRECTORIO" --allow-root >/dev/null 2>&1; then
        echo ">> Coincidencias para 'cloudfront.net':"
        wp db search "cloudfront.net" wp_posts wp_postmeta wp_options --stats --path="$DIRECTORIO" --allow-root
        echo ""
        echo ">> Coincidencias para 's3.amazonaws.com':"
        wp db search "s3.amazonaws.com" wp_posts wp_postmeta wp_options --stats --path="$DIRECTORIO" --allow-root
    else
        echo "?? WP-CLI no detectó WordPress en esta ruta."
    fi

} > "$REPORTE"

# Limpieza
rm -f "$TMP_FULL"

echo "? Auditoría completada. Resultados guardados en: $REPORTE"