hbIRCS est un serveur IRC – Internet Relay Chat –  permettant à des utilisateurs de communiquer en groupe par le biais des canaux de discussions, de manière publique ou privée par dialogue entre deux utilisateurs. L’échange de fichiers est également permis. Chaque utilisateur doit disposer d’un client IRC tel que Xchat ou mIRC pour se connecter au serveur de discussions.

Caractéristiques :

  • respect des RFC 2810, 2811, 2812, 2813 du protocole IRC.
  • support optionnel des modes spéciaux (halfops).
  • support des connexions sécurisées par SSL/TLS.
  • support IPv4 & IPv6.
  • gestion réseau haute performance (pool de threads)
  • paramètres avancés de configuration réseau.

Le logiciel est placé sous licence open-source. Développé en langage Java, il peut être exécuté sur différents OS dont GNU/Linux, BSD (FreeBSD, OpenBSD, NetBSD), Mac OS X, Windows,  sous réserve de l’installation d’une JVM 6 ou supérieure.

Captures d’écran

Développement

Le projet est disponible sous github : https://github.com/bhuisgen/hbircs.

Pour cloner le dépôt :

$ git clone git://github.com/bhuisgen/hbircs.git

La documentation en ligne est accessible ici.

Execution

$ sh start.sh

 

hbIRCS version 0.2.0 (DEV)
Copyright (C) 2005,2009 Boris HUISGEN

This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

May 1, 2012 1:12:14 AM fr.hbis.ircs.Manager start
INFO: loading configuration ...
May 1, 2012 1:12:14 AM fr.hbis.ircs.Manager start
INFO: loading commands ...
May 1, 2012 1:12:14 AM fr.hbis.ircs.Manager start
INFO: creating network ...
May 1, 2012 1:12:15 AM fr.hbis.ircs.Manager start
INFO: creating local server ...
May 1, 2012 1:12:15 AM fr.hbis.ircs.Manager start
INFO: adding local server to network ...
May 1, 2012 1:12:15 AM fr.hbis.ircs.Manager start
INFO: starting listeners ...
May 1, 2012 1:12:15 AM fr.hbis.ircs.Manager start
INFO: starting tasks ...
May 1, 2012 1:12:15 AM fr.hbis.ircs.Manager start
INFO: server started

Configuration

La configuration du serveur s’effectue dans le fichier hbircs.conf présent à la racine.

La syntaxe du fichier est de type mot-clef/valeur. Les lignes débutant par le caractère # sont des commentaires. Les options peuvent être regroupées au sein de directives et sous-directives, chacune étant caractérisée par une balise ouvrante et une balise fermante du même nom.

Options principales

NetworkName "hbIRCS IRC Network"

Nom du réseau auquel appartient ce serveur IRC.

ServerToken 0

Identifiant du serveur IRC local. Il doit être unique au sein du réseau IRC.

ServerName irc.my.domain

Nom du serveur IRC local.

ServerInfo "hbIRCS IRC Server"

Description informative du serveur IRC local.

ServerCharset UTF-8

Jeu de caractères utilisé pour l’encodage/décodage des messages du serveur IRC. Les clients IRC doivent utiliser le même jeu sous peine de recevoir des messages tronqués. Exemples : ISO-8859-1, ISO-8859-15, UTF-8.

AdminLocation1 "IRC dept."

Description administrative principale.

AdminLocation2 "IRC dept.n"

Description administrative secondaire.

AdminEmail

Adresse électronique de l’administrateur du serveur.

MOTD ./motd

Nom du fichier dont le contenu est utilisé comme message du jour.

INFO ./info

Nom du fichier dont le contenu est utilisé comme bannière d’information.

Opérateurs d’administration

Les opérateurs IRC sont des utilisateurs bénéficiant des privilèges d’administration du serveur tel que l’arrêt ou le redémarrage du serveur. L’utilisateur doit au préalable s’authentifier pour être reconnu en tant qu’opérateur IRC. L’authentification d’un opérateur s’effectue par mot de passe. Une vérification du masque de connexion est également possible.

Les accès opérateurs sont définis par la directive Operators, où chaque ligne définit un accès opérateur :


   test test *!*@*

Définit un unique opérateur nommé test dont le mot de passe est test. Aucune restriction n’est précisée au niveau du masque de connexion.

Listes de contrôle d’accès

Les listes de contrôles d’accès – ACL – permettent de limiter les adresses IP autorisée à se connecter au serveur IRC (connexion d’un client ou d’un serveur). Une ACL est défini par son nom et une ou plusieurs règles d’autorisation / refus. Une régle d’autorisation / refus peut contenir des caractères jokers tel que * ou ?. Les règles sont vérifiées par ordre de déclaration.

Les ACL sont définies au sein de la directive ACL :


   local_client allow 127.0.0.1
   local_client deny *

Définit l’ACL local_client dont la première règle autorisant l’adresse IP 127.0.0.1. Toute autre adresse IP est refusée par la seconde règle.

Ecouteurs réseau

Un écouteur réseau est le point d’entrée des connexions clients. Il se matérialise par l’écoute sur une interface et un port réseau local. Plusieurs écouteurs réseau peuvent être déclarés, sous réserve d’une interface / port d’écoute différent.

Par exemple :

<Listener>
   ListenAddress 127.0.0.1
   ListenPort 6667
   ListenBacklog 128
   MaxConnections 256
   ACL local_client
</Listener>

Des options avancées sont également disponibles pour permettre une gestion optimale des entrées/sorties réseaux.

ListenAddress 127.0.0.1

Adresse source d’écoute de l’écouteur réseau.

ListenPort 6667

Port d’écoute de l’écouteur réseau.

ListenBacklog 128

Taille de la file d’attente de connexions avant acceptation. Si cette file est pleine, toute nouvelle connexion est alors refusée par la pile TCP/IP.

MaxConnections 256

Nombre maximum de connexions autorisées par l’écouteur réseau.

ACL local_client

Liste de contrôle d’accès de l’écouteur réseau. Si l’adresse IP d’une connexion client ne valide pas cette ACL, la connexion est refusée par l’écouteur.