IRC, acronyme de Internet Relay Chat (en français, « discussion relayée par Internet ») est un protocole? qui permet la communication instantanée entre des client?s et des serveur?s connectés les uns aux autres. Il est concu à l'origine pour permettre des téléconférences entre interlocuteurs éloignés.
Conçu fin août 1988, il a été décrit initialement dans la RFC 1459 par Jarkko Oikarinen (surnommé « WiZ ») et D. Reed, puis révisé dans les RFC 2810 à 2813. IRC fut créé pour remplacer un programme appelé MUT (MultiUser talk) sur un BBS? finlandais (OuluBox). Oikarinen s'est inspiré du Bitnet Relay Chat du réseau Bitnet.
Le protocole de communication décrit un réseau informatique formé de plusieurs serveurs connectés dans lequel les clients communiquent généralement par le biais du serveur (qui relayera éventuellement le message au reste du réseau). Il est également possible de connecter deux clients directement pour une conversation privée ou un transfert de fichier, on parle alors de DCC?. Ce protocole étant public, des clients existent pour de nombreux systèmes d'exploitations, de même que les serveurs IRC, aussi désignés par le terme IRCD qui signifie Internet Relay Chat Daemon.
Il existe différents réseaux, dont les plus connus sont IRCnet?, EFnet?, DalNET?, Undernet?, Freenode?. Ils sont le plus souvent libres d'utilisation et gratuits. QuakeNet? est le plus grand réseau avec 200 000 clients.
Avec l'arrivée des gros fournisseurs de contenu un peu avant 2000, le succès d'IRC a été quelque peu diminué par l'arrivée des messageries instantanées. Ces réseaux restent néanmoins très utilisés par ceux qui veulent discuter sans passer par un programme client propriétaire ou n'offrant pas l'intéractivité sous forme de canaux, permettant ainsi de rejoindre des milliers d'usagers.
Un serveur IRC est normalement géré par un IrcOp?, contraction d'origine anglophone de IRC Operator ou opérateur d'IRC.
Se connecter à IRC
Un réseau irc est constitué d'au moins un serveur. Lorsqu'il y a plus d'un serveur, il se forme une structure où chaque serveur est lié aux autres et où les paquets circulent par le chemin le plus rapide. Les paquets en question circulent en suivant le protocole irc ; de la même manière que les pages web sont généralement communiqués avec le protocole http. Se connecter à l'irc revient donc à se connecter à l'un de ces serveurs, ce qui nécessite des programmes taillés sur mesure.
Pour communiquer en http on utilise un programme de la famille des navigateurs internet tel que firefox ou internet explorer. Pour l'irc on utilise des programmes de la famille des « clients irc ». Seul Opera gère le protocole irc en natif pour le moment. Sur firefox vous pouvez utiliser le greffon Chatzilla. Avec internet explorer (ou windows explorer) rien n'est prévu et vous devrez obligatoirement utiliser un programme externe dédié au protocole tel que mIRC ou XChat. Pour Macintosh vous trouverez une liste de client sur irchelp.
Avec firefox ou opera il suffit d'entrer irc://freenode par exemple dans l'url de son navigateur pour se connecter au serveur en question, sinon il faut se connecter au serveur manuellement, une fois le client irc démarré avec la commande /server nomDuServeur par exemple.
Une fois connecté à un serveur il ne reste plus qu'à accéder à l'un des nombreux salons (channel ou chan en anglais) qu'il est censé accueillir. Si vous connaissez son nom il vous suffit d'entrer /join #nomDuSalon (ne pas oublier de précéder le nom du salon par un dièze #, irc distingue les salons des utilisateurs par ce moyen, c'est à dire que pour lui #toto est le salon appellé toto et toto est la personne dont le pseudonyme est toto). Si on ne connait pas le nom du salon il est possible de lister les salons hébergés sur le réseau avec la commande /list et des jokers : « * ». Par exemple /list #*fr* vous donnera la liste de tous les salons francophones (du moins ceux contenant « fr » dans leur nom).
Liste des serveurs les plus connus
freenode
Un serveur dédié au monde du libre
quakenet
Le plus gros. on y discute de tout
poursuivre la liste
Salons fréquentés
Sur freenode on trouvera les salons de référence pour les langages de programmation, généralement en anglais :
•.irc://irc.freenode.org/python-fr (un des rares salons francophones relativement fréquentés)
•.irc://irc.freenode.org/ubuntu-fr (un autre salon francophone très fréquenté)
•.irc://irc.freenode.org/openweb (salon francophone sur les langages du web en général)
•....
Essayez généralement d'ajouter « -fr » après ou « fr. » avant le nom du langage ou du thème pour avoir l'équivalent francophone.
Freenode héberge également les salons des projets wikimedia. Pour le salon germanophone de wikipedia on se connectera à wikipedia-de, pour le salon francophone de wikilivres, on se connectera à wikibooks-fr, et ainsi de suite.
On trouvera des réseaux sociaux plutôt sur les serveurs de irc.quakenet.org, irc.epiknet.org (exclusivement francophone), etc. Une recherche sur google commençant par « serveur irc » devrait vous aider à trouver votre bonheur. Par exemple le salon de bashfr, le célèbre recueil de citations provenant d'irc se trouve à irc://irc.langochat.net/bashfr
Premiers pas
Réseaux, serveurs, canaux
•.Un serveur est un ensemble de salons de discussion. Chaque salon de discussion peut avoir un sujet (Exemple : Un salon de discussion officiel d'un site, d'un forum, etc.). On appelle Salon de discussion le canal, ou le channel, le chan. Pour joindre un salon de discussion du même serveur, il suffit d'écrire /join #nom_du_salon avec le dièse (parfois il est inutile). Si l'on est sur un salon de discussion d'un tel serveur, pour accéder à un salon de discussion d'un autre serveur, il faut d'abord joindre cet autre serveur. Grâce à la commande /server nom_du_serveur vous vous connecterez à un autre serveur. Une erreur sera renvoyée si le serveur n'existe pas. Vous pouvez aussi joindre un serveur sans se déconnecter de l'autre. Pour cela, il vous suffit d'ajouter un -m, ce qui donne /server -m nom_du_serveur. Lorsque vous joignez un autre serveur, celui-ci peut appartenir au même réseau où vous êtes ou à un autre réseau. Cela n'a pas d'importance.
•.Un réseau est un ensemble de serveurs (au moins 2 donc).
Grades
En IRC, il existe plusieurs grades principaux :
•.Les Utilisateurs normaux ne sont marqués avec aucun signe à gauche de leur pseudonyme dans la liste des personnes du salon. Ils n’ont aucun droit sur le salon, sauf celui de parler (si le salon est en -m), ils peuvent t’chatter (même condition). Remarquez que si le salon est en mode -t ils peuvent modifier ou mettre le sujet de salon normalement.
•.Les Voices sont des utilisateurs ayant reçus le mode +v sur un canal de discussion. Ils ne peuvent pas éjecter ou bannir, et n’ont aucun pouvoir sur le salon (comme des utilisateurs normaux). On voice quelqu’un car il peut être ami, personne appréciée.. Cela dépend des salons. Les voices sont en haut de la liste des pseudos (en bas des half-ops) et se font mieux remarquer. Lorsque le salon est en +m, les voices peuvent toujours tchatter (les modérateurs aussi) mais pas les utilisateurs normaux.
•.Les Half-Ops (Semis-Opérateurs) sont des utilisateurs ayant reçus le mode +h sur un canal de discussion. Ils peuvent changer le sujet du salon (le topic) même lorsque le salon est en +t, et ils peuvent éjecter (kicker) ou bannir (ban) quelqu‘un. Ils peuvent appliquer certains modes sur le salon et mettre les personnes qu’ils veulent voice. Ils peuvent appliquer l’option +e sur des personnes, afin que cette personne ne puisse pas être bannie du salon de t’chat pendant qu’elle a l’option +e sur le salon. Une personne bannie du salon a le mode +b. Pour bannir quelqu‘un du salon , il faut écrire /mode #NOM_DU_SALON +b XXX. Reportez vous au chapitre Bannissements pour savoir avec quoi peut-on remplacer le XXX. Pour voicer quelqu`un, l’half-op doit écrire /mode #NOM_DU_SALON +v XXX en remplaçant XXX par le nom de la personne. à noter que certains réseaux IRC ne disposent pas de ce mode d'utilisateur.
•.Les Ops (Opérateurs du salon), utilisateurs ayant reçus le mode +o sur un canal de discussion, ont les mêmes pouvoirs que les half-ops mais peuvent appliquer certains modes sur le salon que les half-ops ne peuvent pas (salon privé, salon en +l, protection contre le flood, bloquage de messages couleurs etc.).
•.Les Admins sont des utilisateurs ayant reçus le mode +a sur un canal de discussion. Sous unreal IRCd, ce mode est attribué à un utilisateur ayant un acces d'au moins dix sur un canal de discussion. Il peuvent modérer les opérateurs et changer une partie de la configuration d'un canal, retirer ou ajouter des accès inférieur à leur niveau.
•.L'Owner et le Founder est un utilisateur ayant reçu le mode +q sur un canal de discussion. L'Owner peut modifier complêtement la configuration du canal de discussion et déléguer son statut d'owner à un autre utilisateur.
Principe d'accès
La plupart des réseaux IRC permettent l'enregistrement d'un canal de discussion pour les utilisateurs. Le nombre de canaux pouvant être enregistré par un seul utilisateur peut être limité, ou non, sur le réseau. Lorsqu'un canal est enregistré, celui qui à enregistré le canal devient alors Founder. Celui ci à un droit total sur le canal. Il peut ensuite ajouter des accès afin de permettre à d'autres de modérer et s'occuper du canal en question. un accès est un chiffre entre 0 et 9999 qui permet de définir qui est prédominant sur un canal par rapport aux autres utilisateurs. Par exemple sous l'IRCd Unreal IRCd, par défaut la gestion des accès est la suivante :
•.Utilisateur avec un accès de 0 à 2 : Utilisateur normal, ne reçoit aucun avantage.
•.Utilisateur avec un accès de 3 : Utilisateur auquel le mode +v sera attribué lors de son arrivée sur le canal.
•.Utilisateur avec un accès de 4 : Utilisateur auquel le mode +h sera attribué lors de son arrivée sur le canal
•.Utilisateur avec un accès de 5 à 9 : Utilisateur auquel le mode +o sera attribué lors de son arrivée sur le canal
•.Utilisateur avec un accès de 10-9999 : Utilisateur auquel les modes +oa seront attribués lors de son arrivée sur le canal
Le Founder/Owner n'a pas besoin d'un accès en particulier, le robot de service le reconnait déjà comme tout puissant et n'a donc pas besoin de lui définir un accès pour comparer avec les autres utilisateurs. Plus l'accès est haut plus cela est avantageux. Par exemple un utilisateur avec un accès de 499 ne pourra pas kicker un utilisateur ayant un accès de 500 ou plus. Cela permet donc de créer une hiérarchie.
Mais cela ne s'arrête pas là. les "levels" sont remodifiables, c'est à dire que l'accès aux options, aux modes et à d'autres caractéristiques peuvent être redéfinis. Par exemple il est possible de faire un canal où n'importe quel utilisateur se voit attribué le mode +o dès son arrivée.
Un utilisateur voulant bénéficier de l'accès qu'il possède sur un salon doit s'identifier (d'abord enregistrer son pseudonyme).
Enfin, il existe la possibilité de mettre des accès négatifs sur certains utilisateurs et de les interdire d'accès au canal de cette manière.
Modération et gestion de ChanServ
Éjection
Afin d'éjecter (kick) un utilisateur, il faut taper :
•.sous mIRC : /kick #channel Utilisateur [Raison]
•.sous XChat : /kick Utilisateur [Raison]
•.via ChanServ (compatible avec tous les clients) : /msg chanserv kick #channel Utilisateur [Raison]
Remarque :
•.La raison est facultative.
Bannissements
Bannir quelqu'un sert à l'empêcher de joindre un salon ou, dans le cas de quelqu'un étant déjà sur le salon, de l'empêcher de parler (et de revenir s'il quitte le salon).
Pour bannir quelqu'un, si la personne a assez de pouvoir (être au moins half-op), il lui suffit d’écrire :
•.sous mIRC : "/mode #channel +b [nick]![ident]@[host]"
•.sous XChat : "/mode +b [nick]![ident]@[host]" ou "/ban [nick]![ident]@[host]"
•.via ChanServ : "/cs ban #channel Utilisateur [Raison]", dans ce cas, l'Utilisateur sera également éjecté du salon.
Remarques :
•.[nick], [ident] et [host] peuvent être remplacés par des joker *.
•.Le nickname, abrégé "nick", est le pseudonyme de l'utilisateur. On peut remplacer la syntaxe "[nick]![ident]@[host]" par le nick seul. Dans ce cas, le ban sera appliqué différemment, selon la configuration du client, le plus souvent nick!*@* ou *!*@host.
•.L'ident est une information renseignée avant la connexion (par le client, pouvant être modifié par l'utilisateur). Elle est visible à la connexion de l'utilisateur sur un salon (selon la configuration du client IRC) et par /whois Utilisateur.
•.L’hostname , abrégé host, symbolise la connexion de l'utilisateur. Il peut prendre différentes formes selon l'information que le serveur IRC a réussit à obtenir de l'utilisateur (IP seule, host seul, IP + host), si ces informations sont cryptées pour les autres utilisateurs (usermode +x), et si l'utilisateur masque ou non ces informations grâce à un VHost. Sur IRC, on simplifie en apellant, peu importe le cas, le résultat "host". L’host change donc en fonction de la connexion de la personne et de ce qu'elle transmet au serveur IRC lors de la connexion à celui-ci.
Jokers et WildCards
Les joker, symbolisés par le caractère "*" signifie une chaîne de caractères facultative et variable. Ainsi, "nick*" signifie aussi bien "nick", "nickabcd", "nick1234" ou "nickabcd1234..".
Ce joker peut être utilisé dans les bans, par exemple, dans le but de bannir un nickname, un ident ou un host en particulier, renseignés partiellement ou entièrement, le reste pouvant varier :
•.User*!*@* désignera tout les utilisateurs ayant un nickname (= pseudonyme) commençant par User.
•.*!*abcd*@* désignera tout les utilisateurs ayant un ident, peu importe lequel, contenant les caractères "abcd". (abcdefg, efgabcd, efgabcdefg, ...).
•.*!*@*.net désignera tout les utilisateurs ayant un hostname finissant par ".net".
De la même manière, les wilcard, symbolisés par le caractère "?" signifie un caractère facultatif et variable. Ainsi, "nick?" signifie aussi bien "nick", "nick1" ou "nickZ" par exemple.
Les VHosts
Le terme VHost désigne les hostname virtuels (Virtual Hostname). Ils permettent, à l'origine, de masquer l'hostname d'un utilisateur (utile dans le cas d'un serveur ne cryptant pas automatiquement les IPs avec le usermode +x). Ils sont maintenant principalement utilisés dans un but esthétique. Par défaut, seuls les IRCOp ou LocOp (Globalement les personnes qui gèrent le réseau) peuvent attribuer un Vhost à un utilisateur. Le service utilisé est nommé "HostServ" et s'utilise via la commande "/msg hostserv [action]". Les actions disponibles :
Pour l'utilisateur :
•.ON : Active le VHost de celui qui tape la commande
•.OFF : Désactive le VHost
•.GROUP : Applique le VHost du nick courant à tout les nicks de son group
Pour les ServicesOpérateurs :
•.SET [nick] [VHost] : Attribuer un VHost au [nick]
•.SETALL [nick] [VHost] : Attribuer un VHost à tout les nicks du group de [nick]
•.DEL [nick] : Supprime le VHost du [nick]
•.LIST [argument] : Permet de lister les VHosts en place. [Argument] peut être vide (listera tout les VHost) ou contenir le pseudonyme (ou le VHost, partie après l'@) d'une personne pour obtenir son VHost. L'argument peut contenir un ou des joker.
Remarques :
•.Le VHost peut remplacer l'hostname seul ou l'ident et l'hostname. Dans ce cas, l'action SET devra être utilisée de cette façon : "/msg hostserv set Utilisateur ident@hostname
•.Le VHost doit être une chaîne de caractères alphanumériques, sans espaces, avec au moins un point dans la partie de l'hostname.
Les alias
Afin de raccourcir les commandes, la plupart des réseaux ont opté pour des alias, c'est-à-dire des sortes de raccourcis, pour communiquer avec les services :
•./cs pour /msg chanserv
•./hs pour /msg hostserv
•./bs pour /msg botserv
•./ns pour /msg nickserv
•./os pour /msg operserv
•./ms pour /msg memoserv
Les commandes s'effectuent ainsi de la même manière, par exemple la commande "/msg hostserv on" fonctionnera également avec la commande "/hs on"
Fabriquer un bot IRC
On nomme Bot IRC un programme destiné à interagir avec les autres utilisateurs présents sur un canal IRC, et cela de façon automatique. Il est vu par les autres utilisateurs comme un utilisateur normal.
Les tâches pouvant être accomplies automatiquement sont multiples : filtrage de certains mots pour éviter les insultes ou affichage d'un message de bienvenue aux utilisateurs venant de se connecter. Le bot étant programmable, les possibilités sont multiples et ne dépendent que des intentions du créateur.
Les bots IRC peuvent être programmés dans un grand nombre de langage puisque IRC est basé sur un protocole. Il est toujours possible de construire et d'envoyer des sockets manuellement, opération que presque tous les langages peuvent effectuer. Cependant, certains sont mieux adaptés et présentent des librairies spécifiques permettant de faciliter grandement la conception. De plus, certains logiciels IRC comme Xchat permettent la programmation très simple de bots grâce à l'installation de plug-ins.
Requêtes basiques avec IRC
Liste de toutes les commandes, voir la RFC : http://abcdrfc.free.fr/rfc-vf/rfc1459.html (en français)
Exemple d'utilisation basique avec Telnet : Vous pouvez taper les commandes suivantes dans une console supportant Telnet (remplacer irc_server par le nom ou l'adresse du serveur sur lequel vous souhaitez vous connecter par exemple 195.50.191.14)
telnet <irc_serveur> <port (6664 a 6667 généralement)>
--> Affichage d'informations de connexion
NICK <votre_surnom>
USER <nom_utilisateur> <nom_serveur> <nom_serveur> <vrai_nom>
--> Affichage d'information sur le serveur et ses règles
JOIN #<canal>
Vous êtes maintenant connecté sur le serveur et avez rejoint un canal
Pour de l'aide, taper HelpServ suivit du nom de la commande
Programmation d'un bot avec Python grâce à la bibliothèque IRClib
import irclib
#Informations de connexion
network = 'irc.freenode.net'
port = 6667
channel = '#irclib'
nick = 'PyTest'
name = 'Python Test'
#Creer un Objet IRC
irc = irclib.IRC()
#Créer un objet serveur, puis se connecter et rejoindre le canal
server = irc.server()
server.connect (network, port, nick, ircname = name)
server.join (channel)
#Sauter à une boucle infinie
irc.process_forever()
Programmation d'un bot avec perl
Voir aussi
Index des modes et commandes
À noter que les modes sont sensibles à la casse.
Modes de salon
Les salons peuvent avoir différents modes (ou aucun). Ces modes sont des propriétés du salon. Voilà tous les modes que l'on peut appliquer sur un salon, via la commande /mode #channel +/-[mode] :
•.c = Bloque les messages contenant des codes couleurs mIRC, ne les envoie pas. [o]
•.f <paramsflood> = Protection contre le Flood [o]
•.i = Un utilisateur doit être invité pour rejoindre le salon [h]
•.j <joins:sec> = Limite le nombre de joins par utilisateur à 'joins' par 'sec' secondes [o]
•.k <clé> = Les utilisateurs doivent spécifier une <clé> (un mot de passe) pour joindre le salon. Ils devront écrire /join #nomdusalon motdepasse pour joindre le salon. [h]
•.l <nombre maximum d'utilisateurs> = Le salon peut accueillir au maximum <nombre> utilisateurs [o]
•.m = Salon modéré (seuls les utilisateurs +vhoaq peuvent parler) [h]
•.n = Les utilisateurs hors du salon ne peuvent envoyer de PRIVMSGs au salon [h]
•.p = Salon privé (pareil que salon en +s) [o]
•.r = Le salon est enregistré (applicable par les services uniquement)
•.s = Salon secret (pareil que salon en +p) [o]
•.t = Seuls les +hoaq peuvent changer le topic [h]
•.z = Seuls les clients avec une connexion sécurisés (SSL) peuvent rejoindre [o]
•.A = Salon réservé aux Server/Net Admin (applicable par les Admins)
•.C = CTCPs non autorisés sur le salon [o]
•.G = Remplace tous les 'Bad words' dans les messages par <censored> [o]
•.M = Doit utiliser un pseudo enregistré (+r), ou avoir un access voice pour parler [o]
•.K = /KNOCK n'est pas autorisé [o]
•.L <salon2> = Salon lié (Si le +l est atteint, l'utilisateur suivant sera forcé de rejoindre le chan <salon2>) [q]
•.N = Aucun changement de pseudo n'est autorisé sur le salon [o]
•.O = Salon réservé aux IRC Operator (applicable par les IRCops)
•.Q = Aucun kick n'est autorisé [o]
•.R = Seuls les utilisateurs enregistrés (+r), dont leur pseudo est enregistré, peuvent rejoindre le salon [o]
•.S = Filtre les codes couleurs mIRC [o]
•.T = Aucune NOTICE n'est autorisée sur le salon [o]
•.V = /INVITE n'est pas autorisée [o]
•.u = Mode auditorium (/names et /who #salon montrent uniquement les opérateurs du salon) [q]
•.
[h] signifie que les half-ops et ops peuvent mettre ce mode et [o] signifie que les ops seulement peuvent mettre ce mode.
Modes d'utilisateurs
Voilà la liste des UModes (= modes utilisateurs) applicable grâce à la commande /mode <utilisateur> +/-[mode] :
•.o = Global IRC Operator
•.O = Local IRC Operator
•.a = Est un Services Administrator
•.A = Est un Server Administrator
•.N = Est un Network Administrator
•.C = Est un Co Administrator
•.d = Fait en sorte que vous ne receviez plus les PRIVMSGs des salons (Sourd)
•.g = Peut lire et envoyer des notices des GlobOps, et LocOps
•.h = Disponible pour aider (Help Operator)
•.i = Invisible (Non montrés dans les recherchers /WHO)
•.p = Cache tous les salons dans /whois et /who
•.q = Seuls les U:lines peuvent vous kicker (Services Admins/Net Admins uniquement)
•.r = Identifie le pseudo comme étant enregistré (applicable uniquement par les services)
•.s = Peut recevoir les notices serveur
•.t = Dit que vous utilisez un /VHOST
•.v = Reçoit les notices de rejet de DCC infectés
•.w = Peut recevoir les Wallops
•.x = Donne à l'utilisateur Hostname crypté (sécurité)
•.z = Marque le client comme utilisant une connexion sécurisé (SSL)
•.B = Vous marque comme étant un Bot
•.G = Remplace tous les 'Bad words' dans vos messages par <censored>
•.H = Cache le status d'IRCop dans les /WHO et /WHOIS. (IRC Operators uniquement)
•.R = Vous permet de ne recevoir des PRIVMSGs/NOTICEs que d'utilisateurs enregistrés (+r)
•.S = Pour les services uniquement. (Les protège)
•.T = Vous empêche de recevoir des CTCPs
•.V = Indique que le client est un utilisateur de WebTV
•.W = Vous permet de voir lorsqu'un utilisateur fait un /WHOIS sur vous (IRC Operators uniquement)