#!/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 - DIRECT fără probleme de expansiune log_info "Generare configurație Madrid..." cat > "$PREFIX/lib/ircd.conf" <<'ENDCONFIG' # Configurație UnderChat IRCd - Madrid.ES.EU.UnderChat.org # Generat automat cu fix-and-install-madrid.sh # Versiune: v1.0.6-madrid-final General { name = "Madrid.ES.EU.UnderChat.org"; vhost = "10.0.0.125"; description = "The UnderChat.org Network - Madrid Node"; numeric = 1; dns server = "8.8.8.8"; dns server = "1.1.1.1"; }; Admin { Location = "UnderChat.org World"; Location = "Madrid, Spain"; 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; mode_lchan = yes; deop_lchan = yes; walk_lchan = yes; show_invis = yes; see_chan = yes; list_chan = yes; usermode = "+Wx"; remove = yes; }; 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 = "StatServ,NoteServ"; nick = "ChanServ,ChanSaver"; nick = "NickServ,NickSaver"; }; Port { vhost = "10.0.0.125" 4400; server = yes; hidden = yes; }; Port { vhost = "10.0.0.125" 6667; hidden = yes; }; 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"; }; features { "NETWORK" = "UnderChat.org"; "DOMAINNAME" = "UnderChat.org"; "LOG" = "SYSTEM" "FILE" "REPLACE_PREFIX/log/ircd.log"; "LOG" = "SYSTEM" "LEVEL" "CRIT"; "HUB" = "FALSE"; "RELIABLE_CLOCK" = "FALSE"; "WALLOPS_OPER_ONLY" = "TRUE"; "NODNS" = "FALSE"; "NOIDENT" = "FALSE"; "CLIENT_FLOOD" = "1024"; "BUFFERPOOL" = "27000000"; "DEFAULTMAXSENDQLENGTH" = "40000"; "HOST_HIDING" = "TRUE"; "HOST_HIDING_STYLE" = "3"; "HIDDEN_HOST" = "users.UnderChat.org"; "HIDDEN_IP" = "127.0.0.1"; "HIDDEN_HOSTTYPE" = "3"; "MAXCHANNELSPERUSER" = "60"; "CHANNELLEN" = "200"; "MAXBANS" = "50"; "NICKLEN" = "12"; "NICKNAMEHISTORYLENGTH" = "800"; "HANGONGOODLINK" = "300"; "HANGONRETRYDELAY" = "10"; "CONNECTTIMEOUT" = "90"; "PINGFREQUENCY" = "120"; "CONNECTFREQUENCY" = "600"; "MPATH" = "REPLACE_PREFIX/lib/ircd.motd"; "RPATH" = "REPLACE_PREFIX/lib/remote.motd"; "PPATH" = "REPLACE_PREFIX/var/ircd.pid"; "CPATH" = "REPLACE_PREFIX/lib/ircd.conf"; "HIS_STATS_u" = "FALSE"; "HIS_STATS_U" = "TRUE"; "HIS_WHOIS_SERVERNAME" = "TRUE"; "HIS_WHOIS_IDLETIME" = "TRUE"; "HIS_WHOIS_LOCALCHAN" = "TRUE"; "HIS_WHO_SERVERNAME" = "TRUE"; "HIS_WHO_HOPCOUNT" = "TRUE"; "HIS_NETSPLIT" = "TRUE"; "HIS_SERVERNAME" = "*.UnderChat.org"; "HIS_SERVERINFO" = "The UnderChat.org World"; "CHECK" = "TRUE"; "CHECK_EXTENDED" = "TRUE"; "MAX_CHECK_OUTPUT" = "1000"; "OPER_WHOIS_PARANOIA" = "TRUE"; "SETHOST" = "TRUE"; "NETWORK_REHASH" = "TRUE"; "HALFOPS" = "TRUE"; "CTCP_VERSIONING" = "FALSE"; "WHOIS_NOTICE" = "TRUE"; "SPY_WHOIS" = "TRUE"; "SNOMASK_OPERDEFAULT" = "1024"; "SNOMASK_DEFAULT" = "1024"; }; ENDCONFIG # Înlocuiește REPLACE_PREFIX cu calea reală sed -i "s|REPLACE_PREFIX|$PREFIX|g" "$PREFIX/lib/ircd.conf" # Verifică că înlocuirea a funcționat if grep -q "REPLACE_PREFIX" "$PREFIX/lib/ircd.conf"; then log_error "REPLACE_PREFIX nu a fost înlocuit corect!" log_info "Încerc din nou cu escape..." sed -i "s|REPLACE_PREFIX|${PREFIX}|g" "$PREFIX/lib/ircd.conf" fi # Verifică din nou if grep -q "REPLACE_PREFIX" "$PREFIX/lib/ircd.conf"; then log_error "Încă există REPLACE_PREFIX în config! Manual fix..." # Înlocuire forțată linie cu linie sed -i "s|\"REPLACE_PREFIX|\"$PREFIX|g" "$PREFIX/lib/ircd.conf" fi log_success "Configurație Madrid generată" # Debug: Afișează liniile critice log_info "Verificare CPATH generat..." grep "CPATH" "$PREFIX/lib/ircd.conf" || log_warn "CPATH nu găsit!" # 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${NC}" echo "" echo " SAU pornire în background:" echo -e " ${VERDE}nohup $PREFIX/bin/ircd &${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..." if "$PREFIX/bin/ircd"; 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" fi echo "" log_success "Script finalizat!"