Lycanobot/Doc/Admin

De Wiki.sec.

Cette aide s'adresse aux utilisateurs expérimentés de Lycanobot, qui veulent l'installer dans un salon. Les prérequis sont de savoir jouer... regardez la doc pour les joueurs si ça n'est pas déjà fait.

Sommaire

Prérequis

Les bases

Je travaille sur GNU/Linux et la majorité de ce guide part du principe que vous utilisez également ce système. Notez cependant qu'il est également possible d'installer PERL sous Windows (via Strawberry Perl). Vous devez aussi connaître un peu la ligne de commande et vaguement XML, pour la configuration. Il vous faudra aussi connaître un minimum d'anglais car en dehors des messages dits sur IRC par le bot, il est tout en anglais.

Côté IRC, vous devez connaître les modes pricipaux des salons. Avant, Lycanobot nécessitait le mode salon +N, mais ce n'est plus le cas depuis la révision 406.

Pour fonctionner, Lycanobot nécessite Perl (vieilles version pas encore testées).

Les modules Perl

Lycanobot s'appuie sur plusieurs modules Perl pour fonctionner. Certains sont obligatoires, tandis que d'autres sont optionels et apportent des fonctionnalités supplémentaires s’ils sont trouvés par Lycanobot. Certains sont certainement déjà inclus dans votre distribution de Perl, mais d’autres ne le sont probablement pas. Si vous tentez de lancer Lycanobot alors qu’un des modules obligatoires n’est pas installé (ou pas trouvé), vous obtiendrez un message du genre Can't locate XML/Simple.pm in @INC… (dans le cas du module XML::Simple).

Installation

Il y a deux approches pour installer ces modules sous Linux. Soit en utilisant l'utilitaire cpan, soit en installant les paquetages de votre distribution correspondants. Utiliser les paquetages est conseillé car c’est plus facile. Cependant, si votre distribution ne propose pas un module que vous voulez installer (ou que vous êtes sous Windows), alors vous devrez vous rabbatre sur la méthode cpan pour l’installer (voir plus bas).

Modules Perl utilisés par Lycanobot
Module Perl Paquetage Debian ou Ubuntu Paquetage Archlinux Commentaire
IO::File, IO::Socket, IO::Socket::INET et IO::Select inclu dans « perl-base » inclu dans « perl » Modules obligatoires.
XML::Simple libxml-simple-perl perl-xml-simple Module obligatoire.
File::Path inclu dans « perl-modules » inclu dans « perl » Module obligatoire.
IO::Socket::SSL libio-socket-ssl-perl perl-io-socket-ssl Module optionel. Nécessaire si vous voulez que Lycanobot se connecte à IRC via SSL.
Encode inclu dans « perl » inclu dans « perl » Module optionel. Nécessaire si vous voulez que Lycanobot discute sur IRC avec un jeu de caractères autre que UTF-8 (par exemple ISO-8859-15).
Search::Tools::Transliterate non distribué non distribué Module optionel. Nécessaire si vous voulez que Lycanobot discute sur IRC avec un jeu de caractères autre que UTF-8 (par exemple ISO-8859-15), et ce tout en convertissant correctement les caractères non présents dans votre jeu de caractères. Par exemple le caratère UTF-8 « points de suspension » (« … ») sera converti en trois caractères « point » (« ... ») si votre jeu de caractères ne le contient pas.
Time::HiRes inclu dans le paquetage « perl » inclu dans le paquetage « perl » Module optionel. Nécessaire si vous voulez que Lycanobot calcule les durées et réagisse avec une précision plus fine que une seconde. Si ce module n’est pas présent, la précision sera de une seconde, et un message d’avertissement sera affiché au lancement de Lycanobot.
Digest::MD5 inclu dans le paquetage « perl » inclu dans le paquetage « perl » Module optionel. Permet d’optimiser l’écriture des fichiers de Lycanobot. Ils sont alors écrits uniquement si leur contenu a effectivement changé, ce qui permet d’économiser le disque.

À titre informatif, notez que Lycanobot utilise la librairie Net::IRC. Mais pour pouvoir utiliser certaines choses exotiques de l'IRC, il utilise sa propre version de cette librairie (un tout petit peu modifiée), et cette version est fournie avec Lycanobot. C'est pourquoi vous n'aurez pas besoin d'installer Net::IRC.

