#!/bin/bash # # Script COMPLET de diagnostic, curățare și instalare pentru Madrid Server # Rulează direct pe server: bash fix-and-install-madrid.sh # Versiune: v1.0.6-madrid-final # set -e # Culori ROSU='\033[0;31m' VERDE='\033[0;32m' GALBEN='\033[1;33m' ALBASTRU='\033[0;34m' NC='\033[0m' log_info() { echo -e "${VERDE}[INFO]${NC} $1"; } log_success() { echo -e "${VERDE}[✓]${NC} $1"; } log_warn() { echo -e "${GALBEN}[!]${NC} $1"; } log_error() { echo -e "${ROSU}[✗]${NC} $1"; } clear echo -e "${ALBASTRU}" cat << "EOF" ╔════════════════════════════════════════════════════╗ ║ UnderChat IRCd - Madrid Server ║ ║ Fix & Install Script v1.0.6-madrid-final ║ ║ Rezolvă TOATE problemele automat! ║ ╚════════════════════════════════════════════════════╝ EOF echo -e "${NC}" echo "" # =================================================================== # PARTEA 1: DIAGNOSTIC ȘI CURĂȚARE # =================================================================== log_info "PARTEA 1/3: Diagnostic și curățare..." echo "" # Oprește procese vechi log_info "Oprire procese IRCd vechi..." pkill -9 ircd 2>/dev/null || true sleep 1 log_success "Procese IRCd oprite" # Șterge instalări vechi log_info "Ștergere instalări vechi..." rm -rf ~/ircu2 ~/ircd log_success "Instalări vechi șterse" # Verifică dependențe log_info "Verificare dependențe..." if ! command -v gcc &> /dev/null; then log_error "GCC nu este instalat! Instalează cu: sudo apt-get install build-essential" exit 1 fi log_success "Dependențe OK" echo "" log_success "✓ PARTEA 1 COMPLETĂ: Sistem curățat și pregătit" echo "" # =================================================================== # PARTEA 2: CLONARE ȘI COMPILARE # =================================================================== log_info "PARTEA 2/3: Clonare și compilare..." echo "" # Clonează repository log_info "Clonare repository UnderChat IRCd..." cd ~ if ! git clone https://gitlab.back.ro/underchat/ircu2.git; then log_error "Eșec la clonarea repository-ului!" exit 1 fi cd ~/ircu2 log_success "Repository clonat" # Fix pentru aarch64 (ARM64) log_info "Verificare arhitectură..." if [ "$(uname -m)" = "aarch64" ]; then log_warn "Detectat aarch64 - actualizare config.guess..." # Descarcă config.guess actualizat if command -v wget &>/dev/null; then wget -q -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' wget -q -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' chmod +x config.guess config.sub log_success "config.guess actualizat pentru aarch64" else log_warn "wget nu este disponibil - folosesc --build flag" fi fi # Configurare log_info "Configurare pentru compilare..." CONFIGURE_FLAGS="--prefix=$HOME/ircd --with-maxcon=4096" # Adaugă --build pentru aarch64 if [ "$(uname -m)" = "aarch64" ]; then CONFIGURE_FLAGS="$CONFIGURE_FLAGS --build=aarch64-unknown-linux-gnu" log_info "Folosesc: ./configure $CONFIGURE_FLAGS" fi if ! ./configure $CONFIGURE_FLAGS; then log_error "Eșec la configurare!" exit 1 fi log_success "Configurare completă" # Compilare log_info "Compilare (poate dura câteva minute)..." make clean &>/dev/null || true if ! make -j$(nproc); then log_error "Eșec la compilare!" exit 1 fi log_success "Compilare completă" # Instalare binare log_info "Instalare binare..." if ! make install; then log_error "Eșec la instalare!" exit 1 fi log_success "Binare instalate" echo "" log_success "✓ PARTEA 2 COMPLETĂ: Compilare și instalare reușită" echo "" # =================================================================== # PARTEA 3: GENERARE CONFIGURAȚIE MADRID # =================================================================== log_info "PARTEA 3/3: Generare configurație Madrid..." echo "" PREFIX="$HOME/ircd" NETWORK_NAME="UnderChat.org" SERVER_NAME="Madrid.ES.EU.UnderChat.org" VHOST_IPV4="10.0.0.125" # Creare directoare log_info "Creare structură directoare..." mkdir -p "$PREFIX/lib" mkdir -p "$PREFIX/etc" mkdir -p "$PREFIX/log" mkdir -p "$PREFIX/var" log_success "Directoare create" # Generare configurație Madrid - FOLOSIND example.conf ca bază log_info "Generare configurație Madrid din example.conf..." # Copiază example.conf ca bază if [ -f "doc/example.conf" ]; then cp doc/example.conf "$PREFIX/lib/ircd.conf" log_success "Folosesc example.conf ca bază" else log_error "example.conf nu găsit!" exit 1 fi # Modifică valorile pentru Madrid log_info "Personalizare pentru Madrid..." # Înlocuiește valorile cu cele pentru Madrid sed -i 's/name = "[^"]*";/name = "Madrid.ES.EU.UnderChat.org";/' "$PREFIX/lib/ircd.conf" sed -i 's/vhost = "[^"]*";/vhost = "10.0.0.125";/g' "$PREFIX/lib/ircd.conf" sed -i 's/description = "[^"]*";/description = "The UnderChat.org Network - Madrid Node";/' "$PREFIX/lib/ircd.conf" sed -i 's/"NETWORK" = "[^"]*"/"NETWORK" = "UnderChat.org"/g' "$PREFIX/lib/ircd.conf" sed -i 's/"DOMAINNAME" = "[^"]*"/"DOMAINNAME" = "UnderChat.org"/g' "$PREFIX/lib/ircd.conf" # Înlocuiește căile sed -i "s|/path/to|$PREFIX|g" "$PREFIX/lib/ircd.conf" sed -i "s|\"MPATH\" = \"[^\"]*\"|\"MPATH\" = \"$PREFIX/lib/ircd.motd\"|g" "$PREFIX/lib/ircd.conf" sed -i "s|\"CPATH\" = \"[^\"]*\"|\"CPATH\" = \"$PREFIX/lib/ircd.conf\"|g" "$PREFIX/lib/ircd.conf" sed -i "s|\"PPATH\" = \"[^\"]*\"|\"PPATH\" = \"$PREFIX/var/ircd.pid\"|g" "$PREFIX/lib/ircd.conf" sed -i "s|\"LOG\" = \"SYSTEM\" \"FILE\" \"[^\"]*\"|\"LOG\" = \"SYSTEM\" \"FILE\" \"$PREFIX/log/ircd.log\"|g" "$PREFIX/lib/ircd.conf" # Adaugă operator Raducu sed -i '/^Operator {/,/^};/c\ Operator {\ name = "Raducu";\ password = "$PLAIN$muiesteaua";\ host = "*@*";\ class = "Opers";\ admin = yes;\ hide_oper = no;\ hide_channels = no;\ snomask = "+s";\ privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";\ };' "$PREFIX/lib/ircd.conf" log_success "Configurație Madrid personalizată" # MOTD log_info "Generare MOTD..." cat > "$PREFIX/lib/ircd.motd" <<'ENDMOTD' ╔═══════════════════════════════════════╗ ║ Bine venit pe UnderChat IRCd! ║ ║ Madrid.ES.EU.UnderChat.org ║ ║ ║ ║ Versiune: v1.0.6-madrid-final ║ ║ ║ ║ Pentru suport: #support ║ ║ Website: https://underchat.org ║ ╚═══════════════════════════════════════╝ 🌟 UnderChat Network - Madrid Node • Host hiding pentru protecția utilizatorilor • Anti-spam și anti-flood protection • Canale cu diverse moduri și opțiuni Distracție plăcută pe UnderChat! 🎉 ENDMOTD log_success "MOTD creat" # Setare permisiuni log_info "Setare permisiuni..." chmod 600 "$PREFIX/lib/ircd.conf" cp "$PREFIX/lib/ircd.motd" "$PREFIX/etc/ircd.motd" 2>/dev/null || true cp "$PREFIX/lib/ircd.conf" "$PREFIX/etc/ircd.conf" 2>/dev/null || true log_success "Permisiuni setate" # Test sintaxă log_info "Test sintaxă configurație..." if "$PREFIX/bin/ircd" -c -f "$PREFIX/lib/ircd.conf"; then log_success "✓ Sintaxa configurației este CORECTĂ!" else log_error "✗ EROARE în configurație!" echo "" echo "Rulează pentru diagnostic:" echo " $PREFIX/bin/ircd -c -f $PREFIX/lib/ircd.conf" exit 1 fi echo "" log_success "✓ PARTEA 3 COMPLETĂ: Configurație Madrid validată" echo "" # =================================================================== # FINALIZARE ȘI INSTRUCȚIUNI # =================================================================== echo -e "${VERDE}" cat << "EOF" ╔════════════════════════════════════════════════════╗ ║ ✓✓✓ INSTALARE MADRID COMPLETĂ CU SUCCES! ✓✓✓ ║ ╚════════════════════════════════════════════════════╝ EOF echo -e "${NC}" echo "" echo -e "${ALBASTRU}═══ CONFIGURAȚIE MADRID ═══${NC}" echo " Server: Madrid.ES.EU.UnderChat.org" echo " IP: 10.0.0.125" echo " Port: 6667" echo " Operator: Raducu / muiesteaua" echo " Config: $PREFIX/lib/ircd.conf" echo "" echo -e "${ALBASTRU}═══ PORNIRE SERVER ═══${NC}" echo " Pornește acum:" echo -e " ${VERDE}$PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf${NC}" echo "" echo " SAU pornire în background:" echo -e " ${VERDE}nohup $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf &${NC}" echo "" echo -e "${ALBASTRU}═══ VERIFICARE ═══${NC}" echo " Verifică că rulează:" echo -e " ${VERDE}ps aux | grep ircd${NC}" echo "" echo " Verifică porturi:" echo -e " ${VERDE}netstat -tlnp | grep -E '(6667|4400)'${NC}" echo "" echo " Verifică log:" echo -e " ${VERDE}tail -f $PREFIX/log/ircd.log${NC}" echo "" echo -e "${ALBASTRU}═══ CONECTARE ═══${NC}" echo " Client IRC:" echo " Server: Madrid.ES.EU.UnderChat.org (sau 10.0.0.125)" echo " Port: 6667" echo "" echo " Logare operator:" echo " /oper Raducu muiesteaua" echo "" echo -e "${VERDE}🎉 Distracție plăcută pe UnderChat Network! 🎉${NC}" echo "" # Întreabă dacă să pornească automat echo "" read -p "Dorești să pornesc serverul ACUM? [Y/n]: " start_now start_now=${start_now:-Y} if [[ "$start_now" =~ ^[Yy]$ ]]; then echo "" log_info "Pornire server IRCd cu config Madrid..." # Pornește cu -f pentru a specifica calea completă a config-ului if "$PREFIX/bin/ircd" -f "$PREFIX/lib/ircd.conf"; then sleep 2 if pgrep -x ircd > /dev/null; then log_success "✓✓✓ SERVER PORNIT CU SUCCES! ✓✓✓" echo "" ps aux | grep "[i]rcd" echo "" log_success "Conectează-te la: Madrid.ES.EU.UnderChat.org:6667" else log_error "Server-ul nu rulează! Verifică log-urile:" echo " tail -f $PREFIX/log/ircd.log" fi else log_error "Eșec la pornirea serverului!" echo "" echo "Verifică erori cu:" echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf" fi else echo "" log_info "OK! Pornește manual când ești gata:" echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf" fi echo "" log_success "Script finalizat!"