335 lines
11 KiB
Bash
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!"
|
|
|