SOLUTIE COMPLETA pentru problema HOST HIDING (IP-ul nu se ascunde)

Problema: IP-ul real (188.24.5.202) apărea în WHOIS în loc să fie ascuns
- Placeholder-uri EOFCONFIG_NETWORK neînlocuite
- HOST_HIDING_STYLE lipsă (critic pentru funcționare)
- HIDDEN_IP lipsă (IP-ul real rămâne vizibil)
- Usermode +i în loc de +ix (modul +x nu se aplica)
REMEDIERI APLICATE:
1. admin.sh - Config standard îmbunătățit:
    HOST_HIDING_STYLE = 1 adăugat
    HIDDEN_IP = 127.0.0.1 adăugat
    CPATH, MPATH, RPATH, PPATH setate corect
    Usermode +Wx în clasa Opers
    OPER_WHOIS_PARANOIA și WHOIS_NOTICE
2. fix-config.sh - Diagnostic și reparare automată:
    Corectare placeholder-uri EOFCONFIG
    Adăugare HOST_HIDING_STYLE dacă lipsește
    Adăugare HIDDEN_IP dacă lipsește
    Corectare usermode +i -> +ix
    Verificări extinse pentru host hiding
3. fix-host-hiding.sh - Script specializat NOU:
    Diagnostic complet setări host hiding
    Identificare cauze (STYLE/IP/usermode/placeholders)
    Reparare automată cu confirmarea utilizatorului
    Test final și instrucțiuni pentru utilizator
4. INSTALL_AUTO.md - Documentație detaliată:
    Secțiune specifică HOST HIDING cu soluții
    Cauze principale și verificări finale
    Comenzi exacte pentru diagnostic și reparare
UTILIZARE:
1. ./fix-host-hiding.sh ~/ircd - pentru diagnostic specializat
2. ./fix-config.sh ~/ircd - pentru reparare generală
3. ./admin.sh → opțiunea 9 - din meniul admin
După aplicare: restart server și testează cu /mode +x și /whois
This commit is contained in:
mihaiitdata 2026-02-13 14:24:37 +02:00
parent a504cf0e28
commit 98b217167f
4 changed files with 304 additions and 7 deletions

View File

@ -296,19 +296,48 @@ nano +126 ~/ircd/etc/ircd.conf # înlocuiește 126 cu linia ta
### Host hiding nu funcționează (problema nr. 2) ### Host hiding nu funcționează (problema nr. 2)
**Simptome**: IP-ul real apare în WHOIS în loc să fie ascuns cu modul +x
```bash ```bash
# În ircd.conf, verifică: # DIAGNOSTIC RAPID - rulează scriptul specializat
./fix-host-hiding.sh ~/ircd
# SAU verifică manual în ircd.conf:
features { features {
"HOST_HIDING" = "TRUE"; "HOST_HIDING" = "TRUE";
"HOST_HIDING_STYLE" = "1"; "HOST_HIDING_STYLE" = "1"; # CRITIC - stilul de ascundere
"HIDDEN_HOST" = "users.underchat.org"; "HIDDEN_HOST" = "users.underchat.org";
"HIDDEN_IP" = "127.0.0.1"; "HIDDEN_IP" = "127.0.0.1"; # CRITIC - IP-ul de înlocuire
"USERMODE_x_HIDEMODES" = "owhbg"; # OPȚIONAL - moduri ascunse
};
# Verifică clasa utilizatorilor:
Class {
name = "Other";
usermode = "+ix"; # TREBUIE să fie +ix, nu doar +i
}; };
# Restart server după modificări # Restart server după modificări
./admin.sh → opțiunea 3) Restart ./admin.sh → opțiunea 3) Restart
``` ```
**Cauze principale**:
1. **HOST_HIDING_STYLE lipsă** - fără asta, ascunderea nu funcționează
2. **HIDDEN_IP lipsă** - IP-ul real rămâne vizibil
3. **Usermode +i în loc de +ix** - modul +x nu se aplică automat
4. **Placeholder-uri neînlocuite** - EOFCONFIG_NETWORK rămâne literal
**Verificare finală**:
```bash
# După restart, conectează-te și testează:
/mode nickname +x
/whois nickname
# Ar trebui să vezi:
# nickname is ~user@users.underchat.org * Hosted by me
# în loc de IP-ul real
```
### Operatorii nu primesc +W (problema nr. 3) ### Operatorii nu primesc +W (problema nr. 3)
```bash ```bash

View File

