# 📝 FEATURES ADĂUGATE - Host Hiding & Extended Accounts

**Data**: 23 Februarie 2026  
**Versiune**: v1.8.0+  
**Status**: ✅ **ADĂUGATE ÎN TEMPLATE ircd.conf**

---

## 🎯 OVERVIEW

Am adăugat **4 features lipsă** în template-ul de configurare `install.sh` pentru funcționalitate completă a host hiding și compatibilitate cu serviciile IRC moderne.

---

## ✅ FEATURES ADĂUGATE

### 1. HIDDEN_HOST_QUIT ✨

**Locație în install.sh**: Linia ~1010 (secțiunea Host hiding)

**Ce face**:
- Controlează dacă să se trimită mesaje de quit când utilizatorii setează/resetează modul +x (hidden host)
- Când e `TRUE`, utilizatorii vor vedea mesaje "Registered" / "UnRegistered" în loc de quit real

**Valoare setată**: `TRUE` (default recomandat)

**Exemplu comportament**:
```
# Cu HIDDEN_HOST_QUIT = TRUE:
* User has quit IRC (Registered)           # Când setează +x
* User has quit IRC (UnRegistered)         # Când resetează -x

# Cu HIDDEN_HOST_QUIT = FALSE:
* User has quit IRC (Changing host)        # Mesaj generic
```

**De ce e important**:
- ✅ Oferă feedback clar utilizatorilor când își schimbă hostname-ul
- ✅ Previne confuzia (pare ca o reconectare, nu ca un quit real)
- ✅ Standardizat în majoritatea rețelelor IRC moderne

---

### 2. HIDDEN_HOST_SET_MESSAGE 📝

**Locație în install.sh**: Linia ~1011

**Ce face**:
- Mesajul afișat când un utilizator **SETEAZĂ** modul +x (activează hidden host)

**Valoare setată**: `"Registered"` (default)

**Exemplu**:
```
# Utilizator face: /mode Nick +x
* Nick has quit IRC (Registered)
* Nick (hidden@users.underchat.org) has joined #channel
```

**Customizare**:
Poți schimba în:
- `"is now hidden"` - Mesaj în engleză
- `"Host ascuns"` - Mesaj în română
- `"Protected"` - Sugerează protecție

---

### 3. HIDDEN_HOST_UNSET_MESSAGE 📝

**Locație în install.sh**: Linia ~1012

**Ce face**:
- Mesajul afișat când un utilizator **RESETEAZĂ** modul -x (dezactivează hidden host)

**Valoare setată**: `"UnRegistered"` (default)

**Exemplu**:
```
# Utilizator face: /mode Nick -x
* Nick has quit IRC (UnRegistered)
* Nick (real@203.0.113.45) has joined #channel
```

**Customizare**:
Poți schimba în:
- `"is now visible"` - Mesaj clar
- `"Host vizibil"` - Română
- `"Unprotected"` - Sugerează lipsa protecției

---

### 4. EXTENDED_ACCOUNTS 🔐

**Locație în install.sh**: Linia ~999 (secțiunea Security & Authentication)

**Ce face**:
- Activează suport pentru **sintaxa extinsă AC** (Account) folosită de servicii IRC moderne
- `TRUE` = Folosește subcomenzile R, M, U, C, A, D, H pentru operații avansate
- `FALSE` = Folosește sintaxa veche (compatibilitate services vechi)

**Valoare setată**: `TRUE` (default, recomandat)

**Când să folosești TRUE**:
- ✅ X3 (serviciu recomandat pentru UnderChat)
- ✅ Anope 2.x cu protocol P10
- ✅ Atheme IRC Services moderne

**Când să folosești FALSE**:
- ⚠️ Services foarte vechi (pre-2010)
- ⚠️ Custom services cu protocol legacy

**Subcomenzile disponibile cu EXTENDED_ACCOUNTS = TRUE**:

| Subcomandă | Funcție |
|------------|---------|
| **R** | Rename account (redenumire cont) |
| **M** | Merge accounts (fuziune conturi) |
| **U** | Unregister account (ștergere cont) |
| **C** | Create account (creare cont) |
| **A** | Authenticate (autentificare) |
| **D** | Deauthenticate (deautentificare) |
| **H** | Set hidden host (setare hostname ascuns) |

