/* * example.conf par Daniel Hawton AKA Osiris (osiris@unrealircd.org). * Ancien traducteur français : babass * Tradution française : Alef Burzmali - http://www.burzmali.com * Dernière mise à jour : 2010-09-11 * $Id$ * * Fonctionne pour Unreal3.2 et supérieur * * Okay les gars, voici la nouvelle version de l'example.conf. Cela ressemble plus à du C++. * Peu importe, il est temps de se lancer. Il est difficile de l'attaquer pour la première fois, mais * avec un peu d'expérience et de lecture vous comprendrez. * * Copiez juste ce fichier dans votre répertoire unrealircd principal et appellez le 'unrealircd.conf'. * * NOTE: Toutes les lignes, exceptées les ligne d'ouvertures { , se terminent par un ;, en particulier * celles de fermeture }. * L'IRCd ignorera les lignes commentées. * * LISEZ S'IL VOUS PLAIT doc/unreal32docs.fr.html ! * La version en ligne est aussi disponible à : http://www.unrealircd.com/files/docs/unreal32docs.fr.html * Elle contient beaucoup d'informations à propos du fichier de configuration : fournit des informations * à propos de chaque bloc, variable, etc.. * Si vous essayez de modifier ce fichier sans avoir bien lu la documentation, * vous êtes presque sûr de vous tromper. */ /* Type de commentaires */ #Commentaire type 1 (type Shell) // Commentaire type 2 (style C++) /* Commentaire type 3 (style C) */ # Toutes ces lignes sont ignorées par l'ircd. /* * UnrealIRCd supporte des modules et certains sont obligatoires. * Vous aurez besoin au moins du module commands et du module cloaking. * * La ligne suivante charge tous les modules sur les systèmes UNIX. */ loadmodule "src/modules/*.so"; /* Cette ligne charge tous les modules pour Windows, commentez la ligne du dessus */ loadmodule "modules/*.dll"; /* * Vous pouvez également inclure d'autres fichiers de configuration. * doc/help.fr.conf contient tout le texte de /helpop en français. * help.conf contient la version anglaise. * Les fichiers badwords.*.conf contiennent tous les badwords pour le mode +G... * spamfilter.conf contient quelques bonnes règles pour les trojans courrants. * Vous voudrez probablement les inclure: */ include "doc/help.fr.conf"; include "badwords.channel.conf"; include "badwords.message.conf"; include "badwords.quit.conf"; include "spamfilter.conf"; /* * ACTUEL : me {} * ANCIEN : M:Line * me {} definit le nom, la description et l'identifiant numérique pour ce serveur. * La syntaxe est la suivante : * me { * name "nom.du.serveur"; * info "Description du Serveur"; * numeric (numeric* serveur); * }; * En cas de link, cet identifiant ne peut être utilisé pour aucun autre serveur du réseau. */ me { name "irc.foonet.com"; info "FooNet Server"; numeric 1; }; /* * ACTUEL : admin {} * ANCIEN : A:Line * Admin donne des informations sur les server admins. * Vous pouvez mettre autant de lignes que vous voulez après admin {. * La syntaxe est la suivante : * admin { * "première ligne"; * "deuxième ligne"; * [etc] * }; */ admin { "Bob Smith"; "bob"; "widely@used.name"; }; /* * ACTUEL : class {} * ANCIEN : Y:line (l'ancien était déroutant) * Définit les réglages pour les classes. Une classe est un groupe de réglages pour * des connexions. Par exemple, pour les connexions serveurs, au lieu de passer par une classe * client, vous utilisez directement une classe serveur. La syntaxe est la suivante : * class (nom de la classe) * { * pingfreq (fréquence des pings utilisateurs/serveurs en secondes); * maxclients (combien de connexions pour cette classe); * sendq (file d'attente maximum pour l'envoie depuis une connexion); * recvq (file d'attente maximum pour la réception depuis une connexion [contrôle du flood]); * }; */ class clients { pingfreq 90; maxclients 500; sendq 100000; recvq 8000; }; class servers { pingfreq 90; maxclients 10; /* Nombre maximum de serveurs pouvant être reliés en même temps */ sendq 1000000; connfreq 100; /* Combien de secondes entre chaque tentatives de connexions */ }; /* * ACTUEL : allow {} * ANCIEN : I:Line * Définit les autorisations de connexions... * Principalement pour les clients, cela leur permet de se connecter, vous pouvez donc avoir un certain * contrôle et/ou mettre un mot de passe. * La syntaxe est la suivante : * allow { * ip (ip mask à autoriser); * hostname (host mask); * class (classe à laquelle les renvoyer [voir class {}]); * password "(mot de passe)"; (optionnel) * maxperip (nombre de connexions par ip); (optionnel) * }; */ allow { ip *@*; hostname *@*; class clients; maxperip 5; }; /* connexion autorisée avec mot de passe */ allow { ip *@255.255.255.255; hostname *@*.passworded.ugly.people; class clients; password "f00Ness"; maxperip 1; }; /* * ACTUEL : oper {} * ANCIEN : O:Line * Définit un IRC Operateur * Les IRC operateurs sont là pour préserver la qualité du serveur mais aussi d'en assurer * la maintenance et sa connexion au réseau. * La syntaxe est la suivante : * oper (login) { * class (classe à laquelle les associer, si différent du bloc allow, les déplace vers une nouvelle classe); * from { * userhost (ident@host); * userhost (ident@host); * }; * flags * { * (flags ici*); * }; * OU * flags "ancien type de flags, comme OAaRD"; * }; */ /* Pour avoir la liste des flags oper, voir doc/unreal32docs.fr.html#operblock * [lecture HAUTEMENT recommendée] */ oper bobsmith { class clients; from { userhost bob@smithco.com; }; password "f00"; flags { netadmin; can_zline; can_gzline; can_gkline; }; }; /* * ACTUEL : listen {} * ANCIEN : P:Line * Définit un port à rattacher à l'ircd, pour autoriser * des utilisateurs/serveurs à se connecter au serveur. * La syntaxe est la suivante : * listen (ip):(port) * { * options { * (options ici); * }; * }; * ou pour une écoute * indifférente : listen (ip):(port); * * NOTICE : pour les ips ipv6 (3ffe:b80:2:51d::2 etc), utilisez listen [ip]:port; * * Cela fonctionne également. */ /* Options de listen: ANCIEN | ACTUEL S serversonly C clientsonly J java s ssl * standard N/A defer-accept */ /* NOTE SUR LES PORTS SSL: les ports SSL sont plutôt non standardisés, * A côté des nombreux ports high-SSL, certaines personnes disent que vous devez * l'utiliser sur le port 994 car c'est le port SSL officiel.. mais cela * requière d'être root! D'un autre coté, le port 194 est le port irc officiel et * avez vous déjà vu un ircd fonctionner sur celui-ci ? * Donc, notre suggestion est d'utiliser le port 6697 pour le SSL, ceci est utilisé par * beaucoup de réseaux et est reconnu par exemple par StunTour. * Vous êtes libre d'ouvrir autant de ports SSL que vous le désirez mais * en utilisant (au moins) 6697 vous aidez le monde à se standardiser un peu ;). */ listen *:6697 { options { ssl; clientsonly; defer-accept; }; }; listen *:8067; listen *:6667 { options { defer-accept; } }; /* NOTE: Si vous êtes sur un shell avec de multiples IP vous êtes * susceptibles d'avoir l'erreur 'Address already in use' (adresse déjà utilisée) * dans vos logs et l'ircd refusera de démarer. * Cela signifie que vous devrez utiliser une IP spécifique au lieu de '*', * Donc par exemple : * listen 1.2.3.4:6667; * Evidemment, remplacez l'IP par celle qui vous a été assignée. * * De plus : l'option defer-accept ajoutée dans Unreal 3.4 utilise un filtre * au niveau du kernel pour décharger le traitement des connexions * de l'IRCd, ce qui peut fournir plus de résilience contre les * TCP synfloods. Cependant, cette option fonctionne uniquement * sous Linux et FreeBSD. */ /* * ACTUEL : link {} * ANCIEN : C/N:Lines * Définit un accord pour la connexion d'un serveur. * NOTE : CHACUN DES SERVEURS NECESSITE UN PARAMETRE LINK {} POUR SE CONNECTER CORRECTEMENT ! * La syntaxe est la suivante : * link (nom du serveur) * { * username (username, * fonctionne aussi); * hostname (ip/hostmask); * bind-ip (IP à laquelle se relier lors de la connexion, ou *); * port (port auquel se connecter, si il y en a un); * hub (Si c'est un a hub, * fonctionne, ou les servermasks qu'il doit porter); * [ou leaf *;] * password-connect "(mot de passe à envoyer)"; * password-receive "(mot de passe que l'on doit recevoir)"; * class (classe à affecter aux serveurs); * options { * (options ici*); * }; * // Si vous utilisez le SSL, vous pouvez choisir quel algorithme de hash utiliser dans le mode SSL * // Utilisez la commande "openssl ciphers" pour obtenir la liste des algorithmes disponibles, séparez les par des ":" * * ciphers "DES-CBC3-MD5"; * * }; */ /* options: ANCIEN | ACTUEL S ssl Z zip N/A autoconnect N/A quarantine N/A nodnscache */ link hub.mynet.com { username *; hostname 1.2.3.4; bind-ip *; port 7029; hub *; password-connect "LiNk"; password-receive "LiNk"; class servers; options { /* Note : Vous ne devriez pas utiliser autoconnect lorsque vous linkez des services */ autoconnect; ssl; zip; }; }; /* * * ACTUEL : ulines {} * ANCIEN : U:Line * Les U-lines donnent aux serveurs plus de pouvoir/commandes, ceci doit UNIQUEMENT être appliqué * aux serveurs de services/stats et JAMAIS pour des serveurs UnrealIRCd normaux ! * La syntaxe est la suivante : * ulines { * (serveur auquel appliquer la uline); * (serveur auquel appliquer la uline); * [etc] * }; */ ulines { services.roxnet.org; stats.roxnet.org; }; /* * ACTUEL : drpass {} * ANCIEN : X:Line * Défini les mots de passe pour les commandes /die et /restart. * La syntaxe est la suivante : * drpass { * restart "(mot de passe pour relancer)"; * die "(mot de passe pour arrêter)"; * }; */ drpass { restart "I-love-to-restart"; die "die-you-stupid"; }; /* * ACTUEL : log {} * ANCIEN : N/A * Dit à l'ircd où et quoi loguer. Vous pouvez en avoir * autant que vous le souhaitez. * * FLAGS : errors, kills, tkl, connects, server-connects, oper * * Syntaxe : * log "fichier de log" * { * flags * { * flag; * flag; * etc.. * }; * }; */ log "ircd.log" { /* Efface le fichier de log et commence un nouveau lorsqu'il dépasse 2MB, retirez ceci pour toujour utiliser le même fichier de log */ maxsize 2097152; flags { oper; connects; server-connects; kills; errors; sadmin-commands; chg-commands; oper-override; spamfilter; }; }; /* * ACTUEL : alias {} * ANCIEN : N/A * Ceci vous permet de définir des alias pour les commandes telles que /nickserv, /chanserv etc * FLAGS: services, stats, normal * * Syntaxe : * alias "nom" { * target "pointe vers"; * type typedalias; * }; * * [NOTE : Vous pouvez également inclure un fichier d'alias prédéfinis ici, voir * doc/unreal32docs.fr.html section 2.9] */ // Ceci fait pointer la commande /nickserv vers l'utilisateur NickServ qui est connecté au serveur set::services-server /*alias NickServ { target "NickServ"; type services; };*/ // Si vous voulez que la commande pointe vers le même nom que la commande, vous pouvez ignorez l'entré du nom //alias ChanServ { type services; }; // Faire pointer la commande /statserv vers l'utilisateur StatServ sur le serveur set::stats-name //alias StatServ { type stats; }; // Faire pointer la commande /superbot vers l'utilisateur SuperBot //alias SuperBot { type normal; }; /* Alias Standards */ alias NickServ { type services; }; alias ChanServ { type services; }; alias OperServ { type services; }; alias HelpServ { type services; }; alias StatServ { type stats; }; /* * ACTUEL : alias {} * ANCIEN : N/A * Ceci vous permet de définir des alias pour les commandes telles que /identify, /services, etc * * Syntaxe : * alias "nom" { * format "format string" { * target "pointer vers"; * type typedalias; * parameters "paramètres à envoyer"; * }; * type command; * }; */ /* Ceci est expliqué séparément car même si elle a le même nom que la directive précédente, elle est très * différente dans sa syntaxe, bien qu'elle a une fonction similaire et dépend des alias standards pour * fonctionner. */ /* alias "identify" { format "^#" { target "chanserv"; type services; parameters "IDENTIFY %1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "IDENTIFY %1-"; }; type command; }; */ /* La directive alias::format est une expression régulière. Le premier format correspond à la commande * /identify command lorsque le premier caractère est un #. Cela renvoit donc à l'alias chanserv avec * les paramètres IDENTIFY %1-. Le second format correspond à la commande /identify lorsque le premier * caractère n'est pas un #. Cela envoie alors la commande à l'alias nickserv avec les paramètres * IDENTIFY %1-. */ /* L'alias::format::parameters est similaire aux languages de programmation. %N (où N est un nombre) * représente un paramètre envoyé à la commande (dans ce cas /identify). Si vous spécifiez %N- cela * signifie que tous les paramètres depuis N jusqu'au dernier paramètre dans la chaîne de caractères. * Vous pouvez également spécifier %n qui est remplacé par le pseudo de l'utilisateur. */ /* Alias Standards */ alias "services" { format "^#" { target "chanserv"; type services; parameters "%1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "%1-"; }; type command; }; alias "identify" { format "^#" { target "chanserv"; type services; parameters "IDENTIFY %1-"; }; format "^[^#]" { target "nickserv"; type services; parameters "IDENTIFY %1-"; }; type command; }; /* Ceci est un exemple de véritable alias de commande*/ /* Ceci renvoye /GLINEBOT à /GLINE 2d etc... */ alias "glinebot" { format ".+" { command "gline"; type real; parameters "%1 2d Les bots ne sont pas permis sur ce serveur, lisez s'il-vous-plait la faq sur http://www.example.com/faq/123"; }; type command; }; /* * ACTUEL : files {} * ANCIEN : include/config.h * * Ce bloc écrase les chemins utilisés par défaut par l'IRCd pour charger des choses * comme le MOTD, enregistrer son PID ou écrire ou lire son fichier de sauvegarde (tunefile). * L'existence de ce bloc permet à une installation de UnrealIRCd de supporter * plusieurs instances tournant simultanément lorsque combinée à l'option de ligne * de commande -c * * Comme d'habitude, les chemins relatifs sont interprétés à partir du répertoire * dans lequel UnrealIRCd trouverait unrealircd.conf si -c N'est PAS spécifiée * sur la ligne de commande. */ files { /* Le message du jour (Message Of The Day) affiché aux utilisateurs se connectant : */ /* motd ircd.motd; */ /* * Un MOTD court. Si ce fichier existe, il sera affiché aux * utilisateurs à la place du MOTD. Ceux-ci peuvent toujours voir * le MOTD complet en utilisant la commande /MOTD */ /* shortmotd ircd.smotd; */ /* Affiché lorsqu'un opérateur utilise /OPER */ /* opermotd oper.motd; */ /* MOTD des services. */ /* svsmotd ircd.svsmotd; */ /* MOTD des bots */ /* botmotd bot.motd; */ /* Affiché par la commande /RULES */ /* rules ircd.rules; */ /* * Fichier dans lequel l'IRCd sauvegarde et charge quelques valeurs qui devraient * être conservées malgré les redémarrages du serveur. Doit pointer vers un fichier * existant que l'IRCd peut modifier ou vers un fichier dans un dossier dans * lequel l'IRCd peut créer des fichiers. */ /* tunefile ircd.tune; */ /* Fichier dans lequel l'IRCd stocke son pid. L'IRCd doit pouvoir le modifier. */ /* pidfile ircd.pid; */ }; /* * ACTUEL : tld {} * ANCIEN : T:Line * Ceci applique un MOTD et des fichiers de règles différents * en fonction de l'hostmask des clients. * La syntaxe est la suivante : * tld { * mask (ident@host); * motd "(motd file)"; * rules "(rules file)"; * }; */ tld { mask *@*.fr; motd "ircd.motd.fr"; rules "ircd.rules.fr"; }; /* Note : vous pouvez juste effacer le bloc d'exemple ci-dessus, * auquel cas les fichiers motd/règles par défaut (ircd.motd, ircd.rules) * seront utilisés pour tout le monde. */ /* * ACTUEL : ban nick {} * ANCIEN : Q:Line * Bannit un pseudo, il ne peut donc être utilisé. * La syntaxe est la suivante : * ban nick { * mask "(pseudo à bannir)"; * reason "(raison)"; * }; */ ban nick { mask "*C*h*a*n*S*e*r*v*"; reason "Reservé aux Services"; }; /* * ACTUEL : ban ip {} * ANCIEN : Z:Line * Empêche une ip de se connecter au réseau. * Syntaxe : * ban ip { mask (ip/hostmask); reason "(raison)"; }; */ ban ip { mask 195.86.232.81; reason "Serveur délinké"; }; /* * ACTUEL : ban server {} * ANCIEN : Server Q:Line * Empêche un serveur de se connecter au réseau. * Si le serveur est linké à un serveur distant, le serveur local * sera déconnecté du réseau. * La syntaxe est la suivante : * ban server { * mask "(nom du serveur)"; * reason "(raison à donner)"; * }; */ ban server { mask eris.berkeley.edu; reason "Va-t-en d'ici."; }; /* * ACTUEL : ban user {} * ANCIEN : K:Line * Fait qu'un utilisateur avec un certain masque ne peut se connecter * à votre serveur. * Syntaxe : * ban user { mask (hostmask/ip); reason "(raison)"; }; */ ban user { mask *tirc@*.saturn.bbn.com; reason "Idiot"; }; /* * ACTUEL : ban realname {} * ANCIEN : n:Line * Ceci empêche un certain realname d'être utilisé. * Syntaxe : * ban realname { * mask "(realname)"; * reason "(raison)"; * }; */ ban realname { mask "Swat Team"; reason "mIRKFORCE"; }; ban realname { mask "sub7server"; reason "sub7"; }; /* * NOTE POUR TOUS LES BANS, ils peuvent être répetés pour ajouter des entrées ! * * ACTUEL : except ban {} * ANCIEN : E:Line * Fait que vous ne pouvez être banni. * Syntaxe : * except ban { mask (ident@host); }; * Répétez l'except ban {} autant de fois * que vous voulez pour différents hosts. */ except ban { /* ne bannit pas stskeeps */ mask *stskeeps@212.*; }; /* * ACTUEL : deny dcc {} * ANCIEN : dccdeny.conf * Utilisez ceci pour bloquer l'envoi de dcc ... * Utile pour bloquer les virus. * Syntaxe : * deny dcc * { * filename "fichier à bloquer (ex : *exe)"; * reason "raison"; * }; */ deny dcc { filename "*sub7*"; reason "Possible Sub7 Virus"; }; /* * ACTUEL : deny channel {} * ANCIEN : N/A (NEW) * Ceci empêche des salons d'être joints. * Syntaxe : * deny channel { * channel "(salon)"; * reason "raison"; * class "clients"; (optionnel) * }; */ deny channel { channel "*warez*"; reason "Warez is illegal"; class "clients"; }; /* * ACTUEL : allow channel {} * ANCIEN : chrestrict * Autorise un utilisateur à joindre un salon... * comme une exception au deny channel. * Syntaxe : * allow channel { * channel "nom du salon"; * class "clients"; (optionnel) * }; */ allow channel { channel "#WarezSucks"; class "clients"; }; /* * ACTUEL : vhost {} * ANCIEN : Vhost.conf file * Applique une ip factice aux non-opers, ou aux * opers trop flemmards pour utiliser /sethost :P * Syntaxe : * vhost { * vhost (vhost.com); * from { * userhost (ident@host à autoriser à utiliser); * }; * login (login); * password (mot de passe); * }; * ensuite pour utiliser ce vhost, tapez /vhost (login) (mot de passe) sur l'IRC */ vhost { vhost i.hate.microsefrs.com; from { userhost *@*.image.dk; }; login stskeeps; password moocowsrulemyworld; }; /* Vous pouvez utiliser d'autres fichiers de configuration */ /* include "klines.conf"; */ /* Configuration du réseau */ set { network-name "ROXnet"; default-server "irc.roxnet.org"; services-server "services.roxnet.org"; stats-server "stats.roxnet.org"; help-channel "#ROXnet"; hiddenhost-prefix "rox"; /* prefix-quit "no"; */ /* Les Cloak keys doivent être les mêmes sur tous les serveurs du réseau. * Ils sont utilisés pour générer des hosts masqués et doivent être gardés secrets. * Les clés doivent être 3 chaînes de 5-100 caractères melangés. * (10-20 caractères est parfait) et elles doivent être constituées de minuscules (a-z), * majuscules (A-Z) et chiffres (0-9) [voir le premier exemple de clé]. * Astuce : Sur *NIX, vous pouvez utiliser la commande './unreal gencloak' dans votre shell pour que * Unreal génère 3 chaînes aléatoires pour vous. */ cloak-keys { "aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW"; "et une autre"; "et un autre"; }; /* host à l'identification oper */ hosts { local "locop.roxnet.org"; global "ircop.roxnet.org"; coadmin "coadmin.roxnet.org"; admin "admin.roxnet.org"; servicesadmin "csops.roxnet.org"; netadmin "netadmin.roxnet.org"; host-on-oper-up "no"; }; }; /* Configuration spécifique d'un serveur */ set { kline-address "définir.cet.email"; modes-on-connect "+ixw"; modes-on-oper "+xwgs"; oper-auto-join "#opers"; options { hide-ulines; /* Vous pouvez enclencher la vérification des idents si vous voulez */ /* identd-check; */ show-connect-info; }; maxchannelsperuser 10; /* Durée maximum pendant laquelle un utilisateur doit rester connecté avant de pouvoir utiliser * un message de QUIT. * Ceci devrait aider à stoper le spam */ anti-spam-quit-message-time 10s; /* Applique le message de static-quit à tous les quits - cela signifie qu'aucun message de quit personalisé ne sera autorisé sur le serveur local */ /* static-quit "Client quit"; */ /* Vous pouvez également bloquer toutes les raisons de part en décommentant ceci et en disant * 'yes', ou spécifiez un autre texte (ex: "Bye bye!") pour qu'il soit toujours utilisé.. */ /* static-part yes; */ /* Vous permet de restreindre certaines stats aux opers, utilisez * pour toutes les stats, * enlevez le pour autoriser les utilisateurs à voir toutes les stats. Tapez '/stats' pour * une liste complète. * Certains admins pourront vouloir bloquer 'kGs' pour que les utilisateurs normaux ne puissent * lister les klines, glines et shuns. */ oper-only-stats "okfGsMRUEelLCXzdD"; /* Throttling: cet exemple applique une limite de 3 tentatives de connection en 60s (par host). */ throttle { connections 3; period 60s; }; /* Protection Anti flood */ anti-flood { nick-flood 3:60; /* 3 changements de pseudo en 60 secondes (la valeur par défaut) */ }; /* Filtre anti-spam */ spamfilter { ban-time 1d; /* durée par défaut d'un ban *line appliqué par le spamfilter */ ban-reason "Spam/Advertising"; /* raison par défaut */ virus-help-channel "#help"; /* salon à utiliser pour l'action 'viruschan' */ /* excepté "#help"; salon à exempter de filtrage */ }; }; /* * Problèmes ou besoin de plus d'aide ? * 1) http://www.unrealircd.com/files/docs/unreal32docs.fr.html * 2) http://www.vulnscan.org/UnrealIRCd/faq/ <- contient 80% de vos questions ! * 3) Si vous avez encore des problèmes vous pouvez aller sur irc.unrealircd.org #unreal-support, * notez que vous devez avoir LU LA DOCUMENTATION ET LA FAQ d'abord ! */