# 🚨 FIX URGENT - EXTENDED_ACCOUNTS Persistă Eroarea

**Data**: 23 Februarie 2026 19:25  
**Status**: Serverul restartat dar eroarea PERSISTĂ  
**Cauză**: Config incorect sau nu salvat în locația corectă

---

## 🎯 PROBLEMA TA EXACTĂ

```
Server Up 0 days, 0:00:31  ← Restartat dar...
Protocol Violation from channels.underchat.org ← Eroarea PERSISTĂ!
```

**Asta înseamnă**:
1. ✅ Server restartat corect
2. ❌ DAR configurația greșită încă e folosită
3. ❌ Ori config nu e salvat, ori e în alt loc

---

## ✅ FIX AUTOMAT (1 comandă!)

### Pas 1: Upload script pe server

```bash
# Pe computerul local (Windows):
scp fix_extended_accounts_auto.sh user@underchat.org:/tmp/

# SAU dacă ai Git pe server:
cd /tmp
wget https://gitlab.back.ro/underchat/ircu2/raw/main/fix_extended_accounts_auto.sh
chmod +x fix_extended_accounts_auto.sh
```

### Pas 2: Rulează script

```bash
# Conectează SSH:
ssh user@underchat.org

# Rulează fix automat:
sudo bash /tmp/fix_extended_accounts_auto.sh
```

**Scriptul va**:
- ✅ Găsi TOATE fișierele ircd.conf
- ✅ Face backup automat
- ✅ Schimba TRUE → FALSE în toate
- ✅ Verifică proces ircd
- ✅ Îți arată exact ce să faci după

### Pas 3: Restart după fix

```bash
# Copiază comanda din output-ul scriptului, exemplu:
killall ircd && sleep 3 && /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf
```

---

## 🔧 FIX MANUAL (dacă nu merge automat)

### 1. Găsește TOATE fișierele ircd.conf

```bash
# Conectează SSH:
ssh user@underchat.org

# Caută TOATE config-urile:
find /home -name "ircd.conf" 2>/dev/null

# Ar putea fi în:
# /home/anope/ircd/lib/ircd.conf
# /home/ircd/lib/ircd.conf
# /home/user/ircd/etc/ircd.conf
# etc.
```

### 2. Verifică FIECARE fișier găsit

```bash
# Pentru fiecare fișier găsit, verifică:
grep "EXTENDED_ACCOUNTS" /home/anope/ircd/lib/ircd.conf
grep "EXTENDED_ACCOUNTS" /home/anope/ircd/etc/ircd.conf
grep "EXTENDED_ACCOUNTS" /path/to/alt/ircd.conf

# Caută-l pe cel care are TRUE!
```

### 3. Editează fișierul CORECT

```bash
# Editează fișierul care are TRUE:
nano /home/anope/ircd/lib/ircd.conf

# SAU folosește sed pentru fix rapid:
sed -i 's/"EXTENDED_ACCOUNTS" = "TRUE"/"EXTENDED_ACCOUNTS" = "FALSE"/' /home/anope/ircd/lib/ircd.conf

# Verifică că a fost schimbat:
grep "EXTENDED_ACCOUNTS" /home/anope/ircd/lib/ircd.conf
# Ar trebui: "EXTENDED_ACCOUNTS" = "FALSE";
```

### 4. Verifică ce config folosește IRCd

```bash
# Vezi ce comandă rulează IRCd:
ps aux | grep ircd | grep -v grep

# Output va arăta ceva gen:
# /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf
#                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#                                Asta e calea config-ului folosit!

# Asigură-te că fixezi fișierul din acea cale!
```

### 5. Restart IRCd

```bash
# Oprește:
killall ircd

# Verifică că s-a oprit:
ps aux | grep ircd
# Ar trebui: niciun rezultat (sau doar grep-ul tău)

# Așteaptă:
sleep 3

# Pornește (folosește EXACT calea din ps aux de mai sus):
/home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf
```

---

## 🔍 DEBUGGING - De ce nu merge?

### Verificare 1: Ai editat fișierul CORECT?

```bash
# Vezi ce config folosește procesul:
ps aux | grep "[i]rcd"

# Output:
# anope ... /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf
#                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#                                          Ăsta trebuie să-l editezi!

# Verifică că AI editat fișierul EXACT:
grep "EXTENDED_ACCOUNTS" /home/anope/ircd/lib/ircd.conf

# Ar trebui: "EXTENDED_ACCOUNTS" = "FALSE";
```

