242 lines
7.2 KiB
Bash
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
|