#!/bin/bash
#
# Script de instalare automată pentru UnderChat IRCd
# Limba: Română
# Data: 2026
#

# Culori pentru output
ROSU='\033[0;31m'
VERDE='\033[0;32m'
GALBEN='\033[1;33m'
ALBASTRU='\033[0;34m'
NC='\033[0m' # Fără culoare

# Setări implicite
PREFIX="${HOME}/ircd"
MAXCON=4096
ENABLE_DEBUG=0
ENABLE_SSL=1

# Funcția de afișare a ajutorului
show_help() {
    cat << EOF
${ALBASTRU}Script de instalare automată pentru UnderChat IRCd${NC}

Utilizare: ./install.sh [OPȚIUNI]

${GALBEN}OPȚIUNI:${NC}
  -h, --help              Afișează acest mesaj de ajutor
  -p, --prefix PATH       Calea de instalare (implicit: \$HOME/ircd)
  -m, --maxcon NUM        Numărul maxim de conexiuni (implicit: 4096)
  -d, --debug             Activează modul de debug
  -s, --no-ssl            Dezactivează suportul SSL/TLS
  -c, --config FILE       Fișier de configurare inițial

${GALBEN}EXEMPLE:${NC}
  ./install.sh
  ./install.sh --prefix /opt/ircd --maxcon 8192
  ./install.sh --debug --config myconfig.conf

EOF
}

# Funcția de log
log_info() {
    echo -e "${VERDE}[INFO]${NC} $1"
}

log_warn() {
    echo -e "${GALBEN}[AVERTIZARE]${NC} $1"
}

log_error() {
    echo -e "${ROSU}[EROARE]${NC} $1"
}

log_success() {
    echo -e "${VERDE}[SUCCES]${NC} $1"
}

# Funcția pentru generare hash parola
generate_password_hash() {
    local password="$1"

    # Verifica daca openssl e disponibil pentru MD5
    if command -v openssl &> /dev/null; then
        # Genereaza MD5 hash (SMD5 format pentru ircd)
        echo "$password" | openssl dgst -md5 -binary | base64
    else
        # Fallback: foloseste doar password plain (nu e recomandat!)
        echo "PLAIN:$password"
    fi
}