Aussi, Locale::Recode était nécessaire avant mais ce n'est plus le cas depuis la révision 396.

Avec cpan

Lancez cpan en root, puis tapez install Module::Perl pour installer un module. Example:

 $ sudo cpan
 cpan[1]> install XML::Simple

Si vous êtes sous Windows et que vous avez installé Strawberry Perl, le nom de l'utilitaire est ppm. L'utilisation est ensuite la même que cpan.

Tester l’installation d’un module

Pour tester si un module est actuellement installé sur votre système, tapez perl -MModule::Perl -e 1. Par exemple :

 perl -MXML::Simple -e 1

pour tester l’installation de XML::Simple.

Si cette commande ne fait rien, alors le module est bien installé. Si au contraire elle affiche un message du genre Can't locate XML/Simple.pm in @INC…, alors le module n’est pas installé ou pas trouvé.

Installation

Lycanobot est uniquement publié sur SVN. Vous avez néanmoins 2 façons de l'obtenir.

svn co

Directement par Subversion, en tapant :

svn co https://dotsec.fr/svn/lycanobot/trunk lycanobot

Snapshots journaliers

Télécharger le dernier snapshot journalier sur la page des snapshots.

Configuration

Créer un fichier par défaut

Tout d'abord, lancez Lycanobot une première fois:

 $ cd lycanobot/
 $ ./lycanobot.pl

Il ne trouvera pas de fichier de configuration, mais en créra un nouveau avec des valeurs par défauts et des commentaires pour vous aider. Ça sera ~/.lycanobot/config.xml. Si par hasard, vous n'aimez par qu'il utilise ce fichier, donnez en lui un autre avec l'option -c:

 $ ./lycanobot.pl -c /configuration/alternative/lycanobot.conf

Modifier la configuration

Sortez votre éditeur préféré, et éditez ce fameux fichier. Il est en XML, et abondemment commenté. Vous n'aurez probablement qu'à modifier certaines choses. Il est quand même judicieux de tout lire pour bien connaîtres toutes les possibilitées.

Les indispensables

Vous devez regarder et modifier ces paramètres:

  • L'élément <conn> qui définit le serveur IRC et les salons.
  • <identity> où est le nom du bot.
  • <admins> où vous devez définir qui sera administrateur du bot (probablement vous). L'utilisation de nicks enregistrés est préférable aux hostmasks si vous avez une IP dynamique.
  • <talk> qui précise la langue du bot, le jeu de caractères et le caractère pour lancer des commandes.

Les à ne pas rater

Il est conseillé d'au moins se pencher avec attention ces options, notamment vous voulez bien régler lycanobot vis-à-vis du serveur IRC :

  • <identification> qui définit comment Lycanobot identifie un joueur et qui sont ceux considérés comme ses clones.
  • <modes> pour mettre les modes spéciaux au bot et aux salons.
  • <rate> pour changer la vitesse de parlote du bot
  • <sendq> pour éviter que le bot ne se fasse kicker pour flood
  • <storing> pour régler l'aggressivité des écritures aux fichiers locaux

Les bien pratiques

Ces options permettent de régler certaines choses assez utiles:

  • <ignore> pour que le bot ignore certaines personnes (comme les autres bots)
  • <message> pour customiser les messages du bot en ajoutant des préfixes (utile pour les couleurs)
  • <werewolves> pour changer la proportion des loups garous
  • <hacks> pour utiliser des fonctions particulières (non-officielles) de l'IRC comme les services d'enregistrement de nick (souvent NickServ) et de salon (ChanServ), ou encore des commandes ésotériques telles que SAJOIN.

L'Idle time

Le problème

Une fonctionnalité d'IRC, l'idle time, permet de savoir depuis combien de temps quelqu'un n'a rien dit. Elle est obtenu à l'aide d'un simple /whois. Malheuresement, elle peut être utilisée à des fins malicieuses dans lycanobot. Lorsque c'est la nuit, personne n'est censé rien dire sur le salon de jour. Seuls les personnages qui ne sont pas des simples villageois (commes les loups-garous) parlent à certains moment. On peut donc, en faisant des /whois sur les joueurs deviner avec une chance relativement élevée s'il sont loups-garous, ou ont d'autres pouvoirs dans certains cas.