**Exemplu protocol**:
```
# Cu EXTENDED_ACCOUNTS = TRUE (modern):
:X3!services@underchat.org AC Nick A 1234567890

# Cu EXTENDED_ACCOUNTS = FALSE (vechi):
:X3!services@underchat.org AC Nick 1234567890
```

**De ce e important**:
- ✅ Permite serviciilor să efectueze operații complexe pe conturi
- ✅ Suport complet pentru redenumire/fuziune conturi
- ✅ Compatibilitate cu X3 și servicii moderne
- ✅ Funcții avansate de management conturi

---

## 📊 COMPARAȚIE ÎNAINTE/DUPĂ

### ÎNAINTE (fără features):

```conf
features {
    # Host hiding
    "HOST_HIDING" = "TRUE";
    "HOST_HIDING_STYLE" = "3";
    "HIDDEN_HOST" = "users.underchat.org";
    # ... alte setări ...
}
```

**Probleme**:
- ❌ Utilizatorii văd mesaje generice la schimbarea host-ului
- ❌ Lipsește feedback când setează +x/-x
- ❌ Services nu pot face operații avansate pe conturi

---

### DUPĂ (cu features noi):

```conf
features {
    # Security & Anti-Abuse
    # ...
    
    # Extended Accounts Support (pentru servicii X3/IRC Services)
    "EXTENDED_ACCOUNTS" = "TRUE";
    
    # Host hiding
    "HOST_HIDING" = "TRUE";
    "HOST_HIDING_STYLE" = "3";
    "HIDDEN_HOST" = "users.underchat.org";
    "HIDDEN_IP" = "127.0.0.1";
    "HOST_HIDING_PREFIX" = "UnderChat";
    "HOST_HIDING_KEY1" = "aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
    "HOST_HIDING_KEY2" = "sdfjkLJKHlkjdkfjsdklfjlkjKLJ";
    "HOST_HIDING_KEY3" = "KJklJSDFLkjLKDFJSLKjlKJFlkjS";
    "HOST_HIDING_COMPONENTS" = "1";
    
    # Host hiding - Mesaje set/unset +x
    "HIDDEN_HOST_QUIT" = "TRUE";
    "HIDDEN_HOST_SET_MESSAGE" = "Registered";
    "HIDDEN_HOST_UNSET_MESSAGE" = "UnRegistered";
}
```

**Beneficii**:
- ✅ Mesaje clare când utilizatorii schimbă hostname-ul
- ✅ Feedback vizual pentru +x/-x
- ✅ Suport complet pentru X3 și servicii moderne
- ✅ Operații avansate pe conturi (rename, merge, etc.)

---

## 🎮 EXEMPLE UTILIZARE

### Scenario 1: Utilizator Se Autentifică

**Cu servicii X3 și EXTENDED_ACCOUNTS = TRUE**:

```
1. User conectează: Nick!user@203.0.113.45
2. /msg X@services.underchat.org LOGIN username password
3. X autentifică user-ul cu AC command (subcomandă A)
4. User primește +x automat (dacă configured)
5. * Nick has quit IRC (Registered)
6. * Nick (hidden@users.underchat.org) has joined #channel
```

**Mesaj vizibil**:
```
Nick!user@203.0.113.45 → Nick!hidden@users.underchat.org (Registered)
```

### Scenario 2: Utilizator Manual Setează +x

```
1. Nick!user@real-hostname.isp.com
2. /mode Nick +x
3. * Nick has quit IRC (Registered)
4. * Nick (UnderChat-554F4C88D.isp.com) has joined #channel
```

**Explicație**:
- HOST_HIDING_STYLE = 3 → Authenticated users get style 1, unauthenticated get style 2
- Dacă user e autentificat: `users.underchat.org`
- Dacă user e guest: `UnderChat-HASH.isp.com` (Unreal style)

### Scenario 3: Utilizator Resetează -x

