📝 Add debug guide for IsHideOper runtime verification
This commit is contained in:
parent
0cede2f442
commit
c405e7cc17
|
|
@ -0,0 +1,162 @@
|
|||
# 🐛 DEBUG FINAL - Verificare IsHideOper() Runtime
|
||||
|
||||
**Data**: 23 Februarie 2026 22:45
|
||||
**Status**: 🔍 **DEBUG MODE ACTIVAT**
|
||||
|
||||
---
|
||||
|
||||
## 🎯 PROBLEMA PERSISTENTĂ
|
||||
|
||||
Chiar cu:
|
||||
- ✅ Cod modificat cu `!IsHideOper(acptr)`
|
||||
- ✅ `hide_oper = yes;` în config
|
||||
- ✅ Recompilat și restartat
|
||||
|
||||
**TOT APARE**: `"is an IRC Administrator"`
|
||||
|
||||
---
|
||||
|
||||
## 🔍 DEBUG ACUM
|
||||
|
||||
Am adăugat **LOG DE DEBUG** în cod pentru a vedea exact ce returnează `IsHideOper()` în runtime!
|
||||
|
||||
---
|
||||
|
||||
## 📋 INSTRUCȚIUNI DEBUG
|
||||
|
||||
### Pas 1: Pull & Recompilează cu Debug
|
||||
|
||||
```bash
|
||||
# Pe server:
|
||||
cd ~/ircu2
|
||||
git pull origin main
|
||||
|
||||
# Verifică că ai log-ul de debug:
|
||||
grep -A 3 "DEBUG: Log pentru verificare" ircd/m_whois.c
|
||||
|
||||
# Ar trebui să vezi:
|
||||
# log_write(LS_DEBUG, L_INFO, 0, "WHOIS DEBUG: %s - SeeOper=%d IsHideOper=%d IsAdmin=%d",
|
||||
|
||||
# Recompilează:
|
||||
make clean && make
|
||||
make install
|
||||
|
||||
# Restart:
|
||||
killall -9 ircd && sleep 2 && /home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf
|
||||
```
|
||||
|
||||
### Pas 2: Test & Verifică Logs
|
||||
|
||||
```bash
|
||||
# În IRC:
|
||||
/oper Raducu password
|
||||
/whois Radu2
|
||||
|
||||
# Pe server, verifică log-ul:
|
||||
tail -f /home/ircd/ircd/log/ircd.log | grep "WHOIS DEBUG"
|
||||
|
||||
# Ar trebui să vezi ceva gen:
|
||||
# WHOIS DEBUG: Radu2 - SeeOper=1 IsHideOper=0 IsAdmin=1
|
||||
# ^
|
||||
# ASTA e problema!
|
||||
# IsHideOper=0 înseamnă FALSE (când ar trebui să fie 1/TRUE)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 CE VOM DESCOPERI
|
||||
|
||||
### Dacă vezi `IsHideOper=0` (FALSE):
|
||||
|
||||
**Problema**: Flag-ul `hide_oper` **NU e setat** în runtime chiar dacă e în config!
|
||||
|
||||
**Cauză posibilă**:
|
||||
1. Config-ul nu e citit corect
|
||||
2. Privilegiile din Class override-uiesc Operator
|
||||
3. Flag-ul nu se propagă corect la OPER time
|
||||
|
||||
**Soluție**: Trebuie să setăm flag-ul **explicit** când user-ul face /OPER
|
||||
|
||||
### Dacă vezi `IsHideOper=1` (TRUE):
|
||||
|
||||
**Problema**: Logica noastră e corectă DAR condiția `SeeOper()` returnează TRUE pentru alți operi!
|
||||
|
||||
**Cauză**: `SeeOper()` verifică `HasPriv(sptr, PRIV_SEE_OPERS)` - alți operi pot vedea oricum!
|
||||
|
||||
**Soluție**: Trebuie să verificăm **CINE** face WHOIS și să ascundem doar pentru non-operi
|
||||
|
||||
---
|
||||
|
||||
## 🔧 POSIBILE FIX-URI (bazat pe debug)
|
||||
|
||||
### FIX 1: Dacă IsHideOper=0 (nu se setează)
|
||||
|
||||
Trebuie să setăm flag-ul în `m_oper.c` când user-ul face /OPER:
|
||||
|
||||
```c
|
||||
// În m_oper.c, după ce se acceptă oper-ul:
|
||||
if (aconf->hide_oper)
|
||||
SetHideOper(sptr);
|
||||
```
|
||||
|
||||
### FIX 2: Dacă IsHideOper=1 DAR tot apare
|
||||
|
||||
Trebuie să verificăm mai strict în m_whois.c:
|
||||
|
||||
```c
|
||||
// Ascunde de TOȚI (inclusiv alți operi):
|
||||
if (IsAnOper(acptr) && IsHideOper(acptr)) {
|
||||
// NU trimite mesaj deloc!
|
||||
} else if (SeeOper(sptr,acptr)) {
|
||||
// Trimite mesaj doar pentru operi vizibili
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### FIX 3: Dacă SeeOper=0 (nu se vede deloc)
|
||||
|
||||
Atunci codul funcționează corect și problema e **altundeva** (alt server, cache, etc.)
|
||||
|
||||
---
|
||||
|
||||
## 📊 RULEAZĂ ȘI ARATĂ-MI OUTPUT-UL
|
||||
|
||||
```bash
|
||||
# 1. Recompilează cu debug:
|
||||
cd ~/ircu2
|
||||
git pull origin main
|
||||
make clean && make
|
||||
make install
|
||||
killall -9 ircd && sleep 2 && /home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf
|
||||
|
||||
# 2. Test în IRC:
|
||||
/oper Raducu password
|
||||
/whois Radu2
|
||||
|
||||
# 3. Verifică log-ul:
|
||||
tail -20 /home/ircd/ircd/log/ircd.log | grep -E "WHOIS DEBUG|OPER"
|
||||
|
||||
# 4. ARATĂ-MI OUTPUT-UL!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 DUPĂ CE VEDEM LOG-UL
|
||||
|
||||
Bazat pe valorile din log, voi ști **EXACT** unde e problema și voi face fix-ul corect!
|
||||
|
||||
**Posibilitățile**:
|
||||
|
||||
| IsHideOper | SeeOper | Rezultat | Fix |
|
||||
|------------|---------|----------|-----|
|
||||
| 0 (FALSE) | 1 (TRUE) | **Apare mesaj** | Setăm flag în m_oper.c |
|
||||
| 1 (TRUE) | 1 (TRUE) | **Apare mesaj** | Schimbăm logica în m_whois.c |
|
||||
| 1 (TRUE) | 0 (FALSE) | **NU apare** | **FUNCȚIONEAZĂ!** ✅ |
|
||||
|
||||
---
|
||||
|
||||
**🔍 RULEAZĂ DEBUG-UL ȘI SPUNE-MI CE VEZI ÎN LOG! 🔍**
|
||||
|
||||
**Timp**: 2 minute
|
||||
**Rezultat**: Vom ști EXACT unde e problema! ✅
|
||||
|
||||
Loading…
Reference in New Issue