Guida

Introduzione
IRC sta per "Internet Relay Chat" ed è un protocollo che permette di discutere in tempo reale. IRC è formato da tanti canali (chan) ognuno con un proprio argomento di discussione. Per utilizzare IRC si ha bisogno di due cose: un server a cui connettersi ed un software specializzato (Client).

Server IRC
Un server IRC è sostanzialmente un computer in grado di ricevere ed inviare in tempo reale messaggi di testo, servendosi del protocollo di trasmissione RFC1459 (il protocollo è uno standard in base al quale vengono trasmessi i dati in una rete di computer). Poiché il traffico di messaggi è notevole, sono impiegati computer multiprocessore con sistema operativo Unix; essi vengono gestiti da operatori (IRCop) attraverso un normale client (il programma utilizzato per collegarsi ad IRC) dotato però di particolari privilegi: si possono così gestire le connessioni al server (utenti collegati) e, se necessario, limitarle. Un server IRC accetta tre differenti tipi di connessioni:

Sebbene un solo server IRC sia in grado di gestire contemporaneamente i tre differenti tipi di connessione, è preferibile avere differenti server, ognuno ottimizzato per lo svolgimento di un compito specifico.

Clients

Come abbiamo già detto, per utilizzare IRC abbiamo bisogno di un Client. Ne esistono molti, il più famoso è mIRC per Windows.

Uso di IRC

I comandi sono preceduti dal carattere "/" (slash) per poter essere distinti dai messaggi veri e propri.

I Canali
I nomi dei canali di solito iniziano con il simbolo cancelletto # e sharano insieme agli utenti a tutti i server irc della rete, fanno eccezione i canali con davanti il simbolo & che vengono creati solamente nel server locale.
Per entrare in un canale, o per crearne uno nuovo si usa il comando /join #nomecanale. Il primo che entra in un canale nuovo diventa subito proprietario prendendo in automatico l'op che sta a significare “operatore” del canale. L'operatore verrà identificato dal nick preceduto dal simbolo della chiocciola: @nick. L'operatore ha diritto di impostare le regole del canale e i permessi degli utenti.

Gli IRCop
Ufficialmente la parola IRCop sta a significare IRC Operator, ovvero operatori dell'intero network. Sono utenti con flag speciali e vengono nominati dall'IRC Admin con lo scopo di monitorare la NetNetique degli utenti. Hanno varie caratteristiche come possibilità di opparsi da soli in qualsiasi canale. Una funzione molto importante che hanno è quella del K-line, ovvero hanno la possibilità di disconnettere un utente dal server per un periodo limitato/illimitato.

Interazione tra utenti
Un utente può chattare o nel canale in pubblico, ovvero tutti leggeranno quello che si sta scrivendo, oppure in query, ovvero può rivolgersi in un modo privato direttamente ad un altro utente. 


Connessione al server

Una volta avviato il Client dovremo connetterci ad un server, fornendo indirizzo, porta, nome, nickname, ident.


Comandi IRC

/join #canale [chiave]
Consente di entrare nel canale di conversazione specificato, se questo richiede una chiave di ingresso essa va inserita come parametro aggiuntivo. E' possibile entrare in più canali in sequenza con un unico comando, usando /join #canale1,#canale2,#canale3


/part #canale [messaggio]
Consente di uscire dal canale indicato, permette di specificare un messaggio di uscita subito dopo il nome nome del canale. Come per join, si può uscire da più canale in sequenza separandoli da virgole:
/part #chan1,#chan2,#chan3


/list [opzioni]
Permette di visualizzare la lista dei canali presenti sul network.
Esisto diverse opzioni per variare il tipo di ricerca, quello più utile è:
>N dove N è il numero minimo di utenti del canale (quindi /list >50 mostra tutti i canali con 50 persone o più)

/me <messaggio>
Consente di scrivere in terza persona, utilizzando i ctcp action.

/msg <nick> <messaggio>
Invia un messaggio privato ad un utente, lo stesso comando inviato ad un canale invece che ad un nick scrive un messaggio sul canale indicato.


/amsg <nick> <messaggio>
Con questo comando è possibile inviare uno specifico messaggio a tutti i canali a cui si è collegati in quel momento.

/whois <server> <nick>
Permette di ottenere informazioni sull'utente specificato, la sua maschera comprendente ident@host, i canali su cui si trova, il server che utilizza per collegarsi ad IRC. Per destinazione si può specificare nuovamente il nick, o un server da cui effettuare il whois. Il whois col nick ripetuto due volte consente di ottenere sempre il tempo di idle, che è visibile normalmente solo se ci si trova sullo stesso server del nick di cui si applica il whois.

/nick <nickname>
Attraverso questo comando si può cambiare il proprio nickname.

/quit <messaggio>
Permette di disconnettersi dal server, specificando opzionalmente un messaggio di disconnessione che verrà visualizzato nel quit.


/away <messaggio>
Permette di impostarsi assenti; in pratica quando si riceve un messaggio o un whois da un altro utente, questo riceverà automaticamente la risposta automatica impostata nel messaggio scritto col comando; scrivendo solo /away si disattiva questa auto-risposta.