```
1. Nick!hidden@users.underchat.org
2. /mode Nick -x
3. * Nick has quit IRC (UnRegistered)
4. * Nick (user@real-hostname.isp.com) has joined #channel
```

**NOTĂ**: Funcționează doar dacă `ALLOWRMX = TRUE` (implicit FALSE pentru securitate).

---

## ⚙️ CONFIGURARE AVANSATĂ

### Customizare Mesaje (Opțional)

Dacă vrei mesaje în română sau custom:

```conf
# În ircd.conf:
features {
    "HIDDEN_HOST_QUIT" = "TRUE";
    "HIDDEN_HOST_SET_MESSAGE" = "Hostname ascuns";
    "HIDDEN_HOST_UNSET_MESSAGE" = "Hostname vizibil";
}
```

**Rezultat**:
```
* Nick has quit IRC (Hostname ascuns)     # La +x
* Nick has quit IRC (Hostname vizibil)    # La -x
```

### Dezactivare Mesaje (Dacă Dorești)

```conf
features {
    "HIDDEN_HOST_QUIT" = "FALSE";
    # HIDDEN_HOST_SET_MESSAGE și HIDDEN_HOST_UNSET_MESSAGE sunt ignorate
}
```

**Rezultat**:
```
* Nick (hidden@users.underchat.org) has joined #channel
# Niciun mesaj de quit, doar join cu noul hostname
```

### Pentru Services NON-X3

Dacă folosești services vechi sau custom:

```conf
features {
    "EXTENDED_ACCOUNTS" = "FALSE";
}
```

**ATENȚIE**: Pierzi funcționalități avansate (rename accounts, merge, etc.).

---

## 📚 REFERINȚE & DOCUMENTAȚIE

### Fișiere Relevante:

- **doc/readme.features** (liniile 1046-1070, 1511-1528)
- **install.sh** (liniile ~999, ~1010-1012)
- **ircd/s_user.c** - Implementarea host hiding
- **ircd/s_bsd.c** - Gestionarea mesajelor quit

### RFC & Standarde:

- **RFC 2812** - IRC Client Protocol (modul +x)
- **P10 Protocol** - UnderNet server-to-server (AC command)

### Services Compatibile:

| Service | EXTENDED_ACCOUNTS | Versiune Minimă |
|---------|-------------------|-----------------|
| **X3** | TRUE ✅ | 1.8+ |
| **Anope 2.x** | TRUE ✅ | 2.0+ |
| **Atheme** | TRUE ✅ | 7.x+ |
| **Services vechi** | FALSE ⚠️ | Pre-2010 |

---

## 🐛 TROUBLESHOOTING

### Problemă: Mesajele de quit nu apar

**Cauză**: `HIDDEN_HOST_QUIT = FALSE` sau services nu trimit AC correct.

**Soluție**:
```bash
# Verifică în ircd.conf:
grep "HIDDEN_HOST_QUIT" $HOME/ircd/lib/ircd.conf

# Ar trebui să fie:
"HIDDEN_HOST_QUIT" = "TRUE";

# Dacă e FALSE, modifică și restart:
nano $HOME/ircd/lib/ircd.conf
killall ircd
$HOME/ircd/bin/ircd -f $HOME/ircd/lib/ircd.conf
```

### Problemă: Services nu pot redenumi conturi

**Cauză**: `EXTENDED_ACCOUNTS = FALSE` sau services incompatibile.

**Soluție**:
```bash
# Verifică:
grep "EXTENDED_ACCOUNTS" $HOME/ircd/lib/ircd.conf

# Ar trebui să fie TRUE pentru X3:
"EXTENDED_ACCOUNTS" = "TRUE";

# Verifică versiunea services:
/msg X@services.underchat.org VERSION
# Ar trebui X3 1.8+
```

### Problemă: Utilizatorii nu pot face -x (remove hidden host)

**Cauză**: `ALLOWRMX = FALSE` (default pentru securitate).

**Soluție (DOAR dacă vrei să permiți)**:
```conf
# În ircd.conf:
features {
    "ALLOWRMX" = "TRUE";  # Permite utilizatorilor să facă -x
}
```

