487 lines
13 KiB
Bash
487 lines
13 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 - 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!"
|
|
|