# 🔧 TROUBLESHOOTING: Failed to read configuration file

**Eroare**: `SYSTEM [CRIT]: Failed to read configuration file /path/to/ircd.conf`  
**Versiune**: v1.0.2  
**Data**: 13 februarie 2026

---

## 🎯 Problema

Serverul IRCd nu pornește și afișează eroarea:
```
[2026-2-13 9:48:01] SYSTEM [CRIT]: Failed to read configuration file /home/ircd/ircd/etc/ircd.conf
```

Deși fișierul `ircd.conf` există, serverul nu îl poate citi.

---

## 🔍 Cauze Posibile

### 1. **Permisiuni de Citire** (CEA MAI COMUNĂ)
Fișierul există dar utilizatorul care rulează serverul nu are dreptul să îl citească.

### 2. **Fișier Gol sau Corupt**
Fișierul există dar are 0 bytes sau este corupt.

### 3. **Cale Greșită**
Serverul caută fișierul într-o locație diferită.

### 4. **Proprietar Diferit**
Fișierul aparține altui utilizator.

### 5. **Sintaxă Invalidă**
Config-ul are erori de sintaxă care împiedică citirea.

---

## ✅ Soluții - Pas cu Pas

### SOLUȚIE 1: Diagnosticare Automată (RECOMANDATĂ)

Rulează noul script de diagnosticare:

```bash
./diagnose.sh
```

Acest script va verifica automat:
- ✅ Existența fișierului
- ✅ Permisiuni de citire
- ✅ Mărimea fișierului
- ✅ Sintaxa configurației
- ✅ Acolade și ghilimele
- ✅ Proprietar fișier
- ✅ Directoare necesare

**Output-ul te va ghida spre problema exactă!**

---

### SOLUȚIE 2: Verificare Manuală Rapidă

```bash
# 1. Verifică dacă fișierul există
ls -la ~/ircd/etc/ircd.conf

# Ar trebui să vezi ceva gen:
# -rw------- 1 ircd ircd 12345 Feb 13 09:00 ircd.conf

# 2. Verifică conținutul (primele 10 linii)
head -10 ~/ircd/etc/ircd.conf

# Ar trebui să vezi configurația (General, Port, etc.)
```

---

### SOLUȚIE 3: Remediere Permisiuni

Dacă diagnosticarea arată probleme de permisiuni:

```bash
# Setează permisiuni corecte (owner poate citi/scrie)
chmod 600 ~/ircd/etc/ircd.conf

# Verifică din nou
ls -la ~/ircd/etc/ircd.conf
```

Permisiunile corecte:
- **600** = `-rw-------` (doar owner poate citi/scrie)
- **644** = `-rw-r--r--` (owner citire/scriere, alții citire)

---

### SOLUȚIE 4: Verificare Proprietar

```bash
# Verifică cine este proprietarul
stat ~/ircd/etc/ircd.conf

# SAU
ls -la ~/ircd/etc/ircd.conf

# Dacă proprietarul este diferit, schimbă-l:
chown $USER:$USER ~/ircd/etc/ircd.conf
```

---

### SOLUȚIE 5: Test Sintaxă Config

```bash
# Testează configurația cu ircd -c
~/ircd/bin/ircd -c -f ~/ircd/etc/ircd.conf

# SAU folosind meniul admin
./admin.sh
# → Opțiunea 8 (Test sintaxă configurare)
```

Dacă apar erori de sintaxă:
- Verifică acolade `{ }` potrivite
- Verifică ghilimele `" "` închise
- Verifică punct-virgulă `;` la sfârșitul liniilor

---

### SOLUȚIE 6: Regenerare Config

Dacă fișierul este corupt sau gol:

```bash
# Folosind meniul admin
./admin.sh
# → Opțiunea 5 (Editare configurare)
# → În editor, șterge totul și salvează fișierul gol
# → La ieșire din editor, va fi creat un config nou

# SAU manual cu install.sh
./install.sh
# → Va detecta config existent și va întreba dacă vrei să îl suprascrii
```

---

## 🛠️ Folosind Meniul Admin Îmbunătățit (v1.0.2)

Din versiunea **v1.0.2**, meniul `admin.sh` are verificări avansate:

```bash
./admin.sh
```

### Opțiunea 1 - Pornire Server
Acum verifică automat:
- ✅ Existența fișierului config
- ✅ Permisiuni de citire
- ✅ Fișier nu este gol
- ✅ Permisiuni executabil
- ✅ **Afișează diagnosticare detaliată la erori**

### Opțiunea 8 - Test Sintaxă
Acum verifică:
- ✅ Permisiuni detaliate
- ✅ Mărimea fișierului
- ✅ Sintaxă acolade
- ✅ Statistici config (blocuri General, Port, etc.)
- ✅ **Sugestii de remediere**

---

## 📋 Checklist Verificare Completă

Urmează acești pași în ordine:

