#!/bin/bash
#
# Script helper pentru administrare UnderChat IRCd
# Limba: Română
#

# Culori
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
ROSU='\033[0;31m'
NC='\033[0m'

PREFIX="${PREFIX:-$HOME/ircd}"
IRCD_BIN="$PREFIX/bin/ircd"
UMKPASSWD_BIN="$PREFIX/bin/umkpasswd"
CONFIG_FILE="${PREFIX}/etc/ircd.conf"
LOG_FILE="${PREFIX}/log/ircd.log"

# Meniu principal
show_menu() {
    clear

    # Verifică dacă config există
    if [ ! -f "$CONFIG_FILE" ]; then
        echo -e "${ROSU}"
        echo "╔════════════════════════════════════════╗"
        echo "║   AVERTISMENT: Config nu găsit!       ║"
        echo "╚════════════════════════════════════════╝"
        echo -e "${NC}"
        echo ""
        echo -e "${GALBEN}Fișierul de configurare nu există la:${NC}"
        echo "  $CONFIG_FILE"
        echo ""
        echo -e "${GALBEN}Opțiuni:${NC}"
        echo "  1) Creare automat config standard"
        echo "  2) Continue fără config (recomandă-se fix 1)"
        echo ""
        read -p "Alege [1-2]: " config_choice

        if [ "$config_choice" = "1" ]; then
            create_default_config
        fi
    fi

    echo -e "${ALBASTRU}"
    echo "╔════════════════════════════════════════╗"
    echo "║   Administrator UnderChat IRCd        ║"
    echo "║   Versiune: v1.0.1                     ║"
    echo "╚════════════════════════════════════════╝"
    echo -e "${NC}"
    echo ""
    echo -e "${GALBEN}Opțiuni disponibile:${NC}"
    echo "  1) Pornire server"
    echo "  2) Oprire server"
    echo "  3) Restart server"
    echo "  4) Verifica status"
    echo "  5) Editare configurare"
    echo "  6) Vizionare log-uri"
    echo "  7) Generare parola operator"
    echo "  8) Test sintaxă configurare"
    echo "  9) Iesire"
    echo ""
    echo -n -e "${GALBEN}Alege opțiune [1-9]:${NC} "
}