@ -165,7 +165,7 @@ Class {
freeform = yes; freeform = yes;
show_invis = yes; show_invis = yes;
see_chan = yes; see_chan = yes;
usermode = "+W"; usermode = "+Wx";
}; };
Client { Client {
@ -208,17 +208,33 @@ Operator {
features { features {
"NETWORK" = "underchat.org"; "NETWORK" = "underchat.org";
"DOMAINNAME" = "underchat.org"; "DOMAINNAME" = "underchat.org";
"LOG" = "SYSTEM" "FILE" "EOFCONFIG_PREFIX/log/ircd.log"; "LOG" = "SYSTEM" "FILE" "$PREFIX/log/ircd.log";
"LOG" = "SYSTEM" "LEVEL" "CRIT"; "LOG" = "SYSTEM" "LEVEL" "CRIT";
"HUB" = "FALSE"; "HUB" = "FALSE";
"RELIABLE_CLOCK" = "FALSE"; "RELIABLE_CLOCK" = "FALSE";
"WALLOPS_OPER_ONLY" = "TRUE"; "WALLOPS_OPER_ONLY" = "TRUE";
"NODNS" = "FALSE";
"NOIDENT" = "FALSE";
# Host hiding - setari complete
"HOST_HIDING" = "TRUE"; "HOST_HIDING" = "TRUE";
"HOST_HIDING_STYLE" = "1";
"HIDDEN_HOST" = "users.underchat.org"; "HIDDEN_HOST" = "users.underchat.org";
"HIDDEN_IP" = "127.0.0.1";
# Features pentru operatori si WHOIS
"OPER_WHOIS_PARANOIA" = "TRUE";
"WHOIS_NOTICE" = "TRUE";
# Alte setari
"MAXCHANNELSPERUSER" = "60"; "MAXCHANNELSPERUSER" = "60";
"NICKLEN" = "12"; "NICKLEN" = "12";
"PINGFREQUENCY" = "120"; "PINGFREQUENCY" = "120";
"SETHOST" = "TRUE"; "SETHOST" = "TRUE";
"CPATH" = "$PREFIX/etc/ircd.conf";
"MPATH" = "$PREFIX/etc/ircd.motd";
"RPATH" = "$PREFIX/etc/remote.motd";
"PPATH" = "$PREFIX/var/ircd.pid";
}; };
EOFCONFIG EOFCONFIG

View File

@ -119,8 +119,15 @@ Operator {
features { features {
"NETWORK" = "underchat.org"; "NETWORK" = "underchat.org";
"DOMAINNAME" = "underchat.org";
"HOST_HIDING" = "TRUE"; "HOST_HIDING" = "TRUE";
"HOST_HIDING_STYLE" = "1";
"HIDDEN_HOST" = "users.underchat.org"; "HIDDEN_HOST" = "users.underchat.org";
"HIDDEN_IP" = "127.0.0.1";
"CPATH" = "$PREFIX/etc/ircd.conf";
"MPATH" = "$PREFIX/etc/ircd.motd";
"RPATH" = "$PREFIX/etc/remote.motd";
"PPATH" = "$PREFIX/var/ircd.pid";
}; };
EOF EOF
@ -173,13 +180,49 @@ sed -i '/^$/N;/^\n$/d' "$CONFIG_ETC"
# 2. Corectează spațiile în jurul = # 2. Corectează spațiile în jurul =
sed -i 's/[[:space:]]*=[[:space:]]*/ = /g' "$CONFIG_ETC" sed -i 's/[[:space:]]*=[[:space:]]*/ = /g' "$CONFIG_ETC"
# 3. Verifică ghilimelele # 3. Corectează placeholder-urile neînlocuite
log_info "Corectez placeholder-urile EOFCONFIG..."
sed -i "s|EOFCONFIG_PREFIX|$PREFIX|g" "$CONFIG_ETC"
sed -i "s|EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_ETC"
sed -i "s|\\.EOFCONFIG_NETWORK|underchat.org|g" "$CONFIG_ETC"
# 4. Verifică și corectează setările de host hiding
log_info "Verificare și corectare host hiding..."
# Verifică dacă HOST_HIDING_STYLE există
if ! grep -q '"HOST_HIDING_STYLE"' "$CONFIG_ETC"; then
log_warn "HOST_HIDING_STYLE lipsește, îl adaug..."
# Adaugă după HOST_HIDING = TRUE
sed -i '/"HOST_HIDING" = "TRUE"/a\ "HOST_HIDING_STYLE" = "1";' "$CONFIG_ETC"
fi
# Verifică dacă HIDDEN_IP există
if ! grep -q '"HIDDEN_IP"' "$CONFIG_ETC"; then
log_warn "HIDDEN_IP lipsește, îl adaug..."
# Adaugă după HIDDEN_HOST
sed -i '/"HIDDEN_HOST" = /a\ "HIDDEN_IP" = "127.0.0.1";' "$CONFIG_ETC"
fi
# Verifică dacă CPATH există în features
if ! grep -q '"CPATH"' "$CONFIG_ETC"; then
log_warn "CPATH lipsește din features, îl adaug..."
# Adaugă în secțiunea features
sed -i '/features {/a\ "CPATH" = "'$PREFIX'/etc/ircd.conf";' "$CONFIG_ETC"
fi
# 5. Verifică și corectează modul utilizatorilor în clasa Other
if grep -q 'usermode = "+i"' "$CONFIG_ETC"; then
log_warn "Corectez usermode pentru clasa Other: +i -> +ix"
sed -i 's/usermode = "+i"/usermode = "+ix"/' "$CONFIG_ETC"
fi
# 6. Verifică ghilimelele
if grep -n '[^"]"[^"]' "$CONFIG_ETC" >/dev/null; then if grep -n '[^"]"[^"]' "$CONFIG_ETC" >/dev/null; then
log_warn "Posibile probleme cu ghilimele găsite" log_warn "Posibile probleme cu ghilimele găsite"
grep -n '[^"]"[^"]' "$CONFIG_ETC" grep -n '[^"]"[^"]' "$CONFIG_ETC"
fi fi
# 4. Verifică acoladele # 7. Verifică acoladele
OPEN_BRACES=$(grep -o '{' "$CONFIG_ETC" | wc -l) OPEN_BRACES=$(grep -o '{' "$CONFIG_ETC" | wc -l)
CLOSE_BRACES=$(grep -o '}' "$CONFIG_ETC" | wc -l) CLOSE_BRACES=$(grep -o '}' "$CONFIG_ETC" | wc -l)

209
fix-host-hiding.sh Normal file
View File

@ -0,0 +1,209 @@
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