From 98b217167f9e7b7ceae9ee2f7163b0c8b910c4be Mon Sep 17 00:00:00 2001 From: mihaiitdata Date: Fri, 13 Feb 2026 14:24:37 +0200 Subject: [PATCH] =?UTF-8?q?SOLUTIE=20COMPLETA=20pentru=20problema=20HOST?= =?UTF-8?q?=20HIDING=20(IP-ul=20nu=20se=20ascunde)=20Problema:=20IP-ul=20r?= =?UTF-8?q?eal=20(188.24.5.202)=20ap=C4=83rea=20=C3=AEn=20WHOIS=20=C3=AEn?= =?UTF-8?q?=20loc=20s=C4=83=20fie=20ascuns=20-=20Placeholder-uri=20EOFCONF?= =?UTF-8?q?IG=5FNETWORK=20ne=C3=AEnlocuite=20-=20HOST=5FHIDING=5FSTYLE=20l?= =?UTF-8?q?ips=C4=83=20(critic=20pentru=20func=C8=9Bionare)=20-=20HIDDEN?= =?UTF-8?q?=5FIP=20lips=C4=83=20(IP-ul=20real=20r=C4=83m=C3=A2ne=20vizibil?= =?UTF-8?q?)=20-=20Usermode=20+i=20=C3=AEn=20loc=20de=20+ix=20(modul=20+x?= =?UTF-8?q?=20nu=20se=20aplica)=20REMEDIERI=20APLICATE:=201.=20admin.sh=20?= =?UTF-8?q?-=20Config=20standard=20=C3=AEmbun=C4=83t=C4=83=C8=9Bit:=20=20?= =?UTF-8?q?=20=20=E2=9C=85=20HOST=5FHIDING=5FSTYLE=20=3D=201=20ad=C4=83uga?= =?UTF-8?q?t=20=20=20=20=E2=9C=85=20HIDDEN=5FIP=20=3D=20127.0.0.1=20ad?= =?UTF-8?q?=C4=83ugat=20=20=20=20=E2=9C=85=20CPATH,=20MPATH,=20RPATH,=20PP?= =?UTF-8?q?ATH=20setate=20corect=20=20=20=20=E2=9C=85=20Usermode=20+Wx=20?= =?UTF-8?q?=C3=AEn=20clasa=20Opers=20=20=20=20=E2=9C=85=20OPER=5FWHOIS=5FP?= =?UTF-8?q?ARANOIA=20=C8=99i=20WHOIS=5FNOTICE=202.=20fix-config.sh=20-=20D?= =?UTF-8?q?iagnostic=20=C8=99i=20reparare=20automat=C4=83:=20=20=20=20?= =?UTF-8?q?=E2=9C=85=20Corectare=20placeholder-uri=20EOFCONFIG=20=20=20=20?= =?UTF-8?q?=E2=9C=85=20Ad=C4=83ugare=20HOST=5FHIDING=5FSTYLE=20dac=C4=83?= =?UTF-8?q?=20lipse=C8=99te=20=20=20=20=E2=9C=85=20Ad=C4=83ugare=20HIDDEN?= =?UTF-8?q?=5FIP=20dac=C4=83=20lipse=C8=99te=20=20=20=20=E2=9C=85=20Corect?= =?UTF-8?q?are=20usermode=20+i=20->=20+ix=20=20=20=20=E2=9C=85=20Verific?= =?UTF-8?q?=C4=83ri=20extinse=20pentru=20host=20hiding=203.=20fix-host-hid?= =?UTF-8?q?ing.sh=20-=20Script=20specializat=20NOU:=20=20=20=20=E2=9C=85?= =?UTF-8?q?=20Diagnostic=20complet=20set=C4=83ri=20host=20hiding=20=20=20?= =?UTF-8?q?=20=E2=9C=85=20Identificare=20cauze=20(STYLE/IP/usermode/placeh?= =?UTF-8?q?olders)=20=20=20=20=E2=9C=85=20Reparare=20automat=C4=83=20cu=20?= =?UTF-8?q?confirmarea=20utilizatorului=20=20=20=20=E2=9C=85=20Test=20fina?= =?UTF-8?q?l=20=C8=99i=20instruc=C8=9Biuni=20pentru=20utilizator=204.=20IN?= =?UTF-8?q?STALL=5FAUTO.md=20-=20Documenta=C8=9Bie=20detaliat=C4=83:=20=20?= =?UTF-8?q?=20=20=E2=9C=85=20Sec=C8=9Biune=20specific=C4=83=20HOST=20HIDIN?= =?UTF-8?q?G=20cu=20solu=C8=9Bii=20=20=20=20=E2=9C=85=20Cauze=20principale?= =?UTF-8?q?=20=C8=99i=20verific=C4=83ri=20finale=20=20=20=20=E2=9C=85=20Co?= =?UTF-8?q?menzi=20exacte=20pentru=20diagnostic=20=C8=99i=20reparare=20UTI?= =?UTF-8?q?LIZARE:=201.=20./fix-host-hiding.sh=20~/ircd=20-=20pentru=20dia?= =?UTF-8?q?gnostic=20specializat=202.=20./fix-config.sh=20~/ircd=20-=20pen?= =?UTF-8?q?tru=20reparare=20general=C4=83=203.=20./admin.sh=20=E2=86=92=20?= =?UTF-8?q?op=C8=9Biunea=209=20-=20din=20meniul=20admin=20Dup=C4=83=20apli?= =?UTF-8?q?care:=20restart=20server=20=C8=99i=20testeaz=C4=83=20cu=20/mode?= =?UTF-8?q?=20+x=20=C8=99i=20/whois?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INSTALL_AUTO.md | 35 +++++++- admin.sh | 20 ++++- fix-config.sh | 47 +++++++++- fix-host-hiding.sh | 209 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 304 insertions(+), 7 deletions(-) create mode 100644 fix-host-hiding.sh diff --git a/INSTALL_AUTO.md b/INSTALL_AUTO.md index 96e4c7b..e24efc2 100644 --- a/INSTALL_AUTO.md +++ b/INSTALL_AUTO.md @@ -296,19 +296,48 @@ nano +126 ~/ircd/etc/ircd.conf # înlocuiește 126 cu linia ta ### Host hiding nu funcționează (problema nr. 2) +**Simptome**: IP-ul real apare în WHOIS în loc să fie ascuns cu modul +x + ```bash -# În ircd.conf, verifică: +# DIAGNOSTIC RAPID - rulează scriptul specializat +./fix-host-hiding.sh ~/ircd + +# SAU verifică manual în ircd.conf: features { "HOST_HIDING" = "TRUE"; - "HOST_HIDING_STYLE" = "1"; + "HOST_HIDING_STYLE" = "1"; # CRITIC - stilul de ascundere "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 ./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) ```bash diff --git a/admin.sh b/admin.sh index 66c0460..447aaaa 100755 --- a/admin.sh +++ b/admin.sh @@ -165,7 +165,7 @@ Class { freeform = yes; show_invis = yes; see_chan = yes; - usermode = "+W"; + usermode = "+Wx"; }; Client { @@ -208,17 +208,33 @@ Operator { features { "NETWORK" = "underchat.org"; "DOMAINNAME" = "underchat.org"; - "LOG" = "SYSTEM" "FILE" "EOFCONFIG_PREFIX/log/ircd.log"; + "LOG" = "SYSTEM" "FILE" "$PREFIX/log/ircd.log"; "LOG" = "SYSTEM" "LEVEL" "CRIT"; "HUB" = "FALSE"; "RELIABLE_CLOCK" = "FALSE"; "WALLOPS_OPER_ONLY" = "TRUE"; + "NODNS" = "FALSE"; + "NOIDENT" = "FALSE"; + + # Host hiding - setari complete "HOST_HIDING" = "TRUE"; + "HOST_HIDING_STYLE" = "1"; "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"; "NICKLEN" = "12"; "PINGFREQUENCY" = "120"; "SETHOST" = "TRUE"; + "CPATH" = "$PREFIX/etc/ircd.conf"; + "MPATH" = "$PREFIX/etc/ircd.motd"; + "RPATH" = "$PREFIX/etc/remote.motd"; + "PPATH" = "$PREFIX/var/ircd.pid"; }; EOFCONFIG diff --git a/fix-config.sh b/fix-config.sh index c5954ee..3fffced 100644 --- a/fix-config.sh +++ b/fix-config.sh @@ -119,8 +119,15 @@ Operator { features { "NETWORK" = "underchat.org"; + "DOMAINNAME" = "underchat.org"; "HOST_HIDING" = "TRUE"; + "HOST_HIDING_STYLE" = "1"; "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 @@ -173,13 +180,49 @@ sed -i '/^$/N;/^\n$/d' "$CONFIG_ETC" # 2. Corectează spațiile în jurul = 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 log_warn "Posibile probleme cu ghilimele găsite" grep -n '[^"]"[^"]' "$CONFIG_ETC" fi -# 4. Verifică acoladele +# 7. Verifică acoladele OPEN_BRACES=$(grep -o '{' "$CONFIG_ETC" | wc -l) CLOSE_BRACES=$(grep -o '}' "$CONFIG_ETC" | wc -l) diff --git a/fix-host-hiding.sh b/fix-host-hiding.sh new file mode 100644 index 0000000..0ccd15e --- /dev/null +++ b/fix-host-hiding.sh @@ -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