#!/bin/bash
# NEMO 2026 - Cleanup Script
# DEDA Connect S.r.l. - https://repo.connectlabs.it
# Rimuove tutti i prerequisiti installati da nemo-prereq.sh
# USO: curl -sk https://repo.connectlabs.it/nemo-cleanup.sh | sudo bash

if [ "$EUID" -ne 0 ]; then
    echo ""
    echo "  NEMO 2026 - Cleanup"
    echo "  Errore: questo script richiede i privilegi di root."
    echo ""
    echo "  Rieseguire con:"
    echo "    curl -sk https://repo.connectlabs.it/nemo-cleanup.sh | sudo bash"
    echo ""
    exit 1
fi

RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'
info()  { echo -e "${GREEN}[INFO]${NC}  $1"; }
warn()  { echo -e "${YELLOW}[WARN]${NC}  $1"; }

echo "================================================"
echo " NEMO 2026 - Cleanup prerequisites"
echo " $(date)"
echo "================================================"
echo ""
warn "Questo script rimuovera' MariaDB, ClickHouse, RabbitMQ,"
warn "PHP, nginx, httpd, fail2ban, Composer e l'utente nemo."
echo ""
read -p "Sei sicuro di voler procedere? [s/N] " CONFIRM
[ "${CONFIRM,,}" != "s" ] && echo "Annullato." && exit 0
echo ""

# Stop servizi
info "Stop servizi..."
for svc in nemo mariadb clickhouse-server rabbitmq-server php-fpm nginx httpd fail2ban; do
    systemctl stop $svc 2>/dev/null && \
        systemctl disable $svc 2>/dev/null && \
        info "  $svc: fermato" || true
done

# Rimozione NEMO
info "Rimozione pacchetti NEMO..."
dnf remove -y nemo-www nemo-daemon nemo-setup 2>/dev/null | tail -2
rm -rf /var/nemo /etc/nemo /etc/systemd/system/nemo.service 2>/dev/null
systemctl daemon-reload 2>/dev/null

# Rimozione MariaDB + dati
info "Rimozione MariaDB..."
dnf remove -y MariaDB-server MariaDB-client MariaDB-common 2>/dev/null | tail -2
rm -rf /var/lib/mysql /etc/my.cnf /etc/my.cnf.d 2>/dev/null
rm -f /etc/yum.repos.d/mariadb.repo 2>/dev/null

# Rimozione ClickHouse
info "Rimozione ClickHouse..."
dnf remove -y clickhouse-server clickhouse-client clickhouse-common-static 2>/dev/null | tail -2
rm -rf /var/lib/clickhouse /etc/clickhouse-server /var/log/clickhouse-server 2>/dev/null
rm -f /etc/yum.repos.d/clickhouse.repo 2>/dev/null

# Rimozione RabbitMQ + Erlang
info "Rimozione RabbitMQ ed Erlang..."
dnf remove -y rabbitmq-server erlang 2>/dev/null | tail -2
rm -rf /var/lib/rabbitmq /etc/rabbitmq 2>/dev/null
rm -f /etc/yum.repos.d/rabbitmq.repo 2>/dev/null

# Rimozione PHP
info "Rimozione PHP..."
dnf remove -y php php-fpm php-cli php-common php-mysqlnd php-pdo \
    php-mbstring php-xml php-json php-curl php-gd php-zip \
    php-snmp php-bcmath php-intl php-ldap php-soap php-opcache \
    remi-release 2>/dev/null | tail -2
dnf module reset php -y -q 2>/dev/null
rm -rf /etc/php.d /etc/php-fpm.d /var/lib/php /var/log/php-fpm 2>/dev/null

# Rimozione nginx
info "Rimozione nginx..."
dnf remove -y nginx 2>/dev/null | tail -2
rm -rf /etc/nginx /var/log/nginx 2>/dev/null

# Rimozione httpd
info "Rimozione httpd..."
dnf remove -y httpd mod_ssl 2>/dev/null | tail -2
rm -rf /etc/httpd /var/log/httpd 2>/dev/null

# Rimozione fail2ban
info "Rimozione fail2ban..."
dnf remove -y fail2ban fail2ban-firewalld fail2ban-server 2>/dev/null | tail -2
rm -rf /etc/fail2ban /var/log/fail2ban* 2>/dev/null

# Rimozione Composer
info "Rimozione Composer..."
rm -f /usr/local/bin/composer 2>/dev/null

# Rimozione repo NEMO
info "Rimozione repository NEMO..."
rm -f /etc/yum.repos.d/nemo.repo 2>/dev/null
rpm -e gpg-pubkey --allmatches 2>/dev/null | grep -i connectlabs || true

# Rimozione utente nemo
info "Rimozione utente nemo..."
userdel -r nemo 2>/dev/null && info "  utente nemo rimosso" || warn "  utente nemo non trovato"

# Pulizia log
info "Pulizia log..."
rm -f /var/log/nemo-prereq.log /tmp/nemo-prereq.log 2>/dev/null
rm -rf /var/log/nemo 2>/dev/null

# Pulizia dnf cache
info "Pulizia cache dnf..."
dnf clean all -q 2>/dev/null

# Ripristino firewall regole aggiunte
info "Rimozione regole firewall NEMO..."
firewall-cmd --permanent --remove-service=http  &>/dev/null || true
firewall-cmd --permanent --remove-service=https &>/dev/null || true
firewall-cmd --permanent --remove-rich-rule='rule service name="ssh" limit value="3/m" accept' &>/dev/null || true
firewall-cmd --reload &>/dev/null || true

echo ""
echo "================================================"
info "Cleanup completato."
warn "Nota: EPEL e net-snmp non sono stati rimossi"
warn "perche' potrebbero essere usati da altri servizi."
warn "Per rimuoverli manualmente:"
warn "  dnf remove -y epel-release net-snmp net-snmp-utils"
echo "================================================"
