525 lines
12 KiB
Markdown
525 lines
12 KiB
Markdown
# Instalare Automată UnderChat IRCd 🚀
|
|
|
|
Această pagină descrie cum să instalezi și configurezi automat UnderChat IRCd folosind scripturile furnizate.
|
|
|
|
## 📋 Cerințe
|
|
|
|
Înainte de a rula scripturile de instalare, asigură-te că ai următoarele pachete instalate:
|
|
|
|
### Debian/Ubuntu
|
|
```bash
|
|
sudo apt-get update
|
|
sudo apt-get install -y build-essential autoconf automake libtool libssl-dev perl
|
|
```
|
|
|
|
### RHEL/CentOS/Fedora
|
|
```bash
|
|
sudo yum install -y gcc make autoconf automake libtool openssl-devel perl
|
|
```
|
|
|
|
### macOS
|
|
```bash
|
|
xcode-select --install
|
|
brew install autoconf automake libtool openssl
|
|
```
|
|
|
|
## 🚀 Instalare Rapidă
|
|
|
|
### Opțiunea 1: Instalare Automată Standard
|
|
|
|
Cea mai simplă metodă - lase script-ul să facă totul:
|
|
|
|
```bash
|
|
# Clonează repository-ul
|
|
git clone https://gitlab.back.ro/underchat/ircu2.git
|
|
cd ircu2
|
|
|
|
# Execută instalarea automată
|
|
./install.sh
|
|
```
|
|
|
|
Script-ul va:
|
|
1. ✓ Verifica dependențele
|
|
2. ✓ Ruleaza `./configure` cu setări optime
|
|
3. ✓ Compilează codul sursă
|
|
4. ✓ Instalează binare și biblioteci
|
|
5. ✓ Cere informații de bază și generează `ircd.conf`
|
|
6. ✓ Creează structura de directoare necesară
|
|
|
|
### Opțiunea 2: Instalare cu Configurare Interactivă
|
|
|
|
Pentru control complet asupra setărilor:
|
|
|
|
```bash
|
|
./install.sh # Instalare standard
|
|
./configure-interactive.sh # Configurare avansată
|
|
```
|
|
|
|
Script-ul interactiv te va ghida prin:
|
|
- Setări generale (nume, descriere, numeric)
|
|
- Informații administrator
|
|
- Configurare porturi
|
|
- Clase de conexiuni
|
|
- Setări operatori
|
|
- Caracteristici avansate
|
|
|
|
## ⚙️ Opțiuni de Instalare
|
|
|
|
### Instalare Customizată
|
|
|
|
```bash
|
|
# Instalare cu prefix personalizat
|
|
./install.sh --prefix /opt/ircd
|
|
|
|
# Instalare cu maxim conexiuni diferit
|
|
./install.sh --maxcon 8192
|
|
|
|
# Instalare cu debug activat
|
|
./install.sh --debug
|
|
|
|
# Dezactivare SSL/TLS
|
|
./install.sh --no-ssl
|
|
|
|
# Setare versiune la build
|
|
./install.sh --version 1.0.3
|
|
|
|
# Combinatie de optiuni
|
|
./install.sh --prefix /opt/ircd --maxcon 16384 --debug
|
|
```
|
|
|
|
### Toate Opțiunile Disponibile
|
|
|
|
```
|
|
Usage: ./install.sh [OPTIONS]
|
|
|
|
OPTIONS:
|
|
-h, --help Afiseaza mesajul de ajutor
|
|
-p, --prefix PATH Calea de instalare (implicit: $HOME/ircd)
|
|
-m, --maxcon NUM Numarul maxim de conexiuni (implicit: 4096)
|
|
-d, --debug Activeaza modul de debug
|
|
-s, --no-ssl Dezactiveaza suportul SSL/TLS
|
|
-c, --config FILE Fisier de configurare initial
|
|
-V, --version VER Seteaza versiunea in PATCHLEVEL (ex: 1.0.3)
|
|
```
|
|
|
|
## 📁 Structura Directoarelor Post-Instalare
|
|
|
|
După instalare, vei avea:
|
|
|
|
```
|
|
~/ircd/ (prefix implicit)
|
|
├── bin/
|
|
│ ├── ircd # Executable principal
|
|
│ ├── umkpasswd # Generator de parole
|
|
│ └── ...
|
|
├── lib/
|
|
│ ├── libircd.a # Biblioteci compilate
|
|
│ └── ...
|
|
├── etc/
|
|
│ ├── ircd.conf # Fișier configurare principal
|
|
│ ├── ircd.motd # Message of the Day
|
|
│ └── ircd.opermotd # Operator MOTD
|
|
├── log/
|
|
│ └── ircd.log # Fișier de log
|
|
└── var/
|
|
└── ...
|
|
```
|
|
|
|
## 🔧 Pornirea Serverului
|
|
|
|
### Pornire Standard
|
|
|
|
```bash
|
|
# Folosind fișierul de configurare implicit
|
|
~/ircd/bin/ircd
|
|
|
|
# Sau specificând fișierul de configurare
|
|
~/ircd/bin/ircd -f ~/ircd/etc/ircd.conf
|
|
```
|
|
|
|
### Opțiuni de Pornire
|
|
|
|
```bash
|
|
# Pornire în background
|
|
nohup ~/ircd/bin/ircd &
|
|
|
|
# Pornire cu debugging
|
|
~/ircd/bin/ircd -d
|
|
|
|
# Verificare sintaxă configurare
|
|
~/ircd/bin/ircd -c
|
|
|
|
# Afișare versiune
|
|
~/ircd/bin/ircd -v
|
|
```
|
|
|
|
## 🔐 Setare Parola Operator
|
|
|
|
Pentru a folosi comenzi de operator, ai nevoie de o parola hash:
|
|
|
|
```bash
|
|
# Generează parola
|
|
~/ircd/bin/umkpasswd
|
|
|
|
# Output exemplu:
|
|
# Introdu parola: ****
|
|
# Repeta parola: ****
|
|
# Hash: $2a$04$NTy1i.X/8pXekNBNbMRlOu1JAjIiMfPGIe1sZf0Xqq.2jzqPMfN/G
|
|
|
|
# Copiază hash-ul în ~/ircd/etc/ircd.conf
|
|
nano ~/ircd/etc/ircd.conf
|
|
# Cauta secțiunea Operator { } și înlocuiește password = "..."
|
|
```
|
|
|
|
## 📝 Editare Configurare
|
|
|
|
Fișierul de configurare este generat automat, dar poți să-l editezi:
|
|
|
|
```bash
|
|
nano ~/ircd/etc/ircd.conf
|
|
```
|
|
|
|
### Secțiuni Importante
|
|
|
|
**General** - Setări server
|
|
```
|
|
General {
|
|
name = "irc.example.com";
|
|
description = "My IRC Server";
|
|
numeric = 1;
|
|
};
|
|
```
|
|
|
|
**Operator** - Definire operatori
|
|
```
|
|
Operator {
|
|
nick = "root";
|
|
password = "$2a$04$..."; # Hash bcrypt
|
|
privileges = "+all";
|
|
host = "127.0.0.1";
|
|
};
|
|
```
|
|
|
|
**Port** - Configurare porturi
|
|
```
|
|
Port {
|
|
port = 6667;
|
|
mask = 0.0.0.0;
|
|
};
|
|
```
|
|
|
|
**Class** - Clase de conexiuni
|
|
```
|
|
Class {
|
|
name = "clients";
|
|
pingfreq = 120;
|
|
maxlinks = 10;
|
|
sendq = 40000;
|
|
};
|
|
```
|
|
|
|
## 🌐 Conectare la Server
|
|
|
|
După pornire, poți să te conectezi cu un client IRC:
|
|
|
|
```
|
|
Server: localhost
|
|
Port: 6667 (sau 6697 pentru SSL)
|
|
Nick: nickname
|
|
```
|
|
|
|
## 🔍 Verificare Status
|
|
|
|
### Log-uri
|
|
|
|
```bash
|
|
# Afișare log-uri live
|
|
tail -f ~/ircd/log/ircd.log
|
|
|
|
# Ultimi 50 de rânduri
|
|
tail -50 ~/ircd/log/ircd.log
|
|
|
|
# Căutare erori
|
|
grep ERROR ~/ircd/log/ircd.log
|
|
```
|
|
|
|
### Procese Active
|
|
|
|
```bash
|
|
# Verifică dacă ircd rulează
|
|
ps aux | grep ircd
|
|
|
|
# Procese pe port
|
|
netstat -tlnp | grep 6667
|
|
```
|
|
|
|
## 🐛 Rezolvare Probleme
|
|
|
|
### "Check on CPATH (ircd.conf) failed: No such file or directory"
|
|
|
|
Aceasta este problema nr. 1 din lista ta. Server-ul nu găsește configurația:
|
|
|
|
```bash
|
|
# Verifică locația config-ului
|
|
ls -la ~/ircd/etc/ircd.conf
|
|
|
|
# Dacă nu există, rulează remediere automată
|
|
./fix-config.sh
|
|
|
|
# Sau din admin.sh
|
|
./admin.sh
|
|
# → Opțiunea 9) Remediere probleme configurare
|
|
```
|
|
|
|
**Cauza**: Configurația e în `lib/` în loc de `etc/` sau CPATH e setat greșit.
|
|
|
|
### "Config parse error on line X: syntax error"
|
|
|
|
Problema nr. 2 - erori de sintaxă în configurație:
|
|
|
|
```bash
|
|
# Test sintaxă detaliat
|
|
./admin.sh
|
|
# → Opțiunea 8) Test sintaxă configurare
|
|
|
|
# Remediere automată
|
|
./fix-config.sh ~/ircd
|
|
|
|
# Verificare manuală cu context
|
|
nano +126 ~/ircd/etc/ircd.conf # înlocuiește 126 cu linia ta
|
|
```
|
|
|
|
**Cauze comune**:
|
|
- Ghilimele neînchise: `"text neinchis`
|
|
- Acolade nepotrivite: `{ fără }`
|
|
- Virgulă lipsă: `setting = "value" missing;`
|
|
|
|
### Host hiding nu funcționează (problema nr. 2)
|
|
|
|
**Simptome**: IP-ul real apare în WHOIS în loc să fie ascuns cu format hexadecimal
|
|
|
|
**Exemplu problemă**: `~Raducu@188.24.5.202` în loc de `~Raducu@4C5DA6.3305AC.147F4A.B19664.IP`
|
|
|
|
```bash
|
|
# DIAGNOSTIC RAPID - rulează scriptul specializat
|
|
./fix-host-hiding.sh ~/ircd
|
|
|
|
# SAU verifică manual în ircd.conf:
|
|
features {
|
|
"HOST_HIDING" = "TRUE";
|
|
"HOST_HIDING_STYLE" = "3"; # CRITIC - folosește 3 pentru format hexadecimal
|
|
"HIDDEN_HOST" = "users.underchat.org";
|
|
"HIDDEN_IP" = "127.0.0.1"; # CRITIC - IP-ul de înlocuire
|
|
"HIDDEN_HOSTTYPE" = "3"; # CRITIC - tipul host-ului ascuns
|
|
};
|
|
|
|
# Verifică clasa utilizatorilor:
|
|
Class {
|
|
name = "Other";
|
|
usermode = "+ix"; # TREBUIE să fie +ix, nu doar +i
|
|
};
|
|
|
|
# Restart server după modificări
|
|
./admin.sh → opțiunea 3) Restart
|
|
```
|
|
|
|
**Cauze principale**:
|
|
1. **HOST_HIDING_STYLE = "1" în loc de "3"** - stilul 3 generează format hexadecimal
|
|
2. **HIDDEN_HOSTTYPE lipsă** - necesar pentru formatarea corectă
|
|
3. **Usermode +i în loc de +ix** - modul +x nu se aplică automat
|
|
4. **Placeholder-uri neînlocuite** - EOFCONFIG_NETWORK rămâne literal
|
|
|
|
**Configurația funcțională (de pe ns2.node-ase.ovh)**:
|
|
- HOST_HIDING_STYLE = "3" → Format: `4C5DA6.3305AC.147F4A.B19664.IP`
|
|
- HIDDEN_HOSTTYPE = "3" → Suportă generarea hexadecimală
|
|
- Ascundere automată la conectare cu +ix
|
|
|
|
**Verificare finală**:
|
|
```bash
|
|
# După restart, conectează-te și testează:
|
|
/mode nickname +x
|
|
/whois nickname
|
|
|
|
# Ar trebui să vezi:
|
|
# nickname is ~user@4C5DA6.3305AC.147F4A.B19664.IP * Hosted by me
|
|
# în loc de IP-ul real
|
|
```
|
|
|
|
### Operatorii nu primesc +W (problema nr. 3)
|
|
|
|
**Simptome**: Nu primești notificări când cineva îți dă WHOIS ca operator/administrator
|
|
|
|
```bash
|
|
# DIAGNOSTIC RAPID - script specializat pentru notificări WHOIS
|
|
./fix-whois-notifications.sh ~/ircd
|
|
|
|
# SAU verifică manual în ircd.conf:
|
|
|
|
# 1. Features pentru notificări WHOIS
|
|
features {
|
|
"OPER_WHOIS_PARANOIA" = "TRUE"; # CRITIC
|
|
"WHOIS_NOTICE" = "TRUE"; # CRITIC
|
|
"SPY_WHOIS" = "TRUE"; # CRITIC - pentru notificări complete
|
|
"SNOMASK_OPERDEFAULT" = "1024"; # CRITIC - mask pentru operatori
|
|
"SNOMASK_DEFAULT" = "1024"; # CRITIC - mask pentru utilizatori
|
|
};
|
|
|
|
# 2. Configurația operatorului
|
|
Operator {
|
|
name = "root";
|
|
password = "$hash$";
|
|
host = "*@*";
|
|
class = "Opers";
|
|
admin = yes;
|
|
snomask = "+HACK,THROTTLE,OLDSNO,NETWORK,OPERKILL,GLINE"; # CRITIC
|
|
privileges = "PRIV_WHOIS_NOTICE", "PRIV_HIDE_OPER", "PRIV_ADMIN"; # CRITIC
|
|
};
|
|
|
|
# 3. Clasa Opers
|
|
Class {
|
|
name = "Opers";
|
|
usermode = "+Wx"; # CRITIC - trebuie +Wx, nu doar +W
|
|
# ...alte setări...
|
|
};
|
|
|
|
# Restart server după modificări
|
|
./admin.sh → opțiunea 3) Restart
|
|
```
|
|
|
|
**Cauze principale**:
|
|
1. **SPY_WHOIS lipsă** - fără asta nu primești notificările
|
|
2. **PRIV_WHOIS_NOTICE lipsă** - privilegiul pentru notificări
|
|
3. **SNOMASK_OPERDEFAULT lipsă** - mask-ul pentru operatori
|
|
4. **Usermode +W în loc de +Wx** - lipsește notificarea completă
|
|
|
|
**Verificare finală**:
|
|
```bash
|
|
# După restart, fă-te operator și testează:
|
|
/oper username parola
|
|
/mode nickname # ar trebui să vezi +Wx
|
|
|
|
# Cere cuiva să-ți dea WHOIS:
|
|
# Ar trebui să primești:
|
|
# *** Notice: nickname (user@host) is doing a WHOIS on you
|
|
```
|
|
|
|
### Porturile publice nu se generează corect
|
|
|
|
**Simptome**: În ircd.conf pe linia 126 apare `EOFCONFIG_CLIENT_PORTS` în loc de blocurile Port
|
|
|
|
**Soluția este acum integrată în toate scripturile:**
|
|
|
|
```bash
|
|
# Porturile standard generate automat în admin.sh:
|
|
# 6660, 6661, 6662, 6663, 6664, 6665, 6666, 6667, 6668, 6669, 7000
|
|
# Plus 6697 pentru SSL
|
|
|
|
# Pentru regenerare rapidă:
|
|
./admin.sh → opțiunea 1) Creare config standard
|
|
|
|
# Pentru reparare configurație existentă:
|
|
./fix-config.sh ~/ircd
|
|
```
|
|
|
|
**Cauze rezolvate**:
|
|
1. **Template admin.sh** - acum include toate porturile 6660-6669, 7000, 6697
|
|
2. **Placeholder EOFCONFIG_NETWORK** - acum se înlocuiește corect
|
|
3. **Generare blocuri Port** - logica din install.sh funcționează corect
|
|
|
|
### "Permission denied" la ./configure
|
|
|
|
```bash
|
|
# Verifică permisiunile
|
|
ls -la configure
|
|
|
|
# Dacă nu are +x, corecteaza:
|
|
chmod +x configure
|
|
chmod +x install-sh config.guess config.sub
|
|
```
|
|
|
|
### "Compilation failed"
|
|
|
|
```bash
|
|
# Verifica logul de compilare
|
|
make 2>&1 | tail -50
|
|
|
|
# Curața și încearcă din nou
|
|
make clean
|
|
./configure --enable-debug
|
|
make
|
|
```
|
|
|
|
### "Port already in use"
|
|
|
|
```bash
|
|
# Verifică ce folosește portul
|
|
lsof -i :6667
|
|
|
|
# Schimbă portul în configurare
|
|
nano ~/ircd/etc/ircd.conf
|
|
# Cauta Port { port = 6667; }
|
|
```
|
|
|
|
### Errori SSL/TLS
|
|
|
|
Dacă ai probleme cu SSL:
|
|
|
|
```bash
|
|
# Reinstalează fără SSL
|
|
./install.sh --no-ssl
|
|
|
|
# Sau instalează openssl-dev
|
|
sudo apt-get install libssl-dev
|
|
```
|
|
|
|
### Script de Remediere Automată
|
|
|
|
Pentru remedierea rapidă a problemelor comune:
|
|
|
|
```bash
|
|
# Descarcă și rulează scriptul de remediere
|
|
./fix-config.sh ~/ircd
|
|
|
|
# Sau din meniul admin
|
|
./admin.sh
|
|
# → Opțiunea 9) Remediere probleme configurare
|
|
```
|
|
|
|
Scriptul remediază:
|
|
- ✅ Configurația în directorul greșit (lib vs etc)
|
|
- ✅ Permisiuni incorecte pe fișiere
|
|
- ✅ Acolade și ghilimele nepotrivite
|
|
- ✅ CPATH și DPATH setate greșit
|
|
- ✅ Host hiding incomplet
|
|
- ✅ Moduri operatori (+W, +x)
|
|
- ✅ Configurație minimă dacă lipsește
|
|
|
|
## 🛠️ Troubleshooting Avansat
|
|
|
|
### Debug Mode pentru Dezvoltatori
|
|
|
|
```bash
|
|
# Compilare cu debugging
|
|
./install.sh --debug
|
|
|
|
# Pornire cu verbose output
|
|
~/ircd/bin/ircd -d -f ~/ircd/etc/ircd.conf
|
|
|
|
# Urmărire log-uri în timp real
|
|
tail -f ~/ircd/log/ircd.log
|
|
```
|
|
|
|
### Verificare Configurație Completă
|
|
|
|
```bash
|
|
# Validare sintaxă
|
|
~/ircd/bin/ircd -c -f ~/ircd/etc/ircd.conf
|
|
|
|
# Check cu output detaliat
|
|
~/ircd/bin/ircd -k -f ~/ircd/etc/ircd.conf 2>&1 | head -20
|
|
|
|
# Backup și regenerare
|
|
cp ~/ircd/etc/ircd.conf ~/ircd/etc/ircd.conf.backup
|
|
./install.sh --config ~/ircd/etc/ircd.conf.backup
|
|
```
|