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