# Funcția pentru validare parola
validate_password() {
    local pass="$1"
    if [ ${#pass} -lt 4 ]; then
        return 1
    fi
    return 0
}

# Funcția de verificare a dependențelor
check_dependencies() {
    log_info "Verificare dependențe..."

    local missing_deps=0
    local missing_list=""

    # Verifică compilatorul C
    if ! command -v gcc &> /dev/null && ! command -v cc &> /dev/null; then
        log_error "GCC/CC nu este instalat!"
        missing_deps=1
        missing_list="$missing_list\n  - build-essential (GCC/CC)"
    else
        log_success "Compilator C găsit"
    fi

    # Verifică make
    if ! command -v make &> /dev/null; then
        log_error "Make nu este instalat!"
        missing_deps=1
        missing_list="$missing_list\n  - make"
    else
        log_success "Make găsit"
    fi

    # Verifică autoconf (opțional dar recomandat)
    if ! command -v autoconf &> /dev/null; then
        log_warn "Autoconf nu este instalat (opțional)"
        # Nu e eroare critică, dar o notez
    else
        log_success "Autoconf găsit"
    fi

    # Verifică bibliotecile SSL
    if command -v pkg-config &> /dev/null; then
        if ! pkg-config --exists openssl; then
            log_warn "OpenSSL dev nu este instalat (opțional)"
        else
            log_success "OpenSSL găsit"
        fi
    fi

    # Dacă lipsesc dependențe obligatorii, oferă opțiune pentru fix automat
    if [ $missing_deps -eq 1 ]; then
        echo ""
        echo -e "${ROSU}═══════════════════════════════════════${NC}"
        echo -e "${ROSU}LIPSESC DEPENDENȚE OBLIGATORII!${NC}"
        echo -e "${ROSU}═══════════════════════════════════════${NC}"
        echo -e "${ROSU}Dependențe lipsă:${missing_list}${NC}"
        echo ""
        echo -e "${GALBEN}Opțiuni:${NC}"
        echo "  1) Instalare automată cu install-deps.sh (recomandat)"
        echo "  2) Instalare manuală (tu ești responsabil)"
        echo "  3) Anulare"
        echo ""
        read -p "Alege opțiune [1-3]: " dep_choice
        dep_choice=${dep_choice:-1}

        case $dep_choice in
            1)
                echo ""
                log_info "Lansare install-deps.sh..."

                # Verifică dacă install-deps.sh există
                if [ ! -x "./install-deps.sh" ]; then
                    log_error "install-deps.sh nu găsit sau nu are permisiuni!"
                    log_warn "Descarcă scriptul de pe repository"
                    return 1
                fi

                # Rulează install-deps.sh
                ./install-deps.sh

                if [ $? -eq 0 ]; then
                    echo ""
                    log_success "Dependențe instalate cu succes!"
                    log_info "Relansare verificare dependențe..."

                    # Verificare din nou
                    check_dependencies
                    return $?
                else
                    log_error "Instalare dependențe eșuată!"
                    return 1
                fi
                ;;

            2)
                echo ""
                log_warn "Continuă pe propria răspundere..."
                log_warn "Dacă lipsesc dependențe, compilarea va eșua."
                return 0
                ;;

            3)
                echo ""
                log_error "Anulare instalare."
                exit 1
                ;;

            *)
                log_error "Opțiune invalida!"
                check_dependencies
                return $?
                ;;
        esac
    fi

    return 0
}

# Funcția pentru fixare config.guess pentru aarch64
fix_config_guess() {
    log_info "Verificare support aarch64 în config.guess..."

    # Verifică dacă config.guess e vechi și nu suportă aarch64
    if [ -f "./config.guess" ] && ! grep -q "aarch64" ./config.guess; then
        log_warn "config.guess e vechi, adaugă suport aarch64..."

        # Patch pentru aarch64
        if grep -q "case \"\$machine\" in" ./config.guess; then
            # Adaugă case pentru aarch64 înainte de default
            sed -i '/case "$machine" in/a\
\t\taarch64*|arm64*)\
\t\t\techo aarch64-unknown-linux-gnu\
\t\t\texit 0\
\t\t\t;;' ./config.guess
            log_success "Support aarch64 adăugat la config.guess"
        fi
    fi

    # Dacă config.guess tot nu merge, folosește --build flag
    return 0
}

# Funcția de configurare
configure_ircd() {
    log_info "Configurare UnderChat IRCd..."

    # Fixează config.guess pentru aarch64
    fix_config_guess

    local config_args="--prefix=$PREFIX"
    config_args="$config_args --with-maxcon=$MAXCON"

    if [ $ENABLE_DEBUG -eq 1 ]; then
        config_args="$config_args --enable-debug"
    fi

    if [ $ENABLE_SSL -eq 0 ]; then
        config_args="$config_args --disable-ssl"
    fi

    # Adaugă --build flag pentru sisteme care nu pot detecta
    if [ "$(uname -m)" = "aarch64" ]; then
        config_args="$config_args --build=aarch64-unknown-linux-gnu"
        log_info "Detectat aarch64, adaugă --build=aarch64-unknown-linux-gnu"
    fi

    log_info "Parametri configure: $config_args"

    if [ ! -f "./configure" ]; then
        log_error "Fișierul configure nu găsit!"
        return 1
    fi

    ./configure $config_args
    if [ $? -ne 0 ]; then
        log_error "Configurare eșuată!"
        return 1
    fi

    log_success "Configurare finalizată cu succes"
    return 0
}