# Funcție pentru creare config standard
create_default_config() {
    echo -e "${ALBASTRU}[+] Creare config standard...${NC}"

    # Crează directoarele dacă nu există
    mkdir -p "$(dirname "$CONFIG_FILE")"
    mkdir -p "$PREFIX/log"
    mkdir -p "$PREFIX/var"

    # Crează un config de bază
    cat > "$CONFIG_FILE" << 'EOFCONFIG'
# UnderChat IRCd - Configurare Standard
# Generated automat - Please customize!

General {
    name = "irc.underchat.org";
    vhost = "127.0.0.1";
    description = "UnderChat IRCd Server";
    numeric = 1;
    dns server = "8.8.8.8";
    dns server = "1.1.1.1";
};

Admin {
    Location = "UnderChat Network";
    Location = "Underchat Edition";
    Contact = "admin@underchat.org";
};

Class {
    name = "Server";
    pingfreq = 1 minutes 30 seconds;
    connectfreq = 5 minutes;
    maxlinks = 1;
    sendq = 9000000;
};

Class {
    name = "Local";
    pingfreq = 1 minutes 30 seconds;
    sendq = 160000;
    maxlinks = 100;
    usermode = "+iw";
};

Class {
    name = "Other";
    pingfreq = 1 minutes 30 seconds;
    sendq = 160000;
    maxlinks = 2048;
    usermode = "+ix";
};

Class {
    name = "Opers";
    pingfreq = 1 minutes 30 seconds;
    sendq = 160000;
    maxlinks = 20;
    local = no;
    freeform = yes;
    show_invis = yes;
    see_chan = yes;
    usermode = "+W";
};

Client {
    host = "*@*";
    ip = "*@*";
    class = "Other";
    maxlinks = 6;
};

Jupe {
    nick = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
    nick = "ChanServ,NickServ";
};

Port {
    vhost = "127.0.0.1" 4400;
    server = yes;
    hidden = yes;
};

Port {
    vhost = "127.0.0.1" 6667;
    hidden = yes;
};

Port {
    vhost = "127.0.0.1" 6697;
    ssl = yes;
    hidden = yes;
};

Operator {
    name = "root";
    password = "$PLAIN$password";
    host = "*@*";
    class = "Opers";
    admin = yes;
};

features {
    "NETWORK" = "underchat.org";
    "DOMAINNAME" = "underchat.org";
    "LOG" = "SYSTEM" "FILE" "EOFCONFIG_PREFIX/log/ircd.log";
    "LOG" = "SYSTEM" "LEVEL" "CRIT";
    "HUB" = "FALSE";
    "RELIABLE_CLOCK" = "FALSE";
    "WALLOPS_OPER_ONLY" = "TRUE";
    "HOST_HIDING" = "TRUE";
    "HIDDEN_HOST" = "users.underchat.org";
    "MAXCHANNELSPERUSER" = "60";
    "NICKLEN" = "12";
    "PINGFREQUENCY" = "120";
    "SETHOST" = "TRUE";
};
EOFCONFIG

    # Setează permisiuni
    chmod 600 "$CONFIG_FILE"

    echo -e "${VERDE}[+] Config standard creat: $CONFIG_FILE${NC}"
    echo -e "${GALBEN}[!] IMPORTANT: Editează config și schimbă parola operator!${NC}"
    echo -e "${GALBEN}    1. Deschide config: nano $CONFIG_FILE${NC}"
    echo -e "${GALBEN}    2. Schimbă parola: $PREFIX/bin/umkpasswd${NC}"
}