```bash
# ☐ 1. Rulează diagnosticare automată
./diagnose.sh

# ☐ 2. Verifică existența fișierului
ls -la ~/ircd/etc/ircd.conf

# ☐ 3. Verifică conținutul (nu este gol)
wc -l ~/ircd/etc/ircd.conf
# Ar trebui să aibă > 0 linii

# ☐ 4. Verifică permisiuni
# Ar trebui: -rw------- sau -rw-r--r--
chmod 600 ~/ircd/etc/ircd.conf

# ☐ 5. Testează sintaxă
~/ircd/bin/ircd -c -f ~/ircd/etc/ircd.conf

# ☐ 6. Verifică proprietar
stat ~/ircd/etc/ircd.conf
# Owner ar trebui să fie utilizatorul curent

# ☐ 7. Încearcă pornirea din nou
./admin.sh → Opțiunea 1
```

---

## 🎯 Exemplu Real - Rezolvare Pas cu Pas

### Problema ta specifică:
```
[2026-2-13 9:48:01] SYSTEM [CRIT]: Failed to read configuration file /home/ircd/ircd/etc/ircd.conf
```

### Pași de rezolvare:

```bash
# 1. Conectează-te ca utilizatorul ircd
su - ircd
# SAU
sudo -u ircd bash

# 2. Rulează diagnosticarea
cd ~/ircu2
./diagnose.sh

# 3. Observă output-ul - va afișa exact ce este greșit

# 4. Urmează sugestiile din diagnose.sh

# 5. Dacă diagnosticarea spune "permisiuni", rulează:
chmod 600 /home/ircd/ircd/etc/ircd.conf

# 6. Dacă diagnosticarea spune "fișier gol", regenerează:
./admin.sh → Opțiunea 5 (editează și salvează un config valid)

# 7. Test final:
./admin.sh → Opțiunea 1 (Pornire server)
```

---

## 🔧 Troubleshooting Avansat

### Verifică exact ce eroare dă ircd:

```bash
# Rulează ircd manual pentru a vedea toate erorile
~/ircd/bin/ircd -f ~/ircd/etc/ircd.conf

# SAU cu debugging:
~/ircd/bin/ircd -d -f ~/ircd/etc/ircd.conf 2>&1 | tee ircd_debug.log
```

### Verifică log-urile sistemului:

```bash
# Ultimele erori din log
tail -50 ~/ircd/log/ircd.log

# Caută erori critice
grep -i "error\|crit\|fail" ~/ircd/log/ircd.log
```

### Verifică dacă există blocaje de SELinux (CentOS/RHEL):

```bash
# Verifică status SELinux
getenforce

# Dacă este Enforcing, temporar dezactivează:
sudo setenforce 0

# Încearcă din nou să pornești serverul
./admin.sh → Opțiunea 1

# Dacă acum funcționează, problema era SELinux
# Configurează SELinux permanent:
sudo setsebool -P httpd_can_network_connect 1
```

---

## 📊 Comparație Erori Comune

| Eroare | Cauză | Soluție |
|--------|-------|---------|
| `Failed to read configuration file` | Permisiuni | `chmod 600 ircd.conf` |
| `Configuration file not found` | Cale greșită | Verifică `-f` parameter |
| `Parse error in config` | Sintaxă invalidă | `ircd -c -f config` |
| `Empty configuration` | Fișier gol | Regenerează config |
| `Permission denied` | User greșit | Rulează ca owner |

---

## ✅ Verificare Finală După Rezolvare

După ce ai rezolvat problema:

```bash
# 1. Test sintaxă
./admin.sh → Opțiunea 8

# Ar trebui să vezi:
# ✓ CONFIGURARE VALIDĂ!

# 2. Pornire server
./admin.sh → Opțiunea 1

# Ar trebui să vezi:
# [+] ✓ Server pornit cu succes!
# [+] PID: 12345

# 3. Verifică status
./admin.sh → Opțiunea 4

# Ar trebui să vezi:
# Status: PORNIT
# PID: 12345
# CPU: X% | RAM: Y KB
```

---

## 📚 Referințe

- **diagnose.sh** - Script automat de diagnosticare (NOU în v1.0.2)
- **admin.sh** - Meniu cu verificări îmbunătățite (v1.0.2)
- **COMANDA_CONFIGURE.md** - Parametrii de configurare
- **INSTALL_AUTO.md** - Ghid complet de instalare

---

## 🆘 Încă Nu Funcționează?

Dacă după toate aceste verificări încă nu merge:

1. **Rulează diagnose.sh** și trimite output-ul complet
2. **Verifică log-ul complet**: `cat ~/ircd/log/ircd.log`
3. **Verifică sistemul**: `uname -a` și `ls -la ~/ircd/etc/`
4. **Regenerează totul**:
   ```bash
   cd ircu2
   ./install.sh --prefix ~/ircd-new
   ```

---

**Repository**: https://gitlab.back.ro/underchat/ircu2.git  
**Versiune**: v1.0.2  
**Data**: 13 februarie 2026  
**Status**: ✅ Rezolvată cu diagnose.sh