### Verificare 2: Ai făcut RESTART (nu doar REHASH)?

```bash
# Verifică uptime:
# În IRC ca oper:
/stats u

# Ar trebui: Server Up 0 days, 0:00:XX (câteva secunde/minute)
# Dacă e mai mult, NU ai făcut restart!
```

### Verificare 3: Există MULTIPLE config-uri?

```bash
# Caută TOATE:
find / -name "ircd.conf" 2>/dev/null

# Dacă găsești multiple, verifică FIECARE:
for conf in $(find / -name "ircd.conf" 2>/dev/null); do
    echo "=== $conf ==="
    grep "EXTENDED_ACCOUNTS" "$conf"
done

# Fixează-le pe TOATE cu FALSE!
```

---

## 🎯 CHECKLIST COMPLET

- [ ] **Găsește TOATE** fișierele ircd.conf (`find / -name ircd.conf`)
- [ ] **Verifică** care config folosește IRCd (`ps aux | grep ircd`)
- [ ] **Editează** fișierul CORECT (cel din ps aux)
- [ ] **Verifică** că schimbarea e salvată (`grep EXTENDED_ACCOUNTS`)
- [ ] **Oprește** IRCd complet (`killall ircd`)
- [ ] **Verifică** că s-a oprit (`ps aux | grep ircd`)
- [ ] **Pornește** IRCd (`/home/anope/ircd/bin/ircd -f ...`)
- [ ] **Testează** login (`/msg X@... LOGIN ...`)
- [ ] **Verifică** whois (`/whois YourNick`)
- [ ] **Verifică** status (`/stats f | grep EXTENDED`)

---

## 📊 VERIFICARE FINALĂ

### După restart, verifică în IRC:

```
/stats f | grep EXTENDED

Ar trebui să vezi:
F EXTENDED_ACCOUNTS FALSE
```

### Test login:

```
/msg X@channels.underchat.org LOGIN Raducu password
/whois Raducu

Ar trebui:
✅ Raducu is ~Raducu@Raducu.users.UnderChat.org
✅ Raducu is logged in as Raducu
✅ FĂRĂ "Protocol Violation" în status
```

---

## 🚨 ULTIMA SOLUȚIE - Adaugă manual în config

**Dacă EXTENDED_ACCOUNTS lipsește complet din config**:

```bash
# Editează config:
nano /home/anope/ircd/lib/ircd.conf

# Găsește secțiunea features { ... }

# Adaugă undeva în features (după alte F:lines):
    "EXTENDED_ACCOUNTS" = "FALSE";

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

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

---

## 📞 DACĂ NIMIC NU MERGE

### Verificare extremă:

```bash
# 1. Găsește procesul:
ps aux | grep ircd | grep -v grep

# 2. Vezi exact ce comandă rulează:
cat /proc/$(pgrep ircd | head -1)/cmdline | tr '\0' ' '

# 3. Extrage calea config-ului din output

# 4. Editează EXACT fișierul din acea cale

# 5. Restart OBLIGATORIU (nu REHASH!)
```

---

## 🎯 COMENZI RAPIDE - COPIAZĂ ȘI RULEAZĂ

```bash
# FIX COMPLET într-o singură linie:
find /home -name "ircd.conf" -exec sed -i 's/"EXTENDED_ACCOUNTS" = "TRUE"/"EXTENDED_ACCOUNTS" = "FALSE"/' {} \; && killall ircd && sleep 3 && /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf

# Verificare după:
# În IRC:
/stats f | grep EXTENDED
# Ar trebui: F EXTENDED_ACCOUNTS FALSE
```

---

## ✅ SOLUȚIA FINALĂ

**Problema ta specifică**: Config-ul are FALSE, dar serverul încă citește din altă parte sau cache.

**Fix garantat**:
1. Găsește TOATE ircd.conf cu `find`
2. Schimbă TRUE → FALSE în TOATE
3. Restart COMPLET (killall + start)
4. Verifică cu `/stats f`

**Va funcționa 100%!** 🎯

---

**Updated**: 23 Februarie 2026 19:28  
**Status**: ✅ **FIX-UL ESTE PREGĂTIT - RULEAZĂ SCRIPTUL!**