# Pornire server
start_server() {
    echo -e "${VERDE}[+] Pornire server...${NC}"
    echo ""

    # Verificări detaliate ale fișierului de configurare
    echo -e "${GALBEN}[*] Verificare fișier configurare...${NC}"

    if [ ! -f "$CONFIG_FILE" ]; then
        echo -e "${ROSU}[-] Config nu găsit la: $CONFIG_FILE${NC}"
        echo -e "${GALBEN}[!] Creează config cu admin.sh opțiune 5${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Fișier există: $CONFIG_FILE${NC}"

    # Verifică permisiuni de citire
    if [ ! -r "$CONFIG_FILE" ]; then
        echo -e "${ROSU}[-] Fișier există dar nu poate fi citit!${NC}"
        echo -e "${GALBEN}[*] Permisiuni curente:${NC}"
        ls -la "$CONFIG_FILE"
        echo ""
        echo -e "${GALBEN}[!] Rulează: chmod 600 $CONFIG_FILE${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Permisiuni OK (poate fi citit)${NC}"

    # Verifică dacă fișierul nu este gol
    if [ ! -s "$CONFIG_FILE" ]; then
        echo -e "${ROSU}[-] Fișier de configurare este gol!${NC}"
        echo -e "${GALBEN}[!] Regenerează config cu admin.sh opțiune 5${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Fișier nu este gol ($(stat -f%z "$CONFIG_FILE" 2>/dev/null || stat -c%s "$CONFIG_FILE" 2>/dev/null) bytes)${NC}"

    # Verifică directorul de log
    local log_dir=$(dirname "$LOG_FILE")
    if [ ! -d "$log_dir" ]; then
        echo -e "${GALBEN}[*] Creare director log: $log_dir${NC}"
        mkdir -p "$log_dir"
    fi

    # Verifică executabilul
    echo ""
    echo -e "${GALBEN}[*] Verificare executabil...${NC}"

    if [ ! -f "$IRCD_BIN" ]; then
        echo -e "${ROSU}[-] Executabil ircd nu găsit la: $IRCD_BIN${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    if ! [ -x "$IRCD_BIN" ]; then
        echo -e "${ROSU}[-] Executabil există dar nu are permisiuni de execuție!${NC}"
        echo -e "${GALBEN}[!] Rulează: chmod +x $IRCD_BIN${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Executabil OK: $IRCD_BIN${NC}"

    # Verifica dacă e deja pornit
    echo ""
    echo -e "${GALBEN}[*] Verificare proces existent...${NC}"
    if pgrep -f "$IRCD_BIN" > /dev/null; then
        echo -e "${ROSU}[-] Server deja pornit!${NC}"
        echo -e "${GALBEN}[*] PID: $(pgrep -f "$IRCD_BIN")${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Niciun proces activ${NC}"

    # Porneste server în background
    echo ""
    echo -e "${VERDE}[+] Pornire server IRCd...${NC}"
    echo -e "${GALBEN}[*] Comandă: $IRCD_BIN -f $CONFIG_FILE${NC}"

    nohup "$IRCD_BIN" -f "$CONFIG_FILE" > "$LOG_FILE" 2>&1 &
    local ircd_pid=$!

    echo -e "${GALBEN}[*] Așteptare inițializare (2 secunde)...${NC}"
    sleep 2

    # Verifică dacă procesul rulează
    if pgrep -f "$IRCD_BIN" > /dev/null; then
        echo ""
        echo -e "${VERDE}[+] ✓ Server pornit cu succes!${NC}"
        echo -e "${VERDE}[+] PID: $(pgrep -f "$IRCD_BIN")${NC}"
        echo ""
        echo -e "${GALBEN}Verificare rapidă log:${NC}"
        tail -5 "$LOG_FILE" | sed 's/^/  /'
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 0
    else
        echo ""
        echo -e "${ROSU}[-] ✗ Eșec la pornirea serverului!${NC}"
        echo ""
        echo -e "${GALBEN}╔════════════════════════════════════════╗${NC}"
        echo -e "${GALBEN}║   DIAGNOSTICARE EROARE                ║${NC}"
        echo -e "${GALBEN}╚════════════════════════════════════════╝${NC}"
        echo ""

        # Afișează ultimele 15 linii din log pentru context
        echo -e "${GALBEN}[*] Ultimele 15 rânduri din log:${NC}"
        echo -e "${GALBEN}────────────────────────────────────────${NC}"
        tail -15 "$LOG_FILE" 2>/dev/null || echo "  (log-ul nu poate fi citit)"
        echo -e "${GALBEN}────────────────────────────────────────${NC}"

        # Verificări suplimentare
        echo ""
        echo -e "${GALBEN}[*] Verificări suplimentare:${NC}"

        # Test sintaxă config
        echo -e "${GALBEN}  → Test sintaxă configurare:${NC}"
        if "$IRCD_BIN" -c -f "$CONFIG_FILE" 2>&1 | head -5; then
            echo -e "${VERDE}    Config pare valid${NC}"
        else
            echo -e "${ROSU}    Erori în config detectate!${NC}"
        fi

        # Verifică porturi
        echo ""
        echo -e "${GALBEN}  → Porturi în uz pe sistem:${NC}"
        netstat -tuln 2>/dev/null | grep -E ":(6667|6697|4400)" || echo "    (niciun conflict detectat)"

        echo ""
        echo -e "${GALBEN}╔════════════════════════════════════════╗${NC}"
        echo -e "${GALBEN}║   SOLUȚII POSIBILE:                   ║${NC}"
        echo -e "${GALBEN}╚════════════════════════════════════════╝${NC}"
        echo -e "${GALBEN}1. Verifică sintaxa config:${NC} ./admin.sh → opțiunea 8"
        echo -e "${GALBEN}2. Verifică permisiuni:${NC} ls -la $CONFIG_FILE"
        echo -e "${GALBEN}3. Verifică log complet:${NC} ./admin.sh → opțiunea 6"
        echo -e "${GALBEN}4. Regenerează config:${NC} ./admin.sh → opțiunea 5"

        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi
}

