lta a#!/bin/bash # # Script specializat pentru diagnosticarea și repararea host hiding î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 " 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}" # 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. Adaugă HOST_HIDING_STYLE dacă lipsește if ! grep -q '"HOST_HIDING_STYLE"' "$CONFIG_FILE"; then log_info "Adaug HOST_HIDING_STYLE..." sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "1";' "$CONFIG_FILE" log_success "HOST_HIDING_STYLE adăugat" fi # 3. Adaugă HIDDEN_IP dacă lipsește if ! grep -q '"HIDDEN_IP"' "$CONFIG_FILE"; then log_info "Adaug HIDDEN_IP..." sed -i '/"HIDDEN_HOST" = /a\ "HIDDEN_IP" = "127.0.0.1";' "$CONFIG_FILE" log_success "HIDDEN_IP adăugat" fi # 4. Corectează usermode if grep -q 'usermode = "+i"' "$CONFIG_FILE"; then log_info "Corectez usermode +i -> +ix..." sed -i 's/usermode = "+i"/usermode = "+ix"/' "$CONFIG_FILE" log_success "Usermode correctat" fi # 5. Adaugă CPATH dacă lipsește if ! grep -q '"CPATH"' "$CONFIG_FILE"; then log_info "Adaug CPATH în features..." sed -i '/features {/a\ "CPATH" = "'$PREFIX'/etc/ircd.conf";' "$CONFIG_FILE" log_success "CPATH adăugat" fi # 6. Verifică și adaugă alte setări importante pentru host hiding if ! grep -q '"USERMODE_x_HIDEMODES"' "$CONFIG_FILE"; then log_info "Adaug setări suplimentare pentru +x..." sed -i '/"HOST_HIDING_STYLE" = "1"/a\ "USERMODE_x_HIDEMODES" = "owhbg";' "$CONFIG_FILE" fi 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