Évidemment, la méthode n'est pas fiable à 100%, mais marche assez bien. Il est plutôt rare que les joueur-euse-s discutent avec d'autres gens pendant les parties, même la nuit.

Les solutions

L'idle time étant une fonctionalité normalisée d'IRC, on la retrouve sur tous les serveurs. On peut donc difficilement agir de façon simple.

Module Inspircd

Un module pour Inspircd offrant le mode salon +U permet de cacher l'idle time des joueurs. Les sources de ce module sont fournies avec le bot, dans le répertoire hideidle/. Il y a 2 modules :

  • m_hideidlechan.cpp pour le mode salon
  • m_hideidle.cpp pour le mode utilisateur (usermode). Ce dernier a été fait car il est plus logique qu'un tel mode soit mis par et pour un utilisateur. Ça n'est cependant pas tout à fait adapté au problème.

Voici une page d'aide pour installer un module pour inspircd.

En route

Une fois Lycanobot dûment configuré, vous pouvez le lancer et observer. Il devrait se connecter aux salons de jour et de nuit et, selon votre configuration, demander d'être opérateur, mettre les modes de connection (<mode on="connect" ...), tenter de s'identifier, etc.

Dernières mises au point

Utilisation des services de nick (NickServ) et de chan (ChanServ)

Note: toutes ces commandes sont spécifiques à un type de service et données à titre d'example. Elles ne sont probablement pas les même pour vos services.

Si vous voulez utiliser les services, vous avez du déjà les spécifier via le tag <service> dans le fichier de configuration. Le bot connaît ainsi leur nick, et vous pouvez le faire parler à ces services via la commande talkserv. Vous voudrez probablement enregistrer le pseudo du bot en tapant quelque chose comme:

 /msg lycanobot !talkserv nick REGISTER mot_de_passe_introuvable vous@mailserv.net

N'hésitez pas à mettre un mot de passe vraimant introuvable (genre au moins un vingtaine de caractères et symboles aléatoires). Il sera dans la configuration donc vous n'aurez pas à vous en souvenir. Scrutez la console du bot pour vérifier les réponses des services. De la même façon, vous pouvez enregistrer le salon avec une commande du genre:

 /msg lycanobot !talkserv chan register #votre-salon

Cartes spéciales

Dernière mise au point: mettez vous d'accord sur les cartes spéciales à utiliser, et faites-en part au bot avec la commande setcards.

Tests

Il est toujours bon de faire un partie de test avant le vrai départ. Lancez une partie avec start, et vérifiez si tout est OK.

Recommandations

  • Gardez en tête que bot ne peut parler qu'à une personne à la fois. De plus, il possède un contrôle du débit de messages, à la fois pour pouvoir être lu sans qu'il n'aille trop vite, et aussi pour ne pas être kické pour cause de flood. Par conséquent, modérez vos commandes, car d'autres utilisateurs peuvent aussi lui parler en privé en même temps que vous, et réciproquement soyez patient si le bot ne répond pas immédiatement à vos requêtes.
  • Faites attention si vous relancez le bot : il quittera le salon de nuit en y laissant probablement le mode +i, et s'il y reste des joueurs, il ne pourra plus le rejoindre lorsqu'il se reconnectera. Si vous avez un service de type chanserv et qu'il est spécifié dans le fichier de configuration (das <hacks>, <chan ask_invite="yes">), le bot va alors demander au service de se faire inviter sur le salon de nuit et il le rejoindra. Sinon, il faudra que ces joueurs quittent le salon de nuit et que vous y invitiez le bot.
  • Ne mettez pas de temps d'attente maximal pour la phase de jour, pour laisser les débats fructifier, et laissez les administrateurs inciter au vote lorsqu'un débat s'éternise.

Que le jeu commence... ou pas

Voilà, tout est fin prêt pour commencer à jouer. S'il vous rencontrez quelconques difficultées (vous allez en recontrer, soyons réalistes ;), n'hésitez pas à me contacter.