# Oprire server
stop_server() {
    echo -e "${VERDE}[+] Oprire server...${NC}"

    local pid=$(pgrep -f "$IRCD_BIN")

    if [ -z "$pid" ]; then
        echo -e "${ROSU}[-] Server nu este pornit!${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    kill "$pid"

    sleep 2

    if ! pgrep -f "$IRCD_BIN" > /dev/null; then
        echo -e "${VERDE}[+] Server oprit cu succes${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 0
    else
        echo -e "${GALBEN}[*] Forțare oprire...${NC}"
        kill -9 "$pid"
        sleep 1
        echo -e "${VERDE}[+] Server oprit forțat${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 0
    fi
}

# Restart server
restart_server() {
    echo -e "${VERDE}[+] Restart server...${NC}"

    stop_server
    sleep 2
    start_server

    # Pauza este gestionată deja de funcțiile stop_server și start_server
}

# Status server
check_status() {
    echo -e "${VERDE}[+] Status server:${NC}"
    echo ""

    local pid=$(pgrep -f "$IRCD_BIN")

    if [ -z "$pid" ]; then
        echo -e "${ROSU}Status: OPRIT${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}Status: PORNIT${NC}"
    echo "PID: $pid"

    # Informații proces
    echo ""
    echo -e "${GALBEN}Detalii proces:${NC}"
    ps aux | grep "$pid" | grep -v grep | awk '{print "  CPU: " $3 "% | RAM: " $6 " KB | Timp: " $11}'

    # Porturi ascultare
    echo ""
    echo -e "${GALBEN}Porturi ascultate:${NC}"
    netstat -tlnp 2>/dev/null | grep "$pid" | awk '{print "  Port " $4 " (" $1 ")"}'

    # Log ultimele linii
    echo ""
    echo -e "${GALBEN}Ultimele intrări în log:${NC}"
    tail -5 "$LOG_FILE" | sed 's/^/  /'

    echo ""
    echo -n "Apasa Enter pentru a continua..."
    read
    return 0
}

# Editare configurare
edit_config() {
    echo -e "${VERDE}[+] Editare configurare...${NC}"

    if [ ! -f "$CONFIG_FILE" ]; then
        echo -e "${ROSU}[-] Fișier configurare nu găsit: $CONFIG_FILE${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    # Backup înainte de editare
    cp "$CONFIG_FILE" "${CONFIG_FILE}.bak.$(date +%s)"
    echo -e "${GALBEN}[*] Backup creat: ${CONFIG_FILE}.bak${NC}"

    # Deschide editor
    ${EDITOR:-nano} "$CONFIG_FILE"

    # Test sintaxă
    echo ""
    echo -e "${GALBEN}[*] Testare sintaxă...${NC}"
    if "$IRCD_BIN" -c -f "$CONFIG_FILE" 2>&1 | head -20; then
        echo -e "${VERDE}[+] Sintaxă OK${NC}"
    else
        echo -e "${ROSU}[-] Erori în configurare!${NC}"
        echo -e "${GALBEN}[*] Poți restaura backup-ul:${NC}"
        echo "    cp ${CONFIG_FILE}.bak.* $CONFIG_FILE"
    fi

    echo ""
    echo -n "Apasa Enter pentru a continua..."
    read
    return 0
}

