#!/bin/bash
# Script automat de fix pentru problema EXTENDED_ACCOUNTS
# Găsește TOATE fișierele ircd.conf și le fixează

echo "╔═══════════════════════════════════════════════════╗"
echo "║   FIX AUTOMAT EXTENDED_ACCOUNTS TRUE → FALSE     ║"
echo "╚═══════════════════════════════════════════════════╝"
echo ""

FIXED=0
FOUND=0

# Găsește toate fișierele ircd.conf
echo "[1/4] Căutare fișiere ircd.conf..."
CONFIGS=$(find /home -name "ircd.conf" 2>/dev/null)

if [ -z "$CONFIGS" ]; then
    echo "❌ EROARE: Nu am găsit niciun fișier ircd.conf în /home"
    echo ""
    echo "Caută manual cu:"
    echo "  find / -name ircd.conf 2>/dev/null"
    exit 1
fi

echo "✅ Găsite fișiere:"
echo "$CONFIGS"
echo ""

# Verifică și fixează fiecare fișier
echo "[2/4] Verificare și fix fișiere..."
for conf in $CONFIGS; do
    FOUND=$((FOUND + 1))
    echo ""
    echo "=== Procesare: $conf ==="

    # Verifică dacă există EXTENDED_ACCOUNTS = TRUE
    if grep -q '"EXTENDED_ACCOUNTS" = "TRUE"' "$conf" 2>/dev/null; then
        echo "⚠️  Găsit: EXTENDED_ACCOUNTS = TRUE"

        # Backup
        cp "$conf" "${conf}.backup.$(date +%Y%m%d_%H%M%S)"
        echo "📦 Backup creat: ${conf}.backup.$(date +%Y%m%d_%H%M%S)"

        # Fix
        sed -i 's/"EXTENDED_ACCOUNTS" = "TRUE"/"EXTENDED_ACCOUNTS" = "FALSE"/' "$conf"

        # Verifică fix
        if grep -q '"EXTENDED_ACCOUNTS" = "FALSE"' "$conf" 2>/dev/null; then
            echo "✅ FIXED: EXTENDED_ACCOUNTS = FALSE"
            FIXED=$((FIXED + 1))
        else
            echo "❌ EROARE: Fix eșuat pentru $conf"
        fi
    elif grep -q '"EXTENDED_ACCOUNTS" = "FALSE"' "$conf" 2>/dev/null; then
        echo "✅ OK: EXTENDED_ACCOUNTS = FALSE (deja corect)"
    else
        echo "⚠️  WARNING: EXTENDED_ACCOUNTS nu găsit în $conf"
        echo "   (Poate fi normal dacă e config vechi)"
    fi
done

echo ""
echo "[3/4] Verificare proces ircd..."
IRCD_PID=$(pgrep -f "ircd.*ircd.conf" | head -1)

if [ -z "$IRCD_PID" ]; then
    echo "⚠️  WARNING: Nu rulează niciun proces ircd"
    echo "   Pornește manual cu:"
    echo "   /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf"
else
    echo "✅ Proces ircd găsit: PID $IRCD_PID"
    IRCD_CMD=$(ps -p $IRCD_PID -o args= 2>/dev/null)
    echo "   Comandă: $IRCD_CMD"

    # Extrage calea config din comandă
    CONFIG_USED=$(echo "$IRCD_CMD" | grep -oP '(?<=-f )[^ ]+' | head -1)
    if [ -n "$CONFIG_USED" ]; then
        echo "   Config folosit: $CONFIG_USED"

        # Verifică dacă config-ul folosit e unul din cele fixate
        if echo "$CONFIGS" | grep -q "$CONFIG_USED"; then
            echo "   ✅ Config-ul folosit e în lista celor fixate"
        else
            echo "   ⚠️  WARNING: Config-ul folosit NU e în lista celor fixate!"
            echo "   Verifică manual: $CONFIG_USED"
        fi
    fi
fi

echo ""
echo "[4/4] Rezumat și acțiuni următoare..."
echo ""
echo "═══════════════════════════════════════════════════"
echo "REZUMAT:"
echo "  Fișiere găsite: $FOUND"
echo "  Fișiere fixate: $FIXED"
echo "═══════════════════════════════════════════════════"
echo ""

if [ $FIXED -gt 0 ]; then
    echo "✅ FIX APLICAT! Acum RESTART IRCd:"
    echo ""
    echo "   killall ircd"
    echo "   sleep 3"
    echo "   /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf"
    echo ""
    echo "Sau copiază și rulează:"
    echo ""
    echo "killall ircd && sleep 3 && /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf"
    echo ""
else
    echo "⚠️  Niciun fișier nu a fost modificat."
    echo ""
    echo "Posibile cauze:"
    echo "  1. EXTENDED_ACCOUNTS e deja FALSE (deja corect)"
    echo "  2. Lipsește din config (adaugă manual)"
    echo "  3. Config e în alt loc (verifică cu: find / -name ircd.conf)"
    echo ""
fi

echo "═══════════════════════════════════════════════════"
echo "Pentru verificare finală după restart:"
echo "  /stats f | grep EXTENDED"
echo ""
echo "Ar trebui să apară:"
echo "  F EXTENDED_ACCOUNTS FALSE"
echo "═══════════════════════════════════════════════════"

