# ChanServ

ChanServ, sur la plupart des réseaux IRC, est un service IRC qui gère les informations relatives aux salons, comme l'enregistrement et les listes d'accès.
Quand un salon est enregistré auprès de ChanServ, son propriétaire (ainsi que ceux à qui il a donné un accès) peut l'utiliser pour contrôler le salon par l'obtention d'un statut d'Opérateur. La plupart des services de salon autorisent également d'autres types de fonctions de gestion, comme le verrouillage du topic, des modes, et donne automatiquement le statut Opérateur aux utilisateurs qui figurent dans sa liste d'accès. Ils peuvent éventuellement fournir un service de ban automatique.
Il existe plusieurs implémentations de services IRC incluant ChanServ ; certains Services utilisent un autre nom, comme CS. Les commandes et les fonctions dépendent de l'implémentation choisie et du réseau qui l'accueille. La plupart des réseaux ont un chan comme #Aide ou #Help où vous pouvez demander de l'aide concernant le réseau et ses services.

## Fonctionnement
### Cas des services de type Anope

Premièrement, ChanServ fonctionne en conjonction avec NickServ (celui-ci gérant les utilisateurs). La mission première de ChanServ étant la régulation des canaux et leur protection, il est donc essentiel que le fondateur d'un canal (ou owner en anglais) soit un utilisateur au pseudonyme enregistré. Lorsque l'utilisateur enregistre un canal qu'il a créé (canal vide qu'il a rejoint), ChanServ va le marquer comme fondateur, ce qui aura pour effet de lui rendre tous ses privilèges à chaque fois qu'il rejoindra le canal, même si d'autres utilisateurs l'ont rejoint avant. De plus, il n'est plus possible pour les autres de devenir opérateur du canal, à moins que le fondateur ne donne des droits d'accès (soit par le biais des niveaux d'accès ou par le système des xOPs).
Par exemple, l'utilisateur User1 crée un canal en en rejoignant un qui n'existait pas encore. Il obtient automatiquement le statut d'opérateur du canal, car il en est le premier utilisateur. En revanche, s'il le quitte sans l'avoir enregistré, le canal disparaîtra totalement. Maintenant, si un autre utilisateur, User2 par exemple, a l'idée de créer un canal du même nom, il en deviendra l'opérateur, et si User1 rejoint le canal, il n'obtiendra pas son mode opérateur (+o).
Maintenant, considérons que User1 a enregistré son canal avec ChanServ. En plus du mode opérateur, il obtient le mode fondateur (+q). Il marque User1 comme le propriétaire légitime du canal. Ainsi, si User2 entre dans le canal même quand User1 n'y est pas (donc un canal vide et sans opérateur), User2 réactivera le canal, ChanServ vérifiera si User2 a des droits opérateurs et appliquera les modes appropriés pour protéger le canal d'une prise de contrôle (ou takeover) par l'utilisateur.
Généralement, un utilisateur fondateur qui rejoint son canal verra un message du type :
Par contre, si l'utilisateur n'est pas opérateur et qu'il réactive un canal enregistré en le rejoignant, ChanServ le déoppe sur le champ en indiquant dans la fenêtre de statut que le canal est enregistré et protégé :
Ceci résume la mission principale de ChanServ. Mais ses possibilités ne s'arrêtent pas là. Il est aussi capable de sauvegarder le topic (sujet), les modes, les bans, invites ... d'un canal pour que ces derniers puissent toujours être utilisés sans avoir à les reparamétrer si le canal vient à disparaitre temporairement à cause d'un netsplit ou pour n'importe quelle autre raison.
En plus de cette protection du canal, il existe des fonctions de verrouillage des modes et du canal lui-même. Certains modes ne peuvent être activés que par des IrcOps. Les commandes de verrouillage sont les suivantes :
* MLOCK ou Modes Lock : Elle permet de verrouiller des modes du canal pour empêcher leur activation ou leur désactivation, même par d'autres opérateurs désignés par le fondateur. C'est-à-dire que si un opérateur tente d'utiliser un mode maintenu actif ou inactif, ChanServ va immédiatement inverser la manœuvre effectuée par l'opérateur, empêchant ainsi le changement de mode. Il est possible de verrouiller plusieurs modes en une seule fois.
* Le mode Restreint (Restricted Channel) : Ce mode, bien qu'un peu brutal, est intéressant si l'on désire interdire tout accès au canal aux utilisateurs ne figurant pas sur les listes d'Auto-op, halfop etc. d'un canal. Si un utilisateur non autorisé tente de rejoindre le canal, ChanServ va procéder à un Kick suivit d'un Ban, ce qui a pour effet de bloquer l'utilisateur hors du canal. Ce mode est très efficace mais a le revers de bannir même un utilisateur autorisé si ce dernier a changé temporairement son pseudonyme (Nickname) et tente de rejoindre le canal. Dans ce cas, il suffit de reprendre le pseudonyme sous lequel on est enregistré et de contacter un opérateur du canal pour lever le Ban imposé par ChanServ. Ou bien, si l'on est soi-même opérateur ou halfop, il est possible de lever le Ban de l'extérieur du canal en utilisant la commande :