# Vizionare log-uri
view_logs() {
    echo -e "${VERDE}[+] Opțiuni log-uri:${NC}"
    echo "  1) Ultimele 20 de rânduri"
    echo "  2) Urmărire live (Ctrl+C pentru ieșire)"
    echo "  3) Căutare text"
    echo "  4) Înapoi"
    echo ""
    echo -n -e "${GALBEN}Alege [1-4]:${NC} "
    read choice

    case $choice in
        1)
            echo ""
            echo -e "${ALBASTRU}Ultimele 20 de rânduri:${NC}"
            tail -20 "$LOG_FILE"
            echo ""
            echo -n "Apasa Enter pentru a continua..."
            read
            ;;
        2)
            echo ""
            echo -e "${ALBASTRU}Urmărire live (apasa Ctrl+C pentru ieșire):${NC}"
            tail -f "$LOG_FILE"
            echo ""
            echo -n "Apasa Enter pentru a continua..."
            read
            ;;
        3)
            echo ""
            read -p "$(echo -e ${GALBEN}Cuvânt cheie de căutare:${NC} )" search_term
            echo ""
            echo -e "${ALBASTRU}Rezultate:${NC}"
            grep -i "$search_term" "$LOG_FILE" | tail -20
            echo ""
            echo -n "Apasa Enter pentru a continua..."
            read
            ;;
        4)
            return 0
            ;;
        *)
            echo -e "${ROSU}Opțiune necunoscută!${NC}"
            echo ""
            echo -n "Apasa Enter pentru a continua..."
            read
            ;;
    esac
}

# Generare parola
generate_password() {
    echo -e "${VERDE}[+] Generator parola operator${NC}"
    echo ""

    if [ ! -x "$UMKPASSWD_BIN" ]; then
        echo -e "${ROSU}[-] Utilitar umkpasswd nu găsit!${NC}"
        echo -e "${GALBEN}[*] Asigură-te că ai rulat install.sh${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${GALBEN}Utilizează utilarul umkpasswd:${NC}"
    "$UMKPASSWD_BIN"

    echo ""
    echo -e "${GALBEN}[*] Copiază hash-ul și actualizează config:${NC}"
    echo "    nano $CONFIG_FILE"
    echo "    # Cauta secțiunea Operator și înlocuiește password"

    echo ""
    echo -n "Apasa Enter pentru a continua..."
    read
    return 0
}