# Funcția de compilare
compile_ircd() {
    log_info "Compilare UnderChat IRCd..."

    # Verifică dacă autoconf este disponibil
    if ! command -v autoconf &> /dev/null; then
        log_warn "Autoconf nu este instalat, dezactivare la Makefile..."
        # Touchează configure pentru a evita rularea autoconf
        touch ./configure
    fi

    make clean > /dev/null 2>&1
    make

    if [ $? -ne 0 ]; then
        log_error "Compilare eșuată!"
        log_warn "Încearcă: sudo apt-get install autoconf automake libtool"
        return 1
    fi

    log_success "Compilare finalizată cu succes"
    return 0
}

# Funcția de instalare
install_ircd() {
    log_info "Instalare UnderChat IRCd..."

    make install
    if [ $? -ne 0 ]; then
        log_error "Instalare eșuată!"
        return 1
    fi

    log_success "Instalare finalizată cu succes"
    return 0
}

# Funcția de generare a fișierului de configurare
generate_config() {
    local config_file="$1"
    local server_name="${2:-localhost.localdomain}"
    local server_desc="${3:-UnderChat IRCd Server}"
    local server_numeric="${4:-1}"
    local admin_location="${5:-Romania}"
    local admin_contact="${6:-admin@underchat.ro}"
    local vhost="${7:-127.0.0.1}"
    local network="${8:-underchat.org}"
    local oper_user="${9:-AdminRoot}"
    local oper_pass="${10:-\$PLAIN\$password}"
    local is_hub="${11:-no}"
    local hub_name="${12}"
    local hub_host="${13}"
    local hub_port="${14:-4400}"
    local hub_pass="${15}"

    log_info "Generare fișier de configurare: $config_file"

    mkdir -p "$(dirname "$config_file")"

    cat > "$config_file" << 'EOFCONFIG'
# Fișier de configurare pentru UnderChat IRCd
# Generat automat în data: 2026
# Limba: Română
# Model: Node-Ase.ovh Professional IRC Server

# ============================================================================
# SECȚIUNE: GENERAL
# ============================================================================
General {
    # Numele serverului (trebuie unic în rețea)
    name = "EOFCONFIG_NAME";

    # Virtual Host - IP pe care ascultă
    vhost = "EOFCONFIG_VHOST";

    # Descrierea serverului
    description = "EOFCONFIG_DESC";

    # Numeric-ul serverului (0-4095, trebuie unic în rețea)
    numeric = EOFCONFIG_NUMERIC;

    # Servere DNS pentru rezolvare domenii
    dns server = "8.8.8.8";
    dns server = "1.1.1.1";
};

# ============================================================================
# SECȚIUNE: ADMIN
# ============================================================================
Admin {
    # Locații (maxim 2)
    Location = "EOFCONFIG_NETWORK World";
    Location = "EOFCONFIG_ADMIN_LOC";

    # Contacti
    Contact = "EOFCONFIG_ADMIN_CONTACT";
};

# ============================================================================
# SECȚIUNE: CLASE DE CONEXIUNI
# ============================================================================

# Clasă pentru servere principale (hub)
Class {
    name = "Server";
    pingfreq = 1 minutes 30 seconds;
    connectfreq = 5 minutes;
    maxlinks = 1;
    sendq = 9000000;
};

# Clasă pentru clienți obișnuiți
Class {
    name = "Local";
    pingfreq = 1 minutes 30 seconds;
    sendq = 160000;
    maxlinks = 100;
    usermode = "+iw";
};

# Clasă pentru clienți normali (implicit)
Class {
    name = "Other";
    pingfreq = 1 minutes 30 seconds;
    sendq = 160000;
    maxlinks = 2048;
    usermode = "+ix";
};

# Clasă pentru operatori
Class {
    name = "Opers";
    pingfreq = 1 minutes 30 seconds;
    sendq = 160000;
    maxlinks = 20;
    local = no;
    freeform = yes;
    mode_lchan = yes;
    deop_lchan = yes;
    walk_lchan = yes;
    show_invis = yes;
    see_chan = yes;
    list_chan = yes;
    usermode = "+W";
    remove = yes;
};

# ============================================================================
# SECȚIUNE: CLIENT - Restricții pentru conexiuni
# ============================================================================

# Configurare implicită pentru toți clienții
Client {
    host = "*@*";
    ip = "*@*";
    class = "Other";
    maxlinks = 6;
};

# ============================================================================
# SECȚIUNE: JUPED NICKS - Nick-uri rezervate
# ============================================================================
Jupe {
    # Litere și caractere speciale
    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";

    # Servicii de rețea
    nick = "StatServ,NoteServ";
    nick = "ChanServ,ChanSaver";
    nick = "NickServ,NickSaver";
};

# ============================================================================
# SECȚIUNE: PORTURI
# ============================================================================

# Port pentru server-to-server
Port {
    vhost = "EOFCONFIG_VHOST" 4400;
    server = yes;
    hidden = yes;
};

# Port standard pentru clienți
Port {
    vhost = "EOFCONFIG_VHOST" 6667;
    hidden = yes;
};

# Port SSL/TLS pentru clienți (opțional)
# Port {
#     vhost = "EOFCONFIG_VHOST" 6697;
#     ssl = yes;
#     hidden = yes;
# };

# ============================================================================
# SECȚIUNE: OPERATORI
# ============================================================================

Operator {
    # Nickname-ul operatorului
    name = "EOFCONFIG_OPER_USER";

    # Password-ul operatorului (hash MD5/bcrypt/SMD5)
    # Generat automat din parola furnizată
    password = "EOFCONFIG_OPER_PASS";

    # Host-uri permise pentru operator (*)
    host = "*@*";

    # Clasă
    class = "Opers";

    # Permisiuni
    admin = yes;
    hide_oper = no;
    hide_channels = no;
};

# ============================================================================
# SECȚIUNE: CONNECT - Legări cu alte servere
# ============================================================================

EOFCONFIG_HUB_CONNECT

# ============================================================================
# SECȚIUNE: UWORLD - Servere de servicii
# ============================================================================

# UWorld {
#     name = "services.EOFCONFIG_NETWORK";
# };

# ============================================================================
# SECȚIUNE: FEATURE - Caracteristici și setări
# ============================================================================

features {
    # Network details
    "NETWORK" = "EOFCONFIG_NETWORK";
    "DOMAINNAME" = "EOFCONFIG_NETWORK";

    # Logging
    "LOG" = "SYSTEM" "FILE" "EOFCONFIG_PREFIX/log/ircd.log";
    "LOG" = "SYSTEM" "LEVEL" "CRIT";

    # Server settings
    "HUB" = "EOFCONFIG_HUB_SETTING";
    "RELIABLE_CLOCK" = "FALSE";
    "WALLOPS_OPER_ONLY" = "TRUE";
    "NODNS" = "FALSE";
    "NOIDENT" = "FALSE";

    # Client settings
    "CLIENT_FLOOD" = "1024";
    "BUFFERPOOL" = "27000000";
    "DEFAULTMAXSENDQLENGTH" = "40000";

    # Host hiding
    "HOST_HIDING" = "TRUE";
    "HIDDEN_HOST" = "users.EOFCONFIG_NETWORK";
    "HIDDEN_IP" = "127.0.0.1";

    # Channels
    "MAXCHANNELSPERUSER" = "60";
    "CHANNELLEN" = "200";
    "MAXBANS" = "50";

    # Nick settings
    "NICKLEN" = "12";
    "NICKNAMEHISTORYLENGTH" = "800";

    # Timing
    "HANGONGOODLINK" = "300";
    "HANGONRETRYDELAY" = "10";
    "CONNECTTIMEOUT" = "90";
    "PINGFREQUENCY" = "120";
    "CONNECTFREQUENCY" = "600";

    # Welcome messages
    "MPATH" = "EOFCONFIG_PREFIX/etc/ircd.motd";
    "RPATH" = "EOFCONFIG_PREFIX/etc/remote.motd";
    "PPATH" = "EOFCONFIG_PREFIX/var/ircd.pid";

    # Stats visibility
    "HIS_STATS_u" = "FALSE";
    "HIS_STATS_U" = "TRUE";

    # Whois privacy
    "HIS_WHOIS_SERVERNAME" = "TRUE";
    "HIS_WHOIS_IDLETIME" = "TRUE";
    "HIS_WHOIS_LOCALCHAN" = "TRUE";

    # Who privacy
    "HIS_WHO_SERVERNAME" = "TRUE";
    "HIS_WHO_HOPCOUNT" = "TRUE";

    # Network info
    "HIS_NETSPLIT" = "TRUE";
    "HIS_SERVERNAME" = "*.EOFCONFIG_NETWORK";
    "HIS_SERVERINFO" = "The EOFCONFIG_NETWORK World";

    # Operational
    "CHECK" = "TRUE";
    "CHECK_EXTENDED" = "TRUE";
    "MAX_CHECK_OUTPUT" = "1000";

    # Admin commands
    "SETHOST" = "TRUE";
    "NETWORK_REHASH" = "TRUE";

    # Channel modes
    "HALFOPS" = "TRUE";

    # SSL/TLS
    # "SSL_CERTFILE" = "EOFCONFIG_PREFIX/etc/ircd.pem";
    # "SSL_KEYFILE" = "EOFCONFIG_PREFIX/etc/ircd.pem";
    # "SSL_NOSSLv3" = "TRUE";

    # CTCP versioning
    "CTCP_VERSIONING" = "FALSE";
};

EOFCONFIG

    # Înlocuiește placeholder-ele
    sed -i "s|EOFCONFIG_NAME|$server_name|g" "$config_file"
    sed -i "s|EOFCONFIG_DESC|$server_desc|g" "$config_file"
    sed -i "s|EOFCONFIG_NUMERIC|$server_numeric|g" "$config_file"
    sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$config_file"
    sed -i "s|EOFCONFIG_ADMIN_LOC|$admin_location|g" "$config_file"
    sed -i "s|EOFCONFIG_ADMIN_CONTACT|$admin_contact|g" "$config_file"
    sed -i "s|EOFCONFIG_VHOST|$vhost|g" "$config_file"
    sed -i "s|EOFCONFIG_NETWORK|$network|g" "$config_file"
    sed -i "s|EOFCONFIG_OPER_USER|$oper_user|g" "$config_file"
    sed -i "s|EOFCONFIG_OPER_PASS|$oper_pass|g" "$config_file"

    # Setare HUB flag și CONNECT section
    if [ "$is_hub" = "y" ] || [ "$is_hub" = "Y" ]; then
        sed -i 's|EOFCONFIG_HUB_SETTING|"TRUE"|g' "$config_file"

        # Adaugă CONNECT section pentru HUB
        HUB_CONNECT_BLOCK="# Conectare la HUB principal
Connect {
    name = \"$hub_name\";
    host = \"$hub_host\";
    password = \"$hub_password\";
    port = $hub_port;
    class = \"Server\";
    autoconnect = yes;
    hub;
};"

        sed -i "s|EOFCONFIG_HUB_CONNECT|$HUB_CONNECT_BLOCK|g" "$config_file"
    else
        sed -i 's|EOFCONFIG_HUB_SETTING|"FALSE"|g' "$config_file"
        sed -i 's|EOFCONFIG_HUB_CONNECT|# Server nu este HUB - fără connect|g' "$config_file"
    fi

    log_success "Fișier de configurare generat: $config_file"
    return 0
}

