diff --git a/INSTALL_MADRID.md b/INSTALL_MADRID.md deleted file mode 100644 index 89553a5..0000000 --- a/INSTALL_MADRID.md +++ /dev/null @@ -1,189 +0,0 @@ -# Instalare UnderChat IRCd - Madrid Server -## Versiune: v1.0.6-madrid -## Data: 2026-02-13 - ---- - -## 🚀 INSTALARE RAPIDĂ (3 COMENZI): - -```bash -# 1. Șterge instalarea veche (dacă există) -rm -rf ~/ircu2 ~/ircd - -# 2. Clonează repository-ul -git clone https://gitlab.back.ro/underchat/ircu2.git && cd ircu2 - -# 3. Rulează scriptul pre-configurat Madrid -./install-madrid.sh -``` - -**GATA! Instalarea este completă!** - ---- - -## ✅ CONFIGURAȚIE PRE-SETATĂ: - -| Setare | Valoare | -|--------|---------| -| **Rețea** | UnderChat.org | -| **Server** | Madrid.ES.EU.UnderChat.org | -| **IP IRC** | 10.0.0.125 | -| **Port Client** | 6667 | -| **Port Server** | 4400 | -| **Username OPER** | Raducu | -| **Parola OPER** | muiesteaua | -| **Locație** | Madrid, Spain | - ---- - -## 🎮 PORNIRE SERVER: - -```bash -# Pornește serverul -~/ircd/bin/ircd - -# Verifică că rulează -ps aux | grep ircd - -# Verifică log-urile -tail -f ~/ircd/log/ircd.log -``` - ---- - -## 🔧 COMENZI UTILE: - -### Test sintaxă configurație: -```bash -~/ircd/bin/ircd -c -f ~/ircd/lib/ircd.conf -``` - -### Editare configurație: -```bash -nano ~/ircd/lib/ircd.conf -``` - -### Restart server: -```bash -# Oprește -killall ircd - -# Pornește -~/ircd/bin/ircd -``` - ---- - -## 👤 LOGARE CA OPERATOR: - -După ce te conectezi la server cu client IRC: - -``` -/connect Madrid.ES.EU.UnderChat.org 6667 -/oper Raducu muiesteaua -``` - ---- - -## 📊 VERIFICĂRI: - -### Verifică că server-ul ascultă pe portul corect: -```bash -netstat -tlnp | grep 6667 -# Ar trebui să vezi: 10.0.0.125:6667 -``` - -### Verifică configurația: -```bash -grep -E "(name =|vhost =|CPATH)" ~/ircd/lib/ircd.conf -``` - -### Verifică că NU sunt erori: -```bash -~/ircd/bin/ircd -c -f ~/ircd/lib/ircd.conf -# Ar trebui să afișeze: "Configuration file ircd.conf checked okay." -``` - ---- - -## ✨ CE INCLUDE VERSIUNEA v1.0.6-madrid: - -✅ **Configurație completă pre-setată** - nu mai trebuie să introduci nimic manual -✅ **snomask = "+s"** - format CORECT, fără erori de sintaxă -✅ **CPATH absolut** - `/home/ircd/ircd/lib/ircd.conf` hardcodat -✅ **IP corect** - 10.0.0.125 pe toate porturile -✅ **Host hiding** - format hexadecimal activat -✅ **WHOIS notificări** - pentru operatori activate -✅ **Test sintaxă automat** - verificare înainte de finalizare -✅ **ZERO placeholder-uri** - toate valorile reale, nu EOFCONFIG_* - ---- - -## 🐛 DACĂ APARE VREO PROBLEMĂ: - -### Eroare: "Failed to read configuration file" -```bash -# Verifică permisiuni: -ls -la ~/ircd/lib/ircd.conf -chmod 600 ~/ircd/lib/ircd.conf -``` - -### Eroare: "Config parse error on line X" -```bash -# Verifică linia exactă: -sed -n 'Xp' ~/ircd/lib/ircd.conf # înlocuiește X cu numărul liniei - -# Reinstalează: -rm -rf ~/ircu2 ~/ircd -git clone https://gitlab.back.ro/underchat/ircu2.git && cd ircu2 -./install-madrid.sh -``` - -### Server nu pornește: -```bash -# Verifică ce procese rulează: -ps aux | grep ircd - -# Verifică ce porturu sunt în uz: -netstat -tlnp | grep -E "(6667|4400)" - -# Verifică log-urile: -tail -50 ~/ircd/log/ircd.log -``` - ---- - -## 📞 SUPORT: - -Dacă întâmpini probleme, rulează: - -```bash -# Diagnostic complet: -echo "=== CONFIG ===" -~/ircd/bin/ircd -c -f ~/ircd/lib/ircd.conf -echo "" -echo "=== PROCESE ===" -ps aux | grep ircd -echo "" -echo "=== PORTURI ===" -netstat -tlnp | grep -E "(6667|4400)" -echo "" -echo "=== LOG ===" -tail -20 ~/ircd/log/ircd.log -``` - -Trimite output-ul pentru diagnostic! - ---- - -## 🎉 SUCCESS! - -Dacă ai ajuns aici și server-ul rulează, **FELICITĂRI!** - -Conectează-te cu client IRC la: -- **Server**: Madrid.ES.EU.UnderChat.org (sau 10.0.0.125) -- **Port**: 6667 -- **Operator**: /oper Raducu muiesteaua - -**Distracție plăcută pe UnderChat Network!** 🚀 - diff --git a/fix-aarch64.sh b/fix-aarch64.sh deleted file mode 100755 index db94af1..0000000 --- a/fix-aarch64.sh +++ /dev/null @@ -1,129 +0,0 @@ -#!/bin/bash -# -# Script pentru fixare config.guess & config.sub pentru aarch64 -# Limba: Română -# - -# Culori -VERDE='\033[0;32m' -GALBEN='\033[1;33m' -ALBASTRU='\033[0;34m' -ROSU='\033[0;31m' -NC='\033[0m' - -log_info() { - echo -e "${ALBASTRU}[INFO]${NC} $1" -} - -log_success() { - echo -e "${VERDE}[SUCCES]${NC} $1" -} - -log_error() { - echo -e "${ROSU}[EROARE]${NC} $1" -} - -log_warn() { - echo -e "${GALBEN}[AVERTIZARE]${NC} $1" -} - -echo -e "${ALBASTRU}" -echo "═══════════════════════════════════════" -echo " Fix config.guess pentru aarch64" -echo "═══════════════════════════════════════" -echo -e "${NC}" - -# Detectează platformă -MACHINE=$(uname -m) -SYSTEM=$(uname -s) - -log_info "Sistem detectat: $SYSTEM $MACHINE" - -# Verifică dacă config.guess există -if [ ! -f "config.guess" ]; then - log_error "config.guess nu găsit în directorul curent!" - exit 1 -fi - -# Backup original -cp config.guess config.guess.bak -cp config.sub config.sub.bak -log_success "Backup creat: config.guess.bak, config.sub.bak" - -# Fixare pentru aarch64 -if [ "$MACHINE" = "aarch64" ] || [ "$MACHINE" = "arm64" ]; then - log_info "Detectat aarch64/arm64, aplicare fix..." - - # Metoda 1: Patch direct în config.guess pentru case aarch64 - if grep -q "case \"\$machine\" in" config.guess; then - # Găsește linia și adaugă case pentru aarch64 - line_num=$(grep -n 'case "$machine" in' config.guess | head -1 | cut -d: -f1) - if [ -n "$line_num" ]; then - # Creează temp file cu patch - head -n "$line_num" config.guess > config.guess.tmp - - # Adaugă case pentru aarch64 - cat >> config.guess.tmp << 'EOF' - aarch64*|arm64*) - echo aarch64-unknown-linux-gnu - exit 0 - ;; -EOF - - # Adaugă restul fișierului - tail -n +$((line_num + 1)) config.guess >> config.guess.tmp - - mv config.guess.tmp config.guess - chmod +x config.guess - log_success "config.guess patched pentru aarch64" - fi - fi -fi - -# Verifică config.sub pentru aarch64 -if [ "$MACHINE" = "aarch64" ] || [ "$MACHINE" = "arm64" ]; then - log_info "Verificare config.sub..." - - if ! grep -q "aarch64" config.sub; then - log_warn "config.sub nu are suport aarch64, aplicare patch..." - - # Adaugă suport aarch64 în config.sub - if grep -q "case \$cpu in" config.sub; then - # Găsește linia și adaugă case pentru aarch64 - sed -i '/case $cpu in/a\ -\t\taarch64 | arm64)\ -\t\t\tcpu=aarch64\ -\t\t\t;;' config.sub - - log_success "config.sub patched pentru aarch64" - fi - else - log_success "config.sub are deja suport aarch64" - fi -fi - -# Test -log_info "Test config.guess..." -RESULT=$(./config.guess 2>&1) -if [ $? -eq 0 ]; then - log_success "config.guess funcționează!" - echo -e "${VERDE}Output: $RESULT${NC}" -else - log_error "config.guess tot nu merge!" - echo -e "${ROSU}Output: $RESULT${NC}" - log_warn "Revert la backup..." - cp config.guess.bak config.guess - cp config.sub.bak config.sub - exit 1 -fi - -# Cleanup -rm -f config.guess.bak config.sub.bak - -echo "" -echo -e "${VERDE}═══════════════════════════════════════${NC}" -echo -e "${VERDE}Fix aplicat cu succes!${NC}" -echo -e "${VERDE}═══════════════════════════════════════${NC}" -echo "" -echo "Acum poți rula: ./configure" - diff --git a/fix-and-install-madrid.sh b/fix-and-install-madrid.sh deleted file mode 100644 index 076972d..0000000 --- a/fix-and-install-madrid.sh +++ /dev/null @@ -1,588 +0,0 @@ -#!/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 - Serverul Madrid ║ -║ Script de Instalare v1.1.0-madrid-stabil ║ -║ Gestionare inteligentă a instalării ║ -╚════════════════════════════════════════════════════╝ -EOF -echo -e "${NC}" -echo "" - -# =================================================================== -# PARTEA 1: DIAGNOSTIC ȘI PREGĂTIRE -# =================================================================== - -log_info "PARTEA 1/3: Diagnostic și pregătire sistem..." -echo "" - -# Oprește procese IRCd active -log_info "Oprire procese IRCd active..." -if pgrep -x ircd > /dev/null; then - log_warn "Găsit proces IRCd activ, oprire..." - pkill -15 ircd 2>/dev/null || true - sleep 2 - # Dacă încă rulează, forțează oprirea - if pgrep -x ircd > /dev/null; then - log_warn "Forțare oprire proces..." - pkill -9 ircd 2>/dev/null || true - sleep 1 - fi - log_success "Procese IRCd oprite" -else - log_info "Niciun proces IRCd activ" -fi - -# Verifică dependențe necesare -log_info "Verificare dependențe de compilare..." -DEPENDENTE_LIPSA=() - -if ! command -v gcc &> /dev/null; then - DEPENDENTE_LIPSA+=("gcc") -fi - -if ! command -v make &> /dev/null; then - DEPENDENTE_LIPSA+=("make") -fi - -if ! command -v git &> /dev/null; then - DEPENDENTE_LIPSA+=("git") -fi - -if [ ${#DEPENDENTE_LIPSA[@]} -gt 0 ]; then - log_error "Dependențe lipsă: ${DEPENDENTE_LIPSA[*]}" - log_error "Instalează cu: sudo apt-get install build-essential git" - exit 1 -fi - -log_success "Toate dependențele sunt instalate" - -echo "" -log_success "✓ PARTEA 1 COMPLETĂ: Sistem pregătit pentru instalare" -echo "" - -# =================================================================== -# PARTEA 2: OBȚINERE SURSĂ ȘI COMPILARE -# =================================================================== - -log_info "PARTEA 2/3: Obținere cod sursă și compilare..." -echo "" - -# Determină directorul de lucru -DIR_SURSA="$HOME/ircu2" - -# Verifică dacă repository-ul există deja -if [ -d "$DIR_SURSA/.git" ]; then - log_info "Repository existent găsit în $DIR_SURSA" - cd "$DIR_SURSA" - - # Verifică dacă sunt modificări locale - if ! git diff-index --quiet HEAD -- 2>/dev/null; then - log_warn "Există modificări locale nesalvate" - log_info "Păstrarea modificărilor locale și actualizare..." - git stash push -m "Salvare automată înainte de actualizare - $(date '+%Y-%m-%d %H:%M:%S')" || true - fi - - # Actualizează repository-ul - log_info "Actualizare repository din GitLab..." - if git pull origin master 2>/dev/null || git pull origin main 2>/dev/null; then - log_success "Repository actualizat" - - # Restaurează modificările locale dacă au fost salvate - if git stash list | grep -q "Salvare automată"; then - log_info "Restaurare modificări locale..." - git stash pop || log_warn "Nu s-au putut restaura toate modificările" - fi - else - log_warn "Nu s-a putut actualiza repository-ul, continuăm cu versiunea existentă" - fi -else - log_info "Clonare repository UnderChat IRCd..." - cd ~ - - if [ -d "$DIR_SURSA" ]; then - log_warn "Director $DIR_SURSA există dar nu e repository git, ștergere..." - rm -rf "$DIR_SURSA" - fi - - if ! git clone https://gitlab.back.ro/underchat/ircu2.git; then - log_error "Eșec la clonarea repository-ului!" - log_error "Verifică conexiunea la internet și accesul la GitLab" - exit 1 - fi - cd "$DIR_SURSA" - log_success "Repository clonat cu succes" -fi - -# Gestionare arhitectură sistem -log_info "Detectare arhitectură sistem: $(uname -m)" -ARHITECTURA=$(uname -m) - -if [ "$ARHITECTURA" = "aarch64" ] || [ "$ARHITECTURA" = "arm64" ]; then - log_warn "Arhitectură ARM64 detectată - actualizare fișiere config necesară" - - # Verifică dacă config.guess poate recunoaște arhitectura - if ! ./config.guess &>/dev/null; then - log_info "Descărcare fișiere config actualizate pentru ARM64..." - - if command -v wget &>/dev/null; then - wget -q -O config.guess.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' && \ - wget -q -O config.sub.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' - - if [ -f config.guess.new ] && [ -s config.guess.new ]; then - mv config.guess.new config.guess - mv config.sub.new config.sub - chmod +x config.guess config.sub - log_success "Fișiere config actualizate pentru ARM64" - fi - elif command -v curl &>/dev/null; then - curl -sL -o config.guess.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' && \ - curl -sL -o config.sub.new 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' - - if [ -f config.guess.new ] && [ -s config.guess.new ]; then - mv config.guess.new config.guess - mv config.sub.new config.sub - chmod +x config.guess config.sub - log_success "Fișiere config actualizate pentru ARM64" - fi - else - log_warn "wget/curl indisponibile - folosesc flag --build explicit" - fi - fi -fi - -# Pregătire pentru compilare -log_info "Configurare parametri compilare..." -PREFIX="$HOME/ircd" -CONFIGURE_FLAGS="--prefix=$PREFIX --with-maxcon=4096" - -# Adaugă parametri specifici pentru ARM64 -if [ "$ARHITECTURA" = "aarch64" ] || [ "$ARHITECTURA" = "arm64" ]; then - CONFIGURE_FLAGS="$CONFIGURE_FLAGS --build=aarch64-unknown-linux-gnu" - log_info "Parametri ARM64: $CONFIGURE_FLAGS" -fi - -# Rulează configure -log_info "Configurare pentru compilare (./configure)..." -if ! ./configure $CONFIGURE_FLAGS 2>&1 | tee configure.log; then - log_error "Eșec la configurare!" - log_error "Ultimele linii din log:" - tail -n 20 configure.log - exit 1 -fi -log_success "Configurare completă" - -# Curățare compilări anterioare -log_info "Curățare fișiere compilate anterior..." -make clean &>/dev/null || true - -# Compilare -log_info "Compilare cod sursă (make)..." -log_info "Acest pas poate dura câteva minute..." -NUMAR_PROCESOARE=$(nproc 2>/dev/null || echo "2") - -if ! make -j"$NUMAR_PROCESOARE" 2>&1 | tee make.log; then - log_error "Eșec la compilare!" - log_error "Ultimele linii din log:" - tail -n 30 make.log - exit 1 -fi -log_success "Compilare completă" - -# Instalare binare -log_info "Instalare binare în $PREFIX..." -if ! make install 2>&1 | tee install.log; then - log_error "Eșec la instalare!" - log_error "Verifică permisiunile pentru $PREFIX" - exit 1 -fi -log_success "Binare instalate" - -# Verifică că binarul a fost instalat corect -if [ ! -f "$PREFIX/bin/ircd" ]; then - log_error "Binarul ircd nu a fost găsit în $PREFIX/bin/ircd!" - exit 1 -fi - -if [ ! -x "$PREFIX/bin/ircd" ]; then - log_error "Binarul ircd nu are permisiuni de execuție!" - chmod +x "$PREFIX/bin/ircd" - log_success "Permisiuni de execuție setate" -fi - -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" -OPERATOR_NAME="Raducu" -OPERATOR_PASS="muiesteaua" - -# Creare structură 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" - -# Găsește fișierul example.conf -EXAMPLE_CONF="" -if [ -f "$DIR_SURSA/doc/example.conf" ]; then - EXAMPLE_CONF="$DIR_SURSA/doc/example.conf" -elif [ -f "$HOME/ircu2/doc/example.conf" ]; then - EXAMPLE_CONF="$HOME/ircu2/doc/example.conf" -elif [ -f "doc/example.conf" ]; then - EXAMPLE_CONF="doc/example.conf" -fi - -if [ -z "$EXAMPLE_CONF" ] || [ ! -f "$EXAMPLE_CONF" ]; then - log_error "Nu s-a găsit fișierul example.conf!" - log_error "Căutat în: $DIR_SURSA/doc/example.conf" - exit 1 -fi - -log_info "Folosesc șablon: $EXAMPLE_CONF" - -# Verifică dacă configurația există deja -FISIER_CONFIG="$PREFIX/lib/ircd.conf" -if [ -f "$FISIER_CONFIG" ]; then - log_warn "Configurație existentă găsită în $FISIER_CONFIG" - BACKUP_CONFIG="$FISIER_CONFIG.backup-$(date +%Y%m%d-%H%M%S)" - cp "$FISIER_CONFIG" "$BACKUP_CONFIG" - log_info "Backup creat: $BACKUP_CONFIG" -fi - -# Copiază example.conf ca punct de plecare -log_info "Generare configurație Madrid..." -cp "$EXAMPLE_CONF" "$FISIER_CONFIG" - -# Funcție pentru înlocuire sigură în configurație -inlocuieste_in_config() { - local PATTERN="$1" - local REPLACE="$2" - local DESCRIERE="$3" - - if sed -i.tmp "$PATTERN" "$FISIER_CONFIG" 2>/dev/null; then - rm -f "$FISIER_CONFIG.tmp" - log_info " ✓ $DESCRIERE" - return 0 - else - log_warn " ⚠ Nu s-a putut actualiza: $DESCRIERE" - rm -f "$FISIER_CONFIG.tmp" - return 1 - fi -} - -log_info "Personalizare configurație pentru Madrid..." - -# Actualizare nume server -inlocuieste_in_config \ - 's/^[[:space:]]*name[[:space:]]*=[[:space:]]*"[^"]*";/ name = "'"$SERVER_NAME"'";/' \ - "Nume server: $SERVER_NAME" - -# Actualizare vhost -inlocuieste_in_config \ - 's/^[[:space:]]*vhost[[:space:]]*=[[:space:]]*"[^"]*";/ vhost = "'"$VHOST_IPV4"'";/g' \ - "VHost IPv4: $VHOST_IPV4" - -# Actualizare descriere -inlocuieste_in_config \ - 's/^[[:space:]]*description[[:space:]]*=[[:space:]]*"[^"]*";/ description = "The UnderChat.org Network - Madrid Node";/' \ - "Descriere server" - -# Actualizare feature NETWORK -inlocuieste_in_config \ - 's/"NETWORK"[[:space:]]*=[[:space:]]*"[^"]*"/"NETWORK" = "'"$NETWORK_NAME"'"/' \ - "Feature NETWORK" - -# Actualizare feature DOMAINNAME -inlocuieste_in_config \ - 's/"DOMAINNAME"[[:space:]]*=[[:space:]]*"[^"]*"/"DOMAINNAME" = "'"$NETWORK_NAME"'"/' \ - "Feature DOMAINNAME" - -# Actualizare căi fișiere -inlocuieste_in_config \ - 's|/path/to|'"$PREFIX"'|g' \ - "Căi generale" - -inlocuieste_in_config \ - 's|"MPATH"[[:space:]]*=[[:space:]]*"[^"]*"|"MPATH" = "'"$PREFIX"'/lib/ircd.motd"|' \ - "Cale MOTD" - -inlocuieste_in_config \ - 's|"CPATH"[[:space:]]*=[[:space:]]*"[^"]*"|"CPATH" = "'"$PREFIX"'/lib/ircd.conf"|' \ - "Cale configurație" - -inlocuieste_in_config \ - 's|"PPATH"[[:space:]]*=[[:space:]]*"[^"]*"|"PPATH" = "'"$PREFIX"'/var/ircd.pid"|' \ - "Cale PID" - -# Actualizare cale log - mai complexă -if grep -q '"LOG"' "$FISIER_CONFIG"; then - inlocuieste_in_config \ - 's|"LOG"[[:space:]]*=[[:space:]]*"SYSTEM"[[:space:]]*"FILE"[[:space:]]*"[^"]*"|"LOG" = "SYSTEM" "FILE" "'"$PREFIX"'/log/ircd.log"|' \ - "Cale fișier log" -fi - -# Configurare operator Raducu -log_info "Configurare operator: $OPERATOR_NAME" - -# Găsește prima secțiune Operator și înlocuiește-o -if grep -q "^Operator[[:space:]]*{" "$FISIER_CONFIG"; then - # Folosește perl pentru înlocuire multi-linie dacă e disponibil - if command -v perl &>/dev/null; then - perl -i.bak -0pe 's/Operator\s*\{[^}]*\}/Operator {\n name = "'"$OPERATOR_NAME"'";\n password = "\$PLAIN\$'"$OPERATOR_PASS"'";\n host = "*@*";\n class = "Opers";\n admin = yes;\n hide_oper = no;\n hide_channels = no;\n snomask = "+s";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";\n};/s' "$FISIER_CONFIG" 2>/dev/null && rm -f "$FISIER_CONFIG.bak" - log_info " ✓ Operator configurat" - else - log_warn " ⚠ Perl nu e disponibil, configurare manuală necesară pentru operator" - fi -else - # Adaugă secțiunea Operator dacă nu există - cat >> "$FISIER_CONFIG" < "$PREFIX/lib/ircd.motd" <<'MOTD_FINAL' -╔═══════════════════════════════════════╗ -║ Bine venit pe UnderChat IRCd! ║ -║ Madrid.ES.EU.UnderChat.org ║ -║ ║ -║ Versiune: v1.1.0-madrid-stabil ║ -║ ║ -║ Pentru suport: #support ║ -║ Website: https://underchat.org ║ -╚═══════════════════════════════════════╝ - -🌟 UnderChat Network - Nod Madrid -• Protecție identitate utilizatori (host hiding) -• Protecție anti-spam și anti-flood -• Canale cu moduri și opțiuni diverse - -Distracție plăcută pe UnderChat! 🎉 -MOTD_FINAL - -log_success "MOTD generat" - -# Setare permisiuni -log_info "Setare permisiuni fișiere..." -chmod 600 "$FISIER_CONFIG" -chmod 644 "$PREFIX/lib/ircd.motd" - -# Copiere fișiere în directorul etc (backup) -cp "$PREFIX/lib/ircd.motd" "$PREFIX/etc/ircd.motd" 2>/dev/null || true -cp "$FISIER_CONFIG" "$PREFIX/etc/ircd.conf" 2>/dev/null || true -log_success "Permisiuni setate" - -# Verificare sintaxă configurație -log_info "Verificare sintaxă configurație..." -if [ ! -f "$PREFIX/bin/ircd" ]; then - log_error "Binarul ircd nu există în $PREFIX/bin/ircd!" - exit 1 -fi - -# Test sintaxă cu timeout pentru a evita blocarea -log_info "Rulare test configurație..." -if timeout 10 "$PREFIX/bin/ircd" -c -f "$FISIER_CONFIG" 2>&1 | tee "$PREFIX/log/config-test.log"; then - log_success "✓ Sintaxa configurației este CORECTĂ!" -else - REZULTAT_TEST=$? - if [ $REZULTAT_TEST -eq 124 ]; then - log_warn "⚠ Testul configurației a depășit timeout-ul (posibil OK)" - else - log_error "✗ EROARE în configurație!" - echo "" - echo "Detalii eroare în: $PREFIX/log/config-test.log" - echo "" - echo "Rulează manual pentru diagnostic:" - echo " $PREFIX/bin/ircd -c -f $FISIER_CONFIG" - exit 1 - fi -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 fundal (background):" -echo -e " ${VERDE}nohup $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf &${NC}" -echo "" - -echo -e "${ALBASTRU}═══ VERIFICARE ═══${NC}" -echo " Verifică că serverul rulează:" -echo -e " ${VERDE}ps aux | grep ircd${NC}" -echo "" -echo " Verifică porturile deschise:" -echo -e " ${VERDE}netstat -tlnp | grep -E '(6667|4400)'${NC}" -echo "" -echo " Verifică fișierul de log:" -echo -e " ${VERDE}tail -f $PREFIX/log/ircd.log${NC}" -echo "" - -echo -e "${ALBASTRU}═══ CONECTARE ═══${NC}" -echo " Cu client IRC:" -echo " Server: Madrid.ES.EU.UnderChat.org (sau 10.0.0.125)" -echo " Port: 6667" -echo "" -echo " Autentificare ca operator:" -echo " /oper Raducu muiesteaua" -echo "" - -echo -e "${VERDE}🎉 Distracție plăcută pe UnderChat Network! 🎉${NC}" -echo "" - -# Întreabă dacă să pornească serverul automat -echo "" -read -p "Dorești să pornesc serverul ACUM? [D/n] (Da/nu): " pornire_acum -pornire_acum=${pornire_acum:-D} - -if [[ "$pornire_acum" =~ ^[DdYy]$ ]]; then - echo "" - log_info "Pornire server IRCd cu configurația Madrid..." - - # Verifică dacă există deja un proces - if pgrep -x ircd > /dev/null; then - log_warn "Un proces IRCd rulează deja!" - ps aux | grep "[i]rcd" - echo "" - read -p "Dorești să-l opresc și să pornesc unul nou? [D/n]: " opreste_si_porneste - opreste_si_porneste=${opreste_si_porneste:-D} - - if [[ "$opreste_si_porneste" =~ ^[DdYy]$ ]]; then - log_info "Oprire proces existent..." - pkill -15 ircd 2>/dev/null || true - sleep 2 - if pgrep -x ircd > /dev/null; then - pkill -9 ircd 2>/dev/null || true - sleep 1 - fi - log_success "Proces oprit" - else - log_info "Păstrare proces existent, ieșire din script" - exit 0 - fi - fi - - # Pornește serverul cu calea completă spre configurație - log_info "Lansare proces ircd..." - if "$PREFIX/bin/ircd" -f "$PREFIX/lib/ircd.conf"; then - sleep 3 - - # Verifică dacă procesul rulează - if pgrep -x ircd > /dev/null; then - log_success "✓✓✓ SERVER PORNIT CU SUCCES! ✓✓✓" - echo "" - echo "Proces IRCd activ:" - ps aux | grep "[i]rcd" - echo "" - log_success "Poți conecta la: Madrid.ES.EU.UnderChat.org:6667" - echo "" - - # Verifică log-ul pentru eventuale avertismente - if [ -f "$PREFIX/log/ircd.log" ]; then - echo "Ultimele linii din log:" - tail -n 10 "$PREFIX/log/ircd.log" - fi - else - log_error "Serverul nu rulează după pornire!" - echo "" - log_error "Verifică log-urile pentru erori:" - echo " tail -f $PREFIX/log/ircd.log" - echo "" - log_info "Sau rulează manual cu:" - echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf" - fi - else - log_error "Eșec la pornirea serverului!" - echo "" - log_error "Verifică configurația și încearcă manual:" - echo " $PREFIX/bin/ircd -c -f $PREFIX/lib/ircd.conf # Test configurație" - echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf # Pornire server" - fi -else - echo "" - log_info "OK! Pornește serverul manual când ești pregătit:" - echo " $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf" - echo "" - log_info "Sau în fundal:" - echo " nohup $PREFIX/bin/ircd -f $PREFIX/lib/ircd.conf > $PREFIX/log/startup.log 2>&1 &" -fi - -echo "" -log_success "Script finalizat cu succes!" -echo "" diff --git a/fix-config.sh b/fix-config.sh deleted file mode 100644 index 591b238..0000000 --- a/fix-config.sh +++ /dev/null @@ -1,394 +0,0 @@ -#!/bin/bash -# -# Script de remediere probleme configurare UnderChat IRCd -# Limba: Română -# - -# Culori -ROSU='\033[0;31m' -VERDE='\033[0;32m' -GALBEN='\033[1;33m' -ALBASTRU='\033[0;34m' -NC='\033[0m' - -log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; } -log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; } -log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; } -log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; } - -echo -e "${ALBASTRU}" -echo "════════════════════════════════════════" -echo " Remediere Probleme Configurare IRCd" -echo "════════════════════════════════════════" -echo -e "${NC}" - -# Detectează directorul PREFIX -if [ -n "$1" ]; then - PREFIX="$1" -elif [ -d "$HOME/ircd" ]; then - PREFIX="$HOME/ircd" -elif [ -d "/home/ircd/ircd" ]; then - PREFIX="/home/ircd/ircd" -else - log_error "Nu pot detecta directorul IRCd!" - echo "Utilizare: $0 [PREFIX_PATH]" - echo "Exemplu: $0 /home/ircd/ircd" - exit 1 -fi - -log_info "Folosesc PREFIX: $PREFIX" - -# Pas 1: Verifică și corectează structura directoarelor -log_info "Pas 1: Verificare structură directoare..." - -if [ ! -d "$PREFIX/etc" ]; then - log_warn "Directorul $PREFIX/etc nu există, îl creez..." - mkdir -p "$PREFIX/etc" -fi - -if [ ! -d "$PREFIX/lib" ]; then - log_warn "Directorul $PREFIX/lib nu există, îl creez..." - mkdir -p "$PREFIX/lib" -fi - -# Verifică dacă config-ul e în etc în loc de lib -CONFIG_ETC="$PREFIX/etc/ircd.conf" -CONFIG_LIB="$PREFIX/lib/ircd.conf" - -if [ -f "$CONFIG_ETC" ] && [ ! -f "$CONFIG_LIB" ]; then - log_warn "Configurația este în etc/ în loc de lib/, o mut..." - mkdir -p "$PREFIX/lib" - mv "$CONFIG_ETC" "$CONFIG_LIB" - log_success "Mutat $CONFIG_ETC -> $CONFIG_LIB" -elif [ -f "$CONFIG_ETC" ] && [ -f "$CONFIG_LIB" ]; then - log_warn "Configurația există în ambele locuri, verific care e mai nouă..." - if [ "$CONFIG_ETC" -nt "$CONFIG_LIB" ]; then - log_info "Versiunea din etc/ e mai nouă, o copiez în lib/" - cp "$CONFIG_ETC" "$CONFIG_LIB.backup.$(date +%s)" - mv "$CONFIG_ETC" "$CONFIG_LIB" - else - log_info "Versiunea din lib/ e mai nouă, șterg duplicatul din etc/" - rm "$CONFIG_ETC" - fi -fi - -# Locația principală e lib/ nu etc/ -CONFIG_ETC="$PREFIX/lib/ircd.conf" - -if [ ! -f "$CONFIG_ETC" ]; then - log_error "Fișierul de configurare nu există: $CONFIG_ETC" - log_info "Generez o configurație minimă..." - - mkdir -p "$(dirname "$CONFIG_ETC")" - - cat > "$CONFIG_ETC" << 'EOF' -General { - name = "localhost.localdomain"; - description = "UnderChat IRCd Server"; - numeric = 1; - vhost = "127.0.0.1"; -}; - -Admin { - Location = "UnderChat Network"; - Location = "Romania"; - Contact = "admin@underchat.ro"; -}; - -Class { - name = "Other"; - pingfreq = 1 minutes 30 seconds; - sendq = 160000; - maxlinks = 100; - usermode = "+ix"; -}; - -Client { - host = "*@*"; - ip = "*@*"; - class = "Other"; - maxlinks = 6; -}; - -Port { - port = 6667; - vhost = "127.0.0.1"; - hidden = yes; -}; - -Operator { - name = "AdminRoot"; - password = "$PLAIN$password"; - host = "*@*"; - class = "Other"; -}; - -features { - "NETWORK" = "underchat.org"; - "DOMAINNAME" = "underchat.org"; - "HOST_HIDING" = "TRUE"; - "HOST_HIDING_STYLE" = "3"; - "HIDDEN_HOST" = "users.underchat.org"; - "HIDDEN_IP" = "127.0.0.1"; - "HIDDEN_HOSTTYPE" = "3"; - "CPATH" = "$PREFIX/lib/ircd.conf"; - "MPATH" = "$PREFIX/lib/ircd.motd"; - "RPATH" = "$PREFIX/lib/remote.motd"; - "PPATH" = "$PREFIX/var/ircd.pid"; -}; -EOF - - log_success "Configurație minimă generată: $CONFIG_ETC" -fi - -# Pas 2: Identifică eroarea pe linia 126 -log_info "Pas 2: Verificare syntaxă configurație..." - -if command -v "$PREFIX/bin/ircd" >/dev/null 2>&1; then - log_info "Test syntaxă cu ircd -k..." - - # Salvează output-ul pentru analiză - SYNTAX_CHECK=$("$PREFIX/bin/ircd" -k -f "$CONFIG_ETC" 2>&1) - SYNTAX_EXIT=$? - - if [ $SYNTAX_EXIT -eq 0 ]; then - log_success "Sintaxa configurației este corectă!" - else - log_error "Erori de sintaxă detectate:" - echo "$SYNTAX_CHECK" - - # Încearcă să identifice linia problematică - if echo "$SYNTAX_CHECK" | grep -q "line [0-9]*"; then - ERROR_LINE=$(echo "$SYNTAX_CHECK" | grep -o "line [0-9]*" | grep -o "[0-9]*") - log_warn "Eroare pe linia $ERROR_LINE, verific..." - - # Arată contextul erorii - log_info "Context linia $ERROR_LINE:" - sed -n "$((ERROR_LINE-2)),$((ERROR_LINE+2))p" "$CONFIG_ETC" | nl -ba -v$((ERROR_LINE-2)) - fi - fi -else - log_warn "Binarul ircd nu găsit, sar peste testul sintaxă" -fi - -# Pas 3: Verifică și corectează probleme comune -log_info "Pas 3: Corectare probleme comune configurație..." - -# Backup configurația -cp "$CONFIG_ETC" "$CONFIG_ETC.backup.$(date +%s)" -log_success "Backup creat: $CONFIG_ETC.backup.$(date +%s)" - -# Corectări comune: -log_info "Aplicare corectări comune..." - -# 1. Șterge linii goale multiple -sed -i '/^$/N;/^\n$/d' "$CONFIG_ETC" - -# 2. Corectează spațiile în jurul = -sed -i 's/[[:space:]]*=[[:space:]]*/ = /g' "$CONFIG_ETC" - -# 3. Corectează placeholder-urile neînlocuite -log_info "Corectez placeholder-urile EOFCONFIG..." -sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$CONFIG_ETC" -sed -i "s|EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_ETC" -sed -i "s|\\.EOFCONFIG_NETWORK|.underchat.org|g" "$CONFIG_ETC" -sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.underchat.org|g" "$CONFIG_ETC" - -# Corectare specială pentru EOFCONFIG_CLIENT_PORTS -if grep -q "EOFCONFIG_CLIENT_PORTS" "$CONFIG_ETC"; then - log_warn "EOFCONFIG_CLIENT_PORTS găsit - îl înlocuiesc cu blocuri Port..." - - CLIENT_PORTS_BLOCK='# Porturi publice pentru clienți -Port { - vhost = "127.0.0.1" 6660; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6661; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6662; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6663; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6664; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6665; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6666; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6667; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6668; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 6669; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 7000; - hidden = yes; -};' - - awk -v replacement="$CLIENT_PORTS_BLOCK" ' - /EOFCONFIG_CLIENT_PORTS/ {print replacement; next} - {print} - ' "$CONFIG_ETC" > "$CONFIG_ETC.tmp" && mv "$CONFIG_ETC.tmp" "$CONFIG_ETC" - - log_success "EOFCONFIG_CLIENT_PORTS înlocuit cu blocurile Port" -fi - -# Corectare specială pentru EOFCONFIG_SSL_PORTS -if grep -q "EOFCONFIG_SSL_PORTS" "$CONFIG_ETC"; then - log_warn "EOFCONFIG_SSL_PORTS găsit - îl înlocuiesc cu blocuri SSL..." - - SSL_PORTS_BLOCK='# Porturi SSL/TLS pentru clienți -Port { - vhost = "127.0.0.1" 6697; - ssl = yes; - hidden = yes; -}; - -Port { - vhost = "127.0.0.1" 9999; - ssl = yes; - hidden = yes; -};' - - awk -v replacement="$SSL_PORTS_BLOCK" ' - /EOFCONFIG_SSL_PORTS/ {print replacement; next} - {print} - ' "$CONFIG_ETC" > "$CONFIG_ETC.tmp" && mv "$CONFIG_ETC.tmp" "$CONFIG_ETC" - - log_success "EOFCONFIG_SSL_PORTS înlocuit cu blocurile SSL" -fi - -# 4. Verifică și corectează setările de host hiding -log_info "Verificare și corectare host hiding..." - -# Verifică dacă HOST_HIDING_STYLE există -if ! grep -q '"HOST_HIDING_STYLE"' "$CONFIG_ETC"; then - log_warn "HOST_HIDING_STYLE lipsește, îl adaug..." - # Adaugă după HOST_HIDING = TRUE - sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "3";' "$CONFIG_ETC" -else - # Actualizează la versiunea 3 pentru format hexadecimal - sed -i 's/"HOST_HIDING_STYLE" = "[^"]*"/"HOST_HIDING_STYLE" = "3"/' "$CONFIG_ETC" - log_warn "HOST_HIDING_STYLE actualizat la 3 (format hexadecimal)" -fi - -# Verifică dacă HIDDEN_IP există -if ! grep -q '"HIDDEN_IP"' "$CONFIG_ETC"; then - log_warn "HIDDEN_IP lipsește, îl adaug..." - # Adaugă după HIDDEN_HOST - sed -i '/"HIDDEN_HOST" = /a\ "HIDDEN_IP" = "127.0.0.1";' "$CONFIG_ETC" -fi - -# Verifică dacă HIDDEN_HOSTTYPE există (necesar pentru format hexadecimal) -if ! grep -q '"HIDDEN_HOSTTYPE"' "$CONFIG_ETC"; then - log_warn "HIDDEN_HOSTTYPE lipsește, îl adaug pentru format hexadecimal..." - # Adaugă după HIDDEN_IP - sed -i '/"HIDDEN_IP" = "127.0.0.1"/a\ "HIDDEN_HOSTTYPE" = "3";' "$CONFIG_ETC" -fi - -# Verifică dacă CPATH există în features -if ! grep -q '"CPATH"' "$CONFIG_ETC"; then - log_warn "CPATH lipsește din features, îl adaug..." - # Adaugă în secțiunea features - sed -i '/features {/a\ "CPATH" = "'$PREFIX'/lib/ircd.conf";' "$CONFIG_ETC" -fi - -# Verifică și adaugă setări pentru notificări WHOIS la operatori -if ! grep -q '"SPY_WHOIS"' "$CONFIG_ETC"; then - log_warn "Setări WHOIS pentru operatori lipsesc, le adaug..." - sed -i '/WHOIS_NOTICE.*TRUE/a\ "SPY_WHOIS" = "TRUE";\n "SNOMASK_OPERDEFAULT" = "1024";\n "SNOMASK_DEFAULT" = "1024";' "$CONFIG_ETC" -fi - -# Verifică dacă operatorii au privilegiile WHOIS_NOTICE -if ! grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_ETC"; then - log_warn "Privilegii WHOIS pentru operatori lipsesc, le adaug..." - sed -i '/admin = yes/a\ snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";' "$CONFIG_ETC" -fi - -# 5. Verifică și corectează modul utilizatorilor în clasa Other -if grep -q 'usermode = "+i"' "$CONFIG_ETC"; then - log_warn "Corectez usermode pentru clasa Other: +i -> +ix" - sed -i 's/usermode = "+i"/usermode = "+ix"/' "$CONFIG_ETC" -fi - -# 6. Verifică ghilimelele -if grep -n '[^"]"[^"]' "$CONFIG_ETC" >/dev/null; then - log_warn "Posibile probleme cu ghilimele găsite" - grep -n '[^"]"[^"]' "$CONFIG_ETC" -fi - -# 7. Verifică acoladele -OPEN_BRACES=$(grep -o '{' "$CONFIG_ETC" | wc -l) -CLOSE_BRACES=$(grep -o '}' "$CONFIG_ETC" | wc -l) - -if [ "$OPEN_BRACES" -ne "$CLOSE_BRACES" ]; then - log_error "Acolade necorect balansate: $OPEN_BRACES deschise, $CLOSE_BRACES închise" -else - log_success "Acolade corect balansate: $OPEN_BRACES perechi" -fi - -# Pas 4: Setează permisiuni -log_info "Pas 4: Setare permisiuni..." -chmod 600 "$CONFIG_ETC" -chown $(whoami):$(whoami) "$CONFIG_ETC" 2>/dev/null || true -log_success "Permisiuni setate: 600 pe $CONFIG_ETC" - -# Pas 5: Test final -log_info "Pas 5: Test final configurație..." - -if [ -x "$PREFIX/bin/ircd" ]; then - FINAL_TEST=$("$PREFIX/bin/ircd" -k -f "$CONFIG_ETC" 2>&1) - FINAL_EXIT=$? - - if [ $FINAL_EXIT -eq 0 ]; then - echo -e "${VERDE}" - echo "════════════════════════════════════════" - echo " ✓ CONFIGURAȚIA A FOST REPARATĂ!" - echo "════════════════════════════════════════" - echo -e "${NC}" - - log_success "Configurația este acum validă" - log_info "Poți porni serverul cu: $PREFIX/bin/ircd -f $CONFIG_ETC" - else - log_error "Configurația încă are erori:" - echo "$FINAL_TEST" - echo "" - log_warn "Încearcă să regenerezi configurația cu ./install.sh" - fi -else - log_warn "Nu pot testa configurația (ircd nu găsit)" - log_info "Verifică manual cu: $PREFIX/bin/ircd -k -f $CONFIG_ETC" -fi - -echo "" -log_info "Locația configurației corecte: $CONFIG_ETC" -log_info "Pentru editare: nano $CONFIG_ETC" diff --git a/fix-eofconfig-ports.sh b/fix-eofconfig-ports.sh deleted file mode 100644 index f9c9d31..0000000 --- a/fix-eofconfig-ports.sh +++ /dev/null @@ -1,257 +0,0 @@ -#!/bin/bash -# -# Script specializat pentru repararea placeholder-urilor EOFCONFIG_CLIENT_PORTS în ircd.conf -# Limba: Română -# - -# Culori -ROSU='\033[0;31m' -VERDE='\033[0;32m' -GALBEN='\033[1;33m' -ALBASTRU='\033[0;34m' -NC='\033[0m' - -log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; } -log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; } -log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; } -log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; } - -echo -e "${ALBASTRU}" -echo "════════════════════════════════════════" -echo " Reparare EOFCONFIG_CLIENT_PORTS" -echo "════════════════════════════════════════" -echo -e "${NC}" - -# Detectează PREFIX -if [ -n "$1" ]; then - PREFIX="$1" -elif [ -d "$HOME/ircd" ]; then - PREFIX="$HOME/ircd" -elif [ -d "/home/ircd/ircd" ]; then - PREFIX="/home/ircd/ircd" -else - log_error "Nu pot detecta directorul IRCd!" - echo "Utilizare: $0 [PREFIX_PATH]" - exit 1 -fi - -CONFIG_FILE="$PREFIX/lib/ircd.conf" -if [ ! -f "$CONFIG_FILE" ] && [ -f "$PREFIX/etc/ircd.conf" ]; then - CONFIG_FILE="$PREFIX/etc/ircd.conf" - log_warn "Config găsit în etc/ în loc de lib/ - va fi mutat după reparare" -fi - -log_info "Folosesc PREFIX: $PREFIX" -log_info "Config file: $CONFIG_FILE" - -if [ ! -f "$CONFIG_FILE" ]; then - log_error "Fișierul de configurare nu există: $CONFIG_FILE" - exit 1 -fi - -echo "" -echo -e "${GALBEN}═══ DIAGNOSTIC PLACEHOLDER EOFCONFIG ═══${NC}" - -# Verifică placeholder-urile problematice -echo "" -log_info "Căutare placeholder-uri EOFCONFIG..." - -if grep -q "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE"; then - log_error "EOFCONFIG_CLIENT_PORTS găsit - acesta cauzează eroarea de sintaxă!" - PROBLEM_LINE=$(grep -n "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE" | cut -d: -f1) - log_warn "Pe linia: $PROBLEM_LINE" -fi - -if grep -q "EOFCONFIG_SSL_PORTS" "$CONFIG_FILE"; then - log_warn "EOFCONFIG_SSL_PORTS găsit - și acesta trebuie înlocuit" -fi - -if grep -q "EOFCONFIG_NETWORK" "$CONFIG_FILE"; then - log_warn "EOFCONFIG_NETWORK găsit - și acesta trebuie înlocuit" -fi - -# Afișează contextul erorii -echo "" -log_info "Context linia problematică:" -echo -e "${GALBEN}────────────────────────────────────────${NC}" -grep -n -A3 -B3 "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE" 2>/dev/null || echo "Nu găsesc EOFCONFIG_CLIENT_PORTS" -echo -e "${GALBEN}────────────────────────────────────────${NC}" - -# Întrebă dacă să aplice reparația -echo "" -echo -e "${GALBEN}Vrei să înlocuiesc toate placeholder-urile EOFCONFIG cu valori corecte? [y/N]:${NC}" -read -r apply_fixes - -if [[ "$apply_fixes" =~ ^[Yy]$ ]]; then - echo "" - echo -e "${VERDE}═══ APLICARE REPARAȚII PLACEHOLDER ═══${NC}" - - # Backup - cp "$CONFIG_FILE" "$CONFIG_FILE.backup.eofconfig.$(date +%s)" - log_success "Backup creat: $CONFIG_FILE.backup.eofconfig.*" - - # 1. Înlocuiește EOFCONFIG_CLIENT_PORTS cu porturile standard - log_info "Înlocuiesc EOFCONFIG_CLIENT_PORTS cu porturile client standard..." - - # Detectează IP-ul din configurație pentru a-l folosi în porturi - DETECTED_IP=$(grep -m1 'vhost = ' "$CONFIG_FILE" | sed 's/.*vhost = "\([^"]*\)".*/\1/' | head -1) - VHOST_IP="${DETECTED_IP:-127.0.0.1}" - - log_info "Folosesc IP-ul detectat pentru porturi: $VHOST_IP" - - CLIENT_PORTS_BLOCK="# Porturi publice pentru clienți -Port { - vhost = \"$VHOST_IP\" 6660; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6661; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6662; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6663; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6664; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6665; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6666; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6667; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6668; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 6669; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 7000; - hidden = yes; -};" - - # Înlocuiește placeholder-ul cu blocul de porturi - if grep -q "EOFCONFIG_CLIENT_PORTS" "$CONFIG_FILE"; then - # Creează un fișier temporar cu înlocuirea - awk -v replacement="$CLIENT_PORTS_BLOCK" ' - /EOFCONFIG_CLIENT_PORTS/ {print replacement; next} - {print} - ' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE" - log_success "EOFCONFIG_CLIENT_PORTS înlocuit cu blocurile Port" - fi - - # 2. Înlocuiește EOFCONFIG_SSL_PORTS cu porturile SSL - log_info "Înlocuiesc EOFCONFIG_SSL_PORTS cu porturile SSL..." - - SSL_PORTS_BLOCK="# Porturi SSL/TLS pentru clienți -Port { - vhost = \"$VHOST_IP\" 6697; - ssl = yes; - hidden = yes; -}; - -Port { - vhost = \"$VHOST_IP\" 9999; - ssl = yes; - hidden = yes; -};" - - if grep -q "EOFCONFIG_SSL_PORTS" "$CONFIG_FILE"; then - awk -v replacement="$SSL_PORTS_BLOCK" ' - /EOFCONFIG_SSL_PORTS/ {print replacement; next} - {print} - ' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE" - log_success "EOFCONFIG_SSL_PORTS înlocuit cu blocurile SSL" - fi - - # 3. Înlocuiește alte placeholder-uri comune - log_info "Înlocuiesc alte placeholder-uri EOFCONFIG..." - - sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$CONFIG_FILE" - sed -i "s|EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_FILE" - sed -i "s|\\.EOFCONFIG_NETWORK|.underchat.org|g" "$CONFIG_FILE" - sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.underchat.org|g" "$CONFIG_FILE" - - log_success "Alte placeholder-uri EOFCONFIG înlocuite" - - # 4. Reparare specială pentru problema cu snomask (linia 206) - log_info "Verific și repar problema cu snomask..." - - if grep -q 'snomask = ".*HACK.*"' "$CONFIG_FILE"; then - log_warn "Găsit snomask problematic cu HACK - îl corectez..." - sed -i 's/snomask = ".*HACK.*"/snomask = "+s";/' "$CONFIG_FILE" - log_success "Snomask corectat la format simplu +s" - fi - - echo "" - echo -e "${VERDE}═══ TEST FINAL ═══${NC}" - - # Verifică dacă mai există placeholder-uri - if grep -q "EOFCONFIG" "$CONFIG_FILE"; then - log_warn "Încă mai există placeholder-uri EOFCONFIG:" - grep -n "EOFCONFIG" "$CONFIG_FILE" - else - log_success "✓ Toate placeholder-urile EOFCONFIG au fost înlocuite!" - fi - - # Test sintaxă - if [ -x "$PREFIX/bin/ircd" ]; then - log_info "Test sintaxă configurație..." - if "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" > /dev/null 2>&1; then - log_success "✓ Sintaxă configurație validă!" - else - log_error "✗ Încă mai sunt erori în configurație:" - "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" 2>&1 | head -10 - fi - fi - - echo "" - echo -e "${VERDE}════════════════════════════════════════${NC}" - echo -e "${VERDE} PLACEHOLDER-URI EOFCONFIG REPARATE!${NC}" - echo -e "${VERDE}════════════════════════════════════════${NC}" - echo "" - echo -e "${GALBEN}Rezultat:${NC}" - echo "- EOFCONFIG_CLIENT_PORTS → Blocuri Port 6660-6669, 7000" - echo "- EOFCONFIG_SSL_PORTS → Blocuri SSL Port 6697, 9999" - echo "- EOFCONFIG_NETWORK → underchat.org" - echo "- EOFCONFIG_PREFIX → $PREFIX" - echo "" - echo -e "${GALBEN}Pentru a testa:${NC}" - echo "1. $PREFIX/bin/ircd -c -f $CONFIG_FILE" - echo "2. $PREFIX/bin/ircd -f $CONFIG_FILE" - -else - echo "" - log_info "Reparație anulată. Problema va persista." - echo "" - echo -e "${GALBEN}Pentru reparare manuală:${NC}" - echo "1. Editează $CONFIG_FILE" - echo "2. Înlocuiește 'EOFCONFIG_CLIENT_PORTS' cu blocuri Port" - echo "3. Înlocuiește 'EOFCONFIG_SSL_PORTS' cu blocuri SSL" - echo "4. Înlocuiește 'EOFCONFIG_NETWORK' cu 'underchat.org'" -fi diff --git a/fix-host-hiding.sh b/fix-host-hiding.sh deleted file mode 100644 index e57d35b..0000000 --- a/fix-host-hiding.sh +++ /dev/null @@ -1,241 +0,0 @@ -#!/bin/bash -# -# Script specializat pentru diagnosticarea și repararea host hiding în UnderChat IRCd -# Versiunea: 1.0.3 - Bazată pe configurația funcțională de la ns2.node-ase.ovh -# Limba: Română -# - -# Culori -ROSU='\033[0;31m' -VERDE='\033[0;32m' -GALBEN='\033[1;33m' -ALBASTRU='\033[0;34m' -NC='\033[0m' - -log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; } -log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; } -log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; } -log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; } - -echo -e "${ALBASTRU}" -echo "════════════════════════════════════════" -echo " Diagnostic și Reparare Host Hiding" -echo "════════════════════════════════════════" -echo -e "${NC}" - -# Detectează PREFIX -if [ -n "$1" ]; then - PREFIX="$1" -elif [ -d "$HOME/ircd" ]; then - PREFIX="$HOME/ircd" -elif [ -d "/home/ircd/ircd" ]; then - PREFIX="/home/ircd/ircd" -else - log_error "Nu pot detecta directorul IRCd!" - echo "Utilizare: $0 [PREFIX_PATH]" - exit 1 -fi - -CONFIG_FILE="$PREFIX/etc/ircd.conf" - -log_info "Folosesc PREFIX: $PREFIX" -log_info "Config file: $CONFIG_FILE" - -if [ ! -f "$CONFIG_FILE" ]; then - log_error "Fișierul de configurare nu există: $CONFIG_FILE" - exit 1 -fi - -echo "" -echo -e "${GALBEN}═══ DIAGNOSTIC CURENT ═══${NC}" - -# Compară cu serverul funcțional (ns2.node-ase.ovh) -echo "" -log_info "Comparare cu configurația funcțională de pe ns2.node-ase.ovh..." -echo -e "${VERDE}Pe serverul funcțional IP-ul se ascunde automat cu format hexadecimal:${NC}" -echo -e " Exemplu: ~Raducu@4C5DA6.3305AC.147F4A.B19664.IP" -echo -e "${GALBEN}Pe serverul tău IP-ul rămâne vizibil:${NC}" -echo -e " Problema: ~Raducu@188.24.5.202" - -# Verifică setările actuale de host hiding -echo "" -log_info "Verificare setări HOST_HIDING actuale..." - -if grep -q '"HOST_HIDING" = "TRUE"' "$CONFIG_FILE"; then - log_success "HOST_HIDING = TRUE găsit" -else - log_error "HOST_HIDING = TRUE LIPSEȘTE!" -fi - -if grep -q '"HOST_HIDING_STYLE"' "$CONFIG_FILE"; then - STYLE=$(grep '"HOST_HIDING_STYLE"' "$CONFIG_FILE" | sed -E 's/.*"HOST_HIDING_STYLE" = "([^"]+)".*/\1/') - log_success "HOST_HIDING_STYLE = $STYLE găsit" -else - log_error "HOST_HIDING_STYLE LIPSEȘTE!" -fi - -if grep -q '"HIDDEN_HOST"' "$CONFIG_FILE"; then - HIDDEN_HOST=$(grep '"HIDDEN_HOST"' "$CONFIG_FILE" | sed -E 's/.*"HIDDEN_HOST" = "([^"]+)".*/\1/') - log_success "HIDDEN_HOST = $HIDDEN_HOST găsit" -else - log_error "HIDDEN_HOST LIPSEȘTE!" -fi - -if grep -q '"HIDDEN_IP"' "$CONFIG_FILE"; then - HIDDEN_IP=$(grep '"HIDDEN_IP"' "$CONFIG_FILE" | sed -E 's/.*"HIDDEN_IP" = "([^"]+)".*/\1/') - log_success "HIDDEN_IP = $HIDDEN_IP găsit" -else - log_error "HIDDEN_IP LIPSEȘTE!" -fi - -# Verifică modul utilizatorilor -echo "" -log_info "Verificare moduri utilizatori..." - -if grep -A10 'Class {' "$CONFIG_FILE" | grep -q 'usermode = "+ix"'; then - log_success "Usermode +ix găsit în clase" -else - if grep -A10 'Class {' "$CONFIG_FILE" | grep -q 'usermode = "+i"'; then - log_warn "Usermode +i găsit (ar trebui să fie +ix)" - else - log_error "Niciun usermode +ix găsit!" - fi -fi - -# Verifică placeholder-uri neînlocuite -echo "" -log_info "Verificare placeholder-uri..." - -if grep -q "EOFCONFIG" "$CONFIG_FILE"; then - log_error "Placeholder-uri EOFCONFIG neînlocuite găsite:" - grep -n "EOFCONFIG" "$CONFIG_FILE" | head -5 -fi - -# Afișează setările features complete -echo "" -log_info "Secțiunea features actuală:" -echo -e "${GALBEN}────────────────────────────────────────${NC}" -sed -n '/^features {/,/^};$/p' "$CONFIG_FILE" | head -30 -echo -e "${GALBEN}────────────────────────────────────────${NC}" - -# Întrebă dacă să aplice reparațiile -echo "" -echo -e "${GALBEN}Vrei să aplic reparațiile automate? [y/N]:${NC}" -read -r apply_fixes - -if [[ "$apply_fixes" =~ ^[Yy]$ ]]; then - echo "" - echo -e "${VERDE}═══ APLICARE REPARAȚII ═══${NC}" - - # Backup - cp "$CONFIG_FILE" "$CONFIG_FILE.backup.hosthiding.$(date +%s)" - log_success "Backup creat" - - # 1. Corectează placeholder-uri - if grep -q "EOFCONFIG" "$CONFIG_FILE"; then - log_info "Corectez placeholder-uri EOFCONFIG..." - sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$CONFIG_FILE" - sed -i "s|EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_FILE" - sed -i "s|\\.EOFCONFIG_NETWORK|.underchat.org|g" "$CONFIG_FILE" - sed -i "s|\\*\\.EOFCONFIG_NETWORK|*.underchat.org|g" "$CONFIG_FILE" - log_success "Placeholder-uri corectate" - fi - - # 2. Setează HOST_HIDING_STYLE pentru format hexadecimal exact ca pe ns2.node-ase.ovh - log_info "Configurez HOST_HIDING_STYLE pentru format hexadecimal..." - - # Elimină orice HOST_HIDING_STYLE existent - sed -i '/HOST_HIDING_STYLE/d' "$CONFIG_FILE" - - # Adaugă HOST_HIDING_STYLE = "3" pentru format hexadecimal (ca pe ns2.node-ase.ovh) - sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "3";' "$CONFIG_FILE" - log_success "HOST_HIDING_STYLE setat la 3 (format hexadecimal)" - - # 3. Setează HIDDEN_HOST pentru format .IP - log_info "Configurez HIDDEN_HOST pentru sufix .IP..." - - # Elimină orice HIDDEN_HOST existent - sed -i '/HIDDEN_HOST/d' "$CONFIG_FILE" - - # Adaugă HIDDEN_HOST cu sufix .IP (exact ca pe ns2.node-ase.ovh) - sed -i '/"HOST_HIDING_STYLE" = "3"/a\ "HIDDEN_HOST" = "users.underchat.org";' "$CONFIG_FILE" - sed -i '/"HIDDEN_HOST" = "users.underchat.org"/a\ "HIDDEN_IP" = "127.0.0.1";' "$CONFIG_FILE" - log_success "HIDDEN_HOST și HIDDEN_IP configurate" - - # 4. Adaugă setări critice pentru ascunderea automată - log_info "Adaug setări pentru ascunderea automată la conectare..." - - # Setările specifice pentru a replica comportamentul de pe ns2.node-ase.ovh - if ! grep -q '"HIDDEN_HOSTTYPE"' "$CONFIG_FILE"; then - sed -i '/"HIDDEN_IP" = "127.0.0.1"/a\ "HIDDEN_HOSTTYPE" = "3";' "$CONFIG_FILE" - fi - - if ! grep -q '"AUTOCONNECT_MODE"' "$CONFIG_FILE"; then - sed -i '/"HIDDEN_HOSTTYPE" = "3"/a\ "AUTOCONNECT_MODE" = "+ix";' "$CONFIG_FILE" - fi - - log_success "Setări pentru ascundere automată adăugate" - - # 5. Asigură că toate clasele au usermode +ix pentru ascundere automată - log_info "Configurez toate clasele cu usermode +ix..." - - # Înlocuiește orice usermode existent cu +ix în toate clasele - sed -i 's/usermode = "[^"]*"/usermode = "+ix"/' "$CONFIG_FILE" - log_success "Usermode +ix setat în toate clasele" - - # 6. Verifică și adaugă setări pentru notificări WHOIS la operatori - log_info "Verificare și adăugare setări notificări WHOIS pentru operatori..." - - if ! grep -q '"SPY_WHOIS"' "$CONFIG_FILE"; then - log_info "Adaug setări SPY_WHOIS pentru notificări complete..." - sed -i '/WHOIS_NOTICE.*TRUE/a\ "SPY_WHOIS" = "TRUE";\n "SNOMASK_OPERDEFAULT" = "1024";\n "SNOMASK_DEFAULT" = "1024";' "$CONFIG_FILE" - fi - - if ! grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_FILE"; then - log_info "Adaug privilegii WHOIS pentru operatori..." - sed -i '/admin = yes/a\ snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";' "$CONFIG_FILE" - fi - - log_success "Setări pentru notificări WHOIS la operatori complete" - - echo "" - echo -e "${VERDE}═══ TEST FINAL ═══${NC}" - - # Test sintaxă - if [ -x "$PREFIX/bin/ircd" ]; then - log_info "Test sintaxă configurație..." - if "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" > /dev/null 2>&1; then - log_success "✓ Sintaxă configurație validă!" - else - log_error "✗ Erori în sintaxă găsite:" - "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" 2>&1 | head -10 - fi - fi - - echo "" - echo -e "${VERDE}════════════════════════════════════════${NC}" - echo -e "${VERDE} REPARAȚII APLICATE!${NC}" - echo -e "${VERDE}════════════════════════════════════════${NC}" - echo "" - echo -e "${GALBEN}Pași următori:${NC}" - echo "1. Restart server: $PREFIX/bin/ircd restart" - echo "2. Conectează-te și testează: /mode nickname +x" - echo "3. Verifică cu /whois nickname" - echo "" - echo -e "${GALBEN}Dacă tot nu funcționează:${NC}" - echo "- Recompilează cu: make clean && make install" - echo "- Verifică support compilation cu: ./configure --help | grep hiding" - -else - echo "" - log_info "Reparații anulate. Pentru aplicare manuală:" - echo "" - echo -e "${GALBEN}Setări necesare în features:${NC}" - echo ' "HOST_HIDING" = "TRUE";' - echo ' "HOST_HIDING_STYLE" = "1";' - echo ' "HIDDEN_HOST" = "users.underchat.org";' - echo ' "HIDDEN_IP" = "127.0.0.1";' - echo "" - echo -e "${GALBEN}În clase, usermode:${NC}" - echo ' usermode = "+ix";' -fi diff --git a/fix-whois-notifications.sh b/fix-whois-notifications.sh deleted file mode 100644 index 1eea627..0000000 --- a/fix-whois-notifications.sh +++ /dev/null @@ -1,222 +0,0 @@ -#!/bin/bash -# -# Script specializat pentru repararea notificărilor WHOIS la operatori în UnderChat IRCd -# Limba: Română -# - -# Culori -ROSU='\033[0;31m' -VERDE='\033[0;32m' -GALBEN='\033[1;33m' -ALBASTRU='\033[0;34m' -NC='\033[0m' - -log_info() { echo -e "${ALBASTRU}[INFO]${NC} $1"; } -log_success() { echo -e "${VERDE}[SUCCES]${NC} $1"; } -log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; } -log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; } - -echo -e "${ALBASTRU}" -echo "════════════════════════════════════════" -echo " Reparare Notificări WHOIS Operatori" -echo "════════════════════════════════════════" -echo -e "${NC}" - -# Detectează PREFIX -if [ -n "$1" ]; then - PREFIX="$1" -elif [ -d "$HOME/ircd" ]; then - PREFIX="$HOME/ircd" -elif [ -d "/home/ircd/ircd" ]; then - PREFIX="/home/ircd/ircd" -else - log_error "Nu pot detecta directorul IRCd!" - echo "Utilizare: $0 [PREFIX_PATH]" - exit 1 -fi - -CONFIG_FILE="$PREFIX/etc/ircd.conf" - -log_info "Folosesc PREFIX: $PREFIX" -log_info "Config file: $CONFIG_FILE" - -if [ ! -f "$CONFIG_FILE" ]; then - log_error "Fișierul de configurare nu există: $CONFIG_FILE" - exit 1 -fi - -echo "" -echo -e "${GALBEN}═══ DIAGNOSTIC NOTIFICĂRI WHOIS ═══${NC}" - -# Verifică setările actuale pentru notificări WHOIS -echo "" -log_info "Verificare setări notificări WHOIS actuale..." - -# Verifică features -if grep -q '"OPER_WHOIS_PARANOIA" = "TRUE"' "$CONFIG_FILE"; then - log_success "OPER_WHOIS_PARANOIA = TRUE găsit" -else - log_error "OPER_WHOIS_PARANOIA = TRUE LIPSEȘTE!" -fi - -if grep -q '"WHOIS_NOTICE" = "TRUE"' "$CONFIG_FILE"; then - log_success "WHOIS_NOTICE = TRUE găsit" -else - log_error "WHOIS_NOTICE = TRUE LIPSEȘTE!" -fi - -if grep -q '"SPY_WHOIS" = "TRUE"' "$CONFIG_FILE"; then - log_success "SPY_WHOIS = TRUE găsit" -else - log_error "SPY_WHOIS = TRUE LIPSEȘTE (necesar pentru notificări complete)!" -fi - -# Verifică snomask -if grep -q 'SNOMASK_OPERDEFAULT' "$CONFIG_FILE"; then - SNOMASK_OP=$(grep 'SNOMASK_OPERDEFAULT' "$CONFIG_FILE" | sed -E 's/.*"SNOMASK_OPERDEFAULT" = "([^"]+)".*/\1/') - log_success "SNOMASK_OPERDEFAULT = $SNOMASK_OP găsit" -else - log_error "SNOMASK_OPERDEFAULT LIPSEȘTE!" -fi - -# Verifică operatori -echo "" -log_info "Verificare configurație operatori..." - -if grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_FILE"; then - log_success "Privilegiul PRIV_WHOIS_NOTICE găsit pentru operatori" -else - log_error "Privilegiul PRIV_WHOIS_NOTICE LIPSEȘTE pentru operatori!" -fi - -if grep -A5 'Operator {' "$CONFIG_FILE" | grep -q 'snomask'; then - SNOMASK_OPER=$(grep -A10 'Operator {' "$CONFIG_FILE" | grep 'snomask' | head -1) - log_success "Snomask pentru operatori găsit: $SNOMASK_OPER" -else - log_error "Snomask pentru operatori LIPSEȘTE!" -fi - -# Verifică clasa Opers -echo "" -log_info "Verificare clasa Opers..." - -if grep -A10 'name = "Opers"' "$CONFIG_FILE" | grep -q 'usermode = "+Wx"'; then - log_success "Usermode +Wx găsit în clasa Opers (corect pentru notificări)" -else - if grep -A10 'name = "Opers"' "$CONFIG_FILE" | grep -q 'usermode = "+W"'; then - log_warn "Usermode +W găsit (ar trebui să fie +Wx pentru notificări complete)" - else - log_error "Niciun usermode +W găsit în clasa Opers!" - fi -fi - -# Afișează setările actuale -echo "" -log_info "Setări WHOIS actuale în features:" -echo -e "${GALBEN}────────────────────────────────────────${NC}" -grep -A20 'features {' "$CONFIG_FILE" | grep -E 'WHOIS|SNOMASK' | head -10 -echo -e "${GALBEN}────────────────────────────────────────${NC}" - -echo "" -log_info "Configurație operatori actuală:" -echo -e "${GALBEN}────────────────────────────────────────${NC}" -sed -n '/^Operator {/,/^};$/p' "$CONFIG_FILE" | head -15 -echo -e "${GALBEN}────────────────────────────────────────${NC}" - -# Întrebă dacă să aplice reparațiile -echo "" -echo -e "${GALBEN}Vrei să aplic reparațiile pentru notificări WHOIS? [y/N]:${NC}" -read -r apply_fixes - -if [[ "$apply_fixes" =~ ^[Yy]$ ]]; then - echo "" - echo -e "${VERDE}═══ APLICARE REPARAȚII NOTIFICĂRI WHOIS ═══${NC}" - - # Backup - cp "$CONFIG_FILE" "$CONFIG_FILE.backup.whois.$(date +%s)" - log_success "Backup creat" - - # 1. Adaugă sau corectează features pentru WHOIS - log_info "Configurez features pentru notificări WHOIS..." - - if ! grep -q '"SPY_WHOIS"' "$CONFIG_FILE"; then - log_info "Adaug SPY_WHOIS pentru notificări complete..." - sed -i '/"WHOIS_NOTICE" = "TRUE"/a\ "SPY_WHOIS" = "TRUE";' "$CONFIG_FILE" - fi - - if ! grep -q '"SNOMASK_OPERDEFAULT"' "$CONFIG_FILE"; then - log_info "Adaug SNOMASK_OPERDEFAULT..." - sed -i '/"SPY_WHOIS" = "TRUE"/a\ "SNOMASK_OPERDEFAULT" = "1024";' "$CONFIG_FILE" - fi - - if ! grep -q '"SNOMASK_DEFAULT"' "$CONFIG_FILE"; then - log_info "Adaug SNOMASK_DEFAULT..." - sed -i '/"SNOMASK_OPERDEFAULT"/a\ "SNOMASK_DEFAULT" = "1024";' "$CONFIG_FILE" - fi - - log_success "Features WHOIS configurate" - - # 2. Configurează operatorii cu privilegii WHOIS - log_info "Configurez operatorii cu privilegii WHOIS..." - - if ! grep -q 'PRIV_WHOIS_NOTICE' "$CONFIG_FILE"; then - log_info "Adaug privilegii WHOIS pentru operatori..." - # Găsește secțiunea Operator și adaugă privilegiile - sed -i '/admin = yes/a\ snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";\n privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";' "$CONFIG_FILE" - fi - - log_success "Privilegii WHOIS pentru operatori configurate" - - # 3. Actualizează clasa Opers - log_info "Actualizez clasa Opers cu usermode +Wx..." - - # Găsește și actualizează usermode în clasa Opers - sed -i '/name = "Opers"/,/}/ s/usermode = "[^"]*"/usermode = "+Wx"/' "$CONFIG_FILE" - - log_success "Clasa Opers actualizată cu +Wx" - - echo "" - echo -e "${VERDE}═══ TEST FINAL ═══${NC}" - - # Test sintaxă - if [ -x "$PREFIX/bin/ircd" ]; then - log_info "Test sintaxă configurație..." - if "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" > /dev/null 2>&1; then - log_success "✓ Sintaxă configurație validă!" - else - log_error "✗ Erori în sintaxă găsite:" - "$PREFIX/bin/ircd" -c -f "$CONFIG_FILE" 2>&1 | head -10 - fi - fi - - echo "" - echo -e "${VERDE}════════════════════════════════════════${NC}" - echo -e "${VERDE} NOTIFICĂRI WHOIS REPARATE!${NC}" - echo -e "${VERDE}════════════════════════════════════════${NC}" - echo "" - echo -e "${GALBEN}Pași următori:${NC}" - echo "1. Restart server: $PREFIX/bin/ircd restart" - echo "2. Fă-te operator: /oper username parola" - echo "3. Verifică că primești +W: /mode nickname" - echo "4. Testează: askă pe cineva să-ți dea /whois" - echo "" - echo -e "${VERDE}Ar trebui să primești notificarea:${NC}" - echo -e "${ALBASTRU}*** Notice: nickname (user@host) is doing a WHOIS on you${NC}" - -else - echo "" - log_info "Reparații anulate. Pentru aplicare manuală:" - echo "" - echo -e "${GALBEN}Setări necesare în features:${NC}" - echo ' "OPER_WHOIS_PARANOIA" = "TRUE";' - echo ' "WHOIS_NOTICE" = "TRUE";' - echo ' "SPY_WHOIS" = "TRUE";' - echo ' "SNOMASK_OPERDEFAULT" = "1024";' - echo "" - echo -e "${GALBEN}În secțiunea Operator:${NC}" - echo ' snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE";' - echo ' privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN";' - echo "" - echo -e "${GALBEN}În clasa Opers:${NC}" - echo ' usermode = "+Wx";' -fi diff --git a/install-madrid.sh b/install-madrid.sh deleted file mode 100644 index 1dba3e9..0000000 --- a/install-madrid.sh +++ /dev/null @@ -1,304 +0,0 @@ -#!/bin/bash -# -# Script de instalare automată UnderChat IRCd pentru Madrid.ES.EU.UnderChat.org -# Pre-configurat cu toate setările corecte -# Versiune: v1.0.6-madrid -# - -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}[SUCCES]${NC} $1"; } -log_warn() { echo -e "${GALBEN}[AVERTIZARE]${NC} $1"; } -log_error() { echo -e "${ROSU}[EROARE]${NC} $1"; } - -echo -e "${ALBASTRU}" -echo "═══════════════════════════════════════════════" -echo " Instalare UnderChat IRCd - Madrid Server" -echo "═══════════════════════════════════════════════" -echo -e "${NC}" - -# Setări pre-configurate pentru Madrid -PREFIX="$HOME/ircd" -MAXCON=4096 -NETWORK_NAME="UnderChat.org" -SERVER_NAME="Madrid.ES.EU.UnderChat.org" -SERVER_DESC="The UnderChat.org Network - Madrid Node" -VHOST_IPV4="10.0.0.125" -SERVER_NUMERIC=1 -ADMIN_LOCATION="Madrid, Spain" -ADMIN_CONTACT="admin@UnderChat.org" -OPER_USERNAME="Raducu" -OPER_PASSWORD="muiesteaua" -CLIENT_PORTS="6667" -SERVER_PORT=4400 - -log_info "Configurație Madrid:" -echo " → Rețea: $NETWORK_NAME" -echo " → Server: $SERVER_NAME" -echo " → IP: $VHOST_IPV4" -echo " → Port client: $CLIENT_PORTS" -echo " → Operator: $OPER_USERNAME" -echo "" - -# Verifică dacă suntem în directorul corect -if [ ! -f "./configure" ]; then - log_error "Nu sunt în directorul ircu2! Rulează din directorul unde ai clonat repository-ul." - exit 1 -fi - -# Compilare -log_info "Pas 1/5: Configurare..." -./configure --prefix="$PREFIX" --with-maxcon=$MAXCON - -log_info "Pas 2/5: Compilare..." -make clean -make - -log_info "Pas 3/5: Instalare..." -make install - -# Creare directoare -log_info "Pas 4/5: Creare structură directoare..." -mkdir -p "$PREFIX/lib" -mkdir -p "$PREFIX/etc" -mkdir -p "$PREFIX/log" -mkdir -p "$PREFIX/var" - -# Generare configurație DIRECT fără placeholder-uri -log_info "Pas 5/5: Generare configurație Madrid..." - -cat > "$PREFIX/lib/ircd.conf" << EOF -# Configurație UnderChat IRCd - Madrid.ES.EU.UnderChat.org -# Generat automat: $(date) -# Versiune: v1.0.6-madrid - -General { - name = "$SERVER_NAME"; - vhost = "$VHOST_IPV4"; - description = "$SERVER_DESC"; - numeric = $SERVER_NUMERIC; - dns server = "8.8.8.8"; - dns server = "1.1.1.1"; -}; - -Admin { - Location = "$NETWORK_NAME World"; - Location = "$ADMIN_LOCATION"; - Contact = "$ADMIN_CONTACT"; -}; - -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 = "$VHOST_IPV4" $SERVER_PORT; - server = yes; - hidden = yes; -}; - -Port { - vhost = "$VHOST_IPV4" $CLIENT_PORTS; - hidden = yes; -}; - -Operator { - name = "$OPER_USERNAME"; - password = "\$PLAIN\$$OPER_PASSWORD"; - host = "*@*"; - class = "Opers"; - admin = yes; - hide_oper = no; - hide_channels = no; - snomask = "+s"; - privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN"; -}; - -features { - "NETWORK" = "$NETWORK_NAME"; - "DOMAINNAME" = "$NETWORK_NAME"; - - "LOG" = "SYSTEM" "FILE" "$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.$NETWORK_NAME"; - "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" = "$PREFIX/lib/ircd.motd"; - "RPATH" = "$PREFIX/lib/remote.motd"; - "PPATH" = "$PREFIX/var/ircd.pid"; - "CPATH" = "$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" = "*.$NETWORK_NAME"; - "HIS_SERVERINFO" = "The $NETWORK_NAME 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"; -}; -EOF - -# MOTD -cat > "$PREFIX/lib/ircd.motd" << 'EOFMOTD' -╔═══════════════════════════════════════╗ -║ Bine venit pe UnderChat IRCd! ║ -║ Madrid.ES.EU.UnderChat.org ║ -║ ║ -║ Versiune: v1.0.6-madrid ║ -║ ║ -║ 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! 🎉 -EOFMOTD - -# Setare permisiuni -chmod 600 "$PREFIX/lib/ircd.conf" -cp "$PREFIX/lib/ircd.motd" "$PREFIX/etc/ircd.motd" -cp "$PREFIX/lib/ircd.conf" "$PREFIX/etc/ircd.conf" - -# Test sintaxă -log_info "Test sintaxă configurație..." -if "$PREFIX/bin/ircd" -c -f "$PREFIX/lib/ircd.conf"; then - log_success "✓ Configurația este validă!" -else - log_error "✗ Erori în configurație - verifică manual" - exit 1 -fi - -echo "" -echo -e "${VERDE}" -echo "═══════════════════════════════════════════════" -echo " ✓ INSTALARE COMPLETĂ - Madrid Server!" -echo "═══════════════════════════════════════════════" -echo -e "${NC}" -echo "" -echo -e "${GALBEN}Configurație Madrid:${NC}" -echo " Server: $SERVER_NAME" -echo " IP: $VHOST_IPV4" -echo " Port: $CLIENT_PORTS" -echo " Config: $PREFIX/lib/ircd.conf" -echo "" -echo -e "${GALBEN}Pentru a porni serverul:${NC}" -echo " $PREFIX/bin/ircd" -echo "" -echo -e "${GALBEN}Pentru a te loga ca operator:${NC}" -echo " /oper $OPER_USERNAME $OPER_PASSWORD" -echo "" -log_success "Instalare Madrid completă! Pornește serverul acum!" - diff --git a/install.sh b/install.sh index 0c4b159..0f3ca57 100755 --- a/install.sh +++ b/install.sh @@ -862,12 +862,16 @@ EOFCONFIG sed -i "s|EOFCONFIG_OPER_USER|$oper_user|g" "$config_file" sed -i "s|EOFCONFIG_OPER_PASS|$oper_pass|g" "$config_file" - # Setare HUB flag și CONNECT section + # Setare HUB flag if [ "$is_hub" = "y" ] || [ "$is_hub" = "Y" ]; then sed -i 's|EOFCONFIG_HUB_SETTING|TRUE|g' "$config_file" + else + sed -i 's|EOFCONFIG_HUB_SETTING|FALSE|g' "$config_file" + fi - # Adaugă CONNECT section pentru HUB - HUB_CONNECT_BLOCK="# Conectare la HUB principal + # Generare CONNECT section pentru link server-to-server (independent de HUB/LEAF) + if [ "$HUB_CONFIG" = "yes" ]; then + HUB_CONNECT_BLOCK="# Conectare server-to-server Connect { name = \"$hub_name\"; host = \"$hub_host\"; @@ -880,8 +884,7 @@ Connect { sed -i "s|EOFCONFIG_HUB_CONNECT|$HUB_CONNECT_BLOCK|g" "$config_file" else - sed -i 's|EOFCONFIG_HUB_SETTING|FALSE|g' "$config_file" - sed -i 's|EOFCONFIG_HUB_CONNECT|# Server nu este HUB - fără connect|g' "$config_file" + sed -i 's|EOFCONFIG_HUB_CONNECT|# Niciun link server-to-server configurat|g' "$config_file" fi log_success "Fișier de configurare generat: $config_file" @@ -1127,22 +1130,34 @@ main() { read -p " Este aceasta un server HUB? (y/n) [n]: " is_hub is_hub=${is_hub:-n} - # Dacă e HUB, cere informații linking - if [ "$is_hub" = "y" ] || [ "$is_hub" = "Y" ]; then + # Configurare LINK server-to-server (independent de HUB/LEAF) + echo "" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo -e "${GALBEN}CONFIGURARE LINK SERVER-TO-SERVER${NC}" + echo -e "${GALBEN}═══════════════════════════════════════${NC}" + echo "" + echo " Doriți să configurați un link către alt server IRC?" + echo " (Necesar pentru rețele cu multiple servere)" + echo "" + + read -p " Configurare link server-to-server? (y/n) [n]: " configure_link + configure_link=${configure_link:-n} + + if [ "$configure_link" = "y" ] || [ "$configure_link" = "Y" ]; then echo "" - log_info "Configurare LINK la HUB principal" + log_info "Configurare conexiune server-to-server" echo "" - read -p " Nume HUB [hub.${network_name}]: " hub_name + read -p " Nume server remote [hub.${network_name}]: " hub_name hub_name=${hub_name:-hub.${network_name}} - read -p " IP/Host HUB [192.168.1.100]: " hub_host - hub_host=${hub_host:-192.168.1.100} + read -p " IP/Host server remote [10.0.0.100]: " hub_host + hub_host=${hub_host:-10.0.0.100} - read -p " Port HUB [4400]: " hub_port + read -p " Port server-to-server [4400]: " hub_port hub_port=${hub_port:-4400} - read -s -p " Parola linking: " hub_password + read -s -p " Parola link server: " hub_password echo "" HUB_CONFIG="yes" diff --git a/quick-install-madrid.sh b/quick-install-madrid.sh deleted file mode 100644 index 21208a9..0000000 --- a/quick-install-madrid.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -# Quick Install Script pentru Madrid Server -# Rulează pe serverul Madrid: bash <(curl -s https://gitlab.back.ro/underchat/ircu2/-/raw/main/quick-install-madrid.sh) - -echo "╔═══════════════════════════════════════════════╗" -echo "║ UnderChat IRCd - Madrid Quick Install ║" -echo "╚═══════════════════════════════════════════════╝" -echo "" - -# Cleanup -echo "[1/4] Cleanup instalări vechi..." -rm -rf ~/ircu2 ~/ircd - -# Clone -echo "[2/4] Clonare repository..." -cd ~ && git clone https://gitlab.back.ro/underchat/ircu2.git -cd ~/ircu2 - -# Install -echo "[3/4] Instalare Madrid server..." -chmod +x install-madrid.sh -./install-madrid.sh - -# Done -echo "" -echo "[4/4] ✓ Instalare completă!" -echo "" -echo "Pentru a porni serverul:" -echo " ~/ircd/bin/ircd" -echo "" -echo "Pentru verificare:" -echo " ps aux | grep ircd" -echo "" -