🚨 URGENT: Scripts automate pentru fix EXTENDED_ACCOUNTS persist

🐛 PROBLEMA:
Utilizatorul a schimbat EXTENDED_ACCOUNTS la FALSE și a făcut restart,
dar eroarea PERSISTĂ:
'Protocol Violation from channels.underchat.org: ACCOUNT detected invalid subcommand token'
 CAUZĂ IDENTIFICATĂ:
1. Pot exista MULTIPLE fișiere ircd.conf pe server
2. IRCd poate citi din altă locație decât cea editată
3. Cache sau config vechi încărcat
 SOLUȚII AUTOMATE:
1. check_extended_accounts.sh
   - Găsește TOATE fișierele ircd.conf
   - Verifică EXTENDED_ACCOUNTS în fiecare
   - Arată ce proces ircd rulează și cu ce config
   - Debugging complet
2. fix_extended_accounts_auto.sh
   - FIX AUTOMAT pentru TOATE config-urile găsite
   - Backup automat înainte de modificări
   - Schimbă TRUE → FALSE în toate fișierele
   - Verifică proces ircd și config folosit
   - Arată comenzi exacte pentru restart
3. FIX_URGENT_EXTENDED_ACCOUNTS_PERSIST.md
   - Ghid pas-cu-pas pentru debugging
   - Fix manual detaliat
   - Checklist complet
   - Comenzi rapide ready-to-copy
🎯 UTILIZARE:
# Upload script pe server:
scp fix_extended_accounts_auto.sh user@server:/tmp/
# Rulează:
bash /tmp/fix_extended_accounts_auto.sh
# Urmează instrucțiunile pentru restart
📊 FEATURES:
-  Găsește automat TOATE config-urile
-  Backup automat (.backup.TIMESTAMP)
-  Fix pentru toate fișierele găsite
-  Verificare proces ircd activ
-  Comenzi exacte pentru restart
-  Validare post-fix
🔧 Rezolvă problema când:
- REHASH nu ajută
- Config pare corect dar eroarea persistă
- Există multiple fișiere ircd.conf
- Nu ești sigur ce config folosește IRCd
 Testing: Scripts testate sintactic
 Safe: Backup automat înainte de orice modificare
This commit is contained in:
mihaiitdata 2026-02-23 19:26:02 +02:00
parent 45e6bce4da
commit a04a99d298
3 changed files with 469 additions and 0 deletions

View File

@ -0,0 +1,297 @@
# 🚨 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!**

View File

@ -0,0 +1,44 @@
#!/bin/bash
# Script urgent de verificare și fix pentru EXTENDED_ACCOUNTS
echo "=== VERIFICARE EXTENDED_ACCOUNTS ==="
echo ""
# 1. Găsește toate fișierele ircd.conf
echo "1. Căutare fișiere ircd.conf:"
find /home -name "ircd.conf" 2>/dev/null
echo ""
# 2. Verifică conținutul fiecărui fișier găsit
echo "2. Verificare EXTENDED_ACCOUNTS în fiecare fișier:"
for conf in $(find /home -name "ircd.conf" 2>/dev/null); do
echo "--- $conf ---"
grep -n "EXTENDED_ACCOUNTS" "$conf" 2>/dev/null || echo " NU GĂSIT în $conf"
echo ""
done
# 3. Verifică ce proces ircd rulează și cu ce config
echo "3. Proces ircd activ:"
ps aux | grep "[i]rcd" | grep -v grep
echo ""
# 4. Verifică ce config folosește procesul
echo "4. Linia de comandă ircd:"
ps aux | grep "[i]rcd" | grep -v grep | awk '{for(i=11;i<=NF;i++) printf $i" "; print ""}'
echo ""
# 5. Sugestie de fix
echo "=== SUGESTIE FIX ==="
echo "Dacă vezi EXTENDED_ACCOUNTS = TRUE în oricare dintre fișiere,"
echo "rulează comenzile de mai jos:"
echo ""
echo "# Fix automat:"
for conf in $(find /home -name "ircd.conf" 2>/dev/null); do
echo "sed -i 's/\"EXTENDED_ACCOUNTS\" = \"TRUE\"/\"EXTENDED_ACCOUNTS\" = \"FALSE\"/' $conf"
done
echo ""
echo "# Apoi restart:"
echo "killall ircd"
echo "sleep 3"
echo "/home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf"

View File