# Funcția principală
main() {
    # Parsare argumente
    while [[ $# -gt 0 ]]; do
        case $1 in
            -h|--help)
                show_help
                exit 0
                ;;
            -p|--prefix)
                PREFIX="$2"
                shift 2
                ;;
            -m|--maxcon)
                MAXCON="$2"
                shift 2
                ;;
            -d|--debug)
                ENABLE_DEBUG=1
                shift
                ;;
            -s|--no-ssl)
                ENABLE_SSL=0
                shift
                ;;
            -c|--config)
                CONFIG_FILE="$2"
                shift 2
                ;;
            *)
                log_error "Opțiune necunoscută: $1"
                show_help
                exit 1
                ;;
        esac
    done

    echo -e "${ALBASTRU}"
    echo "========================================="
    echo "  Instalare UnderChat IRCd"
    echo "========================================="
    echo -e "${NC}"

    # Verificare dependențe
    check_dependencies
    if [ $? -ne 0 ]; then
        exit 1
    fi

    # Configurare
    configure_ircd
    if [ $? -ne 0 ]; then
        exit 1
    fi

    # Compilare
    compile_ircd
    if [ $? -ne 0 ]; then
        exit 1
    fi

    # Instalare
    install_ircd
    if [ $? -ne 0 ]; then
        exit 1
    fi

    # Generare fișier de configurare
    local conf_file="${PREFIX}/etc/ircd.conf"

    if [ -z "$CONFIG_FILE" ]; then
        # Citire interactivă de parametri
        echo ""
        echo -e "${GALBEN}═══════════════════════════════════════${NC}"
        echo -e "${GALBEN}CONFIGURARE SERVER${NC}"
        echo -e "${GALBEN}═══════════════════════════════════════${NC}"

        read -p "  Domeniu rețea [underchat.org]: " network_name
        network_name=${network_name:-underchat.org}

        read -p "  Nume server [ns1.${network_name}]: " server_name
        server_name=${server_name:-ns1.${network_name}}

        read -p "  Descriere server [The ${network_name} Network]: " server_desc
        server_desc=${server_desc:-The ${network_name} Network}

        read -p "  Virtual Host / IP [127.0.0.1]: " vhost_ip
        vhost_ip=${vhost_ip:-127.0.0.1}

        read -p "  Numeric server [1]: " server_numeric
        server_numeric=${server_numeric:-1}

        read -p "  Locație admin [Romania]: " admin_location
        admin_location=${admin_location:-Romania}

        read -p "  Contact admin [admin@${network_name}]: " admin_contact
        admin_contact=${admin_contact:-admin@${network_name}}

        # Configurare Operator
        echo ""
        echo -e "${GALBEN}═══════════════════════════════════════${NC}"
        echo -e "${GALBEN}CONFIGURARE OPERATOR${NC}"
        echo -e "${GALBEN}═══════════════════════════════════════${NC}"

        read -p "  Username operator [AdminRoot]: " oper_username
        oper_username=${oper_username:-AdminRoot}

        # Cerere parola și validare
        while true; do
            read -s -p "  Parola operator: " oper_password
            echo ""

            if ! validate_password "$oper_password"; then
                log_error "Parola prea scurtă! Minim 4 caractere."
                continue
            fi

            read -s -p "  Repetă parola: " oper_password_confirm
            echo ""

            if [ "$oper_password" != "$oper_password_confirm" ]; then
                log_error "Parolele nu se potrivesc!"
                continue
            fi

            # Generare hash
            log_info "Generare hash parola..."
            oper_hash="\$PLAIN\$$oper_password"
            log_success "Parola operator criptată"
            break
        done

        # Configurare HUB
        echo ""
        echo -e "${GALBEN}═══════════════════════════════════════${NC}"
        echo -e "${GALBEN}CONFIGURARE HUB${NC}"
        echo -e "${GALBEN}═══════════════════════════════════════${NC}"

        read -p "  Este aceasta un server HUB? (y/n) [n]: " is_hub
        is_hub=${is_hub:-n}

        # Dacă e HUB, cere informații linking
        if [ "$is_hub" = "y" ] || [ "$is_hub" = "Y" ]; then
            echo ""
            log_info "Configurare LINK la HUB principal"
            echo ""

            read -p "    Nume HUB [hub.${network_name}]: " hub_name
            hub_name=${hub_name:-hub.${network_name}}

            read -p "    IP/Host HUB [192.168.1.100]: " hub_host
            hub_host=${hub_host:-192.168.1.100}

            read -p "    Port HUB [4400]: " hub_port
            hub_port=${hub_port:-4400}

            read -s -p "    Parola linking: " hub_password
            echo ""

            HUB_CONFIG="yes"
        else
            HUB_CONFIG="no"
            hub_name=""
            hub_host=""
            hub_port=""
            hub_password=""
        fi
    else
        server_name=$(grep 'name = "' "$CONFIG_FILE" 2>/dev/null | head -1 | cut -d'"' -f2)
        server_name=${server_name:-localhost.localdomain}
        vhost_ip="127.0.0.1"
        network_name="underchat.org"
        oper_username="AdminRoot"
        oper_hash="\$PLAIN\$password"
        is_hub="n"
        HUB_CONFIG="no"
    fi

    generate_config "$conf_file" "$server_name" "$server_desc" "$server_numeric" "$admin_location" "$admin_contact" "$vhost_ip" "$network_name" "$oper_username" "$oper_hash" "$HUB_CONFIG" "$hub_name" "$hub_host" "$hub_port" "$hub_password"
    if [ $? -ne 0 ]; then
        exit 1
    fi

    # Verifica dacă fișierul de config a fost creat
    if [ ! -f "$conf_file" ]; then
        log_error "Fișierul de configurare nu a fost creat!"
        exit 1
    fi

    # Setează permisiuni pe config
    chmod 600 "$conf_file"
    log_success "Permisiuni setate pe configurare: 600"

    # Creare directoare
    log_info "Creare structură de directoare..."
    mkdir -p "$PREFIX/log"
    mkdir -p "$PREFIX/etc"
    mkdir -p "$PREFIX/var"

    # Creare fișiere MOTD
    if [ ! -f "$PREFIX/etc/ircd.motd" ]; then
        cat > "$PREFIX/etc/ircd.motd" << 'EOFMOTD'
    ╔═══════════════════════════════════════╗
    ║   Bine venit pe UnderChat IRCd!       ║
    ║   Versiune: Underchat Edition        ║
    ║   Data: 2026                         ║
    ╚═══════════════════════════════════════╝

    Aceasta este o rețea IRC privată.
    Respectă regulile serverului!

