# 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ă, regenerează prin install.sh ./install.sh # Sau din admin.sh ./admin.sh # → Opțiunea 9) Regenerare configurație prin install.sh ``` **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 # Regenerare completă cu toate remedierile ./install.sh # Verificare manuală cu context nano +126 ~/ircd/lib/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 # SOLUȚIE COMPLETĂ - regenerare prin install.sh care include toate remedierile ./install.sh # 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 # SOLUȚIE COMPLETĂ - regenerare prin install.sh cu toate remedierile integrate ./install.sh # 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 = "+s"; # SIMPLU - evită conflictele 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 **Eroarea exactă**: `Config parse error in file ircd.conf on line 126: syntax error` **Soluție**: Reinstalează cu versiunea corectată: ```bash # Șterge instalarea veche rm -rf ~/ircu2 # Reinstalează cu versiunea v1.0.4 care include toate remedierile git clone https://gitlab.back.ro/underchat/ircu2.git cd ircu2 ./install.sh ``` **Ce include versiunea v1.0.4**: - ✅ Template-ul generat corect cu toate porturile - ✅ Placeholder-urile EOFCONFIG înlocuite automat - ✅ snomask corectat la "+s" (fără erori de sintaxă) - ✅ IP-ul corect aplicat pe toate porturile - ✅ Toate remedierile integrate DIRECT în install.sh **Verificare finală**: ```bash # După reinstalare, testează sintaxa: ~/ircd/bin/ircd -c -f ~/ircd/lib/ircd.conf # Ar trebui să afișeze: "Configuration file ircd.conf checked okay." # Verifică că nu mai sunt placeholder-uri: grep -i EOFCONFIG ~/ircd/lib/ircd.conf # Nu ar trebui să găsească nimic ``` ### "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 Regenerare Automată Pentru remedierea rapidă a problemelor comune, cea mai bună soluție este regenerarea prin install.sh: ```bash # Regenerează configurația completă cu toate remedierile integrate ./install.sh # Sau din meniul admin ./admin.sh # → Opțiunea 9) Regenerare configurație prin install.sh ``` Regenerarea prin install.sh include AUTOMAT: - ✅ Configurația în directorul corect (lib/) - ✅ Permisiuni corecte pe fișiere - ✅ Toate placeholder-urile înlocuite corect - ✅ Host hiding cu format hexadecimal - ✅ Notificări WHOIS pentru operatori - ✅ Porturi generate cu IP-ul corect specificat - ✅ Test sintaxă final și reparare automată ## 🛠️ 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 ```