IRC sous Linux (Guide Pratique)

Frédéric L. W. Meunier

v0.45 Jour Mois, 200X

Revision History
Revision 0.45200X-MM-JJRevised by: fredlwm
Sixième révision.

Ce document a pour but de décrire les bases de l'IRC et des applications correspondantes pour Linux.


Table of Contents
1. Introduction
1.1. Objectifs
1.2. Divers
1.3. Traductions
2. A propos de l'IRC
3. Bref historique de l'IRC
4. Mode d'emploi de l'IRC pour débutant
4.1. Exécution du programme ircII
4.2. Commandes
4.3. Code de bon usage de l'IRC
5. Clients IRC en console
5.1. ircII
5.2. EPIC
5.3. BitchX
5.4. irssi
5.5. Autres clients IRC sous console
6. Clients IRC X Window
6.1. Zircon
6.2. KVIrc
6.3. X-Chat
6.4. QuIRC
7. Serveurs IRC
7.1. IRCD
7.2. IRCD-Hybrid
7.3. ircu
7.4. Bahamut
8. Les bots IRC
8.1. Eggdrop
8.2. EnergyMech
8.3. Supybot
9. Les Bouncers IRC (Proxy IRC)
9.1. bnc
9.2. muh
9.3. ezbounce
10. Installation
10.1. Les clients
10.2. Les serveurs
11. Mais qu'est-ce qui est déjà inclus dans ma distribution? (Linux sur x86)
11.1. Debian
11.2. Fedora (Red Hat)
11.3. Slackware
12. L'enfer et le paradis
12.1. Les dieux (les développeurs)
12.2. Les saints (les contributeurs)
12.3. Les anges (la remontée d'information)
12.4. Les démons
13. Historique des révisions

1. Introduction

Ce document est toujours en cours de réalisation et doit être considéré en tant que tel. Je ferai de mon mieux pour qu'il demeure exact et à jour.

Il y a des bibles que l'on ne saurait oublier; ce sont :

Ne manquez pas non plus de consulter les liens suivants :

http://www.irchelp.org/


1.1. Objectifs

Les objectifs de ce guide pratique sont entre autres de :

  • Etablir un lien entre les ressources importantes sur l'IRC;

  • Eviter les mauvaises utilisations les plus courantes de l'IRC en rédigeant un code de bon usage pour l'IRC;

  • Etablir une liste des clients, serveurs, bots et bouncers les plus répandus, avec les responsables de la maintenance, les #channels, une brève description, l'emplacement pour le téléchargement, la page d'accueil et des conseils;

  • Etablir une liste des outils IRC disponibles dans les dernières versions des plus grandes distributions.


1.2. Divers

La dernière version de ce document est disponible sur http://www.pervalidus.net/documentation/IRC-mini-HOWTO/

Le prochain brouillon en cours de rédaction est susceptible d'être trouvé sur http://www.pervalidus.net/documentation/IRC-mini-HOWTO/WIP/

Tous les brouillons sont archivés sur http://www.pervalidus.net/documentation/IRC-mini-HOWTO/old/

L'intégralité peut être mise en mirroir sur http://www2.pervalidus.net/documentation/IRC-mini-HOWTO/

Vous pouvez m'écrire (en anglais, français ou portuguais) si vous avez des suggestions à propos de ce guide pratique. Je sais qu'il est loin d'être fini, mais j'espère qu'il vous sera utile. Je vous demanderais juste d'éviter de me demander d'ajouter votre application, distribution ou site. Il y peu de chances que j'accepte, mais vous pouvez toujours essayer de me convaincre. Ne me demandez pas de support technique non plus. Je n'ai pas le temps d'aider tout le monde.

Au passage, quelqu'un désirant travailler sur le protocole et les parties serveur serait le bienvenu.

Frédéric L. W. Meunier - http://www.pervalidus.net/contact.html


1.3. Traductions

Les traductions proposées auront un lien ici. Même si je sais écrire en portuguais brésilien et en français, je ne compte pas traduire ce document dans un futur proche, donc si ça vous intéresse de le faire, n'hésitez pas.


2. A propos de l'IRC

Extrait de la RFC2810:

Le protocole IRC (Internet Relay Chat) est utilisé pour les conférences basées sur du texte. Il est en développement depuis 1989, date à laquelle il a été implémenté pour la première fois pour permettre aux utilisateurs d'un forum BBS de dialoguer entre eux.

Ce protocole a été décrit officiellement pour la première fois en mai 1993 sur la RFC 1459 [IRC], et a continué d'évoluer.

Le protocole IRC est basé sur le modèle client-serveur, et convient très bien à une utilisation sur plusieurs machines de manière distribuée. Une installation typique consiste en un processus unique (le serveur) constituant un point de connexion central pour les clients (ou les autres serveurs), répondant à la demande de livraison/multiplexage de messages, ainsi que d'autres fonctions.

Ce modèle distribué, qui nécessite que chaque serveur possède une copie des informations sur l'état global, demeure le problème le plus flagrant de ce protocole car il constitue un handicap sérieux, limitant la taille maximale pouvant être atteinte par un réseau. Si les réseaux existant ont pu continuer à s'étendre à une vitesse incroyable, c'est bien grâce aux fabricants de matériel qui nous fournissent des systèmes toujours plus puissants.


3. Bref historique de l'IRC

Le premier démon IRC a été écrit à l'été 1988 par Jarkko "WiZ" Oikarinen de l'Université d'Oulu en Finlande. Destiné à l'origine à remplacer Talk pour passer à un outil style BBS, l'IRC s'est répandu rapidement ; d'abord en Scandinavie, puis dans le reste du monde. En moins d'un an, plus de 40 serveurs étaient connectés ensemble.

A ce stade-là, il n'y avait qu'un seul réseau, et un nom n'était donc pas nécessaire : on disait simplement "IRC" ; mais au fur et à mesure que le réseau grandissait, des désaccords commençaient à apparaître. L'IRC était un moyen de communication assez chaotique, où les coupures de connexion, les pseudos en double et les prises des contrôle des channels étaient devenus chose courante. Il était donc inévitable qu'à un moment ou à un autre des utilisateurs se séparent du reste pour former leurs propres réseaux.

Une des premières grandes ruptures eu lieu en 1992, quand Wildthang créa le réseau Undernet. A l'origine destiné à être un réseau de test, Undernet s'est rapidement développé, acquérant la réputation de un réseau sympathique grâce à la mise en place de services de protection des utilisateurs et des channels.

Deux ans plus tard, Undernet s'est lui-même divisé, donnant naissance au nouveau réseau DALnet. Le fondateur de DALnet, Dalvenjah, porta le concept de services d'Undernet à un niveau supérieur avec la mise en place d'un support pour la réservation de pseudo, les G-lines (ban sur un réseau entier) et un tas d'autres fonctions.

Pendant ce temps sur IRCnet (c'est ainsi qu'était alors nommé le réseau IRC d'origine), les esprits s'échauffaient. IRCnet était opposé à l'idée de possession de pseudo ou de canal qu'Undernet et DALnet avaient mis en place, mais il était clair que quelque chose devait être fait à propos des incessantes prises de contrôle de channels qui se produisaient. Deux idées différentes furent proposées : une durée d'utilisation limitée pour le pseudo/canal, et l'horodatage [timestamping] (voir http://www.irc-help.org/ pour plus d'informations), mais le débat pour décider laquelle adopter fut houleux.

En juillet 1996, IRCnet se scinda, avec le départ de la plupart des serveurs nord-américains pour former EFnet, faisant d'IRCnet un réseau essentiellement européen.

Depuis lors, des centaines d'autres petits réseaux plus petits se sont formés, la plupart utilisant des versions modifiées de DALnet, EFnet, IRCnet ou bien l'ircd d'Undernet.


4. Mode d'emploi de l'IRC pour débutant

Le client IRC standard est l'ircII d'origine. Il se trouve dans la plupart des distributions Linux, et la plupart des autres clients IRC en mode texte (en particulier BitchX et EPIC) en sont dérivés.


4.1. Exécution du programme ircII

ircII est simple d'utilisation. Supposons que vous vouliez vous connecter à irc.freenode.net sous le pseudo "mini-HOWTO".

En ligne de commande, tapez :

$ irc mini-HOWTO irc.freenode.net

Vous pouvez également exporter des variables, de sorte que vous n'ayez pas à les utiliser en ligne de commande. Pour les utilisateurs bash et zsh :

$ export IRCNICK=mini-HOWTO IRCSERVER=irc.freenode.net

Pour les utilisateurs csh et tcsh :

$ setenv IRCNICK mini-HOWTO

$ setenv IRCSERVER irc.freenode.net

Ajoutez-les au profil de votre shell (par exemple ~/.bash_profile ou ~/.zprofile) quand vous avez terminé.

IRCNAME et IRCUSER sont également des variables courantes, servant respectivement à définir la partie ircname d'un /whois et le username tel qu'on peut le voir dans la première ligne 'mini-HOWTO is ~username@hostname (ircname)'. Gardez à l'esprit que IRCUSER ne marchera pas si vous exécutez un démon ident (par défaut sur la plupart des distributions). Si vous avez quand même besoin de changer votre username (ce qui n'est pas recommandé, et j'espère que vous n'utilisez pas IRC logué en tant que root!), installez oidentd depuis http://ojnk.sourceforge.net/ . Pour configurer, lisez la page de manuel de oidentd.conf . Pour finir, exécutez '/usr/local/sbin/oidentd -g nobody -u nobody'. Ajoutez cette commande à vos scripts de démarrage (par exemple /etc/rc.d/rc.local) quand vous avez terminé.

S'ils ne sont pas définis, IRCNICK, IRCUSER et IRCNAME seront récupérés depuis /etc/passwd .


4.2. Commandes

Utilisez /help pour avoir une liste de toutes les commandes disponibles (/help help est un bon point de départ). Remplacez nick par n'importe quel IRCNICK.

  • D'abord, /set NOVICE off

  • /nick IRC-mini-HOWTO transforme votre IRCNICK en IRC-mini-HOWTO

  • /set realname Guide Pratique d'IRC sous Linux transforme votre IRCNAME en Guide Pratique d'IRC sous Linux (pas de changement sur une même connection)

  • /j #mini-HOWTO permet de rejoindre le canal #mini-HOWTO

  • /j #unmaintained-HOWTO permet de rejoindre le canal#unmaintained-HOWTO

  • /j #mini-HOWTO change canal actif courant en #mini-HOWTO

  • /msg nick Salut. envoie un message privé à nick contenant Salut.

  • /notice nick (ou #mini-HOWTO) Salut. envoie une notification à nick (ou #mini-HOWTO) contenant Salut.

  • /query nick démarre une conversation privée avec nick. /query met fin à la conversation privée

  • /me uses Linux. envoie une action contenant IRC-mini-HOWTO loves Linux. au canal ou query (conversation privée) courants

  • /dcc chat nick démarre un chat avec nick. Utilisez /msg =nick (vous remarquerez le =) pour envoyer des messages sur le chat

  • /dcc send nick /etc/HOSTNAME envoie le fichier spécifié à nick

  • /dcc get nick reçoit le fichier envoyé par nick

  • /part vous fait quitter le canal actif courant

  • /part #unmaintained-HOWTO quitte le canal #unmaintained-HOWTO

  • /discon vous déconnecte du IRCSERVER courant

  • /server irc.oftc.net vous connecte à l'IRCSERVER irc.oftc.net

  • /quit Bye. vous fait quitter votre session IRC pour la raison Bye.

La plupart des commandes ci-dessus (dont celles utilisant des variables d'environnement) fonctionneront également avec d'autres clients en console.


4.3. Code de bon usage de l'IRC

ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION

  • N'utilisez jamais IRC quand vous êtes logués en tant que root ou en tant qu'utilisateur disposant de privilèges excessifs. Vous rencontreriez des problèmes tôt ou tard. Vous avez été prévenu. Il est fortement recommandé de créer un utilisateur uniquement pour l'utilisation d'IRC.

$ man adduser

Sur les channels Linux, vous ne devez pas :

  • Vous comporter comme un imbécile. Si vous voulez être respecté, commencez par respecter les autres.

  • Utiliser des couleurs (^C). La plupart des utilisateurs de Linux ne tolèrent pas ce genre de fantaisies, et ircII ne les prends pas vraiment en charge. Il en va de même pour l'ANSI.

  • Utiliser des lettres CAPITALES, des caractères gras (^B), inversés (^V), soulignés (^_) ou clignotant (^F), et le son de cloche (^G). Les 4 premiers sont faits pour mettre en valeur un mot, pas le texte entier. Les 2 derniers sont tout simplement agaçants.

  • Demander si vous pouvez poser une question. Posez-là donc, mais lisez d'abord toute la documentation disponible sur le sujet. Commencez par chercher sur /usr/share/doc/ (sur certains systèmes ça peut être /usr/doc/), sinon allez sur http://www.tldp.org/ ou http://www.ibiblio.org/pub/Linux/docs/ . Et ne répétez pas votre question sur-le-champ. Attendez au moins 10 minutes. Si vous ne recevez pas de réponse, c'est parce que personne ne la connait ou ne veut répondre. Respectez leur choix, ils ne sont pas à votre service. De plus, n'envoyez jamais de messages personnels en nombre. Cela est considéré comme du spam.


5. Clients IRC en console

5.1. ircII

Responsable de la maintenance :ircII project

Channel IRC : #ircII (canal officiel ?) sur EFNet http://www.efnet.org/?module=servers

Ecrit à l'origine par Michael Sandrof, ircII est installé dans la plupart des distributions Linux. Il utilise termcap et peu d'utilisateurs devraient le choisir, mais cela reste un standard. Mathusalem et autres gourous l'utiliseront volontiers. Les moins aventureux regretteront de l'avoir.

Vous trouverez la dernière version d'ircII sur ftp://ircii.warped.com/pub/ircII/ . La page d'accueil se trouve sur http://www.eterna.com.au/ircii/


5.2. EPIC

Responsable de la maintenance : EPIC Software Labs

Channel IRC : #EPIC sur EFNet

Basé sur ircII, EPIC (Enhanced Programmable ircII Client, client ircII programmable avancé) est destiné aux vrais créateurs de script et aux utilisateurs en quête de liberté. Quand vous le lancerez pour la première fois, vous vous aperceverez que vous devriez vraiment apprendre les bases du script.

Vous trouverez la dernière version d'EPIC sur http://prbh.org/?page=ftp . La page d'accueil se trouve sur http://www.epicsol.org/


5.3. BitchX

Responsable de la maintenance : Colten Edwards

Channel IRC : #BitchX sur EFNet

Etant à l'origine un script pour ircII, BitchX est un client populaire dont le but est de réduire le recours au scripting, en comprenant un large éventail de fonctionnalités intégrées au client-même (même les utilisateurs avancés ne pourraient pas se rappeler de toutes les fonctions). Beaucoup considèrent BitchX comme un bloatware [inflagiciel] (ce qui n'est pas forcément une mauvaise chose), mais il a beaucoup de succès chez les utilisateurs comme chez les opérateurs.

Vous trouverez la dernière version de BitchX sur http://www.bitchx.org/download.php . La page d'accueil se trouve sur http://www.bitchx.org/


5.4. irssi

Responsable de la maintenance : Timo Sirainen

Channel IRC : #irssi sur freenode - http://freenode.net/irc_servers.shtml et IRCnet - http://www.ircnet.org/

Timo publia yagIRC en 1997. C'était un client GUI (interface graphique) utilisant la boîte à outils GTK+. Il fût appelé pour le service militaire un an plus tard, et les nouveaux responsables de maintenance n'étaient pas à la hauteur. yagIRC disparut et il démarra irssi pour le remplacer. Celui-ci utilisait GTK+. Les versions GNOME et curses apparurent plus tard. A partir de la version 0.7.90, ce n'est qu'un client textuel modulaire. Les scripts Perl sont pris en charge.

Vous trouverez la dernière version d'irssi sur http://irssi.org/?page=download . La page d'accueil se trouve sur http://irssi.org/


6. Clients IRC X Window

6.1. Zircon

Responsable de la maintenance : Lindsay F. Marshall

Channel IRC : Aucun ?

Ecrit en Tcl/Tk, il utilise les communications réseau natives de Tcl.

Vous trouverez la dernière version de Zircon sur ftp://catless.ncl.ac.uk/pub/ . La page d'accueil se trouve sur http://catless.ncl.ac.uk/Programs/Zircon/


6.2. KVIrc

Responsable de la maintenance : Szymon Stefanek

Channel IRC : #KVIrc sur freenode

Egalement écrit à l'aide de la boîte à outils Qt, KVirc est un monstre. Il prend en charge le DCC Voice, le langage de script intégré et les plugins.

Vous trouverez la dernière version de KVIrc sur http://www.kvirc.net/?id=download . La page d'accueil se trouve sur http://www.kvirc.net/


6.3. X-Chat

Responsable de la maintenance : Peter Zelezny

Channel IRC : #Linux sur ChatJunkies - http://www.chatjunkies.org/servers.php

Il utilise GTK+ et accessoirement GNOME, et prend en charge les scripts Perl et Python.

Vous trouverez la dernière version de X-Chat sur http://xchat.org/download/ . La page d'accueil se trouve sur http://xchat.org/


6.4. QuIRC

Responsable de la maintenance : Patrick Earl

Channel IRC : #QuIRC sur DALnet - http://www.dal.net/servers/index.php3

Il utilise Tk et prend en charge les scripts Tcl.

Vous trouverez la dernière version de QuIRC sur sa page d'accueil http://quirc.org/


7. Serveurs IRC

7.1. IRCD

Responsable de la maintenance : les développeurs d'ircd

Channel IRC : #ircd sur IRCnet

C'est le démon IRC d'origine, utilisé principalement par IRCnet. Des versions récentes ont tenté d'améliorer la sécurité sur les channels grâce à la mise en place de types (par exemple !linux) et de modes de canal supplémentaires.

Vous trouverez la dernière version de IRCD sur ftp://ftp.irc.org/irc/server/. La page d'accueil se trouve sur http://www.irc.org/


7.2. IRCD-Hybrid

Responsable de la maintenance :

Channel IRC : Aucun ?

Utilisé essentiellement par EFNet. Les points forts d'Hybrid sont la rapidité et l'efficacité, dans la mesure où on n'y trouve pas un certain nombre des services proposés par d'autres réseaux. Pour se conformer à la philosophie d'EFnet selon laquelle les opérateurs ne devraient pas s'occuper de ce qui concerne les channels, Hybrid n'autorise pas les opérateurs à définir des modes sur les channels, ou à se joindre à des channels auxquels on leur a interdit l'accès. Ce n'est que récemment que Hybrid a offert la possibilité qu'un bot de service gère un canal sans opérateur.

Vous trouverez la dernière version de IRCD-Hybrid sur http://ftp1.sourceforge.net/ircd-hybrid/ . La page d'accueil se trouve sur http://www.ircd-hybrid.org/


7.3. ircu

Responsable de la maintenance : Undernet Coder Committee

Channel IRC : #ircu sur Undernet - http://www.undernet.org/servers.php

Il est essentiellement utilisé par Undernet. Après une série d'attaques DdoSde type "déni de service distribué" [DDoS] en 2001/2002, ircu offre aux utilisateurs et aux serveurs la possibilité de dissimuler leurs adresses. De plus, la plupart des commandes /stats ont été (malheureusement) supprimées d' Undernet.

Vous trouverez la dernière version d'ircu sur http://ftp1.sourceforge.net/undernet-ircu/ . La page d'accueil se trouve sur http://coder-com.undernet.org/


7.4. Bahamut

Responsable de la maintenance : DALnet Coding Team< /para>

Channel IRC : #Bahamut sur DALnet

Basé sur Dreamforge et Hybrid, Bahamut est le serveur DALnet. Parmi les fonctionnalités, on trouve l'enregistrement de canal et de pseudo, la prise en charge de pseudos contenant jusqu'à 15 (?) caractères, et un service de memo.

Vous trouverez la dernière version de Bahamut sur http://bahamut.dal.net/download.php . La page d'accueil se trouve sur http://bahamut.dal.net/


8. Les bots IRC

8.1. Eggdrop

Responsable de la maintenance :

Channel IRC : #eggdrop sur Undernet

Généralement considéré comme le bot IRC, Eggdrop offre une protection de canal robuste, et l'utilisation de scripts Tcl offre un niveau de personnalisation élevé.

Plusieurs eggdrops peuvent être reliés entre eux pour former un réseau de bots [botnet] pouvant s'étendre à plusieurs channels, voire à plusieurs réseaux. Sur les réseaux sans service d'enregistrement de canal, les eggdrops sont utilisés couramment sur quasiment tous les grands canaux.

Vous trouverez la dernière version d'eggdrop sur http://www.eggheads.org/downloads/ . La page d'accueil se trouve sur http://www.eggheads.org/


8.2. EnergyMech

Responsable de la maintenance : Proton

Channel IRC : Aucun

Les premières versions d'EnergyMech (ou emech, comme on l'appelle souvent) ont acquis la réputation d'être des sortes de bots codés par des gosses, en raison de son aptitude à lancer plusieurs bots à partir d'un processus unique (permettant ainsi à des utilisateurs assez indésirables de lancer sur le réseau des centaines de clones hébergés virtuellement à partir d'un compte shell). Emech ne mérite pas cette réputation, puisque c'est vraiment un bot de protection de canal plutôt bon, et les versions récentes d'Emech limitent cette capacité (à un maximum de 4 bots). C'est une alternative à Eggdrop qui a beaucoup de succès.

Vous trouverez la dernière version d'EnergyMech sur http://www.energymech.net/download.html . La page d'accueil se trouve sur http://www.energymech.net/


8.3. Supybot

Responsable de la maintenance : jemfinch

Channel IRC : #supybot sur freenode et OFTC

Il est généralement considéré comme un bot moderne avec une protection de canal robuste, et permet un haut niveau de personnalisation grâce aux plugins Python. Un Supybot peut s'étendre à plusieurs canaux, voire plusieurs réseaux.

Vous trouverez la dernière version de Supybot sur http://sourceforge.net/projects/supybot . La page d'accueil se trouve sur http://supybot.com/


9. Les Bouncers IRC (Proxy IRC)

9.1. bnc

Responsable de la maintenance : James Seter

Channel IRC : Aucun ?

bnc est le bouncer d'origine.

Vous trouverez la dernière version de bnc sur http://gotbnc.com/download.html . La page d'accueil se trouve sur http://gotbnc.com/


9.2. muh

Responsable de la maintenance : Sebastian Kienzl

Canal IRC : Aucun ?

muh est un outil de bouncing irc intelligent et polyvalent, et qui ira également sur IRC dès qu'il sera lancé, en protégeant ou en essayant de récupérer votre pseudo.

Vous trouverez la dernière version de muh sur http://ftp1.sourceforge.net/muh/ . La page d'accueil se trouve sur http://seb.riot.org/muh/


9.3. ezbounce

Responsable de la maintenance : Murat Deligönül

Canal IRC : Aucun ?

Les fonctions de base d'ezbounce comprennent la protection par mot de passe, l'administration à distance, la journalisation et l'écoute sur plusieurs ports.

Vous trouverez la dernière version de ezbounce sur sa page d'accueil http://druglord.freelsd.org/ezbounce/


10. Installation

10.1. Les clients

Les clients les plus répandus utilisent tous GNU Autoconf et GNU Automake et sont donc livrés avec un script de configuration. Lisez les instructions d'installation après avoir extrait les sources. Assurez-vous d'avoir les bibliothèques nécessaires à la compilation. La procédure correcte consiste à faire cd nom_du_répertoire_créé; ./configure --help; ./configure placez_vos_options_ici; make; make install> ~/sources_install.log 2>&1. Notez également que pour ircII, EPIC, et BitchX il est vraiment préférable d'éditer include/config.h selon vos besoins.


10.2. Les serveurs

Vous avez vraiment besoin d'aide pour installer un serveur?

~$ touch ircd.conf


11. Mais qu'est-ce qui est déjà inclus dans ma distribution? (Linux sur x86)

11.1. Debian

Canal IRC : #Debian sur freenode (irc.debian.org -> irc.freenode.net)

Debian - http://www.debian.org/ comprend trop d'outils IRC pour en faire une liste. Vous pouvez les trouver aux emplacements suivants :


12. L'enfer et le paradis

12.1. Les dieux (les développeurs)

  • Merci à tous les auteurs. Sans l'énorme travail qu'ils ont fourni bénévolement je ne l'aurais jamais écrit, et nous ne nous serions jamais plongé dans Linux ou IRC.


12.4. Les démons

  • Il faut empêcher Khaled Mardam-Bey de sévir :-)

  • "Si les idiots pouvaient voler, IRC serait un aéroport". Je ne sais pas qui a écrit ça, mais ça se comprend. Pour ceux d'entre vous qui utilisent IRC pour embêter le monde j'ai commandé un /kill.


13. Historique des révisions