EOFMOTD
        log_success "Fișier MOTD creat: $PREFIX/etc/ircd.motd"
    fi

    # Rezumat instalare
    echo ""
    echo -e "${VERDE}"
    echo "========================================="
    echo "  ✓ Instalare completă!"
    echo "========================================="
    echo -e "${NC}"
    echo ""
    echo -e "${GALBEN}Informații de instalare:${NC}"
    echo "  Calea de instalare: $PREFIX"
    echo "  Fișier configurare: $conf_file"
    echo "  Fișier log: $PREFIX/log/ircd.log"
    echo "  Maxim conexiuni: $MAXCON"
    echo "  Debug: $([ $ENABLE_DEBUG -eq 1 ] && echo 'Activat' || echo 'Dezactivat')"
    echo "  SSL/TLS: $([ $ENABLE_SSL -eq 1 ] && echo 'Activat' || echo 'Dezactivat')"
    echo ""
    echo -e "${GALBEN}Pași următori:${NC}"
    echo "  1. Editează configurarea: nano $conf_file"
    echo "  2. Generează parola operator: $PREFIX/bin/umkpasswd"
    echo "  3. Pornește serverul: $PREFIX/bin/ircd -f $conf_file"
    echo "  4. Conectează-te: irc://localhost:6667"
    echo ""
}

# Apelează funcția principală
main "$@"