**ATENȚIE**: Permiterea -x poate expune IP-uri reale. Recomandăm FALSE pentru securitate.

---

## ✅ VERIFICARE POST-INSTALARE

### 1. Verifică Features în Configurație

```bash
# După instalare, verifică că features-urile sunt prezente:
grep -A 5 "Host hiding - Mesaje" $HOME/ircd/lib/ircd.conf
grep "EXTENDED_ACCOUNTS" $HOME/ircd/lib/ircd.conf
```

**Output așteptat**:
```conf
    # Host hiding - Mesaje set/unset +x
    "HIDDEN_HOST_QUIT" = "TRUE";
    "HIDDEN_HOST_SET_MESSAGE" = "Registered";
    "HIDDEN_HOST_UNSET_MESSAGE" = "UnRegistered";

    # Extended Accounts Support
    "EXTENDED_ACCOUNTS" = "TRUE";
```

### 2. Test Manual cu IRC Client

```bash
# Conectează cu client IRC:
/server localhost 6667
/nick TestUser
/mode TestUser +x

# Ar trebui să vezi:
# * TestUser has quit IRC (Registered)
# * TestUser (hidden@users.underchat.org) has joined #channel

# Reset:
/mode TestUser -x

# Ar trebui să vezi:
# * TestUser has quit IRC (UnRegistered)
# * TestUser (user@real-host.com) has joined #channel
```

### 3. Verifică Logs Pentru Erori

```bash
# Verifică că nu sunt erori de configurare:
tail -f $HOME/ircd/log/ircd.log | grep -i "feature\|hidden\|account"
```

**Ar trebui**: Nicio eroare legată de features-urile noi.

---

## 🎯 NEXT STEPS

### Pentru Utilizatori Existenți:

```bash
# 1. Pull noua versiune
cd underchat-ircd
git pull origin main

# 2. Re-instalare (păstrează config backup)
cp $HOME/ircd/lib/ircd.conf /backup/ircd.conf.old
./install.sh

# 3. Merge manual features-urile noi în config vechi (dacă dorești)
# SAU lasă configurația nouă (recomandăm)

# 4. Restart server
killall ircd
$HOME/ircd/bin/ircd -f $HOME/ircd/lib/ircd.conf

# 5. Test funcționalitatea +x/-x
```

### Pentru Instalări Noi:

```bash
# Features-urile sunt AUTOMAT incluse în template!
./install.sh
# Alege configurările standard → features-urile vor fi deja active
```

---

## 🏆 BENEFICII

### Cu Aceste Features:

- ✅ **User Experience mai bună** - Mesaje clare când se schimbă hostname-ul
- ✅ **Compatibilitate X3** - Suport complet pentru servicii moderne
- ✅ **Operații avansate** - Rename/merge accounts funcționează
- ✅ **Standardizare** - Comportament consistent cu alte rețele IRC
- ✅ **Feedback vizual** - Utilizatorii știu când +x/-x are efect

### Fără Aceste Features:

- ❌ Mesaje generice de quit (confuză)
- ❌ Services nu pot face rename accounts
- ❌ Lipsă feedback pentru +x/-x
- ❌ Incompatibilitate cu X3 modern

---

## 📝 CHANGELOG

### v1.8.0+ (23 Februarie 2026)

**Added**:
- ✅ `HIDDEN_HOST_QUIT` = TRUE în template ircd.conf
- ✅ `HIDDEN_HOST_SET_MESSAGE` = "Registered"
- ✅ `HIDDEN_HOST_UNSET_MESSAGE` = "UnRegistered"
- ✅ `EXTENDED_ACCOUNTS` = TRUE pentru suport X3/services moderne

**Impact**:
- Mesaje clare când utilizatorii setează/resetează +x
- Suport complet pentru X3 și operații avansate pe conturi
- User experience îmbunătățită

---

**Adăugat de**: Senior Software Architect  
**Data**: 23 Februarie 2026  
**Versiune**: v1.8.0+  
**Status**: ✅ **FEATURES ACTIVE ÎN TEMPLATE**

---

**🎉 HOST HIDING & EXTENDED ACCOUNTS SUNT ACUM COMPLETE! 🎉**

