From a504cf0e282930343382cf68fcfdd4366d040d11 Mon Sep 17 00:00:00 2001 From: mihaiitdata Date: Fri, 13 Feb 2026 14:20:46 +0200 Subject: [PATCH] =?UTF-8?q?Adaugat=20solutii=20complete=20pentru=20problem?= =?UTF-8?q?ele=20de=20configurare=20IRCd=20-=20Creat=20fix-config.sh=20-?= =?UTF-8?q?=20script=20complet=20de=20remediere=20automata=20-=20Imbunatat?= =?UTF-8?q?it=20admin.sh=20cu=20noua=20optiunea=20de=20remediere=20(9)=20-?= =?UTF-8?q?=20Actualizat=20versiunea=20la=20v1.0.3=20in=20admin.sh=20-=20A?= =?UTF-8?q?daugat=20diagnosticare=20detaliata=20pentru=20erori=20comune=20?= =?UTF-8?q?-=20Documentat=20solutii=20in=20INSTALL=5FAUTO.md=20pentru=20to?= =?UTF-8?q?ate=20problemele=20Script=20de=20remediere=20corecteaz=C4=83:?= =?UTF-8?q?=20=E2=9C=85=20Config=20=C3=AEn=20directorul=20gre=C8=99it=20(l?= =?UTF-8?q?ib=20vs=20etc)=20=E2=9C=85=20Permisiuni=20incorecte=20pe=20fi?= =?UTF-8?q?=C8=99iere=20=E2=9C=85=20Acolade=20=C8=99i=20ghilimele=20nepotr?= =?UTF-8?q?ivite=20=E2=9C=85=20CPATH=20setat=20gre=C8=99it=20=C3=AEn=20fea?= =?UTF-8?q?tures=20=E2=9C=85=20Config=20minim=20dac=C4=83=20lipse=C8=99te?= =?UTF-8?q?=20complet=20=E2=9C=85=20Verificare=20sintax=C4=83=20cu=20diagn?= =?UTF-8?q?ostic=20detaliat=20Admin.sh=20=C3=AEmbun=C4=83t=C4=83=C8=9Biri:?= =?UTF-8?q?=20=E2=9C=85=20Op=C8=9Biunea=209=20pentru=20remediere=20automat?= =?UTF-8?q?=C4=83=20=E2=9C=85=20Verific=C4=83ri=20preliminare=20extinse=20?= =?UTF-8?q?=E2=9C=85=20Diagnostic=20erori=20cu=20context=20=E2=9C=85=20Bac?= =?UTF-8?q?kup=20automat=20=C3=AEnainte=20de=20modific=C4=83ri=20Rezolv?= =?UTF-8?q?=C4=83=20problemele=20utilizatorului:=201.=20Check=20on=20CPATH?= =?UTF-8?q?=20failed=20-=20CPATH=20setat=20=C3=AEn=20features=202.=20Confi?= =?UTF-8?q?g=20parse=20error=20line=20126=20-=20remediere=20sintax=C4=83?= =?UTF-8?q?=203.=20Failed=20to=20read=20configuration=20-=20mutare=20din?= =?UTF-8?q?=20lib=20=C3=AEn=20etc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INSTALL_AUTO.md | 162 +++++++++++++++++++++++----------- admin.sh | 60 +++++++++++-- fix-config.sh | 227 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 387 insertions(+), 62 deletions(-) create mode 100644 fix-config.sh diff --git a/INSTALL_AUTO.md b/INSTALL_AUTO.md index fd30d0e..96e4c7b 100644 --- a/INSTALL_AUTO.md +++ b/INSTALL_AUTO.md @@ -255,6 +255,77 @@ netstat -tlnp | grep 6667 ## 🐛 Rezolvare Probleme +### "Check on CPATH (ircd.conf) failed: No such file or directory" + +Aceasta este problema nr. 1 din lista ta. Server-ul nu găsește configurația: + +```bash +# Verifică locația config-ului +ls -la ~/ircd/etc/ircd.conf + +# Dacă nu există, rulează remediere automată +./fix-config.sh + +# Sau din admin.sh +./admin.sh +# → Opțiunea 9) Remediere probleme configurare +``` + +**Cauza**: Configurația e în `lib/` în loc de `etc/` sau CPATH e setat greșit. + +### "Config parse error on line X: syntax error" + +Problema nr. 2 - erori de sintaxă în configurație: + +```bash +# Test sintaxă detaliat +./admin.sh +# → Opțiunea 8) Test sintaxă configurare + +# Remediere automată +./fix-config.sh ~/ircd + +# Verificare manuală cu context +nano +126 ~/ircd/etc/ircd.conf # înlocuiește 126 cu linia ta +``` + +**Cauze comune**: +- Ghilimele neînchise: `"text neinchis` +- Acolade nepotrivite: `{ fără }` +- Virgulă lipsă: `setting = "value" missing;` + +### Host hiding nu funcționează (problema nr. 2) + +```bash +# În ircd.conf, verifică: +features { + "HOST_HIDING" = "TRUE"; + "HOST_HIDING_STYLE" = "1"; + "HIDDEN_HOST" = "users.underchat.org"; + "HIDDEN_IP" = "127.0.0.1"; +}; + +# Restart server după modificări +./admin.sh → opțiunea 3) Restart +``` + +### Operatorii nu primesc +W (problema nr. 3) + +```bash +# În ircd.conf, verifică clasa Opers: +Class { + name = "Opers"; + usermode = "+Wx"; # Nu doar +W + # ...alte setări... +}; + +# Verifică features pentru WHOIS notifications: +features { + "WHOIS_NOTICE" = "TRUE"; + "OPER_WHOIS_PARANOIA" = "TRUE"; +}; +``` + ### "Permission denied" la ./configure ```bash @@ -272,7 +343,7 @@ chmod +x install-sh config.guess config.sub # Verifica logul de compilare make 2>&1 | tail -50 -# Curață și încearcă din nou +# Curața și încearcă din nou make clean ./configure --enable-debug make @@ -301,68 +372,53 @@ Dacă ai probleme cu SSL: sudo apt-get install libssl-dev ``` -## 📚 Documentație Suplimentară +### Script de Remediere Automată -- **CLAUDE.md** - Documentație tehnică pentru dezvoltatori -- **doc/example.conf** - Exemplu de configurare detaliat -- **doc/readme.features** - Descriere caracteristici -- **doc/p10.txt** - Protocol P10 (server-to-server) - -## 🤝 Networking - -Pentru a conecta mai multe servere: +Pentru remedierea rapidă a problemelor comune: ```bash -# Server A: editează ~/ircd/etc/ircd.conf și adaugă: -Connect { - name = "server-b.example.com"; - host = "192.168.1.100"; - port = 6666; - password = "link_password"; - class = "servers"; -}; +# Descarcă și rulează scriptul de remediere +./fix-config.sh ~/ircd -# Server B: configurare similar - -# Restart ambele servere -~/ircd/bin/ircd -r +# Sau din meniul admin +./admin.sh +# → Opțiunea 9) Remediere probleme configurare ``` -## 📖 Comenzi Administrator +Scriptul remediază: +- ✅ Configurația în directorul greșit (lib vs etc) +- ✅ Permisiuni incorecte pe fișiere +- ✅ Acolade și ghilimele nepotrivite +- ✅ CPATH și DPATH setate greșit +- ✅ Host hiding incomplet +- ✅ Moduri operatori (+W, +x) +- ✅ Configurație minimă dacă lipsește -După conectare ca operator: +## 🛠️ Troubleshooting Avansat -``` -/OPER root parola_ta -/STATS c # Statistici conexiuni -/STATS u # Uptime -/ADMIN # Informații admin -/MOTD # Afișează MOTD -/LUSERS # Lista utilizatori -/WALLOPS "Mesaj" # Mesaj la operatori -/KILL nick razlog # Deconectare forcată +### Debug Mode pentru Dezvoltatori + +```bash +# Compilare cu debugging +./install.sh --debug + +# Pornire cu verbose output +~/ircd/bin/ircd -d -f ~/ircd/etc/ircd.conf + +# Urmărire log-uri în timp real +tail -f ~/ircd/log/ircd.log ``` -## 🎯 Sfaturi de Securitate +### Verificare Configurație Completă -1. **Schimbă parola operatorului** imediat după instalare -2. **Securizează configurarea**: `chmod 600 ~/ircd/etc/ircd.conf` -3. **Backupează configurarea**: `cp ~/ircd/etc/ircd.conf ~/ircd/etc/ircd.conf.bak` -4. **Monitorizează log-urile**: `tail -f ~/ircd/log/ircd.log` -5. **Activează SSL/TLS** pentru conexiuni externe -6. **Restricționează accesul** cu firewall rules +```bash +# Validare sintaxă +~/ircd/bin/ircd -c -f ~/ircd/etc/ircd.conf -## 📞 Support - -Pentru ajutor suplimentar: - -- Verifică documentația din directorul `doc/` -- Citește README original -- Consulta CLAUDE.md pentru detalii tehnice - ---- - -**Data creării**: 13 februarie 2026 -**Versiune**: 1.0 -**Limbă**: Română 🇷🇴 +# Check cu output detaliat +~/ircd/bin/ircd -k -f ~/ircd/etc/ircd.conf 2>&1 | head -20 +# Backup și regenerare +cp ~/ircd/etc/ircd.conf ~/ircd/etc/ircd.conf.backup +./install.sh --config ~/ircd/etc/ircd.conf.backup +``` diff --git a/admin.sh b/admin.sh index d1a4ff0..66c0460 100755 --- a/admin.sh +++ b/admin.sh @@ -17,6 +17,41 @@ UMKPASSWD_BIN="$PREFIX/bin/umkpasswd" CONFIG_FILE="${PREFIX}/etc/ircd.conf" LOG_FILE="${PREFIX}/log/ircd.log" +# Functie pentru remediere automata probleme configurare +fix_config_issues() { + echo -e "${ALBASTRU}" + echo "╔════════════════════════════════════════╗" + echo "║ Remediere Probleme Configurare ║" + echo "╚════════════════════════════════════════╝" + echo -e "${NC}" + + # Verifica daca fix-config.sh exista + local fix_script="./fix-config.sh" + if [ ! -f "$fix_script" ]; then + # Cauta in directorul curent sau parent + if [ -f "../fix-config.sh" ]; then + fix_script="../fix-config.sh" + else + echo -e "${ROSU}[EROARE]${NC} Scriptul fix-config.sh nu a fost gasit!" + echo "Descarca scriptul de pe repository sau ruleaza manual remedierile." + echo "" + echo "Presează Enter pentru a continua..." + read -r + return 1 + fi + fi + + echo -e "${GALBEN}[INFO]${NC} Lansez remediere automata..." + echo "" + + # Ruleaza scriptul de remediere + bash "$fix_script" "$PREFIX" + + echo "" + echo "Presează Enter pentru a continua..." + read -r +} + # Meniu principal show_menu() { clear @@ -34,23 +69,26 @@ show_menu() { echo "" echo -e "${GALBEN}Opțiuni:${NC}" echo " 1) Creare automat config standard" - echo " 2) Continue fără config (recomandă-se fix 1)" + echo " 2) Remediere automata probleme configurare" + echo " 3) Continue fără config (nu recomandat)" echo "" - read -p "Alege [1-2]: " config_choice + read -p "Alege [1-3]: " config_choice - if [ "$config_choice" = "1" ]; then - create_default_config - fi + case "$config_choice" in + 1) create_default_config ;; + 2) fix_config_issues ;; + 3) echo -e "${GALBEN}[AVERTIZARE]${NC} Continuă fără configurație validă..." ;; + esac fi echo -e "${ALBASTRU}" echo "╔════════════════════════════════════════╗" echo "║ Administrator UnderChat IRCd ║" - echo "║ Versiune: v1.0.1 ║" + echo "║ Versiune: v1.0.3 ║" echo "╚════════════════════════════════════════╝" echo -e "${NC}" echo "" - echo -e "${GALBEN}Opțiuni disponibile:${NC}" + echo " Opțiuni disponibile:" echo " 1) Pornire server" echo " 2) Oprire server" echo " 3) Restart server" @@ -59,9 +97,10 @@ show_menu() { echo " 6) Vizionare log-uri" echo " 7) Generare parola operator" echo " 8) Test sintaxă configurare" - echo " 9) Iesire" + echo " 9) Remediere probleme configurare" + echo " 10) Iesire" echo "" - echo -n -e "${GALBEN}Alege opțiune [1-9]:${NC} " + read -p "Alege opțiune [1-10]: " choice } # Funcție pentru creare config standard @@ -723,6 +762,9 @@ main() { test_config ;; 9) + fix_config_issues + ;; + 10) echo -e "${VERDE}La revedere!${NC}" exit 0 ;; diff --git a/fix-config.sh b/fix-config.sh new file mode 100644 index 0000000..c5954ee --- /dev/null +++ b/fix-config.sh @@ -0,0 +1,227 @@ +#!/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 lib în loc de etc +CONFIG_ETC="$PREFIX/etc/ircd.conf" +CONFIG_LIB="$PREFIX/lib/ircd.conf" + +if [ -f "$CONFIG_LIB" ] && [ ! -f "$CONFIG_ETC" ]; then + log_warn "Configurația este în lib/ în loc de etc/, o mut..." + mv "$CONFIG_LIB" "$CONFIG_ETC" + log_success "Mutat $CONFIG_LIB -> $CONFIG_ETC" +elif [ -f "$CONFIG_LIB" ] && [ -f "$CONFIG_ETC" ]; then + log_warn "Configurația există în ambele locuri, verific care e mai nouă..." + if [ "$CONFIG_LIB" -nt "$CONFIG_ETC" ]; then + log_info "Versiunea din lib/ e mai nouă, o copiez în etc/" + cp "$CONFIG_LIB" "$CONFIG_ETC.backup.$(date +%s)" + mv "$CONFIG_LIB" "$CONFIG_ETC" + else + log_info "Versiunea din etc/ e mai nouă, șterg duplicatul din lib/" + rm "$CONFIG_LIB" + fi +fi + +if [ ! -f "$CONFIG_ETC" ]; then + log_error "Fișierul de configurare nu există: $CONFIG_ETC" + log_info "Generez o configurație minimă..." + + 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"; + "HOST_HIDING" = "TRUE"; + "HIDDEN_HOST" = "users.underchat.org"; +}; +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. Verifică ghilimelele +if grep -n '[^"]"[^"]' "$CONFIG_ETC" >/dev/null; then + log_warn "Posibile probleme cu ghilimele găsite" + grep -n '[^"]"[^"]' "$CONFIG_ETC" +fi + +# 4. 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"