# PSEUDO - Comenzi Alias către Servicii IRC ## 📋 CE ESTE PSEUDO? **Pseudo** este un sistem de **comenzi alias** implementate la nivel de server care permit utilizatorilor să trimită mesaje către **servicii IRC** (bots) folosind **comenzi simple** în loc de `/MSG serviciu comandă`. Este o funcționalitate de **confort pentru utilizatori** care face interacțiunea cu serviciile mai intuitivă și mai ușoară. --- ## 🎯 SCOP ### **Problema FĂRĂ Pseudo:** Utilizatorii trebuie să știe: 1. Numele exact al serviciului (ex: `X`, `AuthServ`, `ChanServ`) 2. Serverul unde rulează (ex: `channels.undernet.org`) 3. Sintaxa comenzii (ex: `/MSG X@channels.undernet.org LOGIN user pass`) **Exemplu complicat:** ```irc /MSG X@channels.undernet.org LOGIN myuser mypassword /MSG AuthServ@services.underchat.org HELP /MSG ChanServ@services.underchat.org REGISTER #mychannel ``` ### **Soluția CU Pseudo:** Utilizatorii scriu doar: ```irc /LOGIN myuser mypassword /AUTHSERV /CHANSERV REGISTER #mychannel ``` **Mai simplu, mai intuitiv!** ✅ --- ## 🔧 CUM FUNCȚIONEAZĂ? ### **Mecanismul:** 1. **User scrie:** `/CHANSERV REGISTER #mychannel` 2. **Server transformă:** `/MSG ChanServ@services.underchat.org REGISTER #mychannel` 3. **Server trimite** mesajul către serviciul corect 4. **Serviciul răspunde** utilizatorului Este un **alias transparent** - utilizatorul nu știe că în spate se trimite un `/MSG`. --- ## 📝 SINTAXĂ ÎN ircd.conf ### **Formatul de bază:** ```conf Pseudo "COMANDĂ" { name = "NumeServiciu"; nick = "serviciu@server.domain.org"; }; ``` ### **Parametri:** | Parametru | Obligatoriu | Descriere | |-----------|-------------|-----------| | `"COMANDĂ"` | ✅ DA | Comanda pe care o scriu utilizatorii (ex: `/CHANSERV`) | | `name` | ✅ DA | Numele serviciului (folosit în mesaje de eroare) | | `nick` | ✅ DA | Nick@Server al serviciului destinație | | `prepend` | ❌ NU | Text de adăugat ÎNAINTEA mesajului utilizatorului | | `defaulttext` | ❌ NU | Text trimis dacă utilizatorul NU furnizează text | --- ## 💡 EXEMPLE PRACTICE ### **Exemplu 1: Alias simplu pentru ChanServ** ```conf Pseudo "CHANSERV" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; ``` **Utilizare:** ```irc # User scrie: /CHANSERV REGISTER #mychannel # Server transformă în: /MSG ChanServ@services.underchat.org REGISTER #mychannel ``` --- ### **Exemplu 2: Alias cu PREPEND (adaugă text înainte)** ```conf Pseudo "LOGIN" { name = "X"; prepend = "LOGIN "; nick = "X@channels.undernet.org"; }; ``` **Utilizare:** ```irc # User scrie: /LOGIN myuser mypassword # Server transformă în: /MSG X@channels.undernet.org LOGIN myuser mypassword # ^^^^^^ ADĂUGAT AUTOMAT! ``` **Avantaj:** Utilizatorul nu mai trebuie să scrie `LOGIN` de două ori! --- ### **Exemplu 3: Alias cu DEFAULT TEXT** ```conf Pseudo "AUTHSERV" { name = "AuthServ"; nick = "AuthServ@services.underchat.org"; defaulttext = "HELP"; }; ``` **Utilizare:** ```irc # User scrie doar comanda, fără parametri: /AUTHSERV # Server transformă în: /MSG AuthServ@services.underchat.org HELP # ^^^^ ADĂUGAT AUTOMAT! # User poate și să furnizeze text: /AUTHSERV STATUS # Server transformă în: /MSG AuthServ@services.underchat.org STATUS ``` **Avantaj:** Dacă utilizatorul uită să adauge parametri, se trimite automat `HELP`! --- ### **Exemplu 4: Serviciu cu MULTIPLE SERVER-e (failover)** ```conf Pseudo "X" { name = "X"; nick = "X@channels.underchat.org"; nick = "X@backup.underchat.org"; nick = "X@services.underchat.org"; }; ``` **Funcționare:** - Serverul încearcă să găsească serviciul pe `channels.underchat.org` - Dacă NU există, încearcă `backup.underchat.org` - Dacă NU există, încearcă `services.underchat.org` - **Ultimul listat are prioritate cea mai mare!** --- ## 🎓 CAZURI DE UTILIZARE COMUNE ### **1. Servicii Anope/Atheme** ```conf # NickServ Pseudo "NICKSERV" { name = "NickServ"; nick = "NickServ@services.underchat.org"; }; # ChanServ Pseudo "CHANSERV" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; # MemoServ Pseudo "MEMOSERV" { name = "MemoServ"; nick = "MemoServ@services.underchat.org"; }; # OperServ Pseudo "OPERSERV" { name = "OperServ"; nick = "OperServ@services.underchat.org"; }; ``` **Utilizare:** ```irc /NICKSERV REGISTER password email@domain.com /CHANSERV REGISTER #mychannel /MEMOSERV SEND nick Your message here /OPERSERV AKILL ADD *@badhost.com Bad user ``` --- ### **2. Bot de Autentificare (X/W/Q)** ```conf # Login rapid la X Pseudo "LOGIN" { name = "X"; prepend = "LOGIN "; nick = "X@channels.underchat.org"; }; # Logout Pseudo "LOGOUT" { name = "X"; prepend = "LOGOUT"; nick = "X@channels.underchat.org"; defaulttext = ""; # Nu trimite nimic extra }; # WhoisX Pseudo "WHOIS" { name = "X"; prepend = "WHOIS "; nick = "X@channels.underchat.org"; }; ``` **Utilizare:** ```irc /LOGIN myuser mypassword /LOGOUT /WHOIS someuser ``` --- ### **3. Bot Custom (ex: GameBot, StatBot)** ```conf # GameBot - comenzi jocuri Pseudo "GAME" { name = "GameBot"; nick = "GameBot@games.underchat.org"; defaulttext = "HELP"; }; # StatBot - statistici rețea Pseudo "STATS" { name = "StatBot"; nick = "StatBot@stats.underchat.org"; defaulttext = "NETWORK"; }; ``` **Utilizare:** ```irc /GAME # Trimite "HELP" automat /GAME START poker # Trimite "START poker" /STATS # Trimite "NETWORK" automat /STATS USER nickname # Trimite "USER nickname" ``` --- ## ⚙️ CONFIGURARE ÎN ircd.conf ### **Exemplu Complet pentru UnderChat:** ```conf # ============================================================================ # SECȚIUNE: PSEUDO - Alias-uri Comenzi pentru Servicii # ============================================================================ # NickServ - Înregistrare și management nickname-uri Pseudo "NICKSERV" { name = "NickServ"; nick = "NickServ@services.underchat.org"; }; # Alias NS pentru NickServ (scurtătură) Pseudo "NS" { name = "NickServ"; nick = "NickServ@services.underchat.org"; }; # ChanServ - Management canale Pseudo "CHANSERV" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; # Alias CS pentru ChanServ Pseudo "CS" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; # MemoServ - Mesaje offline Pseudo "MEMOSERV" { name = "MemoServ"; nick = "MemoServ@services.underchat.org"; }; # Alias MS pentru MemoServ Pseudo "MS" { name = "MemoServ"; nick = "MemoServ@services.underchat.org"; }; # OperServ - Comenzi operatori Pseudo "OPERSERV" { name = "OperServ"; nick = "OperServ@services.underchat.org"; }; # Alias OS pentru OperServ Pseudo "OS" { name = "OperServ"; nick = "OperServ@services.underchat.org"; }; # AuthServ - Autentificare Pseudo "AUTHSERV" { name = "AuthServ"; nick = "AuthServ@services.underchat.org"; defaulttext = "HELP"; }; # LOGIN - Scurtătură pentru autentificare rapidă Pseudo "LOGIN" { name = "AuthServ"; prepend = "LOGIN "; nick = "AuthServ@services.underchat.org"; }; # IDENTIFY - Alternativă pentru autentificare Pseudo "IDENTIFY" { name = "NickServ"; prepend = "IDENTIFY "; nick = "NickServ@services.underchat.org"; }; ``` --- ## 🔍 VERIFICARE ȘI TESTARE ### **1. Verifică configurația:** ```bash grep -A 3 'Pseudo "' /home/ircd/ircd/lib/ircd.conf ``` **Output așteptat:** ```conf Pseudo "CHANSERV" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; -- Pseudo "NICKSERV" { name = "NickServ"; nick = "NickServ@services.underchat.org"; }; ``` ### **2. Testează în IRC:** ```irc # Conectează-te la server /SERVER madrid.es.eu.underchat.org 6667 # Testează comanda Pseudo /CHANSERV HELP # Ar trebui să primești răspuns de la ChanServ # (dacă serviciile sunt active) ``` ### **3. Debug (dacă nu funcționează):** ```irc # Verifică dacă serviciul este conectat /WHOIS ChanServ # Dacă vezi ceva ca: # ChanServ is ChanServ@services.underchat.org * Channel Service # → Serviciul este activ # Dacă vezi: # No such nick/channel # → Serviciul NU este conectat (problema e la Anope/Atheme) ``` --- ## 📊 AVANTAJE vs DEZAVANTAJE ### ✅ **AVANTAJE:** 1. **Ușurință utilizare** - Comenzi intuitive pentru utilizatori 2. **Consistență** - Toate serviciile au aceeași sintaxă 3. **Failover** - Poate încerca multiple servere 4. **Scurtături** - `/LOGIN` în loc de `/MSG X@server LOGIN` 5. **Defaulturi inteligente** - Poate trimite `HELP` automat 6. **Backward compatible** - `/MSG` tradițional tot funcționează ### ⚠️ **DEZAVANTAJE:** 1. **Configurare necesară** - Trebuie configurat manual în ircd.conf 2. **Dependență de servicii** - Dacă serviciile cad, Pseudo nu ajută 3. **Conflict posibil** - Dacă un user are nick-ul `CHANSERV`, poate crea confuzie 4. **Nu verifică sintaxă** - Doar relay-uiește mesajul, nu validează --- ## 🚨 CAZURI SPECIALE ### **Caz 1: Serviciul nu răspunde** ```conf Pseudo "CHANSERV" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; ``` **Dacă serviciul NU este conectat:** ```irc /CHANSERV HELP # Output: :server NOTICE nick :Service ChanServ is currently down. Please try again later. ``` ### **Caz 2: Multiple nick-uri (failover)** ```conf Pseudo "X" { name = "X"; nick = "X@channels.underchat.org"; nick = "X@backup.underchat.org"; }; ``` **Funcționare:** 1. Serverul caută `X@channels.underchat.org` → NU există 2. Serverul caută `X@backup.underchat.org` → EXISTĂ! 3. Mesajul este trimis către `X@backup.underchat.org` ### **Caz 3: Text vid cu defaulttext** ```conf Pseudo "HELP" { name = "HelpBot"; nick = "HelpBot@services.underchat.org"; defaulttext = "MAINMENU"; }; ``` **Utilizare:** ```irc /HELP # Trimite automat: /MSG HelpBot@services... MAINMENU /HELP commands # Trimite: /MSG HelpBot@services... commands ``` --- ## 🎯 BEST PRACTICES ### **1. Folosește nume intuitive:** ```conf # BINE: Pseudo "NICKSERV" { ... }; Pseudo "LOGIN" { ... }; # EVITĂ: Pseudo "ABC123" { ... }; Pseudo "ZZXASD" { ... }; ``` ### **2. Oferă scurtături:** ```conf # Comanda completă Pseudo "NICKSERV" { name = "NickServ"; nick = "NickServ@..."; }; # Scurtătură Pseudo "NS" { name = "NickServ"; nick = "NickServ@..."; }; ``` ### **3. Folosește defaulttext pentru comenzi frecvente:** ```conf # HELP automat dacă user uită parametri Pseudo "AUTHSERV" { name = "AuthServ"; nick = "AuthServ@services.underchat.org"; defaulttext = "HELP"; }; ``` ### **4. Documentează în MOTD:** ``` # În ircd.motd: - - Comenzi disponibile: - /NICKSERV REGISTER password email - /CHANSERV REGISTER #channel - /LOGIN username password - /AUTHSERV (pentru help) - - Sau scurtăturile: /NS, /CS, /MS, /OS - ``` --- ## 🔧 TROUBLESHOOTING ### **Problemă: Comanda Pseudo nu funcționează** **Cauze posibile:** 1. **Pseudo NU este configurat în ircd.conf** ```bash grep 'Pseudo "CHANSERV"' /home/ircd/ircd/lib/ircd.conf # Dacă nu găsește nimic → Trebuie adăugat ``` 2. **Serviciul NU este conectat** ```irc /WHOIS ChanServ # Dacă "No such nick" → Pornește Anope/Atheme ``` 3. **Nick@Server greșit** ```conf # Verifică că nick-ul este corect: nick = "ChanServ@services.underchat.org"; # ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ # Nick Server (trebuie să existe în rețea) ``` 4. **Server de servicii NU este linked** ```irc /LINKS # Caută "services.underchat.org" în listă ``` ### **Soluție generală:** ```bash # 1. Adaugă Pseudo în ircd.conf nano /home/ircd/ircd/lib/ircd.conf # Adaugă: Pseudo "CHANSERV" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; # 2. Repornește IRCd killall ircd /home/ircd/ircd/bin/ircd -f /home/ircd/ircd/lib/ircd.conf # 3. Asigură-te că serviciile (Anope) rulează ps aux | grep anope # Dacă nu: /opt/anope/bin/services # 4. Testează /CHANSERV HELP ``` --- ## 📚 REFERINȚE - **Cod sursă:** `ircd/m_pseudo.c` - **Exemplu config:** `doc/example.conf` (liniile 999-1021) - **Testare:** `ircd/test/ircd-t1.conf` (liniile 99-102) --- ## 🎯 CONCLUZIE **Pseudo** = **Alias-uri pentru servicii IRC** Transformă comenzi complicate: ```irc /MSG ChanServ@services.underchat.org REGISTER #mychannel ``` În comenzi simple: ```irc /CHANSERV REGISTER #mychannel ``` Este o funcționalitate de **confort** care face IRC-ul mai **user-friendly** și mai **intuitiv** pentru utilizatori! --- **Data:** 14 Februarie 2026 **Versiune:** 1.0 **Pentru:** UnderChat IRCd v1.4.0+ --- ## 🚀 QUICK START **Pentru a adăuga Pseudo în rețeaua ta:** ```conf # Adaugă în /home/ircd/ircd/lib/ircd.conf: Pseudo "NICKSERV" { name = "NickServ"; nick = "NickServ@services.underchat.org"; }; Pseudo "CHANSERV" { name = "ChanServ"; nick = "ChanServ@services.underchat.org"; }; Pseudo "LOGIN" { name = "AuthServ"; prepend = "LOGIN "; nick = "AuthServ@services.underchat.org"; }; ``` **Restart IRCd și testează:** ```irc /NICKSERV HELP /CHANSERV HELP /LOGIN username password ``` **GATA!** ✅