657 lines
13 KiB
Markdown
657 lines
13 KiB
Markdown
# 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!** ✅
|
|
|