/topic <#canale> <messaggio>
Questo comando serve per leggere il topic di un canale (il messaggio che di solito fa da argomento di conversazione), se si hanno i permessi necessari è possibile anche specificare un messaggio per cambiare il topic.


/invite <nick> <#canale>
Consente di invitare un utente sul canale specificato.


/names <#canale>
Fornisce un elenco dei nicknames presenti su un canale, è possibile farlo anche stando fuori del canale, ma tutti gli utenti col il mode +i +s +p non saranno visibili.


/kick <#canale> <nick> <motivo>
Permette di mandare fuori un utente dal canale (solo se si è operatori), specificando eventualmente una motivazione.


/mode <#canale> <opzioni> <parametri>
Consente di impostare varie caratteristiche per il proprio canale ed è fattibile solo se si è operatori. A seconda del mode scelto, possono essere richiesti parametri dopo i modes (esempio: /mode #chan +o Caio ). Nel dettaglio i vari modes disponibili su IRCnet:


Gli operatori del canale hanno la possibilità di cambiare i modes del canale, e quindi di bannare utenti, e di usare kick. Le voci invece hanno semplicemente la possibilità di scrivere sul canale anche quando questo è +m. Si tenga presente che così come con il + si inserisce il mode, con il - lo si toglie, e quindi per togliere lo stato di operatore a qualcuno occorrerà usare /mode #canale -o NICK.

/admin <server>
Fornisce informazioni sull'amministrazione del server, se ne puo` specificare uno preciso come parametro.

/info <server>
Restituisce informazioni sul server al quale si è collegati, è possibile specificarne un altro del network come parametro.

/links <server> <mask>
Permette di vedere una lista di tutti i servers facenti parte del network. Si può specificare un server da cui far partire la richiesta di links, e una mask con la quale dovranno combaciare i server per essere mostrati in lista.

/lusers <* server>
Restituisce statistiche sull'uso dei server, è possibile specificarne uno in particolare, facendolo precedere da un secondo parametro fittizio che è richiesto per motivi di retrocompatibilità.

/motd <server>
Riporta il Message Of The Day. E' possibile specificare un server per visualizzare un motd specifico.


/stats <tipo> <server>
Restituisce statistiche da un server. I tipi disponibili sono:


/time <server>
Restituisce l'orario locale del server, è possibile scegliere un server preciso specificandolo come parametro.


/trace <server>
Restituisce un routing trace fino al server di destinazione, l'hub di provenienza e  gli  ircop connessi.

/version <server>
Riporta informazioni sulla versione del server sul quale si è connessi, o di un altro server se questo viene specificato come parametro.

/who <#canale>
Riporta informazioni su tutti i nick presenti nel canale.

/whowas <nick> <max> <server>
Riporta informazioni registrate sullo specifico nick (o lista di nick) quando questo era online, simili a quelle del whois. Se si specifica il parametro max, i dati saranno riportati per il numero massimo indicato di istanze passate del nick, si può interrogare infine un server specifico indicandolo nella destinazione.

IRC Masks

A ciascun utente su IRC è associata una mask, ossia un insieme di caratteri e numeri che caratterizzano la sua connessione al server.
Questa mask è visibile attraverso un certo numero di comandi, per esempio il whois. Dunque andiamo ad esaminare la maschera più nel dettaglio, richiedendo informazioni su un ipotetico nick "pippo" con il comando /whois pippo.

Verrà fuori qualcosa di questo tipo:

pippo is pippo@p-37-248-152-40.ircnet.com


La maschera è strutturata in tre parti: nick!user@host

Come si può vedere un punto esclamativo separa il nick dall'user e una chiocciola separa l'user id dall'host. In particolare nel whois viene mostrata solo la parte user@host , senza il nick che del resto è là vicino.
Quindi riprendendo l'esempio precedente, la mask completa sarebbe:
pippo!pippo@p-37-248-152-40.ircnet.com

Dunque come possiamo fare riferimento ad un utente attraverso il suo nick, per determinati scopi può far comodo fare riferimento alla sua maschera o, meglio ancora, a parte di essa.


Per capire come funziona un ban e comandi affini bisogna fare chiarezza su cosa  siano  gli asterischi  di cui possono variare la validità  dei comandi come il suddetto ban. Dunque, ricavando la maschera di "pippo" tramite whois, tipo pippo!idpippo@p-37-248-152-40.ircnet.com possiamo impostare diversi ban in base alla posizione dell'asterico.
Il carattere "*" è un "carattere jolly" e il significato è "qualunque cosa sia scritta al mio posto".

Ban del nick: /mode #canale +b pippo!*@*

Ban dell'ident: /mode #canale +b *!idpippo@*
Ban dell'host: /mode #canale +b *!*@p-37-248-152-40.ircnet.com

L'utilizzo dell'asterisco ci permette anche di estendere il ban a parole simili.  Facendo l'esempio del nick di prima, se banniamo la maschera con il comando /mode #canale +b pippo*!*@* in questo caso banneremo tutti i nick che continuano con qualsiasi altro carattere (es. pippo2, pippoIRC ecc.).
Così vale con ident e host posizionando l'asterisco in un qualsiasi punto delle parole.

I comandi visti sono relativi al ban, ma tutto il discorso è valido per definire un utente o un insieme di utenti coinvolti in un qualsiasi comando che permetta l'uso di una mask.