ircu2/fix-and-install-madrid.sh

335 lines
11 KiB
Bash

#!/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!"