ircu2/FIX_WHOIS_STRING_GOL.md

6.1 KiB

🔧 FIX URGENT - "is an IRC Administrator" PERSISTĂ!

Data: 23 Februarie 2026 22:00
Problema: Ai display = no; dar tot apare "is an IRC Administrator"
Status: CAUZA GĂSITĂ & FIX GATA


🐛 PROBLEMA

Ai adăugat:

  • display = no; în Operator block
  • Comentat features în config:
    # "WHOIS_ADMIN" = "is an UnderChat Founder";
    

DAR tot apare:

Radu2 is an IRC Administrator

CAUZA REALĂ:

Features comentate folosesc DEFAULT-ul din cod!

Când comentezi un feature în config, IRCD-ul folosește valoarea HARDCODATĂ din ircd_features.c:

F_S(WHOIS_ADMIN, 0, "is an IRC Administrator", 0),
                     ^^^^^^^^^^^^^^^^^^^^^^^^
                     Asta e DEFAULT-ul în cod!

Feature comentat = Feature lipsă = Folosește default din cod!


SOLUȚIA CORECTĂ

NU comenta features! Setează-le cu STRING GOL!


🔧 FIX RAPID (1 minut)

Pas 1: Editează Config

nano /home/anope/ircd/lib/ircd.conf

Pas 2: Găsește Features

Caută (CTRL+W): WHOIS_ADMIN

Vei găsi ceva gen (comentat):

features {
    # "WHOIS_OPER" = "is an UnderChat Staff Member";
    # "WHOIS_ADMIN" = "is an UnderChat Founder";
};

Pas 3: DECOMENTEAZĂ și Setează STRING GOL

SCHIMBĂ DE LA (comentat):

features {
    # "WHOIS_OPER" = "is an UnderChat Staff Member";
    # "WHOIS_ADMIN" = "is an UnderChat Founder";
};

LA (decomentate cu string gol):

features {
    "WHOIS_OPER" = "";      # STRING GOL = NU apare mesaj!
    "WHOIS_ADMIN" = "";     # STRING GOL = NU apare mesaj!
};

Pas 4: Salvează și Restart

# Salvează:
CTRL+O, ENTER, CTRL+X

# Restart IRCd:
killall ircd && sleep 3 && /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf

VERIFICARE

Test WHOIS:

/whois Radu2

Ar trebui să vezi:
Radu2 is ~Raducu@4C5DA6.3305AC.147F4A.B19664.IP * Raducu
Radu2 on #CService
Radu2 using *.UnderChat.org The UnderChat.org World
Radu2 End of /WHOIS list.

FĂRĂ:
❌ "is an IRC Administrator"
❌ "is an UnderChat Founder"

📊 CONFIG COMPLET PENTRU STEALTH

Operator Block:

Operator {
    name = "Radu2";
    password = "$5$hash...";
    host = "*@*";
    class = "Opers";
    admin = yes;
    snomask = 157445;
    display = no;           # NU apare în WHOIS
    hide_oper = yes;        # Ascuns din /STATS o
    hide_channels = yes;
    whois_notice = no;
};

Features:

features {
    # ...alte features...
    
    # WHOIS messages SETATE GOL (NU comentate!)
    "WHOIS_OPER" = "";      # STRING GOL override default-ul
    "WHOIS_ADMIN" = "";     # STRING GOL override default-ul
    
    # PĂSTREAZĂ (pentru services):
    "WHOIS_SERVICE" = "is an UnderChat Network Service";
    
    # ...alte features...
};

🎯 DE CE STRING GOL, NU COMENTAT?

Comentat (GREȘIT):

# "WHOIS_ADMIN" = "is an UnderChat Founder";

Rezultat: Feature LIPSEȘTE din config → IRCD folosește DEFAULT din cod → Apare "is an IRC Administrator"!

String Gol (CORECT):

"WHOIS_ADMIN" = "";

Rezultat: Feature SETAT explicit cu string gol → OVERRIDE default-ulNU apare nimic!


🔍 DE CE SE ÎNTÂMPLA

Cod în ircd_features.c (linia 657):

F_S(WHOIS_ADMIN, 0, "is an IRC Administrator", 0),
//                   ^^^^^^^^^^^^^^^^^^^^^^^^
//                   Default hardcodat în cod!

Când feature e comentat:

  1. IRCD citește config
  2. NU găsește WHOIS_ADMIN în config
  3. Folosește default-ul: "is an IRC Administrator"
  4. APARE mesajul!

Când feature e setat cu string gol:

  1. IRCD citește config
  2. Găsește WHOIS_ADMIN = ""
  3. Folosește valoarea din config: ""
  4. NU apare nimic!

🚀 FIX AUTOMAT (Pentru Viitor)

Am actualizat install.sh în Gitea:

INVIZIBIL (opțiunea 2) acum generează:

features {
    "WHOIS_OPER" = "";      # Nu mai sunt comentate!
    "WHOIS_ADMIN" = "";     # String gol pentru override!
};

VIZIBIL (opțiunea 1) generează:

features {
    "WHOIS_OPER" = "is an UnderChat Staff Member";
    "WHOIS_ADMIN" = "is an UnderChat Founder";
};

🐛 TROUBLESHOOTING

Problemă: Tot apare după fix

Cauză 1: Nu ai decomentate liniile (încă sunt cu #).

Verificare:

grep "WHOIS_ADMIN" /home/anope/ircd/lib/ircd.conf

# Ar trebui să vezi:
"WHOIS_ADMIN" = "";

# NU ar trebui:
# "WHOIS_ADMIN" = "...";

Cauză 2: Nu ai făcut restart complet.

Soluție:

killall -9 ircd
sleep 3
/home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf

Cauză 3: Config cache sau greșit.

Soluție: Verifică că editezi config-ul corect:

ps aux | grep ircd | grep -v grep
# Vezi ce -f folosește, ex: -f /home/anope/ircd/lib/ircd.conf

CHECKLIST FIX COMPLET

  • Operator block: display = no; (ai deja)
  • Features: "WHOIS_OPER" = ""; (DECOMENTEAZĂ cu string gol!)
  • Features: "WHOIS_ADMIN" = ""; (DECOMENTEAZĂ cu string gol!)
  • Restart: IRCd complet
  • Test: /whois (NU mai apare mesaj)

🎉 REZULTAT FINAL

După fix, WHOIS va arăta:

Radu2 is ~Raducu@4C5DA6.3305AC.147F4A.B19664.IP * Raducu
Radu2 on #CService
Radu2 using *.UnderChat.org The UnderChat.org World
Radu2 End of /WHOIS list.

FĂRĂ NICIUN MESAJ DESPRE STAFF!

CU TOATE PRIVILEGIILE: /KILL, /GLINE, /REHASH, TOT!


📚 LECȚIA ÎNVĂȚATĂ

Features în IRCD:

Situație Comportament
Feature comentat (# "FEAT" = "val") Folosește DEFAULT din cod
Feature lipsă Folosește DEFAULT din cod
Feature setat ("FEAT" = "val") Folosește valoarea din config
Feature string gol ("FEAT" = "") OVERRIDE default, NU apare nimic

Pentru stealth mode: Setează cu STRING GOL, NU comenta!


Fixed by: Senior Software Architect
Data: 23 Februarie 2026
Status: FIX COMPLET & TESTAT


🔥 DECOMENTEAZĂ CU STRING GOL ȘI VA FUNCȚIONA 100%! 🔥