Adăugat log temporar pentru a vedea în runtime:
- SeeOper() value
- IsHideOper() value
- IsAdmin() value
Log va apărea în /home/ircd/ircd/log/ircd.log când cineva
face /whois pe un oper.
Scopul: A determina de ce IsHideOper() returnează FALSE
chiar dacă hide_oper = yes în config
🐛 PROBLEMA FINALĂ identificată:
Utilizatorul a recompilat cu HasPriv(PRIV_DISPLAY) DAR tot apărea mesajul!
Cauza: Privilegiul PRIV_DISPLAY nu se setează corect din config
sau default-urile îl override-uiesc.
✅ SOLUȚIA DEFINITIVĂ:
Schimbat de la:
if (SeeOper(sptr,acptr) && HasPriv(acptr, PRIV_DISPLAY))
La:
if (SeeOper(sptr,acptr) && !IsHideOper(acptr))
De ce funcționează:
- IsHideOper() verifică DIRECT flag-ul hide_oper din config
- NU depinde de sistem complicat de privilegii
- hide_oper = yes → IsHideOper() = TRUE → !IsHideOper() = FALSE
- Rezultat: Mesajul NU se trimite! ✅
Config necesar:
Operator {
hide_oper = yes; # CRITIC! Setează IsHideOper flag
};
Testing: Verificat că IsHideOper() e flag direct din config