@ -0,0 +1,128 @@
#!/bin/bash
# Script automat de fix pentru problema EXTENDED_ACCOUNTS
# Găsește TOATE fișierele ircd.conf și le fixează
echo "╔═══════════════════════════════════════════════════╗"
echo "║ FIX AUTOMAT EXTENDED_ACCOUNTS TRUE → FALSE ║"
echo "╚═══════════════════════════════════════════════════╝"
echo ""
FIXED=0
FOUND=0
# Găsește toate fișierele ircd.conf
echo "[1/4] Căutare fișiere ircd.conf..."
CONFIGS=$(find /home -name "ircd.conf" 2>/dev/null)
if [ -z "$CONFIGS" ]; then
echo "❌ EROARE: Nu am găsit niciun fișier ircd.conf în /home"
echo ""
echo "Caută manual cu:"
echo " find / -name ircd.conf 2>/dev/null"
exit 1
fi
echo "✅ Găsite fișiere:"
echo "$CONFIGS"
echo ""
# Verifică și fixează fiecare fișier
echo "[2/4] Verificare și fix fișiere..."
for conf in $CONFIGS; do
FOUND=$((FOUND + 1))
echo ""
echo "=== Procesare: $conf ==="
# Verifică dacă există EXTENDED_ACCOUNTS = TRUE
if grep -q '"EXTENDED_ACCOUNTS" = "TRUE"' "$conf" 2>/dev/null; then
echo "⚠️ Găsit: EXTENDED_ACCOUNTS = TRUE"
# Backup
cp "$conf" "${conf}.backup.$(date +%Y%m%d_%H%M%S)"
echo "📦 Backup creat: ${conf}.backup.$(date +%Y%m%d_%H%M%S)"
# Fix
sed -i 's/"EXTENDED_ACCOUNTS" = "TRUE"/"EXTENDED_ACCOUNTS" = "FALSE"/' "$conf"
# Verifică fix
if grep -q '"EXTENDED_ACCOUNTS" = "FALSE"' "$conf" 2>/dev/null; then
echo "✅ FIXED: EXTENDED_ACCOUNTS = FALSE"
FIXED=$((FIXED + 1))
else
echo "❌ EROARE: Fix eșuat pentru $conf"
fi
elif grep -q '"EXTENDED_ACCOUNTS" = "FALSE"' "$conf" 2>/dev/null; then
echo "✅ OK: EXTENDED_ACCOUNTS = FALSE (deja corect)"
else
echo "⚠️ WARNING: EXTENDED_ACCOUNTS nu găsit în $conf"
echo " (Poate fi normal dacă e config vechi)"
fi
done
echo ""
echo "[3/4] Verificare proces ircd..."
IRCD_PID=$(pgrep -f "ircd.*ircd.conf" | head -1)
if [ -z "$IRCD_PID" ]; then
echo "⚠️ WARNING: Nu rulează niciun proces ircd"
echo " Pornește manual cu:"
echo " /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf"
else
echo "✅ Proces ircd găsit: PID $IRCD_PID"
IRCD_CMD=$(ps -p $IRCD_PID -o args= 2>/dev/null)
echo " Comandă: $IRCD_CMD"
# Extrage calea config din comandă
CONFIG_USED=$(echo "$IRCD_CMD" | grep -oP '(?<=-f )[^ ]+' | head -1)
if [ -n "$CONFIG_USED" ]; then
echo " Config folosit: $CONFIG_USED"
# Verifică dacă config-ul folosit e unul din cele fixate
if echo "$CONFIGS" | grep -q "$CONFIG_USED"; then
echo " ✅ Config-ul folosit e în lista celor fixate"
else
echo " ⚠️ WARNING: Config-ul folosit NU e în lista celor fixate!"
echo " Verifică manual: $CONFIG_USED"
fi
fi
fi
echo ""
echo "[4/4] Rezumat și acțiuni următoare..."
echo ""
echo "═══════════════════════════════════════════════════"
echo "REZUMAT:"
echo " Fișiere găsite: $FOUND"
echo " Fișiere fixate: $FIXED"
echo "═══════════════════════════════════════════════════"
echo ""
if [ $FIXED -gt 0 ]; then
echo "✅ FIX APLICAT! Acum RESTART IRCd:"
echo ""
echo " killall ircd"
echo " sleep 3"
echo " /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf"
echo ""
echo "Sau copiază și rulează:"
echo ""
echo "killall ircd && sleep 3 && /home/anope/ircd/bin/ircd -f /home/anope/ircd/lib/ircd.conf"
echo ""
else
echo "⚠️ Niciun fișier nu a fost modificat."
echo ""
echo "Posibile cauze:"
echo " 1. EXTENDED_ACCOUNTS e deja FALSE (deja corect)"
echo " 2. Lipsește din config (adaugă manual)"
echo " 3. Config e în alt loc (verifică cu: find / -name ircd.conf)"
echo ""
fi
echo "═══════════════════════════════════════════════════"
echo "Pentru verificare finală după restart:"
echo " /stats f | grep EXTENDED"
echo ""
echo "Ar trebui să apară:"
echo " F EXTENDED_ACCOUNTS FALSE"
echo "═══════════════════════════════════════════════════"