ircu2/PSEUDO_EXPLAINED.md

13 KiB

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:

/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:

/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ă:

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

Pseudo "CHANSERV" {
    name = "ChanServ";
    nick = "ChanServ@services.underchat.org";
};

Utilizare:

# User scrie:
/CHANSERV REGISTER #mychannel

# Server transformă în:
/MSG ChanServ@services.underchat.org REGISTER #mychannel

Exemplu 2: Alias cu PREPEND (adaugă text înainte)

Pseudo "LOGIN" {
    name = "X";
    prepend = "LOGIN ";
    nick = "X@channels.undernet.org";
};

Utilizare:

# 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

Pseudo "AUTHSERV" {
    name = "AuthServ";
    nick = "AuthServ@services.underchat.org";
    defaulttext = "HELP";
};

Utilizare:

# 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)

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

# 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:

/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)

# 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:

/LOGIN myuser mypassword
/LOGOUT
/WHOIS someuser

3. Bot Custom (ex: GameBot, StatBot)

# 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:

/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:

# ============================================================================
# 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:

grep -A 3 'Pseudo "' /home/ircd/ircd/lib/ircd.conf

Output așteptat:

Pseudo "CHANSERV" {
    name = "ChanServ";
    nick = "ChanServ@services.underchat.org";
};
--
Pseudo "NICKSERV" {
    name = "NickServ";
    nick = "NickServ@services.underchat.org";
};

2. Testează în 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ă):

# 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

Pseudo "CHANSERV" {
    name = "ChanServ";
    nick = "ChanServ@services.underchat.org";
};

Dacă serviciul NU este conectat:

/CHANSERV HELP
# Output:
:server NOTICE nick :Service ChanServ is currently down. Please try again later.

Caz 2: Multiple nick-uri (failover)

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

Pseudo "HELP" {
    name = "HelpBot";
    nick = "HelpBot@services.underchat.org";
    defaulttext = "MAINMENU";
};

Utilizare:

/HELP
# Trimite automat: /MSG HelpBot@services... MAINMENU

/HELP commands
# Trimite: /MSG HelpBot@services... commands

🎯 BEST PRACTICES

1. Folosește nume intuitive:

# BINE:
Pseudo "NICKSERV" { ... };
Pseudo "LOGIN" { ... };

# EVITĂ:
Pseudo "ABC123" { ... };
Pseudo "ZZXASD" { ... };

2. Oferă scurtături:

# Comanda completă
Pseudo "NICKSERV" { name = "NickServ"; nick = "NickServ@..."; };

# Scurtătură
Pseudo "NS" { name = "NickServ"; nick = "NickServ@..."; };

3. Folosește defaulttext pentru comenzi frecvente:

# 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

    grep 'Pseudo "CHANSERV"' /home/ircd/ircd/lib/ircd.conf
    # Dacă nu găsește nimic → Trebuie adăugat
    
  2. Serviciul NU este conectat

    /WHOIS ChanServ
    # Dacă "No such nick" → Pornește Anope/Atheme
    
  3. Nick@Server greșit

    # 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

    /LINKS
    # Caută "services.underchat.org" în listă
    

Soluție generală:

# 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:

/MSG ChanServ@services.underchat.org REGISTER #mychannel

În comenzi simple:

/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:

# 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ă:

/NICKSERV HELP
/CHANSERV HELP
/LOGIN username password

GATA!