# Test configurare
test_config() {
    echo -e "${VERDE}[+] Test sintaxă configurare...${NC}"
    echo ""

    # Verificări preliminare
    echo -e "${GALBEN}[*] Verificări preliminare:${NC}"
    echo ""

    if [ ! -f "$CONFIG_FILE" ]; then
        echo -e "${ROSU}[-] Fișier configurare nu găsit: $CONFIG_FILE${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Fișier există: $CONFIG_FILE${NC}"

    # Verifică permisiuni
    if [ ! -r "$CONFIG_FILE" ]; then
        echo -e "${ROSU}  ✗ Fișier nu poate fi citit!${NC}"
        echo ""
        echo -e "${GALBEN}[*] Permisiuni actuale:${NC}"
        ls -la "$CONFIG_FILE"
        echo ""
        echo -e "${GALBEN}[!] Soluție: chmod 600 $CONFIG_FILE${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Permisiuni OK (citire posibilă)${NC}"

    # Verifică mărime
    local file_size=$(stat -f%z "$CONFIG_FILE" 2>/dev/null || stat -c%s "$CONFIG_FILE" 2>/dev/null)
    if [ "$file_size" -eq 0 ]; then
        echo -e "${ROSU}  ✗ Fișier este gol!${NC}"
        echo ""
        echo -e "${GALBEN}[!] Regenerează config cu opțiunea 5${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Mărime OK ($file_size bytes)${NC}"

    # Verifică executabil
    if [ ! -x "$IRCD_BIN" ]; then
        echo -e "${ROSU}  ✗ Executabil ircd nu găsit sau fără permisiuni!${NC}"
        echo -e "${GALBEN}     Cale: $IRCD_BIN${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi

    echo -e "${VERDE}  ✓ Executabil OK${NC}"

    echo ""
    echo -e "${GALBEN}╔════════════════════════════════════════╗${NC}"
    echo -e "${GALBEN}║   TEST SINTAXĂ CONFIGURARE            ║${NC}"
    echo -e "${GALBEN}╚════════════════════════════════════════╝${NC}"
    echo ""
    echo -e "${GALBEN}[*] Rulare: $IRCD_BIN -c -f $CONFIG_FILE${NC}"
    echo -e "${GALBEN}────────────────────────────────────────${NC}"
    echo ""

    # Capturează output-ul testului
    local test_output=$("$IRCD_BIN" -c -f "$CONFIG_FILE" 2>&1)
    local test_result=$?

    echo "$test_output"

    echo ""
    echo -e "${GALBEN}────────────────────────────────────────${NC}"

    if [ $test_result -eq 0 ]; then
        echo ""
        echo -e "${VERDE}╔════════════════════════════════════════╗${NC}"
        echo -e "${VERDE}║   ✓ CONFIGURARE VALIDĂ!               ║${NC}"
        echo -e "${VERDE}╚════════════════════════════════════════╝${NC}"

        # Statistici despre config
        echo ""
        echo -e "${GALBEN}[*] Statistici configurare:${NC}"
        echo -e "  Mărime fișier: $file_size bytes"
        echo -e "  Linii total: $(wc -l < "$CONFIG_FILE")"
        echo -e "  Blocuri General: $(grep -c "^General {" "$CONFIG_FILE" 2>/dev/null || echo 0)"
        echo -e "  Blocuri Port: $(grep -c "^Port {" "$CONFIG_FILE" 2>/dev/null || echo 0)"
        echo -e "  Blocuri Operator: $(grep -c "^Operator {" "$CONFIG_FILE" 2>/dev/null || echo 0)"
        echo -e "  Blocuri Client: $(grep -c "^Client {" "$CONFIG_FILE" 2>/dev/null || echo 0)"

        echo ""
        echo -e "${VERDE}[+] Serverul poate fi pornit cu această configurare!${NC}"
        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 0
    else
        echo ""
        echo -e "${ROSU}╔════════════════════════════════════════╗${NC}"
        echo -e "${ROSU}║   ✗ ERORI ÎN CONFIGURARE!             ║${NC}"
        echo -e "${ROSU}╚════════════════════════════════════════╝${NC}"

        echo ""
        echo -e "${GALBEN}[*] Soluții posibile:${NC}"
        echo -e "  1. Editează config: ./admin.sh → opțiunea 5"
        echo -e "  2. Verifică sintaxa manual: nano $CONFIG_FILE"
        echo -e "  3. Compară cu exemplu: cat doc/example.conf"
        echo -e "  4. Regenerează config nou"

        echo ""
        echo -e "${GALBEN}[*] Verificări rapide:${NC}"

        # Verifică ghilimele neînchise
        local unclosed_quotes=$(grep -n '"[^"]*$' "$CONFIG_FILE" | head -5)
        if [ -n "$unclosed_quotes" ]; then
            echo -e "${ROSU}  ⚠ Posibil ghilimele neînchise:${NC}"
            echo "$unclosed_quotes" | sed 's/^/    /'
        fi

        # Verifică acolade neînchise
        local open_braces=$(grep -o "{" "$CONFIG_FILE" | wc -l)
        local close_braces=$(grep -o "}" "$CONFIG_FILE" | wc -l)
        if [ "$open_braces" -ne "$close_braces" ]; then
            echo -e "${ROSU}  ⚠ Acolade nepotrivite: { = $open_braces, } = $close_braces${NC}"
        fi

        echo ""
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi
}
        echo -n "Apasa Enter pentru a continua..."
        read
        return 1
    fi
}

# Funcție principală
main() {
    while true; do
        show_menu
        read choice

        case $choice in
            1)
                start_server
                ;;
            2)
                stop_server
                ;;
            3)
                restart_server
                ;;
            4)
                check_status
                ;;
            5)
                edit_config
                ;;
            6)
                view_logs
                ;;
            7)
                generate_password
                ;;
            8)
                test_config
                ;;
            9)
                echo -e "${VERDE}La revedere!${NC}"
                exit 0
                ;;
            *)
                echo -e "${ROSU}Opțiune necunoscută!${NC}"
                echo ""
                echo -n "Apasa Enter pentru a continua..."
                read
                ;;
        esac
    done
}

# Lansare
main

