ircu2/fix-eofconfig-ports.sh

242 lines
7.2 KiB
Bash

#!/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/etc/ircd.conf"
if [ -f "$PREFIX/lib/ircd.conf" ]; then
CONFIG_FILE="$PREFIX/lib/ircd.conf"
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..."
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;
};'
# Î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 = "127.0.0.1" 6697;
ssl = yes;
hidden = yes;
};
Port {
vhost = "127.0.0.1" 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"
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