#!/bin/bash

LOG_FILE="/var/www/html/wordpress-manager-v2/logs/permissions_debug.log"
mkdir -p "$(dirname "$LOG_FILE")"
exec > >(tee -a ${LOG_FILE}) 2>&1

echo "--- Ejecución: $(date) ---"
echo "Script: $0 | Proyecto: $1"

PROJECT="$1"
SITE_BASE="/var/www/html"
SITE="$SITE_BASE/$PROJECT"
USER_OWNER="$PROJECT"
BAD_PLUGINS_REGEX="asazysac|javax-|u-short|urshort"

if [ -z "$PROJECT" ]; then
    echo "Error: Debes especificar el nombre del proyecto/usuario. Uso: $0 nombre_proyecto"
    exit 1
fi

if [ ! -d "$SITE" ]; then
    echo "Error: El directorio $SITE no existe."
    exit 1
fi

# Quitar atributos de inmutabilidad para permitir cambios
chattr -i "$SITE/index.php" "$SITE/.htaccess" "$SITE/wp-config.php" 2>/dev/null
chattr -i "$SITE/wp-content/uploads/.htaccess" 2>/dev/null
chattr -i "$SITE/wp-content/.htaccess" 2>/dev/null
chattr -R -i "$SITE/wp-admin" "$SITE/wp-includes" 2>/dev/null

# Limpieza de plugins sospechosos
find "$SITE/wp-content/plugins" -maxdepth 1 -regextype posix-extended -regex ".*($BAD_PLUGINS_REGEX).*" -exec rm -rf {} + 2>/dev/null

# Reset de permisos base
chown -R "$USER_OWNER":"$USER_OWNER" "$SITE"
find "$SITE" -type d -exec chmod 755 {} \;
find "$SITE" -type f -exec chmod 644 {} \;

# Configuración específica de Uploads (Permitir escritura al servidor web)
mkdir -p "$SITE/wp-content/uploads"
chgrp -R www-data "$SITE/wp-content/uploads"
chmod -R 775 "$SITE/wp-content/uploads"

# Protección de Uploads contra ejecución de PHP
echo -e "<Files *.php>\n    deny from all\n</Files>" > "$SITE/wp-content/uploads/.htaccess"
chown "$USER_OWNER":www-data "$SITE/wp-content/uploads/.htaccess"
chmod 644 "$SITE/wp-content/uploads/.htaccess"
chattr +i "$SITE/wp-content/uploads/.htaccess"

# Protección de wp-content contra ejecución de PHP en la raíz
echo -e "<Files *.php>\n    deny from all\n</Files>" > "$SITE/wp-content/.htaccess"
chown "$USER_OWNER":"$USER_OWNER" "$SITE/wp-content/.htaccess"
chmod 644 "$SITE/wp-content/.htaccess"
chattr +i "$SITE/wp-content/.htaccess"

# Reestablecer index.php limpio
echo '<?php define("WP_USE_THEMES", true); require __DIR__ . "/wp-blog-header.php";' > "$SITE/index.php"

# Bloqueo de archivos críticos (Inmutabilidad)
chattr +i "$SITE/index.php"
chattr +i "$SITE/.htaccess"
chattr +i "$SITE/wp-config.php"
chattr -R +i "$SITE/wp-admin"
chattr -R +i "$SITE/wp-includes"
chattr +i "$SITE"/*.php

echo "Proceso de cierre de alta seguridad completado para $PROJECT ($SITE)"