### Cas des services de type SRVX

Sur le pack de services SRVX, ChanServ est un peu différent. Il est en effet présent directement sur le salons qu'il a pour tâche de gérer, combinant ainsi les tâches de ChanServ et BotServ sous Anope.
ChanServ reste toujours dans les canaux qu'il gère, même s'il n'y a personne dedans, ce qui le distingue des robots BotServ. Ainsi, lorsque n'importe quel utilisateur ne disposant pas de droits rentre dans le canal, ChanServ ne lui donne pas le statut d'opérateur.
ChanServ travaille en conjonction avec AuthServ, qui est une alternative à NickServ. AuthServ se contente en effet de gérer des comptes et ne gère pas de protection de pseudo, contrairement à NickServ.
ChanServ fonctionne sur le principe d'une liste d'accès. Le fondateur du canal se voit attribuer l'accès de 500. Il est possible d'ajouter un utilisateur à la liste d'accès via la commande :
Le service permet aussi d'assurer une gestion puissante des bannissements, en proposant par exemple de bannir sur une certaine durée, ou définitivement. ChanServ propose aussi de voicer ou opper automatiquement les utilisateurs qui ont un certain niveau. Par exemple, les utilisateurs ayant un niveau supérieur ou égal à 100 seront automatiquement voicés dès leur entrée dans le canal, et les utilisateurs ayant un niveau supérieur ou égal à 300 seront quant à eux oppés automatiquement.
ChanServ dispose, en plus des fonctions de base, de nombre de fonctions utiles, incluant :
* Sauvegarde et verrouillage de topic.
* Autolimit (ajuste le mode +l pour éviter les massjoins).
* Sauvegarde et verrouillage des modes du canal.
* Refresh du topic toutes les X heures.
* Système de sondage/vote performant (nécessite un patch).
* Protection des utilisateurs contre les actions venant d'un utilisateur disposant d'un niveau plus faible.
En général, sur les systèmes de type SRVX, un utilisateur ne peut pas enregistrer lui-même un canal, l'enregistrement se faisant auprès d'une personne de l'équipe de support du réseau concerné.
Dans la plupart des cas, ChanServ, lors de l'enregistrement d'un canal, active sur celui-ci un mode spécifique : le mode +z. Ce mode, accessible seulement à ChanServ, permet, lors d'un NetSplit où ChanServ quitte le canal, que le canal ne soit pas effacé s'il ne restait personne dedans, et donc de ne pas opper quelqu'un qui essaierait de faire un takeover du canal.

### Les listes d'accès et le système xOP (Anope)

Il existe deux façons d'utiliser ChanServ pour attribuer des droits d'accès sur un canal IRC. Le fondateur peut utiliser soit une liste d'accès ou le système xOP, sous Anope (sous le. Le système xOP a le mérite d'être plus simple à utiliser que le système par liste d'accès, mais a le revers d'être un peu moins précis. Cependant, sur de petits réseaux, la précision des niveaux d'accès a moins d'importance que sur de gros réseaux. Ainsi, le fondateur peut, à sa convenance opter pour l'un ou l'autre des systèmes en usant de la commande :
Si le paramètre est sur ON, le système xOP sera utilisé en lieu et place de la liste d'accès, et les commandes suivantes seront disponibles :
Par contre, si le paramètre est sur OFF, la liste d'accès sera utilisée. Il faudra donc indiquer à ChanServ le niveau de l'utilisateur à qui l'on veut donner des privilèges sur le canal. Sur certains serveurs (dépendant du type des Services IRC), les niveaux vont de < 0 à 10 ou de < 0 à 100. Les équivalences en xOP les suivantes :
* 100 ou 10 = SOP : Opérateur avec accès au AKICK du canal et protection (modes +oa).
* 50 ou 5 = AOP : Opérateur automatique (mode +o).
* 40 ou 4 = HOP : Half-Op automatique (mode +h).
* 30 ou 3 = VOP : Voice automatique, pas de privilèges particuliers, mais peut parler si le canal est en mode modéré (+m).
* 0 : Aucun privilège ni restriction particulières.
* < 0 : L'utilisateur n'a pas la possibilité d'être oppé, même par un opérateur. Généralement utilisé pour les utilisateurs potentiellement dangereux pour la sécurité du canal.
Pour affecter ou retirer un niveau d'accès à un utilisateur, l'opérateur utilise les commandes suivantes :
Un opérateur ne peut pas donner de niveau d'accès supérieur à son propre niveau. Si l'opérateur a un niveau de 50, il ne pourra pas attribuer un niveau 51 à un utilisateur.