J'ouïe dire que des programmeurs ont été réquisitionnés dans le but de reprendre le projet Gunther que j'avais initié il y a près d'un an.
Ce projet est écrit en C++ et n'utilise aucune librairie particulière (à part la STL).
* Il est modulaire, c'est à dire qu'il peut charger et décharger dynamiquement des modules. Une API a été mise en place pour permettre à ces modules de réagir à des évenements.
* Il est multi-réseau nativement.
* Les modules qui existent actuellement sont:
- Base, qui ne contient que quelques commandes de base, notamment l'authentification de l'admin,
- ChanServ, qui implémente un idée de Spouize permettant à quiconque de kicker n'importe qui par le biais d'un vote (regardez le code source pour en savoir plus),
- Quizz, qui gère le format de base de donnée des WQuizz, ainsi (et surtout) que le multiréseau,
- Multiserver, permettant au robot de servir de relay à travers des réseaux (robot plink).
Vous trouverez la page GNA du projet ici.
Il est possible de lire le code avec votre navigateur avec cette page.
Pour télécharger les sources via SVN, utilisez la commande suivante :
svn co svn://svn.gna.org/svn/gunther/trunk Gunther
Par la suite, les développeurs intéressés passeront par [url=http://les.filles.saimal.fr/Anicée]Anicée[/url] (Cinaee) pour demander un accès en écriture sur le SVN.
L'état actuel du projet est le suivant :
* Il y a tout d'abord un gros crash très emmerdant, découvert malheureusement seulement après que j'ai abandonné le projet. Du coup je ne me suis pas plongé dans sa résolution. Le crash survient plus ou moins lorsqu'il se fait déconnecter d'un réseau. Ça n'est pas systématique, on a affaire à un bug vicieux, donc bonne chances messieurs.
* Contrairement à ce que j'ai indiqué plus haut, il n'est pas possible de décharger un module. Je crois même me rappeler que le rechargement de la conf via la commande rehash ne fonctionne pas.
* Le code de base est à mon avis correcte, mais n'hesitez pas à l'améliorer.
* Concernant les modules, il y a encore plein de choses à faire, et je pense qu'on peut rendre ça plus sexy que ça ne l'est.
* LibConfig.* est un petit bout de code que je réutilise sur chacun de mes projets, et permet, vous vous en étiez douté, de lire une configuration. Si jamais vous souhaitez le modifier, attendez-vous à ce que je backporte les modifications qui m'intéressent.
* Il manque un système de gestion des erreurs (fonction type syslog() et exceptions).
* Le code n'est pas forcément bien documenté, blamez moi. Si vous avez des questions, n'hésitez pas à me harceler à progs at headfucking.net.
Vous pouvez lire le fichier TODO pour voir ce qui était projeté de faire.
Enfin, et surtout le plus important, vous êtes invités à laisser ce projet sous licence GPL.
Romain