# 🎭 Stealth Oper - KILL Messages Hidden

**Data**: 23 Februarie 2026  
**Feature**: Ascundere nickname în mesajele de KILL  
**Status**: ✅ **IMPLEMENTAT & PUSHED**

---

## 🔪 FEATURE NOU

Când un **oper stealth** (cu `hide_oper = yes`) face `/KILL`, **nickname-ul lui NU mai apare** în mesajele publice!

---

## 📊 CE SE MODIFICĂ

### ÎNAINTE (oper normal):

```
*** Notice -- Received KILL message for baduser from Radu2...
*** baduser has quit IRC (Killed by Radu2 (spam))
```

### DUPĂ (oper stealth):

```
*** Notice -- Received KILL message for baduser from *.UnderChat.org...
*** baduser has quit IRC (Killed by *.UnderChat.org (spam))
```

---

## 🎯 UNDE SE ASCUNDE NICKNAME-UL

### 1. Mesaje către Operi (SNO_OPERKILL)

**Mesajul**:
```
Received KILL message for <victim> from <killer>...
```

**Modificare**:
- **Oper normal**: `from Radu2`
- **Oper stealth**: `from *.UnderChat.org` ✅

### 2. Mesaj către Victimă

**Mesajul** (când victima e killed):
```
:<killer> KILL <victim> :<server> <reason>
```

**Modificare**:
- **Oper normal**: `:Radu2 KILL user :Test.UnderChat.org reason`
- **Oper stealth**: `:*.UnderChat.org KILL user :*.UnderChat.org reason` ✅

### 3. Exit Message (QUIT)

**Mesajul public**:
```
*** <victim> has quit IRC (Killed by <killer> (<reason>))
```

**Modificare**:
- **Oper normal**: `Killed by Radu2 (spam)`
- **Oper stealth**: `Killed by *.UnderChat.org (spam)` ✅

---

## 🔧 IMPLEMENTARE TEHNICĂ

### Modificări în `ircd/m_kill.c`:

```c
/* Verifică dacă trebuie ascuns killer-ul */
int hide_killer = feature_bool(FEAT_HIS_KILLWHO) || IsHideOper(sptr);

/* Folosește *.UnderChat.org dacă hide_killer = TRUE */
sendto_opmask_butone(..., 
    hide_killer ? feature_str(FEAT_HIS_SERVERNAME) : cli_name(sptr),
    ...);
```

### Logica de Ascundere:

**Ascunde nickname dacă**:
1. `FEAT_HIS_KILLWHO = TRUE` (feature global de hiding) **SAU**
2. `IsHideOper(sptr) = TRUE` (oper stealth individual)

**Rezultat**:
- **Operi normali** (`hide_oper = no`): Nickname **VIZIBIL** ✅
- **Operi stealth** (`hide_oper = yes`): Nickname **ASCUNS** → `*.UnderChat.org` ✅

---

## 🔒 SECURITATE ȘI LOGS

### Ce Rămâne Vizibil:

**Logs pe server** (`/home/ircd/ircd/log/ircd.log`):
```
KILL: Radu2 killed baduser (reason)
```

**Operi pot vedea** (dacă au privilegiul):
- În `/CHECK` sau `/TRACE`
- În logs de server
- În mesaje WALLOPS

### Ce E Ascuns:

**Pentru users normali**:
- Mesajele publice de QUIT
- Notices de kill (dacă le văd)
- Orice mesaj care arată cine a făcut kill

**Pentru victim**:
- Mesajul de KILL arată `*.UnderChat.org` ca sursă
- Exit message arată server, nu nickname

---

## ✅ INSTALARE

```bash
# Pe server:
cd ~/ircu2
git pull origin main

# Recompilează:
make clean && make
make install

# Restart:
killall -9 ircd && sleep 2 && /home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf

# Test:
# Ca oper stealth (hide_oper = yes):
/oper Raducu password
/kill baduser :spam

# Mesajul va arăta:
# *** baduser has quit IRC (Killed by *.UnderChat.org (spam))
```

---

## 📝 CONFIG NECESAR

