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