hbIRCS
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.