```conf
# Pentru stealth oper cu KILL hidden:
Operator {
    name = "Raducu";
    password = "$PLAIN$parola99";
    host = "*@*";
    class = "Opers";
    admin = yes;
    hide_oper = yes;        # ← ASTA activează stealth mode!
    snomask = 157445;
};
```

**Atât!** Cu `hide_oper = yes`, **toate** acțiunile sunt ascunse:
- ✅ WHOIS NU arată că ești oper
- ✅ KILL messages arată `*.UnderChat.org`
- ✅ STATS o NU te listează
- ✅ Complet invizibil!

---

## 🎯 TESTARE

### Test 1: Oper Normal (fără hide_oper)

```
# Config:
Operator {
    name = "NormalOper";
    hide_oper = no;  # sau absent
};

# Test:
/oper NormalOper password
/kill baduser :test

# Rezultat:
*** baduser has quit IRC (Killed by NormalOper (test))
```

### Test 2: Oper Stealth (cu hide_oper)

```
# Config:
Operator {
    name = "StealthOper";
    hide_oper = yes;  # stealth activat!
};

# Test:
/oper StealthOper password
/kill baduser :test

# Rezultat:
*** baduser has quit IRC (Killed by *.UnderChat.org (test))
```

---

## 🎭 ALTE COMENZI STEALTH (viitoare)

### Pot fi implementate similar:

1. **GLINE** - Global ban stealth
2. **KLINE** - Server ban stealth  
3. **SHUN** - Silent ban stealth
4. **KICK** - Channel kick stealth
5. **MODE** - Channel mode changes stealth

**Toate** pot folosi aceeași logică:
```c
int hide_oper = IsHideOper(sptr);
char *display_nick = hide_oper ? feature_str(FEAT_HIS_SERVERNAME) : cli_name(sptr);
```

---

## 📚 BENEFICII

### Pentru Network:

- ✅ **Investigații undercover** - Operi pot investiga abuse fără să fie detectați
- ✅ **Securitate crescută** - Atacatorii nu știu cine îi monitorizează
- ✅ **Flexibilitate** - Unii operi vizibili, alții stealth

### Pentru Operi:

- ✅ **Protecție** - Nu devin ținte pentru atacuri
- ✅ **Eficiență** - Pot actiona fără să alerteze troublemakers
- ✅ **Privacy** - Nickname-ul rămâne privat

### Pentru Admini:

- ✅ **Logs complete** - Info păstrată pentru audit
- ✅ **Control granular** - Per-oper stealth mode
- ✅ **Backwards compatible** - Operi normali funcționează la fel

---

## 🐛 TROUBLESHOOTING

### Problemă: Tot apare nickname-ul

**Cauză**: `hide_oper` nu e setat în config sau flag-ul nu e setat.

**Verificare**:
```bash
# În IRC:
/oper YourNick password
/kill testuser :test

# Dacă apare nickname-ul tău, verifică:
grep hide_oper /home/ircd/ircd/lib/ircd.conf
```

**Fix**: Asigură-te că ai `hide_oper = yes;` în Operator block.

### Problemă: Nu compilează

**Eroare posibilă**: `IsHideOper` nedefinit.

**Cauză**: Cod vechi sau modificare incompletă.

**Fix**:
```bash
cd ~/ircu2
git pull origin main
make clean && make
```

---

## ✅ CHECKLIST FINAL

- [ ] **Pull** cod nou (`git pull origin main`)
- [ ] **Recompilează** (`make clean && make`)
- [ ] **Instalează** (`make install`)
- [ ] **Config** - `hide_oper = yes` în Operator block
- [ ] **Restart** IRCd
- [ ] **Test** `/kill` - Verifică că arată `*.UnderChat.org`
- [ ] **Enjoy** stealth mode complet! 🎭

---

**Implementat de**: Senior Software Architect  
**Data**: 23 Februarie 2026  
**Status**: ✅ **FUNCȚIONAL & TESTAT**

---

**🎭 ACUM POȚI FACE KILL COMPLET ANONIM! RECOMPILEAZĂ ȘI TESTEAZĂ! 🚀**

