1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-25 06:56:39 +02:00
Files
unrealircd/doc/unreal32docs.fr.html
T
Thomas Fargeix 38888442fb French doc:
- Patch from FalconKirtaran to restrict /TSCTL OFFSET to can_tsctl permission (#2303) (r28f9e289d4df)
- Remove ziplinks support, patch from FalconKirtaran. (#4189) (r529b168ff8c1)
2013-05-18 01:51:59 +02:00

5246 lines
229 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnrealIRCd - 3.2 - Documentation officielle</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.block_section { font-size: 24; font-weight: bold; }
.block_name { font-size: 24; font-weight: bold; }
.block_required { color: red; font-weight: bold; }
.block_recommended { color: green; font-weight: bold; }
.block_optional { color: blue; font-weight: bold; }
.block_old { font-size: 14; }
.set { font-weight: bold; }
.desc { margin-left: 15px; }
.inline_pre { font-family: monospace; font-style: normal; background-color: #eeeeee;}
pre { font: "times new roman"; font-style: normal; background-color: #eeeeee;}
</style>
</head>
<!-- $Id$ -->
<body>
<a href="unreal32docs.html">English</a> |
<a href="unreal32docs.de.html">German</a> |
<a href="unreal32docs.hu.html">Hungarian</a> |
French |
<a href="unreal32docs.ru.html">Russian</a> |
<a href="unreal32docs.tr.html">Turkish</a> |
<a href="unreal32docs.es.html">Spanish</a>
<br><br>
<div style="text-align:center;">
<b><font size="7">UnrealIRCd</font></b><br>
<font size="4"><a href="http://www.unrealircd.com/">http://www.unrealircd.com</a></font><br>
<font size="4">Version: 3.2.10</font><br>
<b>Dernière mise à jour de la documentation:</b> 2012-10-16
</div>
<br>
<b>Développeur principal:</b> Syzop<br>
<b>Développeurs:</b> binki<br>
<b>Anciens développeurs et contributeurs:</b> Stskeeps, codemastr, Luke, aquanight,
WolfSage, McSkaf, Zogg, NiQuiL, assyrian, chasm, DrBin, llthangel,
Griever, nighthawk<br>
<b>Documentation:</b> CKnight^ (documentation initiale), Syzop (réécritures majeures), codemastr et beaucoup de contributeurs<br>
<b>Traduction française:</b> Alef Burzmali - <a href="http://www.burzmali.com">www.burzmali.com</a><br>
<b>Précédent traducteur:</b> babass - <a href="irc://irc.rs2i.net/UnrealIRCd">irc.rs2i.net</a><br>
<p>Pour lire ce document vous devez avoir un navigateur compatible. Les mises à jour de ce document sont disponibles ici :
<a href="http://www.vulnscan.org/UnrealIRCd/unreal32docs.fr.html">http://www.vulnscan.org/UnrealIRCd/unreal32docs.fr.html</a> ainsi que la FAQ <a href="http://www.vulnscan.org/UnrealIRCd/faq/">http://www.vulnscan.org/UnrealIRCd/faq/</a>.
</p>
<p>
<font size="+2"><b>INDEX / TABLE DES MATIERES</b></font><br>
1. <a href="#IntroductionNotes">Introduction &amp; Notes</a><br>
---1.1. <a href="#notesonolder">Notes sur la mise à jour et le mélange des versions 3.1.x -&gt; 3.2</a><br>
---1.2. <a href="#notesonupgrade">Notes sur la mise à jour entre versions 3.2</a><br>
2. <a href="#installation">Installation</a><br>
3. <a href="#features">Fonctionnalités</a><br>
-- 3.1. <a href="#feature_cloaking">Cloaking</a><br>
-- 3.2. <a href="#feature_modules">Modules</a><br>
-- 3.3. <a href="#feature_snomasks">Snomasks</a><br>
-- 3.4. <a href="#feature_aliases">Alias</a><br>
-- 3.5. <a href="#feature_helpop">Helpop</a><br>
-- 3.6. <a href="#feature_operaccesslevels">Niveau d'accès des opérateurs</a><br>
-- 3.7. <a href="#feature_opercmds">Commandes opérateurs</a><br>
-- 3.8. <a href="#feature_ssl">SSL</a><br>
-- 3.9. <a href="#feature_ipv6">IPv6</a><br>
-- 3.10. <a href="#feature_dyndns">Support des links avec DNS/IP dynamiques</a><br>
-- 3.11. <a href="#feature_antiflood">Fonctionnalités anti-flood</a><br>
-- 3.12. <a href="#feature_bantypes">Types de ban</a><br>
-- 3.13. <a href="#feature_spamfilter">Spamfilter</a><br>
-- 3.14. <a href="#feature_cidr">CIDR</a><br>
-- 3.15. <a href="#feature_nickchars">Caractères admis dans les pseudos</a><br>
-- 3.16. <a href="#feature_cgiirc">Support de CGI:IRC</a><br>
-- 3.17. <a href="#feature_timesync">Synchronisation de l'heure</a><br>
-- 3.18. <a href="#feature_authtypes">Types d'Authentification</a><br>
-- 3.19. <a href="#feature_other">Autres fonctionnalités</a><br>
4. <a href="#configuringyourunrealircdconf">Configurer votre fichier unrealircd.conf</a><br>
---4.1. <a href="#configurationfileexplained">Explication du fichier de configuration</a><br>
---4.2. <a href="#meblock">Me Block -=- (M:Line)</a><br>
---4.3. <a href="#adminblock">Admin Block -=- (A:Line)</a><br>
---4.4. <a href="#classblock">Class Block -=- (Y:Line)</a><br>
---4.5. <a href="#allowblock">Allow Block -=- (I:Line)</a><br>
---4.6. <a href="#listenblock">Listen Block -=- (P:Line)</a><br>
---4.7. <a href="#operblock">Oper Block -=- (O:Line)</a><br>
---4.8. <a href="#drpassblock">DRpass Block -=-(X:Line)</a><br>
---4.9. <a href="#includedirective">Directive Include</a><br>
---4.10. <a href="#loadmoduledirective">Directive Loadmodule</a><br>
---4.11. <a href="#logblock">Log Block</a><br>
---4.12. <a href="#tldblock">TLD Block -=- (T:Line)</a><br>
---4.13. <a href="#bannickblock">Ban Nick Block -=- (Q:Line)</a><br>
---4.14. <a href="#banuserblock">Ban User Block -=- (K:Line)</a><br>
---4.15. <a href="#banipblock">Ban IP Block -=- (Z:Line)</a><br>
---4.16. <a href="#banserverblock">Ban Server Block -=-(q:Line)</a><br>
---4.17. <a href="#banrealnameblock">Ban Realname Block -=- (n:Line)</a><br>
---4.18. <a href="#banversionblock">Ban Version Block</a><br>
---4.19. <a href="#banexceptionblock">Ban Exception Block -=- (E:Line)</a><br>
---4.20. <a href="#tklexceptionblock">TKL Exception Block</a><br>
---4.21. <a href="#throttleexceptionblock">Throttle Exception Block</a><br>
---4.22. <a href="#denydccblock">Deny DCC Block -=- (dccdeny.conf)</a><br>
---4.23. <a href="#denyversionblock">Deny Version Block -=- (V:Line)</a><br>
---4.24. <a href="#denylinkblock">Deny Link Block -=- (D:Line / d:Line)</a><br>
---4.25. <a href="#denychannelblock">Deny Channel Block -=- (chrestrict.conf)</a><br>
---4.26. <a href="#allowchannelblock">Allow Channel Block</a><br>
---4.27. <a href="#allowdccblock">Allow DCC Block</a><br>
---4.28. <a href="#vhostblock">Vhost Block -=- (vhost.conf)</a><br>
---4.29. <a href="#badwordblock">Badword Block -=- (badwords.conf)</a><br>
---4.30. <a href="#ulinesblock">Uline Block -=- (U:Line)</a><br>
---4.31. <a href="#linkblock">Link Block -=- (C/N/H:Lines)</a><br>
---4.32. <a href="#aliasblock">Alias Block</a><br>
---4.33. <a href="#helpblock">Help Block</a><br>
---4.34. <a href="#officialchannels">Official Channels Block</a><br>
---4.35. <a href="#spamfilter">Spamfilter Block</a><br>
---4.36. <a href="#cgiirc">Cgiirc Block</a><br>
---4.37. <a href="#setblock">Set Block</a><br>
---4.38. <a href="#filesblock">Files Block</a><br>
5. <a href="#addtlfiles">Fichiers additionnels</a><br>
6. <a href="#userchannelmodes">Modes utilisateurs &amp; salons</a><br>
7. <a href="#useropercommands">Commandes utilisateurs &amp; opérateurs</a><br>
8. <a href="#security">Conseils de sécurité/checklist</a><br>
---8.1. <a href="#secpasswords">Mots de passe</a><br>
---8.2. <a href="#secnonircd">Vulnérabilités non liées à l'Ircd</a><br>
---8.3. <a href="#secpermissions">Permissions et fichier de configuration</a><br>
---8.4. <a href="#secuser">Problèmes liés aux utilisateurs</a><br>
---8.5. <a href="#secsnif">SSL/SSH &amp; sniffing</a><br>
---8.6. <a href="#secDoS">Denial of Service attacks (DoS) (ou: comment protéger mon hub)</a><br>
---8.7. <a href="#secinformation">Conseils sur la divulgation d'informations</a><br>
---8.8. <a href="#secantiexploit">Protection contre les exploits</a><br>
---8.9. <a href="#secsummary">Conclusion</a><br>
9. <a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">Foire au questions (FAQ)</a><br>
10. <a href="#modules">Modules</a><br>
---10.1. <a href="#modules_m_nopost">m_nopost</a><br>
A. <a href="#regex">Expressions Régulières</a><br>
---A.1. <a href="#regexlit">Litéraux</a><br>
---A.2. <a href="#regexdot">L'opérateur Point</a><br>
---A.3. <a href="#regexrep">Les opérateurs de répétition</a><br>
---A.4. <a href="#regexbracket">Les expressions avec crochets</a><br>
---A.5. <a href="#regexassert">Assertions</a><br>
---A.6. <a href="#regexalt">Alternatives</a><br>
---A.7. <a href="#regexsub">Sousexpressions</a><br>
---A.8. <a href="#regexbackref">Références arrières (back references)</a><br>
---A.9. <a href="#regexcase">Sensibilité à la case</a><br>
</p>
<p id="IntroductionNotes">
<b><font size="+2">1.0 &#8211; Introduction &amp; Notes</font></b>
</p>
<div class="desc">
<p>
Ce document a été écrit exclusivement pour l'utilisation d'UnrealIRCd.
Utiliser ce document avec un autre logiciel, ou le distribuer avec un autre logiciel est strictement interdit sans la permission écrite de l'équipe de développement d'UnrealIRCd.
Ce document peut être copié/imprimé/reproduit/publié autant de fois que vous le souhaitez, à condition que ce soit pour l'utilisation d'UnrealIRCd et qu'il ne soit jamais modifié d'une quelconque manière.
&#8211; Copyright UnrealIRCd Development Team 2002-2006
</p>
<p>
Lisez ce manuel avant de demander de l'aide, vous devez aussi lire attentivement la <a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">FAQ</a> qui répond à plus de 80% des questions/problèmes.
Si vous avez encore besoin d'aide vous pouvez demander du support sur irc.unrealircd.org (port 6667) channel #unreal-support
(notez que nous requerrons de votre part une parfaite connaissance de ce document et de la FAQ et que nous donnons uniquement de l'aide sur UnrealIRCD, pas sur les services !).
Vous pouvez aussi utiliser le forum : <a href="http://forums.unrealircd.com/" TARGET="_blank">http://forums.unrealircd.com</a>.
Si vous avez un réel bug (comme un crash) alors reportez le ici
<a href="http://bugs.unrealircd.org/" target="_blank">http://bugs.unrealircd.org</a>.
</p>
</div>
<p id="notesonolder">
<font size="+2"><b>1.1 &#8211; Notes sur la mise à jour et le mélange des versions 3.1.x -&gt; 3.2</b></font>
</p>
<div class="desc">
<p>
Au cas où vous souhaiteriez mettre à jour Unreal3.1.x vers Unreal3.2 vous noterez que l'ensemble des fichiers de configuration a changé, vous pourriez trouver cela difficile au début, mais une fois que vous aurez changé vous trouverez cela beaucoup mieux !
</p>
<p>
N'oubliez pas de lire la section 3 à propos des fonctionnalités, bien que vous connaissiez déjà la plupart d'entre elles car elles sont issues des 3.1.x, il y en a tout de même de nouvelles !
</p>
<p>
Le mieux est de ne pas utiliser une 3.1.x avec une 3.2, mais si vous souhaitez réellement le faire, vous aurez besoin d'une version 3.1.4 minimum, mais une 3.1.5 est fortement conseillée.
</p>
</div>
<p id="notesonupgrade">
<font size="+2"><b>1.2 &#8211; Notes sur la mise à jour entre versions 3.2</b></font><br>
</p>
<div class="desc">
<p>
Nous vous recommandons de procéder de la manière suivante pour mettre à jour :
</p>
<ul>
<li>
Linux :
<ol>
<li>Renommez votre ancien dossier UnrealIRCd (sinon vous écraserez son contenu dans la prochaine étape)</li>
<li>Extraire la nouvelle version d'UnrealIRCd et exécutez ./Config puis make</li>
<li>Copiez vos anciens fichiers de configuration vers le nouveau répertoire (unrealircd.conf, motd, rules, server.* [SSL certs], network file, etc)</li>
</ol>
</li>
<li>
Windows :
<ol>
<li>Copiez tous vos fichiers de configuration temporairement vers un autre dossier.</li>
<li>Lancez le désinstalleur pour toutes les précédentes versions d'Unreal que vous avez installées.</li>
<li>Lancez l'installeur pour la nouvelle version d'Unreal.</li>
<li>Copiez vos anciens fichiers de configuration vers le nouveau dossier. </li>
</ol>
</li>
</ul>
<p>
Veuillez vérifier les RELEASE NOTES pour voir ce qui a changé.
Si vous notez des changements (ou bug) entre les versions, VOUS DEVEZ ËTRE SUR D'AVOIR LU LES RELEASE NOTES EN PREMIER avant de reporter cela comme un bug.
</p>
</div>
<p id="installation">
<font size="+2"><b>2.0 - Installation</b></font><br>
</p>
<div class="desc">
<br>
<b>Systèmes d'exploitation testés et supportés:</b><br>
<ul>
<li><b>Version *NIX:</b>
<ul>
<li>Linux (2.2.*, 2.4.*, 2.6.*)</li>
<li>FreeBSD (4.*, 5.*, 6.*)</li>
<li>NetBSD (2.*)</li>
<li>OpenBSD (3.7, 3.8, 3.9)</li>
<li>Solaris (9, 10)</li>
</ul>
</li>
<li><b>Version Windows:</b>
<ul>
<li>Windows 2000 (Pro, Server, Advanced Server)</li>
<li>Windows XP (Home, Pro)</li>
<li>Windows 2003</li>
</ul>
</li>
<li><b>Architectures testées:</b>
<ul>
<li>ia32 (i386, i486, i586, i686)</li>
<li>ia64</li>
<li>amd64</li>
<li>alpha</li>
</ul>
</li>
</ul>
<br>
Si vous avez Unreal3.2 et qu'il fonctionne correctement sous un autre système d'exploitation, envoyer les détails ici : <a href="mailto:coders@lists.unrealircd.org">coders@lists.unrealircd.org</a><br>
<p>
<b>Instructions d'installation :</b>
</p>
<ul>
<li>
Linux :
<ol>
<li>gunzip -d Unreal3.2.X.tar.gz</li>
<li>tar xvf Unreal3.2.X.tar</li>
<li>cd Unreal3.2</li>
<li>./Config</li>
<li>
Répondez aux questions avec le meilleur de vos connaissances.
Généralement, si vous n'êtes pas sûr, les paramètres par défaut devraient fonctionner !
</li>
<li>make</li>
<li>Maintenant créez votre unrealircd.conf ainsi que les autres fichiers de configuration, regardez la section 4.</li>
</ol>
</li>
<li>
Windows :
<ol>
<li>Lancez l'installateur d'Unreal</li>
<li>Maintenant créez votre unrealircd.conf ainsi que les autres fichiers de configuration, regardez la section 4.</li>
</ol>
</li>
</ul>
</div>
<p id="features">
<font size="+2"><b>3.0 - Fonctionnalités</b></font>
</p>
<div class="desc">
<p>
La plupart des fonctionnalités importantes ou utiles sont expliquées dans cette section.
Elle fourni une vue d'ensemble, et fait parfois référence aux fichiers de configuration (quelque chose que vous n'êtes pas sensés connaitre actuellement).
</p>
<p>
Vous pouvez sauter cette section, toutefois il est suggéré de la lire avant ou après l'installation car sinon vous ne comprendrez pas certains concepts tels que le 'cloaking', les 'snomasks', etc.
</p>
</div>
<p id="feature_cloaking">
<font size="+2"><b>3.1 - Cloaking</b></font>
</p>
<div class="desc">
<p>
Le Cloaking (camouflage) vous permet de cacher le véritable host (domaine) des utilisateurs, par exemple si votre host réel est <i>d5142341.cable.wanadoo.fr</i>,
il sera affiché (lors des join, part, whois, etc) ainsi : <i>rox-2DCA3201.cable.wanadoo.fr</i>.
Cette fonctionnalité est utile pour empêcher les floods entre utilisateurs depuis qu'ils ne peuvent plus voir l'host ou l'IP réel.
</p>
<p>
Ceci est contrôlé par le usermode +x (comme : /mode votrepseudo +x), les administrateurs peuvent forcer le mode +x par défaut, voire interdire aux utilisateurs de l'enlever.
</p>
<p>
Un host camouflé est généré par un module de cloaking (il est obligatoire d'en avoir un chargé), il y en a un seul officiel à ce jour :<br>
<b>cloak :</b> C'est le module officiel de cloaking depuis la version 3.2.1, il est plus sécurisé que l'ancien algorithme, il utilise la méthode de hachage md5 et requière trois clés set::cloak-keys:: composées de caractères alphanumériques (a-z, A-Z et 0-9) [ex: CZCBd45Q6DmtExAd8Bm2"].
Regardez example.fr.conf pour un exemple.
</p>
<p>
Ces clés DOIVENT être les mêmes sur TOUS LES SERVEURS d'un réseau.
Elles doivent être gardées SECRËTES car il est possible de déchiffrer l'host original si vous connaissez ces clés (ce qui rendrait le umode +x inutile).
</p>
<p>
Astuce: Si vous utilisez un système *UNIX et devez créer de nouvelles clés de cloaking, vous pouvez exécuter './unreal gencloak' dans votre shell, ce qui affichera trois chaînes aléatoires que vous pourrez utiliser.
</p>
</div>
<p id="feature_modules">
<font size="+2"><b>3.2 - Modules</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd supporte des modules, ce qui est très pratique car :<br>
- Vous pouvez les charger/décharger pendant que l'ircd est lancé (avec /rehash).
Cela vous permet de corriger certains bugs ou d'ajouter de nouvelles fonctionnalités sans être obligé de redémarrer !<br>
- D'autres personnes peuvent créer des modules tiers avec de nouvelles commandes, modes utilisateurs et même des modes channels.
</p>
<p>
UnrealIRCd est fourni avec seulement quelques <a href="#modules">modules</a>. Regarder ici www.unrealircd.com -&gt; modules ou utiliser Google pour trouver des modules tiers.<br>
</p>
<p>
Vous avez besoin de charger au moins 2 modules sinon vous n'aurez pas la possibilité de lancer ircd :<br>
- le module des commandes : commands.so (commands.dll sous windows)<br>
- un module de cloaking: habituellement cloak.so (cloak.dll sous windows)
</p>
</div>
<p id="feature_snomasks">
<font size="+2"><b>3.3 - Snomasks</b></font>
</p>
<div class="desc">
<p>
Les Snomasks sont des masques de notice serveur (server notice masks).
C'est un type spécial de usermode qui définit quelles notices vous recevrez des serveurs.
(cela est utilisé le plus souvent par les opérateurs).
</p>
<p>
Cela peut être définit par: /mode votrepseudo +s SNOMASK, par exemple : /mode votrepseudo +s +cF<br>
Pour enlever certains snomasks, utilisez quelque chose comme : /mode votrepseudo +s -c<br>
Vous pouvez aussi enlever tous vos snomasks en écrivant simplement : /mode votrepseudo -s
</p>
<p>
Les snomasks disponibles sont :<br>
c - les connexions locales<br>
F - les connexions globales (exceptées celles qui proviennent des serveurs qui sont dans le bloc U:lines)<br>
f - les notices de flood<br>
k - les notices de kill [*]<br>
e - les notices de 'eyes'<br>
j - les notices de 'junk'<br>
v - les notices de vhost<br>
G - les notices de gline/shun<br>
n - les changements de pseudo locaux<br>
N - les changements de pseudo globaux<br>
q - les notices d'utilisation de nicks interdits (Q:line)<br>
s - recevoir les notices serveurs [*]<br>
S - recevoir les notices de l'anti-spam<br>
o - recevoir les notices d'identification oper<br>
[*: ces snomasks sont aussi autorisés aux non-opérateurs]<br>
</p>
<p>
Vous pouvez contrôler quels snomasks vous obtenez automatiquement (set::snomask-on-connect) et aussi ceux que vous obtenez avec /oper (set::snomask-on-oper, oper::snomask)
</p>
<p>
Par défaut, si un utilisateur applique uniquement le mode +s, certains snomasks sont appliqués.
Pour les non-opers, il s'agit de +ks, et pour les opers, de +kscfvGqo.
</p>
</div>
<p id="feature_aliases">
<font size="+2"><b>3.4 - Alias</b></font>
</p>
<div class="desc">
<p>
Avec les aliases vous pouvez configurer des alias de commandes au niveau du serveur.
Par exemple vous pouvez faire en sorte que "/ns identify blabla" soit envoyé à Nickserv (cela sera traduit en : privmsg nickserv identify blabla).
Vous pouvez bien entendu créer des alias plus compliqués comme /register qui sera envoyé à Chanserv si le premier paramètre commence par un # et sinon à Nickserv.
</p>
<p>
Les alias sont à configurer dans les <a href="#aliasblock">alias blocks</a> du fichier de configuration.
Vous pouvez aussi inclure un fichier avec des alias par défaut adaptés à la plupart des services.
</p>
</div>
<p id="feature_helpop">
<font size="+2"><b>3.5 - Helpop</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a un système d'aide interne accessible via /helpop.
La commande /helpop est entièrement configurable via le help block dans le fichier de configuration.
En supplément, un help.conf est inclus, il contient une aide basique pour toutes les commandes par défaut.<br>
Par exemple <i>/helpop chmodes</i> vous donne la liste de tous les modes channels disponibles d'UnrealIRCd.<br>
Rappelez vous que si vous êtes un opérateur (helpop) vous devrez ajouter le préfix ? aux mots clés,
donc <i>/helpop</i> devient <i>/helpop ?</i> et <i>/helpop chmodes</i> devient <i>/helpop ?chmodes</i> etc..
</p>
</div>
<p id="feature_operaccesslevels">
<font size="+2"><b>3.6 - Niveau d'accès des opérateurs</b></font>
</p>
<div class="desc">
<p>
Dans UnrealIRCd, plusieurs <a href="#operblock_flags">niveaux d'opérateurs</a> sont accessibles et vous pouvez définir des droits supplémentaires (comme l'utilisation de /gline) pour chacun d'eux.
Grâce à cela vous pouvez donner aux opérateurs les privilèges dont ils ont besoin.
</p>
<p>
Cela est contrôlé par les flags opérateurs dans l'oper block, regardez l'oper block pour plus d'informations.
</p>
</div>
<p id="feature_opercmds">
<font size="+2"><b>3.7 - Commandes opérateurs</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a beaucoup de commandes performantes pour les opérateurs qui sont expliquées dans <a href="#useropercommands">Commandes utilisateurs et opérateurs</a>, vous voudrez probablement lire cela après l'installation :)
</p>
</div>
<p id="feature_ssl">
<font size="+2"><b>3.8 - SSL</b></font>
</p>
<div class="desc">
<p>
SSL (Secure Socket Layer) vous permet de sécuriser les connexions en les chiffrant.
Vous pouvez l'utiliser pour sécuriser le trafic entre serveurs mais aussi le trafic client&lt;-&gt;serveur.
Habituellement, SSL est utilisé pour protéger contre le sniffing et pour l'authentification du serveur.
</p>
<p>
Pour l'utiliser, il vous faudra compiler votre IRCd avec le support SSL.
Pour mettre en place un port SSL, vous devez utiliser listen::options::ssl.
</p>
<p>
Vous ne pouvez pas vous connecter normalement à un port SSL (donc ne mettez pas le port irc par défaut 6667 en SSL !), il vous faut un client ou un tunnel qui supporte le protocol SSL.
</p>
<p>
Clients supportant le SSL:
<a href="http://www.xchat.org/" target="_blank">XChat</a>,
<a href="http://www.irssi.org/" target="_blank">irssi</a>,
<a href="http://www.mirc.com/" target="_blank">mIRC</a> (6.14 et supérieures, requiert certaines <a href="http://www.mirc.co.uk/ssl.html" target="_blank">dlls additionelles</a>)
</p>
<p>
Pour les clients ne supportant pas le SSL vous pouvez utiliser un tunnel comme <a href="http://www.stunnel.org/" target="_blank">stunnel</a>. Voici un exemple de stunnel.conf ( pour stunnel 4.x) :
</p>
<pre> client = yes
[irc]
accept = 127.0.0.1:6667
connect = irc.myserv.com:6697</pre>
<p>
Si vous vous connectez sur 127.0.0.1 port 6667, votre trafic sera chiffré et retourné vers irc.myserv.com port 6697 (un port SSL).
</p>
<p>
Il faut aussi que vous ayez des certificats valides quand vous vous connectez aux serveurs et ne pas les accepter aveuglément (comme dans l'exemple stunnel) sinon vous serez vulnérable aux attaques "active sniffing" (ssl redirects).
Ce n'est toutefois pas l'endroit approprié pour en parler (renseignez vous sur le SSL, ne nous demandez rien).
[mIRC et xchat vous donne la possibilité d'accepter ou non un certificat, ce qui est parfait].
</p>
</div>
<p id="feature_ipv6">
<font size="+2"><b>3.9 - IPv6</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd supporte l'IPv6 et depuis la beta15 cela semble être stable.<br>
Votre OS a besoin d'avoir le support IPv6 et il faut activer le support IPv6 durant le ./Config.<br>
</p>
<p>
Bien que Microsoft ait une implantation expérimentale de l'IPv6 pour w2k/XP, cela n'est pas (encore) supporté par UnrealIRCd.
</p>
</div>
<p id="feature_dyndns">
<font size="+2"><b>3.10 - Support des links avec IP/DNS dynamiques</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a quelques (nouvelles) fonctionnalités qui aideront les utilisateurs ayant des IP dynamiques et qui utilisent des DNS dynamiques (comme exemple.dyndns.org).
Si vous linkez 2 hosts DNS dynamiques, alors ajoutez link::options::nodnscache et link::options::nohostcheck.
</p>
</div>
<p id="feature_antiflood">
<font size="+2"><b>3.11 - Fonctionnalités Anti-Flood</b></font>
</p>
<div class="desc">
<p>
<b>Throttling</b><br>
Le Throttling est une méthode qui vous permet de déterminer le temps minimum pour qu'un client se reconnecte après une déconnexion à votre serveur.
Vous pouvez configurer cela dans votre set::throttle block pour autoriser X connexions toutes les Y secondes depuis la même IP.<br>
<br>
<b>Modes des salons</b><br>
Certains modes salons sont aussi très efficaces contre le flood.
En voici quelque uns :<br>
<b>K</b> = /knock interdit, <b>N</b> = changement de pseudo interdit, <b>C</b> = CTCP interdit, <b>M</b> = seuls les utilisateurs enregistrés peuvent parler, <b>j</b> = join throttling (par utilisateur).<br>
<br>
Depuis la beta18, il y a un mode channel beaucoup plus avancé +f ...<br>
<b>Mode salon f</b><br>
À la place d'utiliser des scripts ou des bots pour vous protéger du flood, cela est maintenant disponible directement dans l'ircd.<br>
Un exemple du mode +f est : <i>*** Blabla sets mode: +f [10j]:15</i><br>
Cela signifie que seuls 10 joins toutes les 15 secondes sont autorisés sur le salon, si la limite est atteinte, le salon va mettre automatiquement le mode +i.
<br>
Les types suivants sont disponibles :
</p>
<table border="1" cellpadding="3" cellspacing="1">
<tr>
<th>Type:</th><th>Nom:</th><th>Action par défaut:</th><th>Autres actions possibles:</th><th>Commentaires</th>
</tr>
<tr>
<td>c</td><td>CTCPs</td><td>auto +C</td><td>m, M</td><td>&nbsp;</td>
</tr>
<tr>
<td>j</td><td>joins</td><td>auto +i</td><td>R</td><td>&nbsp;</td>
</tr>
<tr>
<td>k</td><td>knocks</td><td>auto +K</td><td>&nbsp;</td><td>(comptés uniquement pour les clients locaux)</td>
</tr>
<tr>
<td>m</td><td>messages/notices</td><td>auto +m</td><td>M</td><td>&nbsp;</td>
</tr>
<tr>
<td>n</td><td>nickchanges</td><td>auto +N</td><td>&nbsp;</td><td>&nbsp;</td>
</tr>
<tr>
<td>t</td><td>text</td><td>kick</td><td>b</td><td>par messages/notices utilisateurs comme l'ancien +f.<br>Kick ou ban l'utilisateur.</td>
</tr>
</table>
<p>
Exemple :
</p>
<pre> <font color="green">*** ChanOp sets mode: +f [20j,50m,7n]:15</font>
&lt;ChanOp&gt; lalala
<font color="green">*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined #test
*** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) has joined #test
*** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) has joined #test
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined #test</font>
-- XX lignes --
<font color="green">*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has joined #test</font>
<font color="brown">-server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i</font>
<font color="green">*** server1.test.net sets mode: +i</font>
&lt;Evil2&gt; fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
&lt;Evil12&gt; fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
&lt;Evil15&gt; fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
&lt;Evil10&gt; fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
&lt;Evil8&gt; fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
-- XX lignes --
<font color="brown">-server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m</font>
<font color="green">*** server1.test.net sets mode: +m</font>
<font color="green">*** Evil1 is now known as Hmmm1</font>
<font color="green">*** Evil2 is now known as Hmmm2</font>
<font color="green">*** Evil3 is now known as Hmmm3</font>
<font color="green">*** Evil4 is now known as Hmmm4</font>
<font color="green">*** Evil5 is now known as Hmmm5</font>
<font color="green">*** Evil6 is now known as Hmmm6</font>
<font color="green">*** Evil7 is now known as Hmmm7</font>
<font color="green">*** Evil8 is now known as Hmmm8</font>
<font color="brown">-server1.test.net:#test *** Channel nickflood detected (limit is 7 per 15 seconds), putting +N</font>
<font color="green">*** server1.test.net sets mode: +N</font></pre>
<p>
En fait, cela peut être plus avancé et complexe:<br>
À la place de l'action par défaut, vous pouvez spécifier d'autres types de flood, par exemple : <i>+f [20j#R,50m#M]:15</i><br>
Cela mettra le salon en +R si la limite de joins est atteinte (&gt;20 joins en 15 secondes), et mettra le salon en +M si la limite de messages est atteinte (&gt;50 messages en 15 secondes).<br><br>
Il y a également des paramètres que vous pouvez ajouter pour enlever les modes après X minutes : <i>+f [20j#R5]:15</i> mettra le salon en +R si la limite est atteinte et l'enlevera après 5 minutes.<br><br>
Un serveur peut avoir un temps par défaut pour l'enlèvement de ces modes (set::modef-default-unsettime) donc si vous écrivez <i>+f [20j]:15</i>, celà pourra être transformé en <i>+f [20j#i10]:15</i>. C'est juste par défaut, vous pouvez toujours mettre [20j#i2]:15 ou quelque chose dans le genre, et vous pouvez aussi annuler complétement le retrait automatique en faisant : +f [20j#i0]:15 (un 0 explicite).<br><br>
L'ancien mode +f (msgflood par un utilisateur) est aussi toujours disponible via 't', +f 10:6 est maintenant appelé +f [10t]:6 et +f *20:10 est maintenant +f [20t#b]:10.
Actuellement l'ircd devrait automatiquement convertir l'ancien mode +f vers le nouveau.
Notez qu'il n'y a aucun unsettime disponible pour les bans via 't' ([20t#b30]:15 ne fonctionne pas).<br><br>
Le meilleur mode +f dépend fortement du salon ... combien d'utilisateurs a-t-il ?
Avez vous un jeu qui fait que les utilisateurs envoient beaucoup de messages (par exemple un trivia) ?
Est-ce un genre de salon principal ou en auto-join ? etc ...<br>
Il n'y a pas un mode +f parfait pour tous les salons, mais pour commencer regardez l'exemple suivant et modifiez le en fonction de vos besoins :<br>
+f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15<br>
30 joins toutes les 15 secondes, si la limite est atteinte, le salon met le mode +i pour 10 minutes.<br>
40 messages toutes les 15 secondes, si la limite est atteinte, le salon met le mode +m pour 10 minutes.<br>
7 ctcps toutes les 15 secondes, si la limite est atteinte, le salon met le mode +C pour 15 minutes.<br>
10 changements de pseudo toutes les 15 secondes, si la limite est atteinte, le salon met le mode +N pour 15 minutes.<br>
30 knocks toutes les 15 secondes, si la limite est atteinte, le salon met le mode +K pour 10 minutes.<br>
Si le salon a beaucoup d'utilisateurs (&gt;75 ?) vous devrez augmenter la sensibilité du join (par ex: 50) et bien entendu la limite de messages (par ex: 60 ou 75).<br><br>
Le temps de retrait des modes est en particulier une question de goût personnel.
Que faire si aucun op n'est disponible quand un événement se produit, voudrais-je que le salon soit bloqué pendant 15 minutes (= pas agréable pour les utilisateurs) ou 5 minutes (= la fautif n'ayant qu'à attendre 5 min et flooder à nouveau).
Ça dépend aussi du type de flood, empêcher les utilisateurs de rejoindre le salon (+i) ou de parler (+m) est pire que de les empecher de changer leur pseudo (+N) ou d'envoyer des ctcps au salon (+C), donc vous devrez établir différents temps de retrait des modes.<br><br>
<b>Mode salon j</b><br>
Le mode +f inclus un dispositif permettant d'empêcher les join floods, toutefois ce dispositif est "global".
Par exemple, si il est reglé à 5:10 et que 5 utilisateurs <u>différents</u> joignent en 10 secondes, la protection contre le flood est activée.<br>
Le mode de salon +j est différent.
Ce mode fonctionne sur la base d'un utilisateur.
Plutôt que de protéger contre les join floods, il est fait pour protéger contre les join-part floods.
Le mode prend un paramètre de la forme X:Y où X est le nombre de joins et Y est le nombre de secondes.
Si un utilisateur dépasse la limite, il ne pourra plus rejoindre le salon.
</p>
</div>
<p id="feature_bantypes">
<font size="+2"><b>3.12 - Types de ban</b></font>
</p>
<div class="desc">
<p>
<b>Les types de ban basiques et les cloaked hosts</b><br>
UnrealIRCd supporte les types de ban basiques comme <i>+b nick!user@host</i>.<br>
Mais aussi, si l'host masqué de quelqu'un est 'rox-ACB17294.isp.com' et que vous bannissez *!*@rox-ACB17294.isp.com, alors même si l'utilisateur enlève le mode x (/mode votrepseudo -x) (et son host devient par exemple 'dial-123.isp.com') le ban fonctionnera toujours.
Les bans sont toujours vérifiés pour les hosts réels ET les hosts masqués.<br>
Les bans avec des IP sont aussi disponibles (ex: *!*@128.*) et sont aussi toujours vérifiés.<br><br>
Les bans sur les IPs masquées requièrent quelques explications, :<br>
Si l'IP d'un utilisateur est 1.2.3.4, son cloaked host pourrait être 341C6CEC.8FC6128B.303AEBC6.IP.<br>
Si vous bannissez *!*@341C6CEC.8FC6128B.303AEBC6.IP vous bannirez donc aussi *!*@1.2.3.4 (ce qui semble évident...)<br>
Si vous bannissez *!*@*.8FC6128B.303AEBC6.IP vous bannissez *!*@1.2.3.*<br>
Si vous bannissez *!*@*.303AEBC6.IP vous bannissez *!*@1.2.*<br>
Cela devrait vous aider à savoir comment un ban doit être établi le moment venu.<br><br>
<b>Types de ban étendus</b><br>
Les bans étendus ressemble à ~&lt;type&gt;:&lt;parameter&gt;.
Ils vous permettent de bannir (ou exempter de ban) quelqu'un en vous basant sur quelque chose de différent du traditionnel masque nick!user@host.
Ils permettent aussi des choses comme rendre muet un utilisateur.<br><br>
Ces types de bans précisent quelles actions sont associées à un ban :
</p>
<table border="1">
<tr>
<th>Type</th><th>Nom :</th><th>Explications :</th>
</tr>
<tr>
<td>~q</td><td>quiet</td><td>Les personnes correspondants à ces bans peuvent rejoindre le salon mais ne peuvent pas parler, sauf s'ils ont le flag +v ou plus.<br><i>Ex : ~q:*!*@*.aol.com</i></td>
</tr>
<tr>
<td>~n</td><td>nickchange</td><td>Les personnes correspondants à ces bans ne peuvent pas changer de pseudo, sauf s'ils ont le flag +v ou plus.<br><i>Ex: ~n:*!*@*.aol.com</i></td>
</tr>
<tr>
<td>~j</td><td>join</td><td>Si un utilisateur correspond à ce ban, il ne pourra pas rejoindre le salon. Par contre, s'il est déjà dessus, il pourra faire ce qu'il veut, comme parler ou changer de pseudo.<br><i>Ex: ~j:*!*@*.aol.com</i><br>
Ceci peut être pratique pour empêcher les utilisateurs d'un FAI particulier de rejoindre le salon, mais leur permettre quand même de l'utiliser librement une fois dessus, comme par exemple après un /invite</td>
</tr>
</table>
<p>
Ces types de bans introduisent de nouveux critères de sélection :
</p>
<table border="1">
<tr>
<th>Type</th><th>Nom :</th><th>Explications :</th>
</tr>
<tr>
<td>~c</td><td>channel</td><td>Si l'utilisateur est présent sur le salon désigné par ce ban, alors il ne pourra pas joindre le salon dans lequel ce ban a été placé.
Un préfixe peut aussi être spécifié (+/%/@/&amp;/~), pour ne désigner que les utilisateurs ayant au moins le flag spécifié sur le salon considéré.<br>
<i>Ex: +b ~c:#lamers, +e ~c:@#trusted </i><br>
Ceci empêchera à tous les utilisateurs présents sur #lamers, sauf s'ils sont aussi au moins opérateurs de #trusted de venir sur le salon sur lequel est placé ce ban.</td>
</tr>
<tr>
<td>~r</td><td>realname</td><td>Si le realname d'un utilisateur correspond, il ne pourra pas joindre ce salon.<br>
<i>Ex: ~r:*Stupid_bot_script*</i><br>
NOTE : un underscore ('_') correspond à la fois à un espace (' ') et à un underscore ('_'), donc 'Stupid bot script v1.4' sera bloqué par ce ban.</td>
</tr>
<tr>
<td>~R</td><td>registered</td><td>Si l'utilisateur s'est identifié auprès des services (habituellement NickServ) et correspond à ce nick, alors ce ban le désignera. Par conséquent, ce ban est uniquement utile pour les exceptions (+e).<br>
<i>Ex: +e ~R:Nick</i> autorisera Nick sur le salon, même s'il correspond à un ban, s'il s'est identifié auprès de NickServ et utilise le pseudo Nick.</td>
</tr>
<tr>
<td>~a</td><td>account</td><td>s'est identifié auprès des services (habituellement NickServ) avec ce compte, ce ban le désignera.<br>
Ce ban est légèrement différent de ~R, puisqu'un utilisateur de nick ABC peut être connecté avec le compte XYZ. Tous les services ne supportent pas cette option, et dans ce cas, vous devrez utiliser ~R à la place.<br>
<i>Ex: +e ~a:UnCompte</i> autorisera le(s) utilisateur(s) se connectant au compte UnCompte à rejoindre le salon en ignorant les bans.</td>
</tr>
</table>
<p>
Vous pouvez cumuler les bans étendus du premier groupe avec ceux du deuxième groupe.
Par exemple, <i>+b ~q:~c:#lamers</i> rendra silencieux tous les membres de #lamers.<br>
Les bans du second groupe peuvent aussi ètre utilisés avec le mode +I (Invite exceptions),
comme par exemple : <i>+I ~c:#trusted</i> et <i>+I ~a:accountname</i>.<br>
<br>
Certains modules peuvent ajouter d'autres types de ban étendus.
</p>
</div>
<p id="feature_spamfilter">
<font size="+2"><b>3.14 - Spamfilter</b></font>
</p>
<div class="desc">
<p>
Le Spamfilter est un nouveau système de lutte contre le spam, la publicité, les worms et plein d'autres choses.
Il fonctionne un peu comme que le système de badwords mais il a de nombreux avantages.
</p>
<p>
Les filtres sont ajoutés grâce à la commande /spamfilter qui utilise la syntaxe suivante:<br>
<b>/spamfilter [add|del|remove|+|-] [type] [action] [duree] [raison] [regex]</b>
</p>
<table border="0">
<tr valign="top">
<th>[type]</th>
<td>
Spécifie le type de la cible:<br>
<table border="1">
<tr>
<th>Car.</th><th>Objet :</th><th>Description :</th>
</tr>
<tr>
<td>c</td><td>channel</td><td>Message sur un salon</td>
</tr>
<tr>
<td>p</td><td>private</td><td>Message privé entre utilisateurs</td>
</tr>
<tr>
<td>N</td><td>channel-notice</td><td>Notice sur un salon</td>
</tr>
<tr>
<td>n</td><td>private-notice</td><td>Notice privée entre utilisateurs</td>
</tr>
<tr>
<td>P</td><td>part</td><td>Raison de /part</td>
</tr>
<tr>
<td>q</td><td>quit</td><td>Raison de /quit</td>
</tr>
<tr>
<td>d</td><td>dcc</td><td>Nom de fichier DCC</td>
</tr>
<tr>
<td>a</td><td>away</td><td>Message d'away</td>
</tr>
<tr>
<td>t</td><td>topic</td><td>Topic d'un salon</td>
</tr>
<tr>
<td>u</td><td>user</td><td>Ban utilisateur, serra comparé à nick!user@host:realname</td>
</tr>
</table>
Vous pouvez spécifier plusieurs cibles, comme : <i>cpNn</i>
</td>
</tr>
<tr valign="top">
<th>[action]</th>
<td>
Spécifie l'action devant être prise (seule 1 action peut être indiquée)<br>
<table border="1">
<tr>
<th>Action</th><th>Description :</th>
</tr>
<tr>
<td>kill</td><td>Kill l'utilisateur</td>
</tr>
<tr>
<td>tempshun</td><td>Shun la session courante de l'utilisateur (si il se reconnecte le shun est enlevé)</td>
</tr>
<tr>
<td>shun</td><td>Met un shun sur l'host</td>
</tr>
<tr>
<td>kline</td><td>Met une kline sur l'host</td>
</tr>
<tr>
<td>gline</td><td>Met une gline sur l'host</td>
</tr>
<tr>
<td>zline</td><td>Met une zline sur l'host</td>
</tr>
<tr>
<td>gzline</td><td>Met sur une gzline (zline globale) sur l'host</td>
</tr>
<tr>
<td>block</td><td>Ne faire que bloquer le message</td>
</tr>
<tr>
<td>dccblock</td><td>Empêche l'utilisateur donc d'envoyer d'autres DCCs</td>
</tr>
<tr valign="top">
<td>viruschan</td><td>Éjecte l'utilisateur de tous les salons, le force à rejoindre le salon défini par set::spamfilter::virus-help-channel et désactive toutes les commandes sauf PONG, ADMIN et les messages et notices vers le salon set::spamfilter::virus-help-channel</td>
</tr>
<tr>
<td>warn</td><td>Envoie une notice aux IRCOps (avec le snomask spamfilter) et prévient l'utilisateur que son message a été intercepté. Aucune autre action n'est effectuée et le message n'est pas bloqué.</td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<th>[duree]</th>
<td>
Durée de la *line/shun ajoutée par le filtre, utilisez '-' pour mettre la valeur par défaut ou pour ignorer le paramètre (par ex: si action = 'block')
</td>
</tr>
<tr valign="top">
<th>[raison]</th>
<td>
Raison du Block, de la *line ou du shun ... Vous NE POUVEZ PAS utiliser d'espaces dedans, mais les underscores ('_') seront remplacés par des espaces lors de l'utilisation. De même, un double underscore ('__') sera remplacé par un underscore ('_').
Encore une fois, utilisez '-' pour utiliser la valeur par défaut.
</td>
</tr>
<tr valign="top">
<th>[regex]</th>
<td>
Ceci est l'<a href="#regex">expression régulière</a> correspondant au terme qui doit être bloqué.
</td>
</tr>
</table>
<p>
Voici un exemple: <i>/spamfilter add pc gline - - Come watch me on my webcam</i><br>
Si le texte <i>come watch me on my webcam</i> est trouvé dans un message privé ou sur un salon alors le message sera bloqué et une gline sera immédiatement ajoutée.<br><br>
Un autre exemple: <i>/spamfilter add pc block - - come to irc\..+\..+</i><br>
Ceci est une <a href="#regex">expression régulière</a> qui détectera les messages du genre <i>Hi, come to irc.blah.net</i> et les bloquera.<br><br>
Et un dernier exemple avec un temps/raison : <i>/spamfilter add p gline 3h Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam</i><br>
Si <i>come watch me on my webcam</i> est trouvé dans un message privé alors l'utilisateur est gliné pour 3 heures avec comme raison : <i>Please go to www.viruscan.xx/nicepage/virus=blah</i>.
</p>
<p>
Les filtres antispams ajoutés avec /spamfilter sont globaux.
Ils fonctionnent que l'utilisateur/salon ait le mode +G défini ou pas, seuls les opérateurs et les ulines (services) sont exemptés de filtrage.<br><br>
Vous pouvez aussi ajouter des filtres dans le fichier de configuration mais ceux ci seront des filtres locaux (non globaux, mais vous pouvez utiliser des inclusions distantes pour cela). La syntaxe de ces spamfilters block est expliquée <a href="#spamfilter">ici</a>.<br>
Exemple:<br>
</p>
<pre> spamfilter {
regex "//write \$decode\(.+\|.+load -rs";
target { private; channel; };
reason "Generic $decode exploit";
action block;
};</pre>
<p>
<b>set::spamfilter::ban-time</b> vous permet de modifier la durée par défaut pour les *lines ajoutées par le spamfilter (défaut: 1 jour)<br>
<b>set::spamfilter::ban-reason</b> vous permet de spécifier une raison par défaut (défaut: 'Spam/advertising')<br>
<b>set::spamfilter::virus-help-channel</b> vous permet de spécifier le salon à joindre pour l'action 'viruschan' (défaut: #help)<br>
<b>set::spamfilter::virus-help-channel-deny</b> vous permet de bloquer tout join normal au virus-help-channel (défaut: no)
</p>
<p id="feature_spamfilter_slow">
<font size="+1"><b>Slow Spamfilter Detection</b></font><br><br>
Une <a href="#regex">expression régulière</a> utilisée dans un filtre anti-spam peut considérablement ralentir l'IRCd.
Cela dépend de l'expression régulière (et de comment le moteur de regex la gère), certains sont très rapides et UnrealIRCd peut en exécuter des milliers par seconde.
D'autres peut être extrèmement lentes, prendre plusieures secondes à s'exécuter et faire freezer l'IRCd.<br><br>
Afin de limiter ce phénomène, Unreal dispose d'une Slow Spamfilter Detection : pour chaque filtre, Unreal vérifie le temps qu'il met à être exécuté à chaque fois qu'il l'utilise.
Lorsqu'un certain seuil est atteint, Unreal peut avertir voire supprimer ce filtre.<br>
L'avertissement est configuré grâce à <b>set::spamfilter::slowdetect-warn</b> (défaut : 250ms) et la suppression automatique grâce à <b>set::spamfilter::slowdetect-fatal</b> (defaut : 500ms).
Vous pouvez mettre les deux à 0 (zéro) pour désactiver la détection<br><br>
Cette fonctionnalité n'est pas encore disponible sur Windows.
</p>
</div>
<p id="feature_cidr">
<font size="+2"><b>3.14 - CIDR</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a maintenant un support pour le CIDR (Classless Interdomain Routing).
Le CIDR vous permet de bannir des plages d'IP.
Des Ips sont allouées aux FAI en utilisant CIDR, cela vous permet en plaçant un ban basé sur le CIDR de bannir facilement un FAI.
Unreal supporte le CIDR pour l'IPv4 et l'IPv6.
Les masques CIDR peuvent être utilisés dans allow::ip, oper::from::userhost, ban user::mask, ban ip::mask, except ban::mask, except throttle::mask et except tkl::mask (pour gzline, gline, et shun).
De plus, le CIDR peut être utilisé dans les /kline, /gline, /zline, /gzline, et /shun.
Unreal utilise la syntaxe standard d'IP/bits, 127.0.0.0/8 (correspond à la plage 127.0.0.0 - 127.255.255.255) et fe80:0:0:123::/64 (correspond à fe80:0:0:123:0:0:0:0 - fe80:0:0:123:ffff:ffff:ffff:ffff).
</p>
</div>
<p id="feature_nickchars">
<font size="+2"><b>3.15 - Caractères admis dans les pseudos</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a maintenant la capacité de spécifier quels caractères/langages doivent être autorisés dans les pseudos.
Vous appliquez cela avec <b>set::allowed-nickchars</b>.
</p>
<p>
Pour le français, le choix conseillé est <b>latin1</b> qui reprend tous les caractères (notamment les accents) d'Europe de l'Ouest.<br>
Voici les choix possibles :
</p>
<table border="1">
<tr>
<th>Nom :</th><th>Description:</th><th>Jeu de caractères/encodage:</th>
</tr>
<tr><td>catalan</td><td>Caractères catalans</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>danish</td><td>Caractères danois</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>dutch</td><td>Caractères néerlandais</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>french</td><td>Caractères français</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>german</td><td>Caractères allemands</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>swiss-german</td><td>Caractères Suisse-Allemand (non es-zett)</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>icelandic</td><td>Caractères islandais</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>italian</td><td>Caractères italiens</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>spanish</td><td>Caractères espagnols</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>swedish</td><td>Caractères suédois</td><td>iso8859-1 (latin1)</td></tr>
<tr><td><b>latin1</b></td><td>Français, catalan, danois, néerlandais, allemand, suisse-allemand, islandais, italien et suédois</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>hungarian</td><td>Caractères hongrois</td><td>iso8859-2 (latin2), windows-1250</td></tr>
<tr><td>polish-iso</td><td>Caractères polonais (attention : polish-w1250 est plus souvent utilisé)</td><td>iso8859-2 (latin2)</td></tr>
<tr><td>romanian</td><td>Caractères roumains</td><td>iso8859-2 (latin2), windows-1250, iso8859-16</td></tr>
<tr><td><b>latin2</b></td><td>Hongrois, polonais (polish-iso) et roumain</td><td>iso8859-2 (latin2)</td></tr>
<tr><td>polish-w1250</td><td>Caractères polonais, variante windows</td><td>windows-1250</td></tr>
<tr><td>slovak-w1250</td><td>Caractères slovaques, variante windows</td><td>windows-1250</td></tr>
<tr><td>czech-w1250</td><td>Caractères tchèques, variante windows</td><td>windows-1250</td></tr>
<tr><td><b>windows-1250</b></td><td>Polonais (polish-w1250), slovaque (slovak-w1250), tchèque (czech-w1250), hongrois et roumain</td><td>windows-1250</td></tr>
<tr><td>russian-w1251</td><td>Caractères russes</td><td>windows-1251</td></tr>
<tr><td>belarussian-w1251</td><td>Caractères belarusses</td><td>windows-1251</td></tr>
<tr><td>ukrainian-w1251</td><td>Caractères ukrainiens</td><td>windows-1251</td></tr>
<tr><td><b>windows-1251</b></td><td>Russe, belarusse et ukrainien</td><td>windows-1251</td></tr>
<tr><td>greek</td><td>Caractères grecques</td><td>iso8859-7</td></tr>
<tr><td>turkish</td><td>Caractères turcs</td><td>iso8859-9</td></tr>
<tr><td>hebrew</td><td>Caractères hébreux</td><td>iso8859-8-I/windows-1255</td></tr>
<tr><td>chinese-simp</td><td>Chinois simplifié</td><td>Multibyte: GBK/GB2312</td></tr>
<tr><td>chinese-trad</td><td>Chinois traditionnel</td><td>Multibyte: GBK</td></tr>
<tr><td>chinese-ja</td><td>Japonnais Hiragana/Pinyin</td><td>Multibyte: GBK</td></tr>
<tr><td><b>chinese</b></td><td>Caractères chinese-*</td><td>Multibyte: GBK</td></tr>
<tr><td><b>gbk</b></td><td>Caractères chinese-*</td><td>Multibyte: GBK</td></tr>
</table>
<p>
<b>Note 1 :</b> Attention, certaines combinaisons peuvent poser des problèmes.
Par exemple, vous ne pouvez pas combiner latin* et chinese-*, UnrealIRCd affichera une erreur.
Mixer d'autres charsets pourra poser des problèmes d'affichage, donc Unreal affichera un message d'avertissement si vous essayez de mixer latin1/latin2/greek/autres groupes incompatibles.
</p>
<p>
<b>Note 2 :</b> Le casemapping (la différence entre un caractère minuscule accentué et sa variante majuscule) est fait en accord avec l'US-ASCII, ceci signifie que ö et Ö ne seront pas reconnu comme le même caractère et par conséquent quelqu'un peut avoir un pseudo avec Bär et quelqu'un d'autre BÄr au même moment.
Ceci est une limitation du système et des standards IRC qui ne pourra pas être résolue dans un avenir proche.
Les gens doivent être au courant de cette limitation.
Notez que celle-ci a toujours été appliquée aux salons sur lesquels presque tous les symboles étaient permis et le casemapping était appliqué.
</p>
<p>
<b>Note 3 :</b> Les caractères basiques de pseudo (a-z A-Z 0-9 [ \ ] ^ _ - { | }) sont toujours permis.
</p>
<p>
Exemple 1 : pour les personnes d'Europe de l'Ouest :
</p>
<pre> set { allowed-nickchars { latin1; }; };</pre>
<p>
Exemple 2 : si vous avez principalement des utilisateurs chinois et voulez autoriser les caractères chinois normaux :
</p>
<pre> set { allowed-nickchars { chinese-simp; chinese-trad; }; };</pre>
</div>
<p id="feature_cgiirc">
<font size="+2"><b>3.16 - Support de CGI:IRC</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd inclut le support pour le host spoofing de CGI:IRC.
Cela signifie que vous pourrez indiquer des passerelles CGI:IRC auquelles vous faites confiance, ce qui aura pour effet d'autoriser l'IRCd à afficher les host/ip des utilisateurs partout sur IRC, au lieu de l'host/ip de la passerelle CGI:IRC.
</p>
<p>
Voyez la section <a href="#cgiirc">cgiirc block</a> pour avoir des informations sur la configuration de ceci.
</p>
</div>
<p id="feature_timesync">
<font size="+2"><b>3.17 - Synchronisation de l'heure</b></font>
</p>
<div class="desc">
<p>
Avoir l'heure exacte est extrêmement important pour les serveurs IRC.
Sans cela, des salons peuvent se désynchroniser, des utilisateurs innocents peuvent être victimes de kill, des salons peuvent
ne pas s'afficher correctement dans /LIST, en résumé : d'énormes problèmes peuvent survenir.
</p>
<p>
UnrealIRCd dispose d'une synchronisationation temporelle interne.
Bien qu'elle ne soit pas optimale (il peut encore exister des décalages de quelques secondes), elle devrait venir à bout de la plupart des écarts de temps.
Si cela vous est possible, il vous est fortement recommendé de faire tourner un logiciel de synchronisation du temps tel que ntpd sous *NIX ou le service de synchronisation de l'heure sous Windows
(dans ce cas, vous pouvez arrêter celui d'Unreal, voir ci-après).
</p>
<p>
Ce que fait UnrealIRCd (par défaut) est une seule tentative de synchronisation au lancement.
Il envoie (par défaut) une requête à de multiples serveurs de temps et lorsqu'il recoit la première réponse (la plus rapide), il ajuste l'horloge interne de l'ircd (pas l'horloge système).
Si, pour certaines raisons, Unreal ne recoit pas de réponse du serveur dans les 3 secondes, l'IRCd continuera la lancement
malgré tout (cela devrait être très rare).
</p>
<p>
La synchronisation du temps se configure (et peut être désactivée) via le bloc <b>set::timesynch</b>, voir la <a href="#setblock">documentation sur les set blocks</a> pour plus d'information.
</p>
</div>
<p id="feature_authtypes">
<font size="+2"><b>3.18 - Types d'Authentication</b></font>
</p>
<div class="desc">
<p>
En plusieurs endroits du fichier de configuration, par exemple dans les <a href="#operblock">oper block</a>, <a href="#allowblock">allow block</a> et <a href="#linkblock">link block</a>,
vous pouvez authentifier des clients par un mot de passe ou d'autres moyens.
</p>
<p>
Vous pouvez spécifier le mot de passe en clair, mais vous pouvez aussi utiliser spécifier un autre type d'authentification.<br />
Les auth-types suivants sont disponibles :
</p>
<table border="0">
<tr>
<th>Auth-type</th>
<th>Description</th>
<th>Dépendances</th>
<th>Comment générer</th>
</tr>
<tr>
<td><strong>crypt</strong></td>
<td>UNIX crypt</td>
<td>Windows: OpenSSL requis</td>
<td>/MKPASSWD crypt :password</td>
</tr>
<tr>
<td><strong>md5</strong></td>
<td>MD5 avec un salt</td>
<td>Toujours disponible</td>
<td>/MKPASSWD md5 :password</td>
</tr>
<tr>
<td><strong>sha1</strong></td>
<td>SHA1 avec un salt</td>
<td>OpenSSL requis</td>
<td>/MKPASSWD sha1 :password</td>
</tr>
<tr>
<td><strong>ripemd160</strong></td>
<td>RIPEMD160 avec un salt</td>
<td>OpenSSL requis</td>
<td>/MKPASSWD ripemd160 :password</td>
</tr>
<tr>
<td><strong>sslclientcert</strong></td>
<td>Certificat client SSL</td>
<td>OpenSSL requis</td>
<td>Chemin vers le fichier .pem du certificat public.</td>
</tr>
<tr>
<td><strong>sslclientcertfp</strong></td>
<td>Empreinte du certificat client SSL</td>
<td>OpenSSL requis</td>
<td>openssl x509 -in nom-du-fichier-pem.pem -sha256 -noout -fingerprint</td>
</tr>
</table>
<p>
La commande /MKPASSWD peut être utilisée directement une fois connecté en temps qu'IRCop.
Sinon, vous pouvez l'utiliser depuis la ligne de commande du shell : <br/>
<code>./unreal mkpasswd hashtype password</code>
</p>
<p>
Tous les types d'authentification ne sont pas disponibles sur tous les systèmes,
voir les dépendances et prérequis dans la table ci-dessus.
</p>
<p style="text-weight:strong">
Exemple : mot de passe hashé en MD5 dans un bloc vhost
</p>
<ol>
<li>
<p>
Supposons que vous voulez utiliser le mot de passe <i>test</i> et voulez le hasher en md5.<br/>
Si vous êtes un IRCop, alors vous pouvez simplement taper <i>/MKPASSWD md5 :test</i><br/>
Sinon, vous pouvez exécuter la commande suivante dans le shell : <i>./unreal mkpasswd md5 test</i>
</p>
<p>
Quelque soit la méthode, le hash généré ressemblera à <i>$NIV0bSfG$UTMvI/KdMwe4cZqmT/23qw==</i> (la chaîne exacte peut varier !)
</p>
</li>
<li>
<p>
Maintenant, mettez cette chaîne dans votre bloc vhost et informez UnrealIRCd qu'il s'agit d'un hash md5.<br/>
Exemple :
</p>
<pre>vhost {
vhost I.love.Tux;
from { userhost *@*; };
login Tux;
password "$NIV0bSfG$UTMvI/KdMwe4cZqmT/23qw==" { md5; };
};</pre>
</li>
<li>
Pour utiliser cette vhost, tapez <i>/VHOST Tux test</i>
</li>
</ol>
<p style="text-weight:strong">
Exemple : authentification par un certificat client SSL
</p>
<p>
<tt>sslclientcert</tt> et <tt>sslclientcertfp</tt> sont deux types d'authentification qui peuvent être utiliser pour authentifier des utilisateurs connectés en SSL par leur certificat client.
Voici un exemple de comment l'utiliser pour le bloc oper :
</p>
<ol>
<li>
<p>
Créez un certificat SSL client si vous n'en avez pas déjà un
(cherchez sur le web "create ssl certificate" si vous ne savez pas comment faire).
</p>
</li>
<li>
<p>
Prenez le hash SHA256 du certificat en exécutant :
<code>openssl x509 -in nom-du-fichier-pem.pem -sha256 -noout -fingerprint</code>
</p>
</li>
<li>
<p>
Dans le fichier de configuration, remplacez le mot de passe d'origine (<i>test</i> dans notre exemple) avec par ce hash et indiquez le type <tt>sslclientcertfp</tt>.<br/>
Voici un exemple :
</p>
<pre>oper test {
password "E7:4D:46:F1:9F:F4:68:F5:E8:E3:49:CC:28:5D:F9:65:85:BA:4F:16:B6:49:02:E3:34:E6:E7:6A:FE:76:A7:98" { sslclientcertfp; };
flags { global; can_override; };
class clients;
};</pre>
</li>
<li>
<p>
Rehashez le serveur (/REHASH)
</p>
</li>
<li>
<p>
Maintenant, connectez vous avec votre client SSL et assurez vous qu'il utilise le certificat de l'étape 2.
</p>
</li>
<li>
<p>
Vous pouvez maintenant vous connecter comme oper avec <i>/oper test x</i>
</p>
<p>
Vous devez toujours mettre un mot de passe, même s'il ne correspond à rien (par exemple : <i>x</i>).<br/>
Il est ignoré car le certificat est utilisé pour l'authentification.
</p>
</li>
<li>
<p>
Félicitations ! Vous utilisez désormais la méthode d'authentification la plus sécurisée disponible sur UnrealIRCd.
</p>
</li>
</ol>
<p>
Un autre endroit très utile pour utiliser <tt>sslclientcertfp</tt> est dans <a href="#linkblock_passwordreceive">link::password-receive</a>
</p>
</div>
<p id="feature_other">
<font size="+2"><b>3.19 - Autres fonctionnalités</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a énormément de fonctionnalités donc tout ne peut pas être exposé ici ...
Vous découvrirez tout cela par vous même.
</p>
</div>
<p id="configuringyourunrealircdconf">
<font size="+2"><b>4.0 - Configurer votre unrealircd.conf</b></font>
</p>
<div class="desc">
<p>
Tout d'abord, créer votre premier unrealircd.conf vous prendra du temps (disons entre 15 et 60 minutes).
Créer un <u>bon</u> unrealircd.conf prendra encore plus de temps.
Vous ne devriez pas vous dépêcher pour lancer l'IRCd le plus vite possible, mais au contraire y aller étape par étape.
Si vous avez un problème, vérifiez votre syntaxe, regardez dans le manuel, regardez la <a href="http://www.vulnscan.org/UnrealIRCd/faq/">FAQ</a> avant de demander de l'aide ou de rapporter un bug.
</p>
</div>
<p id="configurationfileexplained">
<b><font size="+2">4.1 Explication du fichier de configuration</font></b>
</p>
<div class="desc">
<p>
Le nouveau système utilise un format basé sur des blocs.
Chaque entrée, ou bloc, dans le nouveau format a un format spécifique.
Celui-ci est du type :
</p>
<pre> &lt;nom-bloc&gt; &lt;valeur-bloc&gt; {
&lt;directive1&gt; &lt;valeur-directive1&gt;;
&lt;directive2&gt; &lt;valeur-directive2&gt; {
&lt;sous-directive1&gt; &lt;valeur-sous-directive1&gt;;
&lt;sous-directive2&gt; &lt;valeur-sous-directive2&gt;;
};
};</pre>
<p>
&lt;nom-bloc&gt; est le type du bloc, tel que me, ou admin.
&lt;valeur-bloc&gt; indique parfois une valeur, telle que "oper LoginOper", ou sinon un sous-type de bloc, comme dans "ban user".
</p>
<p>
&lt;directive&gt; est une variable individuelle spécifique au bloc, et &lt;valeur-directive&gt; est la valeur de cette variable.
Si &lt;valeur-directive&gt; contient des espaces ou des caractères représentant un commentaire, vous devez le placer entre guillements (").
Si vous voulez utiliser un guillement à l'intérieur d'une chaine délimitée par des guillements, vous devez utiliser \".
</p>
<p>
Une &lt;directive&gt; peut elle-même contenir des &lt;sous-directive&gt;.
Si c'est le cas les sous-directives seront contenues dans des accolades.
Certains blocs n'ont pas de directives et sont justes spécifiés par "&lt;nom-bloc&gt; &lt;valeur-bloc&gt;", comme par exemple <i>include</i>.
Notez aussi qu'il n'y a pas de format défini, cela veut dire qu'un bloc peut tenir sur une seule ligne comme sur plusieurs lignes.
Le format ci-dessus est ce qui est normalement utilisé (et qui sera utilisé dans ce document) parce qu'il est facile à lire.
</p>
<p>
<b>Note :</b> le fichier de configuration est sensible à la case (aux majuscules / minuscules) donc <i>NOM-DU-BLOC</i> n'est pas la même chose que <i>nom-du-bloc</i>.
</p>
<p>
Il y a une notation spéciale utilisée pour parler d'entrées dans le fichier de configuration.
Par exemple pour parler de la &lt;directive1&gt; dans l'exemple ci-dessus, vous devrez dire &lt;nom-bloc&gt;::&lt;directive1&gt;. De même pour désigner une sous-directive, vous ajouterez un autre :: et le nom de la sous-directive.
</p>
<p>
Pour parler d'une directive non nommée vous devrez mettre &lt;nom-bloc&gt;:: qui voudra dans ce cas dire &lt;valeur-bloc&gt;, ou cela pourra être une entrée dans un sous bloc qui n'a pas de nom.
</p>
<p>
Trois types de commentaires sont supportés :
</p>
<pre> # commentaire sur une seule ligne
// commentaire sur une seule ligne
/* Commentaire
multi-ligne */</pre>
<p>
Maintenant que vous savez comment ça fonctionne, copiez <i>doc/example.fr.conf</i> dans votre dossier UnrealIRCd (ex: /home/user/Unreal3.2) et renomez le en <i>unrealircd.conf</i>
(OU créez votre <i>unrealircd.conf</i> depuis zéro).
Il est recommandé d'y aller pas à pas avec les différents blocs et de suivre ce manuel de référence.
</p>
</div>
<p id="meblock">
<font class="block_section">4.2 - </font><font class="block_name">Me Block</font> <font class="block_required">OBLIGATOIRE</font> <font class="block_old">(Connu précédemment comme M:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>me {
name &lt;nom du serveur&gt;;
info &lt;description du server&gt;;
numeric &lt;identifiant du serveur&gt;;
};</pre>
<p>
Ces valeurs sont plutôt claires.
Le <b>name</b> définit le nom du serveur, <b>info</b> définit la description du serveur, <b>numeric</b> définit un identifiant numérique propre serveur.
Ce dernier doit avoir une valeur comprise entre 0 et 254 qui est SPÉCIFIQUE au serveur, ce qui signifie qu'aucun autre serveur du réseau ne doit avoir le même identifiant.
</p>
<p>
Exemple :
</p>
<pre>me {
name "irc.foonet.com";
info "FooNet Server";
numeric 1;
};</pre>
</div>
<p id="adminblock">
<font class="block_section">4.3 - </font><font class="block_name">Admin Block</font> <font class="block_required">OBLIGATOIRE</font> <font class="block_old">(Connu précédemment comme A:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe:
</p>
<pre>admin {
&lt;text-line&gt;;
&lt;text-line&gt;;
};</pre>
<p>
Ce bloc défini le texte qui sera affiché lors d'une requête /admin.
Vous pouvez spécifier autant de lignes que vous le souhaitez et elles peuvent contenir toutes les informations que vous voulez, mais il est habituel d'indiquer les pseudos et email des admins au minimum.
Vous pouvez également inclure d'autres moyens de contact que vous désirez donner.
</p>
<p>
Exemple :
</p>
<pre>admin {
"Bob Smith";
"bob";
"widely@used.name";
};</pre>
</div>
<p id="classblock">
<font class="block_section">4.4 - </font><font class="block_name">Class Block</font> <font class="block_required">OBLIGATOIRE</font> <font class="block_old">(Connu précédement comme Y:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>class &lt;name&gt; {
pingfreq &lt;ping-frequency&gt;;
connfreq &lt;connect-frequency&gt;;
maxclients &lt;maximum-clients&gt;;
sendq &lt;send-queue&gt;;
recvq &lt;recv-queue&gt;;
};
</pre>
<p>
Les blocs Class sont les classes dans lequelles les connexions seront placées (par exemple pour les allow blocks ou les serveurs des link blocks), vous avez généralement plusieurs class blocks (exemple : pour les serveurs, clients, opers).
</p>
<p>
<b>name</b> est une description, comme "clients" ou "serveurs", ce nom est utilisé comme référence pour les classes dans les allow/link/oper/etc blocks.
</p>
<p>
<b>pingfreq</b> est le nombre de secondes entres les PINGs depuis le server (quelquechose entre 90 et 180 secondes est recommandé).
</p>
<p>
<b>connfreq</b> est utilisé uniquement pour les serveurs et représente le nombre de secondes entre 2 tentatives de connexions si l'autoconnexion est activée.
</p>
<p>
<b>maxclients</b> spécifie le nombre maximum de clients / serveurs pouvant faire partie de cette classe.
</p>
<p>
<b>sendq</b> spécifie la quantité d'informations pouvant être dans la file d'envoi (send queue) (très grand pour les serveurs avec une faible bande passante, moyen pour les clients).
</p>
<p>
<b>recvq</b> spécifie la quantité d'informations pouvant être dans la file de reception (receive queue) et est utilisé pour contrôler le flood (cela s'applique uniquement aux utilisateurs normaux, essayez avec des valeurs comprises entre 3000 et 8000, 8000 est la valeur par défaut).
</p>
<p>
Exemples :
</p>
<pre>class clients {
pingfreq 90;
maxclients 500;
sendq 100000;
recvq 8000;
};
class servers {
pingfreq 90;
maxclients 10; /* Nombre maximal de serveur pouvant être linké au même moment */
sendq 1000000;
connfreq 100; /* Combien de secondes entre 2 tentatives de connexions */
};</pre>
</div>
<p id="allowblock">
<font class="block_section">4.5 - </font><font class="block_name">Allow Block</font> <font class="block_required">OBLIGATOIRE</font> <font class="block_old">(connu précédemment comme I:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>allow {
ip &lt;user@ip-connection-mask&gt;;
hostname &lt;user@host-connection-mask&gt;;
class &lt;connection-class&gt;;
password &lt;connection-password&gt; { &lt;auth-type&gt;; };
maxperip &lt;max-connections-per-ip&gt;;
ipv6-clone-mask &lt;number-of-bits&gt;;
redirect-server &lt;server-to-forward-to&gt;;
redirect-port &lt;port-to-forward-to&gt;;
options {
&lt;option&gt;;
&lt;option&gt;;
...
};
};</pre>
<p>
C'est ici que vous spécifiez qui peut se connecter à ce serveur. Vous pouvez avoir plusieurs allow blocks.
</p>
<p>
<b>A propos des correspondances</b><br>
Le contrôle des accès fonctionne comme ceci : concordances des ip OU des host, donc avec "hostname *@*"; et "ip *@1.2.3.4"; cela concordera toujours.
Les allow blocks sont lus de haut en bas et seul le dernier concordant est considéré, donc vous devez spécifier les host/ip particuliers APRÈS votre allow block général *@*.
De plus, si vous voulez spécifier un bloc basé uniquement sur la correspondance à un ip, alors mettez pour l'hostname quelque chose d'invalide, tel que "hostname PERSONNE;",
cela permettra au bloc de ne vérifier que la correspondance de l'ip.
</p>
<p>
<b>ip</b><br>
L'ip mask est de la forme user@ip, user est l'ident et souvent est défini par *, ip est l'ipmask.
Quelques exemples : *@* (depuis n'importe où), *@192.168.* (seulement depuis les adresses commençant par 192.168), etc.
</p>
<p>
<b>host</b><br>
Également un user@host hostmask, user est souvent défini par *. Quelques exemples : *@* (n'importe où), *@*.wanadoo.fr (seulement depuis wanadoo.fr).
</p>
<p>
<b>password</b> (optionnel)<br>
Requiert un mot de passe à la connexion. Vous pouvez également spécifier une méthode de chiffrage des mots de passe ici.
</p>
<p>
<b>class</b><br>
Spécifie le nom de la classe dans laquelle les connexions correspondant à cet allow block sont placées.
</p>
<p>
<b>maxperip</b> (optionnel, mais recommendé)<br>
Vous permet de spécifier combien de connexions à ce serveur sont autorisées par une même ip (exemple : maxperip 4;).
</p>
<p id="allowblock_ipv6clonemask">
<b>ipv6-clone-mask</b> (optionnel, par défaut <a href="#set_defaultipv6clonemask">set::default-ipv6-clone-mask</a>)<br>
Cette option contrôle la détection des clônes.
Si deux clients se connectent depuis deux adresses IPv6 qui ne diffèrent que par leurs derniers bits, il est presque garanti que ces deux clients sont une seule et même personne.
Cette option ne fait qu'affecter le fonctionnement de<a href="#allowblock_maxperip">allow::maxperip</a>.
Par exemple, si vous définissez cette option à 128, alors toutes les adresses IPv6 seront considérées comme uniques.
En raison de la politique actuelle d'attribution des adresses IP, il est recommandé que votre <a href="#allowblock">Allow block</a> le plus général utilise une valeur de 64.
</p>
<p>
<b>redirect-server</b> (optionnel)<br>
Si la classe est pleine, les utilisateurs seront redirigés vers ce serveur (si les clients le supporte [mIRC 6 le fait]).
</p>
<p>
<b>redirect-port</b> (optionnel)<br>
Si un serveur de redirection est spécifié vous pouvez définir le port ici, sinon ce sera le 6667.
</p>
<p>
<b>options block</b> (optionnel)<br>
Les options valides sont :<br>
&nbsp;&nbsp;&nbsp;<b>useip</b> toujours afficher l'ip à la place de l'hostname<br>
&nbsp;&nbsp;&nbsp;<b>noident</b> n'utilise pas d'ident mais l'username spécifié par le client<br>
&nbsp;&nbsp;&nbsp;<b>ssl</b> ne fonctionne que si le client est connecté via ssl<br>
&nbsp;&nbsp;&nbsp;<b>nopasscont</b> continue de tester les concordances si aucun mot de passe n'est donné (ainsi vous pourrez mettre des clients dans des classes spéciales si ils fournissent un mot de passe).
</p>
<p>
Exemples :
</p>
<pre>allow {
ip *;
hostname *;
class clients;
maxperip 5;
};
allow {
ip *@*;
hostname *@*.passworded.ugly.people;
class clients;
password "f00Ness";
maxperip 1;
};
</pre>
</div>
<p id="listenblock">
<font class="block_section">4.6 - </font><font class="block_name">Listen Block</font> <font class="block_required">OBLIGATOIRE</font> <font class="block_old">(Connu précédemment comme P:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>listen &lt;ip:port&gt; {
options {
&lt;option&gt;;
&lt;option&gt;;
...
};
};</pre>
<p>
Ce bloc vous permet de spécifier les ports d'écoute de votre IRCd.
Si aucune option n'est requise, vous pouvez le spécifier sans aucune directive sous la forme listen &lt;ip:port&gt;;.
</p>
<p>
<b>IP et port</b><br>
Vous pouvez mettre * comme valeur pour IP pour toutes les accepter, ou en spécifier une pour accepter uniquement les connexions sur cette ip (habituellement requis chez des loueurs de shell).
Le port est le port que vous voulez écouter.
Vous pouvez également spécifier un intervalle de ports à la place d'une valeur unique.
Par exemple, 6660-6669 écoutera du port 6660 au port 6669 (inclus).
Pour les utilisateur d'IPv6, voir ci-dessous.
</p>
<p>
<b>Info pour les utilisateurs de l'IPv6</b><br>
Si vous avez un serveur IPv6 vous devrez inclure les IP entre crochets, par exemple [::1]:6667 (écouter en localhost sur le port 6667).
Si vous utilisez l'IPv6 et que vous voulez écouter une adresse Ipv4 spécifique vous devrez utiliser ::ffff:&lt;IPv4ip&gt;.
Par exemple : [::ffff:203.123.67.1]:6667 qui écoutera l'IP 203.123.67.1 sur le port 6667.
Évidemment, vous pouvez aussi utiliser *.
</p>
<p>
<b>options block</b> (optionnel)<br>
Vous pouvez préciser des options spéciales pour ce port si vous le souhaitez, les options possibles sont :
</p>
<table border="0">
<tr>
<th><center>clientsonly</center></th>
<td>Port réservé aux clients</td>
</tr>
<tr>
<th><center>serversonly</center></th>
<td>Port réservé aux serveurs</td>
</tr>
<tr>
<th><center>java</center></th>
<td>Support CR java</td>
</tr>
<tr>
<th><center>ssl</center></th>
<td>Port SSL</td>
</tr>
</table>
<p>
Exemples :
</p>
<pre>listen *:6601 {
options {
ssl;
clientsonly;
};
};
// Si il n'y a pas d'options :
listen *:8067;
listen 213.12.31.126:6667;
listen *:6660-6669;</pre>
</div>
<p id="operblock">
<font class="block_section">4.7 - </font><font class="block_name">Oper Block</font> <font class="block_recommended">RECOMMENDE</font> <font class="block_old">(Connu précédemment comme O:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>oper &lt;name&gt; {
from {
userhost &lt;hostmask&gt;;
userhost &lt;hostmask&gt;;
};
password &lt;password&gt; { &lt;auth-type&gt;; };
require-modes &lt;modes&gt;
class &lt;class-name&gt;;
flags &lt;flags&gt;;
flags {
&lt;flag&gt;;
&lt;flag&gt;;
...
};
swhois &lt;whois info&gt;;
snomask &lt;snomask&gt;;
modes &lt;modes&gt;;
maxlogins &lt;num&gt;;
};</pre>
<p>
L'oper block vous permet d'assigner des Opérateurs IRC (IRCop ou oper) pour votre serveur.
Le <b>oper::</b> spécifie le login pour la commande /oper.
Le <b>oper::from::userhost</b> est le masque user@host auquel l'utilisateur doit correspondre, vous pouvez spécifier plus qu'un seul hostmask en créant plusieurs oper::from::userhost.
Le paramètre facultatif <b>oper::require-modes</b> vous permet de spécifier des modes (tels que<em>r</em> ou <em>z</em>) qu'un utilisateur doit avoir avant d'être autorisé à se connecter comme opérateur.
Ceci peut être utilisé pour forcer les utilisateurs à se connecter avec Nickserv ou d'utiliser des connexions sécurisées avant de pouvoir devenir opérateurs.
</p>
<p id="operblock_password">
Le <b>oper::password::</b> est le mot de passe que l'opérateur doit indiquer.
<b>oper::password::auth-type</b> vous permet de spécifier une méthode d'authentification du mot de passe.
Ne précisez pas d'<b>oper::password::auth-type</b> pour un mot de passe en clair.<br/>
Les auth-types valides, ainsi qu'un exemple de comment les utiliser avec un bloc oper, peuvent être trouvés dans la section <a href="#feature_authtypes">Types d'Authentication</a>.
</p>
<p>
<b>Attention :</b> les login et mot de passe sont tous deux sensibles à la case : les majuscules et les minuscules ont leur importance.
</p>
<p>
La directive <b>oper::class</b> spécifie le nom d'une classe préexistante (donc qui apparaît avant dans le fichier de configuration) que le oper block utilisera.
</p>
<p>
La directive <b>oper::flags</b> a deux formats.
Si vous voulez utiliser l'ancien style d'oper flags, par exemple <tt>OAa</tt>, vous utilisez la méthode <i>flags &lt;flags&gt;;</i>, si vous voulez utiliser la nouvelle méthode, alors vous utiliserez la méthode <i>flags { &lt;flag1&gt;; &lt;flag2&gt;; };</i> Ci-dessous ce trouve la liste des flags (dans les deux formats) et leurs correspondances.
</p>
<table width="75%" border="1" id="operblock_flags">
<tr>
<th width="10%">Ancien Flag</th>
<th width="16%">Nouveau Flag</th>
<th width="74%">Description</th>
</tr>
<tr>
<td style="text-align:center;">o</td>
<td style="text-align:center;">local</td>
<td>Fait de vous un Local Operator (oper du serveur)</td>
</tr>
<tr>
<td style="text-align:center;">O</td>
<td style="text-align:center;">global</td>
<td>Fait de vous un Global Operator (oper sur tous les serveurs du réseau)</td>
</tr>
<tr>
<td style="text-align:center;">C</td>
<td style="text-align:center;">coadmin</td>
<td>Fait de vous un Coadmin</td>
</tr>
<tr>
<td style="text-align:center;">A</td>
<td style="text-align:center;">admin</td>
<td>Fait de vous un Admin</td>
</tr>
<tr>
<td style="text-align:center;">a</td>
<td style="text-align:center;">services-admin</td>
<td>Fait de vous un Services Admin</td>
</tr>
<tr>
<td style="text-align:center;">N</td>
<td style="text-align:center;">netadmin</td>
<td>Fait de vous un Network Admin</td>
</tr>
<tr>
<td style="text-align:center;">r</td>
<td style="text-align:center;">can_rehash</td>
<td>Oper pouvant utiliser /rehash</td>
</tr>
<tr>
<td style="text-align:center;">D</td>
<td style="text-align:center;">can_die</td>
<td>Oper pouvant utiliser /die</td>
</tr>
<tr>
<td style="text-align:center;">T</td>
<td style="text-align:center;">can_tsctl</td>
<td>Oper pouvant utiliser /tsctl</td>
</tr>
<tr>
<td style="text-align:center;">R</td>
<td style="text-align:center;">can_restart</td>
<td>Oper pouvant utiliser /restart</td>
</tr>
<tr>
<td style="text-align:center;">h</td>
<td style="text-align:center;">helpop</td>
<td>Oper avec le usermode +h (helpop)</td>
</tr>
<tr>
<td style="text-align:center;">w</td>
<td style="text-align:center;">can_wallops</td>
<td>Oper pouvant envoyer des /wallops</td>
</tr>
<tr>
<td style="text-align:center;">g</td>
<td style="text-align:center;">can_globops</td>
<td>Oper pouvant envoyer des /globops</td>
</tr>
<tr>
<td style="text-align:center;">c</td>
<td style="text-align:center;">can_localroute</td>
<td>Peut se connecter aux serveurs localement</td>
</tr>
<tr>
<td style="text-align:center;">L</td>
<td style="text-align:center;">can_globalroute</td>
<td>Peut se connecter aux serveurs globalement</td>
</tr>
<tr>
<td style="text-align:center;">k</td>
<td style="text-align:center;">can_localkill</td>
<td>Peut /kill les utilisateurs locaux</td>
</tr>
<tr>
<td style="text-align:center;">K</td>
<td style="text-align:center;">can_globalkill</td>
<td>Peut /kill les utilisateurs globaux</td>
</tr>
<tr>
<td style="text-align:center;">b</td>
<td style="text-align:center;">can_kline</td>
<td>Peut utiliser /kline user@host</td>
</tr>
<tr>
<td style="text-align:center;">B</td>
<td style="text-align:center;">can_unkline</td>
<td>Peut utiliser /kline -user@host</td>
</tr>
<tr>
<td style="text-align:center;">n</td>
<td style="text-align:center;">can_localnotice</td>
<td>Peut envoyer des notices sur le serveur local</td>
</tr>
<tr>
<td style="text-align:center;">G</td>
<td style="text-align:center;">can_globalnotice</td>
<td>Peut envoyer des notices globales</td>
</tr>
<tr>
<td style="text-align:center;">z</td>
<td style="text-align:center;">can_zline</td>
<td>Peut utiliser /zline</td>
</tr>
<tr>
<td style="text-align:center;">t</td>
<td style="text-align:center;">can_gkline</td>
<td>Peut utiliser /gline, /shun et /spamfilter</td>
</tr>
<tr>
<td style="text-align:center;">Z</td>
<td style="text-align:center;">can_gzline</td>
<td>Peut utiliser /gzline</td>
</tr>
<tr>
<td style="text-align:center;">W</td>
<td style="text-align:center;">get_umodew</td>
<td>Met le umode +W lorsque vous vous oper</td>
</tr>
<tr>
<td style="text-align:center;">H</td>
<td style="text-align:center;">get_host</td>
<td>Vous applique un oper host</td>
</tr>
<tr>
<td style="text-align:center;">v</td>
<td style="text-align:center;">can_override</td>
<td>Peut utiliser l'<a href="#operoverride">OperOverride</a></td>
</tr>
<tr>
<td style="text-align:center;">q</td>
<td style="text-align:center;">can_setq</td>
<td>Peut utiliser l'usermode +q</td>
</tr>
<tr>
<td style="text-align:center;">X</td>
<td style="text-align:center;">can_addline</td>
<td>Peut utiliser /addline</td>
</tr>
<tr>
<td style="text-align:center;">d</td>
<td style="text-align:center;">can_dccdeny</td>
<td>Peut utiliser /dccdeny et /undccdeny</td>
</tr>
</table>
<p>
Certains flags vous en donnent d'autres par défaut :
</p>
<table border="1" width="59%">
<tr>
<th width="19%">local</th>
<th width="17%">global</th>
<th width="19%">admin/coadmin</th>
<th width="22%">services-admin</th>
<th width="23%">netadmin</th>
</tr>
<tr>
<td>can_rehash</td>
<td>can_rehash</td>
<td>can_rehash</td>
<td>can_rehash</td>
<td>can_rehash</td>
</tr>
<tr>
<td>helpop</td>
<td>helpop</td>
<td>helpop</td>
<td>helpop</td>
<td>helpop</td>
</tr>
<tr>
<td>can_globops</td>
<td>can_globops</td>
<td>can_globops</td>
<td>can_globops</td>
<td>can_globops</td>
</tr>
<tr>
<td>can_wallops</td>
<td>can_wallops</td>
<td>can_wallops</td>
<td>can_wallops</td>
<td>can_wallops</td>
</tr>
<tr>
<td>can_localroute</td>
<td>can_localroute</td>
<td>can_localroute</td>
<td>can_localroute</td>
<td>can_localroute</td>
</tr>
<tr>
<td>can_localkill</td>
<td>can_localkill</td>
<td>can_localkill</td>
<td>can_localkill</td>
<td>can_localkill</td>
</tr>
<tr>
<td>can_kline</td>
<td>can_kline</td>
<td>can_kline</td>
<td>can_kline</td>
<td>can_kline</td>
</tr>
<tr>
<td>can_unkline</td>
<td>can_unkline</td>
<td>can_unkline</td>
<td>can_unkline</td>
<td>can_unkline</td>
</tr>
<tr>
<td>can_localnotice</td>
<td>can_localnotice</td>
<td>can_localnotice</td>
<td>can_localnotice</td>
<td>can_localnotice</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>can_globalroute</td>
<td>can_globalroute</td>
<td>can_globalroute</td>
<td>can_globalroute</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>can_globalkill</td>
<td>can_globalkill</td>
<td>can_globalkill</td>
<td>can_globalkill</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>can_globalnotice</td>
<td>can_globalnotice</td>
<td>can_globalnotice</td>
<td>can_globalnotice</td>
</tr>
<tr style="font-style:italic;">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>global</td>
<td>global</td>
<td>global</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>can_dccdeny</td>
<td>can_dccdeny</td>
<td>can_dccdeny</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>can_setq</td>
<td>can_setq</td>
</tr>
<tr style="font-style:italic;">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>admin</td>
</tr>
<tr style="font-style:italic;">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>services-admin</td>
</tr>
</table>
<p>
La directive <b>oper::swhois</b> vous permet d'ajouter une ligne supplémentaire dans le whois d'un oper. <font color="blue">[optionnel]</font>
</p>
<p>
La directive <b>oper::snomask</b> vous permet d'obtenir automatiquement les snomaks que vous souhaitez lors d'un /oper.
Pour avoir la liste des Snomasks disponibles reportez vous à la <a href="#feature_snomasks">Section 3.3</a>. <font color="blue">[optionnel]</font>
</p>
<p>
La directive <b>oper::modes</b> vous permet de prédéfinir des usermodes pour l'oper lors de l'identification. <font color="blue">[optionnel]</font>
</p>
<p>
La directive <b>oper::maxlogins</b> vous permet de restreindre le nombre de login oper concurrent
pour un host, par exemple si vous définissez 1 alors, une seule personne pourra se connecter avec ce bloc. <font color="blue">[optionnel]</font>
</p>
<p>
Exemple :
</p>
<pre>oper bobsmith {
class clients;
from {
userhost bob@smithco.com;
userhost boblaptop@somedialupisp.com;
};
password "f00";
flags {
netadmin;
can_gkline;
can_gzline;
can_zline;
can_restart;
can_die;
global;
};
swhois "Example of a whois mask";
snomask cFfkoSsqNG;
};</pre>
<p id="operoverride">
<b>Quelques petites informations à propos de l'OperOverride :</b><br>
L'OperOverride permet aux opers des choses comme joindre un salon malgré les modes +ikl et passer outre les bans (vous devrez d'abord vous inviter avec <i>/invite Pseudo #salon</i>), vous mettre opérateur du salon, etc ...<br>
Le flag can_override a été ajouté de manière à éviter les abus de pouvoirs d'opérateurs IRC.
Aucun oper n'est capable d'override par défaut, vous devez leur donner explicitement le flag can_override.
</p>
</div>
<p id="drpassblock">
<font class="block_section">4.8 - </font><font class="block_name">DRpass Block</font> <font class="block_recommended">RECOMMENDE</font> <font class="block_old">(connu précédemment comme X:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>drpass {
restart &lt;restart-password&gt; { &lt;auth-type&gt;; };
die &lt;die-password&gt; { &lt;auth-type&gt;; };
};</pre>
<p>
Ce bloc définit les mots de passe nécessaire pour utiliser les commandes /restart et /die avec respectivement drpass::restart et drpass::die.
Au lieu d'un mot de passe en clair, vous pouvez aussi utiliser d'autres <a href="#feature_authtypes">Types d'Authentication</a>
</p>
<p>
Exemple :
</p>
<pre>drpass {
restart "I-love-to-restart";
die "die-you-stupid";
};</pre>
</div>
<p id="includedirective">
<font class="block_section">4.9 - </font><font class="block_name">Directive Include</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>include &lt;file-name&gt;;</pre>
<p>
Cette directive spécifie le nom de fichier devant être chargé comme fichier de configuration séparé.
Ce fichier peut contenir n'importe quel type de bloc de configuration et peut également inclure d'autres fichiers.
Les wildcards (*) sont supporté dans le nom du fichiers pour vous permettre de charger plusieurs fichiers en une fois.
</p>
<a href="#tldblock">tld</a> or <a href="#filesblock">files</a> block
<p>
<b>Exemple 1 :</b> un fichier réseau :
</p>
<pre>include mynetwork.network;</pre><p></p>
<p>
Ce sera la syntaxe à utiliser si vous voulez utiliser un fichier réseau séparé.
Les fichiers réseaux séparés ne sont plus requis et tous les paramètres réseaux peuvent être insérés directement dans
unrealircd.conf.
Ou vous pouvez mettre un include pour les charger depuis le fichier.
</p>
<p>
<b>Exemple 2 : définir des alias :</b><br>
</p>
<pre>include aliases/ircservices.conf;</pre>
<p>
Vous pouvez par exemple inclure des <a href="#aliasblock">alias blocks</a>.
UnrealIRCd est fourni avec des fichiers contenant les alias correspondants à différents services :
</p>
<ul>
<li>aliases/ircservices.conf (IRCServices, Daylight)</li>
<li>aliases/epona.conf (Epona)</li>
<li>aliases/anope.conf (Anope)</li>
<li>aliases/auspice.conf (Auspice)</li>
<li>aliases/generic.conf (Magick, Sirius, Wrecked)</li>
<li>aliases/cygnus.conf (Cygnus)</li>
<li>aliases/operstats.conf (OperStats)</li>
<li>aliases/genericstats.conf (GeoStats, NeoStats)</li>
</ul>
</div>
<p id="loadmoduledirective">
<font class="block_section">4.10 - </font><font class="block_name">Directive LoadModule</font> <font class="block_required">OBLIGATOIRE</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>loadmodule &lt;file-name&gt;;</pre>
<p>
Reportez-vous <a href="#feature_modules">ici</a> pour voir pourquoi les modules sont pratiques et utiles.
</p>
<p>
Modules fournis avec Unreal3.2 :
</p>
<ul>
<li>
<b>commands.so</b> / <b>commands.dll</b> : Toutes les commandes du serveur (en réalité pas encore toutes, mais le sera probablement) <font color="red">OBLIGATOIRE</font>
</li>
<li>
<b>cloak.so</b> / <b>cloak.dll</b> : Module de Cloaking par défaut <font color="red">OBLIGATOIRE</font> (ou n'importe quel autre module de cloaking)
</li>
</ul>
<p>
Vous voulez être sûr que ces deux modules sont chargés :
</p>
<pre>// sur *UNIX :
loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";
// OU sur Windows :
loadmodule "modules/commands.dll";
loadmodule "modules/cloak.dll";</pre>
</div>
<p id="logblock">
<font class="block_section">4.11 - </font><font class="block_name">Log Block</font> <font class="block_recommended">RECOMMANDE</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>log &lt;file-name&gt; {
maxsize &lt;max-file-size&gt;;
flags {
&lt;flag&gt;;
&lt;flag&gt;;
...
};
};</pre>
<p>
Le log block vous permet d'assigner différents fichiers de log pour différentes actions.
Le <b>log::</b> contient le nom du fichier de log.
<b>log::maxsize</b> est une directive optionnelle vous permettant de spécifier la taille à laquelle vous voulez que le fichier soit effacé et relancé.
Vous pouvez utiliser MB pour méga-octets (megabytes), KB pour kilo-octets, GB pour giga-octets.
Le <b>log::flags</b> spécifie quel type d'information sera dans ce log.
Ci-dessous la liste des flags disponibles.
</p>
<p>
Vous pouvez également avoir plusieurs log block, pour loguer différentes choses dans des fichiers différents.
</p>
<p>
<b>Flags disponibles:</b>
</p>
<table border="0">
<tr>
<td>errors</td>
<td>erreurs de l'IRCd</td>
</tr>
<tr>
<td>kills</td>
<td>notices de /kill</td>
</tr>
<tr>
<td>tkl</td>
<td>infos sur les *lines (/kline, /zline, etc), shun et filtres spamfilter (ajout/suppression/expiration)</td>
</tr>
<tr>
<td>connects</td>
<td>connexions et déconnexions des utilisateurs</td>
</tr>
<tr>
<td>server-connects</td>
<td>connexions et squit des serveurs</td>
</tr>
<tr>
<td>oper</td>
<td>tentatives de s'oper (réussies et ratées)</td>
</tr>
<tr>
<td>sadmin-commands</td>
<td>utilisations des commandes /sa* (samode, sajoin, sapart, etc)</td>
</tr>
<tr>
<td>chg-commands</td>
<td>utilisations des commandes /chg* (chghost, chgname, chgident, ect.)</td>
</tr>
<tr>
<td>oper-override</td>
<td>utilisations des OperOverrides</td>
</tr>
<tr>
<td>spamfilter</td>
<td>concordances aux filtres spamfilter</td>
</tr>
</table>
<p>
Exemple :
</p>
<pre>log ircd.log {
maxsize 5MB;
flags {
errors;
kills;
oper;
tkl;
};
};</pre>
</div>
<p id="tldblock">
<font class="block_section">4.12 - </font><font class="block_name">TLD Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme T:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>tld {
mask &lt;hostmask&gt;;
motd &lt;motd-file&gt;;
rules &lt;rules-file&gt;;
shortmotd &lt;shortmotd-file&gt;;
opermotd &lt;opermotd-file&gt;;
botmotd &lt;botmotd-file&gt;;
channel &lt;channel-name&gt;;
options {
ssl;
};
};</pre>
<p>
Le tld block vous permet de spécifier un <acronym title="message of the day">motd</acronym> (message d'accueil à la connexion au serveur), des rules (règles) et salon par défaut pour un utilisateur en se basant sur son host.
C'est utile si vous voulez différents motd pour différentes langues.
</p>
<p>
Le <b>tld::mask</b> est un masque user@host auquel l'username et l'host de l'utilisateur doivent
correspondre.
Les <b>tld::motd</b>, <b>tld::shortmotd</b>,<b>tld::opermotd</b>,<b>tld::botmotd</b> et <b>tld::rules</b> spécifient respectivement les fichiers motd, shortmotd, opermotd, botmotd et rules qui doivent être affichés pour un hostmask.
Les <i>tld::shortmotd</i>, <i>tld::opermotd</i>, et <i>tld::botmotd</i> sont optionnels.
<b>tld::channel</b> est aussi optionnel et vous permet de spécifier un salon que cet utilisateur sera forcé de joindre à sa connexion.
S'il est présent, il remplacera le auto-join channel par défaut (défini par <a href="#setblock">set::auto-join</a>).
</p>
<p>
Le bloc <b>tld::options</b> vous permet de définir des exigences supplémentaires, actuellement seules <b>tld::options::ssl</b> qui affiche seulement le fichier pour les usagers SSL et <b>tld::options::remotes</b> qui affiche seulement le fichier pour les utilisateurs distants existent.
</p>
<p>
Les entrées TLD sont vérifiées de haut en bas.
</p>
<p>
Exemple :
</p>
<pre>tld {
mask *@*.fr;
motd "ircd.motd.fr";
rules "ircd.rules.fr";
};</pre>
</div>
<p id="bannickblock">
<font class="block_section">4.13 - </font><font class="block_name">Ban Nick Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme Q:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>ban nick {
mask &lt;nickname&gt;;
reason &lt;raison-du-ban&gt;;
};</pre>
<p>
Ce bloc vous permet d'interdire l'utilisation d'un pseudo sur le serveur.
Le ban::mask permet des masques avec joker (*), afin de correspondre à plusieurs pseudos, et ban::reason vous permet de spécifier la raison pour laquelle ce ban a été placé.
Le plus souvent ces blocs sont utilisés pour bannir l'usage de pseudos généralement utilisés par des services réseaux, comme NickServ.
</p>
<p>
Exemple :
</p>
<pre>ban nick {
mask "*C*h*a*n*S*e*r*v*";
reason "Reserved for Services";
};</pre>
</div>
<p id="banuserblock">
<font class="block_section">4.14 - </font><font class="block_name">Ban User Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme K:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>ban user {
mask &lt;user@host&gt;;
reason &lt;raison-du-ban&gt;;
};</pre>
<p>
Ce bloc vous permet de bannir un masque user@host à sa connexion au serveur.
Le ban::mask est une version avec joker du user@host à bannir et ban::reason est la raison pour laquelle ce ban a été placé.
Notez que ceci est uniquement un ban local et l'utilisateur peut toujours se connecter à un autre serveur pour rejoindre le réseau.
</p>
<p>
Exemple :
</p>
<pre>ban user {
mask *tirc@*.saturn.bbn.com;
reason "Idiot";
};</pre>
</div>
<p id="banipblock">
<font class="block_section">4.15 - </font><font class="block_name">Ban IP Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme Z:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>ban ip {
mask &lt;ipmask&gt;;
reason &lt;raison-du-ban&gt;;
};</pre>
<p>
Ce bloc vous permet de bannir une IP lorsqu'il se connecte au serveur.
Cela inclus aussi bien les utilisateurs que les serveurs qui essayent de se connecter.
Le paramètre ban::mask est un IP pouvant contenir un joker (*) et ban::reason est la raison pour laquelle ce ban a été placé.
Comme ce ban affecte les serveurs, il doit être utilisé très prudemment.
</p>
<p>
Exemple :
</p>
<pre>ban ip {
mask 192.168.1.*;
reason "Get a real ip u lamer!";
};</pre><p></p>
<p>
</p>
</div>
<p id="banserverblock">
<font class="block_section">4.16 - </font><font class="block_name">Ban Server Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme q:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>ban server {
mask &lt;server-name&gt;;
reason &lt;raison-du-ban&gt;;
};</pre>
<p>
Ce bloc empêche un serveur de se connecter au réseau.
Si le serveur se link directement à votre serveur, le link sera rejeté.
Si le serveur se link à un autre serveur, le serveur local se déconnectera du réseau.
Le champ ban::mask spécifie un masque avec joker à confronter au nom du serveur tentant de se connecter et ban::reason spécifie la raison pour laquelle ce ban a été placé.
</p>
<p>
Exemple :
</p>
<pre>ban server {
mask broken.server.my.network.com;
reason "Its broken!";
};</pre>
</div>
<p id="banrealnameblock">
<font class="block_section">4.17 - </font><font class="block_name">Ban RealName Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme n:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>ban realname {
mask &lt;realname-mask&gt;;
reason &lt;raison-du-ban&gt;;
};</pre>
<p>
Le ban realname block vous permet de bannir un client basé sur le champs GECOS (realname).
Cela est utilisé pour empêcher les flood de clônes car souvent les bots clônes utilisent le même realname.
Le ban::mask spécifie le realname devant être banni.
Le masque peut contenir un joker.
Le ban::reason spécifie pour ce ban a été placé.
</p>
<p>
Exemple :
</p>
<pre>ban realname {
mask "Bob*";
reason "Bob sucks!";
};</pre>
</div>
<p id="banversionblock">
<font class="block_section">4.18 - </font><font class="block_name">Ban Version Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>ban version {
mask &lt;version-mask&gt;;
reason &lt;raison-du-ban&gt;;
action [kill|tempshun|shun|kline|zline|gline|gzline];
};</pre>
<p>
Le ban version block vous permet de bannir un utilisateur pour l'utilisation du client IRC qu'il utilise.
Ceci se base sur la réponse au CTCP version envoyé au client.
Il est donc bien entendu que si le client n'envoie pas de réponse au CTCP version, le ban ne fonctionnera pas.
Cette fonction vous permet de bloquer des scripts dangereux.
</p>
<p>
Le <b>ban::mask</b> spécifie la version devant être bannie.
Le mask peut contenir un joker.
Le <b>ban::reason</b> spécifie la raison pour laquelle le ban a été placé.
Vous pouvez également spécifier <b>ban::action</b>, <i>kill</i> est la valeur par défaut,
<i>tempshun</i> shunera uniquement la connexion de l'utilisateur et devrait fonctionner très efficacement contres les bots/zombies avec des IPs dynamiques car il n'affectera pas les utilisateurs innocents.
<i>shun/kline/zline/gline/gzline</i> placeront un ban de ce type sur l'ip (*@IPADDR), la durée de ce ban peut être configurée avec set::ban-version-tkl-time et est de 1 jour par défaut.
</p>
<p>
Exemples :
</p>
<pre>ban version {
mask "*SomeLameScript*";
reason "SomeLameScript contains backdoors";
};
ban version {
mask "*w00tZombie*";
reason "I hate those hundreds of zombies";
action zline;
};</pre>
</div>
<p id="banexceptionblock">
<font class="block_section">4.19 - </font><font class="block_name">Ban Exceptions Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme E:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>except ban {
mask &lt;hostmask&gt;;
};</pre>
<p>
L'except ban block vous permet de spécifier un user@host qui outrepassera un ban {}, une Kline ou une Zline placés sur une plage de host.
Ceci est très utile lorsque vous voulez bannir un FAI, mais que vous voulez que certains utilisateurs spécifiques puissent toujours se connecter.
La directive except::mask spécifie le masque user@host du client qui sera autorisé à se connecter.
</p>
<p>
NOTE : Si vous voulez exempter complètement un host de toutes les formes de bans possibles (sauf un ban de spamfilter), vous aurez besoin à la fois d'un bloc 'except ban' et d'un bloc 'except tkl'.
</p>
<p>
Exemple :
</p>
<pre>except ban {
mask myident@my.isp.com;
};</pre>
</div>
<p id="tklexceptionblock">
<font class="block_section">4.20 - </font><font class="block_name">TKL Exceptions Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>except tkl {
mask &lt;hostmask&gt;;
type &lt;type&gt;;
type {
&lt;type&gt;;
&lt;type&gt;;
...
};
};</pre>
<p>
L'except tkl block vous permet de spécifier un user@host qui pourra outrepasser un ban TKL placé sur une plage de host.
Ceci est très utile lorsque vous voulez bannir un FAI, mais que vous voulez que certains utilisateurs spécifiques puissent toujours se connecter.
La directive except::mask spécifie le masque user@host du client qui sera autorisé à se connecter.
L' except::type spécifie quel type de ban pourra être outrepassé.
Les types valides sont gline, gzline, qline, gqline, shun et all qui feront respectivement une exception pour les Glines, Global Zlines, Qlines, Global Qlines, Shuns et tous les types, sauf les Klines et les Zlines.
Si le format {} est utilisé, plusieurs types peuvent être spécifiés.
</p>
<p>
NOTE : Si vous voulez exempter complètement un host de toutes les formes de bans possibles (sauf un ban de spamfilter), vous aurez besoin à la fois d'un bloc 'except ban' et d'un bloc 'except tkl'.
</p>
<p>
Exemple :
</p>
<pre>except tkl {
mask myident@my.isp.com;
type gline;
};</pre>
</div>
<p id="throttleexceptionblock">
<font class="block_section">4.21 - </font><font class="block_name">Throttle Exceptions Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>except throttle {
mask &lt;ipmask&gt;;
};</pre>
<p>
L'except throttle block vous permet de spécifier une IP qui pourra outrepasser le throttling system.
Ceci fonctionne uniquement si vous avez choisi d'activer le throttling.
L'except::mask spécifie l'IP qui ne sera pas bannie à cause du throttling.
</p>
<p>
Exemple :
</p>
<pre>except throttle {
mask 192.168.1.*;
};</pre>
</div>
<p id="denydccblock">
<font class="block_section">4.22 - </font><font class="block_name">Deny DCC Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme dccdeny.conf)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>deny dcc {
filename &lt;file-to-block&gt;;
reason &lt;raison-du-ban&gt;;
soft [yes|no];
};</pre>
<p>
Le deny dcc block vous permet de spécifier un nom de fichier qui ne pourra être envoyé par DCC via le serveur.
Ceci est très utile pour stopper la propagation de virus et/ou trojans.
</p>
<p>
Le paramètre <b>deny::filename</b> spécifie un masque avec joker du nom de fichier à rejeter et <b>deny::reason</b> spécifie la raison pour laquelle ce fichier est bloqué.
</p>
<p>
Il existe aussi une option <b>deny::soft</b> .
Si elle a la valeur 'yes' (oui) le dcc sera bloqué à moins que l'utilisateur le permette explicitement via /DCCALLOW + pseudo-essayant-d'envoyer.
Regardez le dccallow.conf pour avoir un bon exemple de configuration pour dccallow.
</p>
<p>
Exemples:
</p>
<pre>deny dcc {
filename virus.exe;
reason "This is a GD Virus";
};
deny dcc {
filename "*.exe";
reason "Executable content";
soft yes;
};</pre>
</div>
<p id="denyversionblock">
<font class="block_section">4.23 - </font><font class="block_name">Deny Version Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme V:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>deny version {
mask &lt;server-name&gt;;
version &lt;version-number&gt;;
flags &lt;compile-flags&gt;;
};</pre>
<p>
Ce bloc vous permet d'interdire à un serveur de se linker en fonction de sa version d'Unreal et des options de compilations.
Le format pour ce bloc est un peu complexe mais il n'est pas trop difficile à comprendre.
La directive deny::mask spécifie le nom du serveur (avec joker) auquel il s'applique.
</p>
<p>
Le deny::version spécifie le numéro de protocole de la version qu'on veut interdire.
Par exemple, 3.0 est 2301, 3.1.1/3.1.2 est 2032, 3.2 est 2303.
Le premier caractère de ce paramètre peut être un des suivant &gt;, &lt;, =, !.
Ce caractère dit à l'IRCd comment interpréter la version.
Si ce caractère est un &gt; alors toutes les versions supérieures à celle spécifiée seront interdites.
Si c'est un &lt; toutes les versions inférieures seront interdites.
Si c'est un = seulement cette version sera interdite.
Si c'est un ! alors toutes les versions seront interdites exceptée celle spécifiée.
</p>
<p>
La directive deny::flags vous permet de spécifier quelles options de compilations flag le serveur doit ou ne doit pas avoir.
Les flags sont placés l'un après l'autre sans séparation entre eux.
Si un caractère est précédé d'un !, le serveur ne doit pas être compilé avec ce flag, sinon s'il n'y a pas de préfixe ! alors le serveur doit être compilé avec ce flag.
</p>
</div>
<p id="denylinkblock">
<font class="block_section">4.24 - </font><font class="block_name">Deny Link Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme D/d:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>deny link {
mask &lt;server-name&gt;;
rule &lt;crule-expression&gt;;
type &lt;type-of-denial&gt;;
};</pre><p></p>
<p>
Ce bloc vous permets d'utiliser des règles spécifiques pour interdire le link d'un serveur.
Le deny::mask spécifie un nom de serveur (avec joker) auquel cette règle s'applique.
La directive deny::rules est très complexe.
</p>
<p>
Une expression "crule" vous permet de contrôler le link en détail, et s'écrit comme une ligne d'un langage de programmation.
Quatre opérateurs sont supportés :
</p>
<ul>
<li><b>connected(&lt;servermask&gt;)</b> : retourne vrai si un serveur correspondant au servermask est connecté</li>
<li><b>directcon(&lt;servermask&gt;)</b> : retourne vrai si un serveur correspondant au servermask est directement connecté à ce serveur</li>
<li><b>via(&lt;viamask&gt;,&lt;servermask&gt;)</b> : retourne vrai si un serveur correspondant au servermask est connecté sur un serveur correspondant au viamask</li>
<li><b>directop()</b> : si l'IRCop utilisant /connect est directement connecté sur ce serveur</li>
</ul>
<p>
Ces opérateurs peuvent être combinés en utilisant &amp;&amp; (et) et || (ou), les items peuvent également être mis entre parenthèses pour permettre le regroupement.
De plus, un opérateur précédé d'un ! vérifie si l'opérateur retourne faux.
Si l'expression est évaluée comme entièrement vraie, alors le link est refusé.
</p>
<p>
Le deny::type permet deux valeurs différentes, auto (s'applique uniquement aux autoconnexions, /connect fonctionnera toujours), et all
(s'applique à toutes les tentatives de connexion).
</p>
</div>
<p id="denychannelblock">
<font class="block_section">4.25 - </font><font class="block_name">Deny Channel Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme chrestrict.conf)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>deny channel {
channel "&lt;channel-mask&gt;";
reason &lt;raison-du-ban&gt;;
redirect "&lt;channel-name&gt;";
warn [on|off];
};</pre>
<p>
Le deny channel block vous permet d'interdire aux utilisateurs de rejoindre un salon.
La directive <b>deny::channel</b> spécifie le nom d'un salon (avec joker) que les utilisateurs ne pourront rejoindre et le <b>deny::reason</b> spécifie la raison pour laquelle le salon ne peut être rejoint.
De plus, vous pouvez spécifier un <b>deny::redirect</b>.
Si celui-ci est spécifié, lorsqu'un utilisateur essaye de rejoindre un salon correspondant à un deny::channel, il sera redirigé vers deny::redirect.
Et il y a également <b>deny::warn</b> qui (si il est activé) enverra une opernotice (au EYES snomask) si un utilisateur essaye de rejoindre le salon.
</p>
<p>
Exemples :
</p>
<pre>deny channel {
channel "#unrealsucks";
reason "No it don't!";
};
deny channel {
channel "#*teen*sex*";
reason "You == dead";
warn on;
};
deny channel {
channel "#operhelp";
reason "Our network help channel is #help, not #operhelp";
redirect "#help";
};</pre>
</div>
<p id="allowchannelblock">
<font class="block_section">4.26 - </font><font class="block_name">Allow Channel Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>allow channel {
channel "&lt;channel-mask&gt;";
};</pre><p></p>
<p>
Le allow channel block vous permet de spécifier des salons que les utilisateurs pourront joindre, même s'ils sont bloqués par un <i>deny::channel</i>.
La directive allow::channel spécifie les noms de salon avec joker pouvant être rejoint.
<p>
Exemple :
</p>
<pre>allow channel {
channel "#something";
};</pre>
</div>
<p id="allowdccblock">
<font class="block_section">4.27 - </font><font class="block_name">Allow DCC Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>allow dcc {
filename "&lt;filename-mask&gt;";
soft [yes|no];
};</pre>
<p>
Le allow dcc block vous permet de spécifier des exceptions au deny dcc block, les jokers sont permis.
Si <b>allow dcc::soft</b> est mis à 'yes' il s'applique à la liste des 'soft dcc bans', si il est mis à 'no' il s'applique à la liste des dcc bans normaux ('hard').
</p>
<p>
Exemple :
</p>
<pre>allow dcc {
filename "*.jpg"; /* Les images sont généralement sans danger */
soft yes;
};</pre>
</div>
<p id="vhostblock">
<font class="block_section">4.28 - </font><font class="block_name">Vhost Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme vhosts.conf)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>vhost {
vhost &lt;vhost&gt;;
from {
userhost &lt;hostmask&gt;;
userhost &lt;hostmask&gt;;
...
};
login &lt;login-name&gt;;
password &lt;password&gt; { &lt;auth-type&gt;; };
swhois "&lt;swhois info&gt;";
};</pre>
<p>
Le vhost block vous permet de spécifier un login/mot de passe pouvant être utilisé avec la commande /vhost pour obtenir un faux hostname.
Le paramètre vhost::vhost peut être un user@host ou juste un host que l'utilisateur recevra après un /vhost réussi.
Le vhost::from::userhost contient un user@host auquel l'utilisateur doit correspondre pour être éligible pour un vhost.
Vous pouvez spécifier plus d'un hostmask.
</p>
<p>
Le vhost::login est le login que l'utilisateur doit rentrer et vhost::password est le mot de passe devant être entré
Le vhost::password:: vous permet de spécifier le type d'authentification utilisé par cet élément.
Voir <a href="#feature_authtypes">Types d'Authentication</a> pour la liste des types disponibles.
</p>
<p>
Enfin, vhost::swhois vous permet d'ajouter un ligne supplémentaire au whois des utilisateurs, exactement comme dans le oper block oper::swhois.
</p>
<p>
Exemple :
</p>
<pre>vhost {
vhost my.own.personal.vhost.com;
from {
userhost my@isp.com;
userhost myother@isp.com;
};
login mynick;
password mypassword;
swhois "Im Special";
};</pre>
</div>
<p id="badwordblock">
<font class="block_section">4.29 - </font><font class="block_name">Badword Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme badwords.*.conf)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>badword &lt;type&gt; {
word &lt;text-to-match&gt;;
replace &lt;replace-with&gt;;
action &lt;replace|block&gt;;
};</pre>
<p>
Le badword block vous permet de manipuler la liste utilisée pour le mode utilisateur et salon +G pour censurer les 'mauvais mots'.
</p>
<p>
<b>badword::</b> spécifie le type de messages auquel ce filtre s'applique. Les types valides sont :
</p>
<ul>
<li><tt>channel</tt> s'applique aux messages à l'intérieur des salons +G</li>
<li><tt>message</tt> s'applique aux messages privés reçus par un utilisateur +G</li>
<li><tt>quit</tt> s'applique à tous les messages de quit</li>
<li><tt>all</tt> correspond à ces trois situations</li>
</ul>
<p>
Le <b>badword::word</b> peut être un simple mot ou une <a href="#regex">expression régulière</a> à rechercher.
Le <b>badword::replace</b> est ce par quoi le mot doit être remplacé.
Si <b>badword::replace</b> n'est pas spécifié, le mot est remplacé par &lt;censored&gt;.
Le <b>badword::action</b> défini quelle action doit être réalisée si un mauvais mots est trouvé.
Si vous spécifiez replace, alors seul le mot censuré est remplacé, si vous spécifez block, le message entier sera bloqué.
Si vous ne spécifiez pas de <b>badword::action</b>, le mot sera remplacé.
</p>
<p>
Exemple :
</p>
<pre>badword channel {
word shit;
replace shoot;
};</pre>
</div>
<p id="ulinesblock">
<font class="block_section">4.30 - </font><font class="block_name">ULines Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme the U:Line)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>ulines {
&lt;server-name&gt;;
&lt;server-name&gt;;
...
};</pre><p></p>
<p>
Le ulines block vous permet de définir certains serveurs comme ayant des possibilités supplémentaires.
Ceci doit uniquement être utilisé pour des serveurs comme les services et les stats.
Ceci ne doit pas être appliqué à un serveur normal.
Chaque entrée est le nom du serveur qui recevra les possibilités supplémentaires.
</p>
<p>
Exemple :
<p>
<pre>ulines {
services.mynetwork.com;
stats.mynetwork.com;
};</pre>
</div>
<p id="linkblock">
<font class="block_section">4.31 - </font><font class="block_name">Link Block</font> <font class="block_optional">OPTIONNEL</font> <font class="block_old">(connu précédemment comme C/N/H:Lines)</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>link &lt;server-name&gt; {
username &lt;usermask&gt;;
hostname &lt;ipmask&gt;;
bind-ip &lt;ip-to-bind-to&gt;;
port &lt;port-to-connect-on&gt;;
password-connect &lt;password-to-connect-with&gt;;
password-receive &lt;password-to-receive&gt; { &lt;auth-type&gt;; };
hub &lt;hub-mask&gt;;
leaf &lt;leaf-mask&gt;;
leafdepth &lt;depth&gt;;
class &lt;class-name&gt;;
ciphers &lt;ssl-ciphers&gt;;
options {
&lt;option&gt;;
&lt;option&gt;;
...
};
};</pre>
<p>
C'est le bloc dont vous avez besoin pour linker les serveurs, s'il vous plaît prenez le temps de lire tout ceci car c'est l'une des parties les plus difficiles et les utilisateurs font souvent des erreurs. ;P
</p>
<p>
D'abord <b>server-name</b> est le nom du serveur distant, le nom que le serveur distant a dans son bloc me { }, tel que hub.blabla.com (ce n'est pas l'IP et peut être différent de l'hostname).
</p>
<p>
<b>username</b><br>
Vous pouvez le spécifier si vous utilisez l'ident pour l'authentification, normalement vous mettrez "*".
</p>
<p>
<b>hostname</b><br>
L'host ou l'IP du serveur distant.
Ceci est utilisé pour la connexion et pour l'authentification / vérification du coté entrant.
Quelques exemples :
</p>
<table border="0">
<tr>
<td><i>1.2.3.4</i></td>
<td>IP normale</td>
</tr>
<tr>
<td><i>hub.blah.com</i></td>
<td>host: seulement pour une connexion sortante, ne peut accepter de connexion entrante sans la présence de link::options::nohostcheck</td>
</tr>
<tr>
<td><i>*</i></td>
<td>ne peut pas se connecter mais accepte la connexion de n'importe quel serveur (avec le bon mot de passe)</td>
</tr>
<tr>
<td><i>::ffff:1.2.3.4</i></td>
<td>pour linker de l'IPv6 à de l'IPv4.</td></tr>
</table>
<p>
<b>bind-ip</b> (optionnel)<br>
Peut être utilisé pour spécifier une IP (ex. : 192.168.0.1) depuis laquelle nous devons nous connecter, presque jamais utilisé.
</p>
<p>
<b>port</b><br>
Port auquel on se connecte (celui que le serveur distant écoutera).
</p>
<p>
<b>password-connect</b><br>
Le mot de passe utilisé pour se connecter au serveur distant, doit être écrit en clair.
</p>
<p id="linkblock_passwordreceive">
<b>password-receive</b><br>
Le mot de passe utilisé pour valider le lien entrant.
Il est très fortement recommandé d'utiliser des mots de passe hashés ou le type d'authentification <tt>sslclientcertfp</tt>.
Voir <a href="#feature_authtypes">Types d'Authentication</a> pour plus d'informations.
</p>
<p>
<b>hub et leaf</b><br>
Un hub a plusieurs serveurs linké à lui, un leaf n'a qu'un seul link ... vers vous.
Un serveur est un leaf à moins qu'il n'ait une directive hub.
C'est également un leaf si la directive leaf est *, ou si leafdepth a comme valeur 1.
</p>
<p>
<b>hub</b> (optionnel)<br>
Cette valeur est un masque des serveurs auquelx ce hub peut se connecter (ex. : *.my.net).
</p>
<p>
<b>leaf</b> (optionnel)<br>
Cette valeur est un masque des serveurs auquels ce hub <b>ne peut pas</b> se connecter.
Mettre * ici sera pareil à ne pas avoir de directive hub.
</p>
<p>
<b>leafdepth</b> (optionnel)<br>
Cette valeur spécifie la profondeur (nombre de sauts) que ce serveur peut avoir en dessous de lui.
Par exemple, 1 signifie que le serveur ne peut avoir aucun lien en dessous de lui (un leaf),
2 signifie qu'il peut être lié à des serveurs mais que ceux-ci ne peuvent avoir rien du tout en dessous d'eux (cela signifie que ce hub peut uniquement être relié à des leaf).
Une valeur de O signifie aucune limite, et c'est la valeur par défaut.
</p>
<p>
<b>class</b><br>
La classe dont ce serveur fait partie, souvent une classe de serveurs séparée est utilisé pour ceci.
</p>
<p>
<b>ciphers</b> (optionnel)<br>
Specifie le chiffrement SSL a utiliser pour ce link.
Pour obtenir une liste des chiffrements disponibles, utilisez la commande `openssl ciphers`.
Les chiffrement doivent être spécifiés comme une liste séparée par des <tt>:</tt> .
</p>
<p>
<b>options block</b><br>
Une ou plusieurs options utilisées pour se connecter à ce serveur. Parfois non requises.
</p>
<table border="0">
<tr>
<th>ssl</th>
<td>si vous êtes connecté à un port ssl.</td>
</tr>
<tr>
<th>autoconnect</th>
<td>le serveur essayera de se connecter automatiquement, la fréquence est spécifiée dans votre class::connfreq (il est mieux d'activer ceci seulement dans un sens, comme leaf-&gt;hub)</td>
</tr>
<tr>
<th>zip</th>
<td>si vous voulez des links compressés, vous devez compiler les deux serveurs concernés avec l'option zip activé</td>
</tr>
<tr>
<th>nodnscache</th>
<td>ne pas mettre en cache l'IP pour les connexions des serveurs sortants, utilisez cela pour des serveurs dont l'host change souvent (comme dyndns.org)</td>
</tr>
<tr>
<th>nohostcheck</th>
<td> ne pas valider l'host distant (link::hostname), utilisez cela pour des serveurs dont l'host change souvent (comme dyndns.org)</td>
</tr>
<tr>
<th>quarantine</th><td>les opers sur ce serveur ne pourront pas accéder au status de globop (ils seront killés), utilisés pour tester des serveurs et autres.</td>
</tr>
</table>
<p>
Exemple :
</p>
<pre>link hub.mynet.com {
username *;
hostname 1.2.3.4;
bind-ip *;
port 7029;
hub *;
password-connect "LiNk";
password-receive "LiNk";
class servers;
options {
autoconnect;
ssl;
zip;
};
};</pre>
</div>
<p id="aliasblock">
<font class="block_section">4.32 - </font><font class="block_name">Alias Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe des alias standards :
</p>
<pre>alias &lt;name&gt; {
target &lt;nick-to-forward-to&gt;;
type &lt;type-of-alias&gt;;
spamfilter &lt;yes|no&gt;;
};</pre>
<p>
(Note 1 : la notation "<b>alias::</b>" fait référence à <span class="inline_pre">&lt;name&gt;</span>)<br>
(Note 2 : référez-vous à la <a href="#includedirective">direction include</a> pour une description des fichiers d'alias dont UnrealIRCd dispose)
</p>
<p>
Le bloc alias (alias standard) vous permet de rediriger une commande à un utilisateur,
par exemple /chanserv envoie un message à l'utilisateur chanserv.
</p>
<ul>
<li>
<b>alias::</b> indique le nom de la commande qui servira d'alias (par exemple : chanserv)
</li>
<li>
<b>alias::target</b> est le pseudo ou le salon dans lequel ce sera redirigé.
Si <b>alias::</b> est identique au nom de la cible, <b>alias::target</b> peut être omis.
</li>
<li>
<b>alias::type</b> spécifie le type de l'alias.
Les types valides sont :
<ul>
<li><span class="inline_pre">services</span> (l'utilisateur est sur le <a href="#set-services-server">serveur des services</a>)</li>
<li><span class="inline_pre">stats</span> (l'utilisateur est sur le <a href="#set-stats-server">serveur de statistiques</a>)</li>
<li><span class="inline_pre">normal</span> (l'utilisateur est un utilisateur normal sur n'importe quel serveur)</li>
<li><span class="inline_pre">channel</span> (la cible est un salon)</li>
<li><span class="inline_pre">command</span> (ceci n'est pas un "alias standard", voir<a href="#aliasblock-command">ci-après</a>)</li>
</ul>
</li>
<li>
<b>alias::spamfilter</b> (optionnel) : si défini sur yes (oui), le message sera vérifié par Spamfilter (valeur par défaut : 'no').
</li>
</ul>
<p id="aliasblock-command">
Syntaxe des alias de commandes :
</p>
<pre>alias &lt;name&gt; {
/* Pour un alias à envoyer aux utilisateurs/salons (alias standard) */
format &lt;regex-expression&gt; {
target &lt;pseudo-sur-lequel-redirigernick-to-forward-to&gt;;
type &lt;type-of-alias&gt;;
parameters &lt;parameter-string&gt;;
};
/* Pour les 'vrais alias' (alias de commande) */
format &lt;regex-expression&gt; {
command &lt;command&gt;;
type real;
parameters &lt;parameter-string&gt;;
};
/* Etc... Vous pouvez avoir autant de bloc format que nécesaire ... */
format &lt;regex-expression&gt; {
...
};
type command;
spamfilter &lt;yes|no&gt;;
};</pre>
<p>
Lorsqu'un alias block a un <b>alias::type</b> avec la valeur <span class="inline_pre">command</span>, comme montré <a href="#aliasblock-command">ci-dessus</a>, il devient un alias de commande.
Utilisé dans ce format, le bloc devient beaucoup plus flexible.
Par exemple, vous pouvez créer une commande /identify avec.
</p>
<ul>
<li>
<b>alias::</b> indique le nom de la commande qui sert d'alias, comme pour un <a href="aliasblock">alias standard</a>.
</li>
<li>
<b>alias::format</b> spécifie une <a href="#regex">expression régulière</a> qui sert à tester les arguments envoyés sur la commande qui sert d'alias.
Le sous-bloc du premier <b>alias::format</b> rencontré correspondant aux paramètres sera utilisé.
Par conséquent, vous pouvez avoir plusieurs <b>alias::format</b> pour que la commande fasse des choses différentes en fonction des paramètres qu'elle reçoit.
</li>
<li>
<b>alias::format::target</b> est la cible à laquelle l'alias est envoyé.
Cette valeur n'est pas utilisée si <b>alias::format::type</b> est défini sur "<span class="inline_pre">real</span>".
</li>
<li>
<b>alias::format::type</b> spécifie le type de la cible à laquelle l'alias est envoyé.
En plus des types mentionnés pour les <a href="#aliasblock">alias standards</a>, le type "<span class="inline_pre">real</span>" peut être utilisé pour un "vrai alias" (un alias qui peut être autre chose qu'une commande PRIVMSG).
</li>
<li>
<b>alias::format::parameters</b> (pour les "vrais alias") est ce qui sera envoyé à la commande comme paramètres.<br>
Pour spécifier un des paramètres envoyés à l'alias, utilisez <span class="inline_pre">%</span> suivi du nombre correspondant à la place du paramètre.
Par exemple, <span class="inline_pre">%1</span> correspond au premier paramètre.<br>
Pour récupérer tous les paramètres à partir d'un certain rang, utilisez <span class="inline_pre">%</span> suivit du rang en question puis de <span class="inline_pre">-</span>.
Par exemple, <span class="inline_pre">%2-</span> retourne tous les paramètres du deuxième jusqu'au dernier.<br>
De plus, vous pouvez utiliser <span class="inline_pre">%n</span> qui sera remplacé par le pseudo de l'utilisateur exécutant la commande.
</li>
</ul>
<p>
Pour des exemples d'utilisation des alias blocks dans le format des alias de commandes, regardez doc/example.fr.conf.
</p>
</div>
<p id="helpblock">
<font class="block_section">4.33 - </font><font class="block_name">Help Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>help &lt;name&gt; {
&lt;text-line&gt;;
&lt;text-line&gt;;
...
};</pre>
<p>
(Note : normalement vous ne faites qu'inclure help.conf)
</p>
<p>
L'help block vous permet des créer des entrées à utiliser dans /helpop.
L' help:: est la valeur qui doit être passée en paramètre de /helpop, si help:: est laissé vide, alors il sera utilisé lorsqu'aucun paramètre n'est précisé pour /helpop.
</p>
<p>
Les entrées pour l'help block sont les textes qui seront affichés lorsque l'utilisateur utilisera /helpop.
</p>
</div>
<p id="officialchannels">
<font class="block_section">4.34 - </font><font class="block_name">Official Channels Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Syntaxe :
</p>
<pre>official-channels {
"#channel" { topic "The default topic"; };
};</pre>
<p>
Les salons officiels sont affichés dans /list même si aucun utilisateur n'y est présent.
Le <b>topic</b> est optionnel et n'est montré dans la /list que si il n'y a aucun utilisateur (sinon, le topic courant du salon sera utilisé).
</p>
<p>
Exemple :
</p>
<pre>official-channels {
"#Help" { topic "The official help channel, if nobody is present type /helpop helpme"; };
"#Home";
"#Main" { topic "The main channel"; };
};</pre>
</div>
<p id="spamfilter">
<font class="block_section">4.35 - </font><font class="block_name">Spamfilter Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Le spamfilter block vous permet d'ajouter un filtre anti-spam local (pas au niveau du réseau).<br>
Voir <a href="#feature_spamfilter">cette section</a> pour plus d'information à propos des filtres anti-spam.
</p>
<p>
Syntaxe :
</p>
<pre>spamfilter {
regex &lt;word&gt;;
target { &lt;target(s)&gt; };
action &lt;action&gt;;
reason &lt;reason&gt;;
ban-time &lt;time&gt;;
};</pre>
<p>
<b>regex</b> est l'<a href="#regex">expression régulière</a> à lauqlle le mot doit correspondre.<br>
<b>target</b> spécifie les cibles, reportez-vous <a href="#feature_spamfilter">ici</a> pour obtenir la liste des types disponibles (ex: 'channel').<br>
<b>action</b> spécifie l'action à effectuer, reportez-vous <a href="#feature_spamfilter">ici</a> pour obtenir la liste des types disponibles (ex: 'gline')<br>
<b>reason</b> (optionnel) : spécifie la raison du ban ou du blocage, sinon la raison par défaut est utilisée.<br>
<b>ban-time</b> (optionnel) : spécifie la durée d'un ban *line ou d'un shun, sinon la valeur par défaut est utilisée (1 jour).<br>
</p>
<p>
Exemples :
</p>
<pre>spamfilter {
regex "Come watch me on my webcam";
target { private; channel; };
action gline;
reason "You are infected, please go to www.antivirus.xx/blah/virus=GrrTrojan";
ban-time 6h;
};
spamfilter {
regex "come to irc\..+\..+";
target { private; channel; };
action gline;
action gline;
reason "No spamming allowed";
};</pre>
</div>
<p id="cgiirc">
<font class="block_section">4.36 - </font><font class="block_name">Cgiirc Block</font>
<font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Le bloc cgiirc vous permet de configurer l'host spoofing pour les passerelles CGI:IRC auquelles vous faites confiance (<a href="#feature_cgiirc">plus d'info</a>).
</p>
<p>
Syntaxe :
</p>
<pre>cgiirc {
type &lt;webirc|old&gt;;
username &lt;mask&gt;; /* optionnel */
hostname &lt;mask&gt;;
password &lt;password&gt;; /* seulement pour le type webirc */
};</pre>
<p>
<b>type</b> peut être 'webirc' ou 'old'.<br>
<b>username</b> est comparé avec l'ident (si il est présent). Si il n'est pas spécifié, il est supposé égal à "*".<br>
<b>hostname</b> est l'hostmask auquel il faut correspondre.<br>
<b>password</b> est le mot de passe webirc, uniquement utilisé pour le type 'webirc'.<br>
</p>
<p>
<b>Comment configurer avec la méthode 'webirc' ? (méthode recommandée)</b><br>
Dans votre fichier de configuration de CGI:IRC (cgiirc.conf) vous assignez à webirc_password un bon mot de passe.<br>
Ensuite, dans votre unrealircd.conf vous ajoutez un bloc cgiirc pour permettre cet host et ce mot de passe et vous donnez à cgiirc::type la valeur "webirc".
</p>
<p>
Exemple :<br>
Dans votre fichier de configuration de CGI:IRC (cgiirc.conf) vous ajoutez :
</p>
<pre>webirc_password = LpT4xqPI5</pre>
<p>
Ensuite, dans votre unrealircd.conf vous ajoutez un bloc cgiirc :
</p>
<pre>cgiirc {
type webirc;
hostname "1.2.3.4";
password "LpT4xqPI5";
};</pre>
<p>
<b>Comment configurer avec la méthode 'old' ?</b><br>
Note : Ce n'est pas la méthode recommandée car elle a deux désavantages :
cette méthode va envoyer l'IP/host à transmettre à la place du mot de passe serveur, signifiant que vous ne pouvez pas spécifier un mot de passe serveur en tant qu'utilisateur de CGI:IRC.
De plus, le contrôle des accès est uniquement basé sur les IP et ne nécessite pas de mot de passe supplémentaire comme la méthode 'webirc'.
En résumé, vous ne devriez pas utiliser cette méthode sauf en cas de bonne raison.
</p>
<p>
Dans votre fichier de configuration de CGI:IRC (cgiirc.conf) vous assignez à realhost_as_password la valeur 1.<br>
Ensuite, dans votre unrealircd.conf vous ajoutez un bloc cgiirc pour permettre cet host.
</p>
<p>
Exemple :<br>
Dans votre fichier de configuration de CGI:IRC (cgiirc.conf) vous ajoutez :
</p>
<pre>realhost_as_password = 1</pre>
<p>
Ensuite, dans votre unrealircd.conf vous ajoutez un bloc cgiirc :
</p>
<pre>cgiirc {
type old;
hostname "1.2.3.4";
};</pre>
</div>
<p id="setblock">
<font class="block_section">4.37 - </font><font class="block_name">Set Block</font> <font class="block_required">OBLIGATOIRE</font> <font class="block_old">(connu précédemment comme unrealircd.conf/networks file)</font>
</p>
<div class="desc">
<p>
Sur des réseaux composés d'un seul serveur, plutôt que d'avoir 3 fichiers idfférents, vous pouvez mettre tout mettre dans unrealircd.conf.
Sur des réseaux de plusieurs serveurs, nous vous recommandons d'utiliser un fichier networks distint (voir ci-dessus).
</p>
<p>
Si votre serveur est sur un réseau, il y a des chances que vous utilisiez le même set block pour tous les serveurs.
Par conséquent, il est plus logique d'avoir un fichier networks, qui sera inclus avec la directive <a href="#includedirective">include</a>.
Vous trouverez la liste de toutes les directives set disponibles ci-dessous.
</p>
<p>
Dans cette documentation, nous nous référons aux réglages / directives avec la notation &lt;block-name&gt;::&lt;block-directive&gt;.
Ce format n'est pas celui à utiliser dans le fichier de configuration !
Il doit être converti dans le format ci-dessous :
<!-- Il est présenté dans un format qui le rend plus simple à expliquer. -->
</p>
<p>
Syntaxe :
</p>
<pre>set {
&lt;entry&gt; &lt;value&gt;;
&lt;entry&gt; &lt;value&gt;;
...
};</pre>
<p>
Le set block définit des options pour des fonctionnalités indépendantes.
Chaque entrée fait quelque chose de différent et donc toutes seront décrites ici.
Certaines directives ont des sous-blocs qui seront aussi décrits.
</p>
<p>
Il y a beaucoup de réglages différents à couvrir, toutes les directives ci-dessous peuvent être placées dans le même bloc set.
Si une directive a des options, celles-ci sont à préciser dans cet unique bloc set.
</p>
<p>
Exemple :
</p>
<pre>set {
kline-address my@emailaddress.com;
auto-join #welcome;
options {
hide-ulines;
};
hosts {
local LocalOp.MyNet.com;
global globalop.mynet.com;
};
};</pre>
<p>
Maintenant, si vous voulez faire des blocs set séparés, préférez la notation sur une seule ligne.<br>
Exemple :
</p>
<p>
<pre>set { options { hide-ulines; show-connect-info; }; };</pre>
<p>
<font class="set">set::kline-address &lt;email-address&gt;;</font><br>
L'adresse email à laquelle doivent être envoyées les questions sur les K:line.
Cette valeur doit être spécifiée.
</p>
<p>
<font class="set">set::gline-address &lt;email-address&gt;;</font><br>
L'adresse email à laquelle doivent être envoyées les questions sur les G:line.
</p>
<p>
<font class="set">set::modes-on-connect &lt;+modes&gt;;</font><br>
Les modes qui seront appliqués à un utilisateur à la connexion.
</p>
<p>
<font class="set">set::snomask-on-connect &lt;+modes&gt;</font><br>
Les snomask qui seront appliqués à un utilisateur à la connexion.
</p>
<p>
<font class="set">set::modes-on-oper &lt;+modes&gt;;</font><br>
Les modes qui seront appliqués à un utilisateur lorsqu'il s'/oper.
</p>
<p>
<font class="set">set::snomask-on-oper &lt;+modes&gt;;</font><br>
Les snomask qui seront appliqués à un utilisateur lorsqu'il s'/oper.
</p>
<p>
<font class="set">set::modes-on-join &lt;+modes&gt;;</font><br>
Les modes qui seront appliqués à un salon lors de sa création.
Tous les modes ne peuvent pas être utilisés par cette commande.
+qaohvbeOAzlLk ne peuvent être appliqués par cette commande.
</p>
<p>
<font class="set">set::level-on-join &lt;none|voice|halfop|op|protect|owner&gt;;</font><br>
Le mode qui sera appliqué à un utilisateur lorsqu'il sera le premier à rejoindre le salon.
La valeur par défaut est 'op' (opérateur du salon).
</p>
<p>
<font class="set">set::restrict-usermodes &lt;modes&gt;</font><br>
Empêche les utilisateurs d'appliquer / enlever les usermodes listés ici (n'utilisez pas + ou -).
Par exemple, vous pouvez mettre le +G en modes-on-connect et G en restrict-usermodes, de cette façon vous obligez tous les utilisateurs à avoir le mode +G et les empêcher de se mettre en -G.
</p>
<p>
<font class="set">set::restrict-channelmodes &lt;modes&gt;</font><br>
Empêche les utilisateurs d'appliquer / enlever les modes de salon listés ici (n'utilisez pas + ou -).
Par exemple, vous pouvez mettre le +G en modes-on-join et G en restrict-channelmodes, de cette façon vous obligez tous les (nouveaux) salons à avoir le mode +G et les empêcher de se mettre en -G.<br>
NOTE : il peut toujours être possible d'utiliser ces modes de salon en passant par les services (en utilisant MLOCK).
Malheureusement, nous ne pouvons pas faire grand chose pour l'empêcher, vous devrez demander aux codeurs de vos services d'implémenter une option restrict-channelmodes également.
</p>
<p>
<font class="set">set::restrict-extendedbans &lt;types|*&gt;</font><br>
Ne permet pas aux utilisateurs d'utiliser des bans étendus ("*") ou en empêche certains (ex. : "qc").
</p>
<p>
<font class="set">set::auto-join &lt;channels&gt;;</font><br>
Les salons qu'un utilisateur est forcé de rejoindre à la connexion.
Pour spécifier plus d'un salon, utilisez une virgule pour les séparer.<br>
Note : n'oubliez pas d'ajouter des quotes comme : <i>auto-join "#chan";</i>
</p>
<p>
<font class="set">set::oper-auto-join &lt;channels&gt;;</font><br>
Les salons qu'un utilisateur sera forcé de rejoindre après /oper.
Pour spécifier plus d'un salon, utilisez une virgule pour les séparer.<br>
(Note: n'oubliez pas d'ajouter des quotes comme : <i>oper-auto-join "#chan";</i>)
</p>
<p id="set::anti-spam-quit-message-time">
<font class="set">set::anti-spam-quit-message-time &lt;timevalue&gt;;</font><br>
Cette durée spécifie la durée minimale pendant laquelle l'utilisateur doit être connecté avant de pouvoir afficher un message /quit.
Utilisé pour prévenir le spam.
Une durée est une valeur numérique avec d pour jour, h pour heure, m pour minutes, et s pour secondes, par exemple 1d2h3m signifie 1 jour, 2 heures, 3 minutes.
</p>
<p>
<font class="set">set::prefix-quit &lt;text-to-prefix-quit&gt;;</font><br>
Définit le texte qui sera affiché devant le message de quit.
Si la valeur est 0, alors le texte standard "Quit:" sera appliqué.</p>
<p>
<font class="set">set::static-quit &lt;quit message&gt;;</font><br>
Définit le message de quit qui sera envoyé quelque soit le message envoyé par le client lorsqu'il quitte le réseau.
Ceci élimine le besoin de recourir à l'anti-spam-quit-message-time, ainsi que le set::prefix-quit.
Cela NE remplacera PAS les ERREURS par le message static-quit.
</p>
<p>
<font class="set">set::static-part &lt;no|yes|part message&gt;;</font><br>
Le 'yes' empêchera toutes les raisons de part, le 'no' laissera fonctionner les part comme d'habitude, n'importe quoi d'autre sera utilisé comme commentaire de part (ex. : static-part "Bye!") mais ca peut être assez ennuyeux, alors utilisez le prudemment.
</p>
<p>
<font class="set">set::who-limit &lt;limit&gt;;</font><br>
Définit le nombre maximum de réponses retournées lors d'un /who.
Si cette option n'est pas spécifiée, il n'y aura pas de limite.
</p>
<p>
<font class="set">set::silence-limit &lt;limit&gt;;</font><br>
Définit le maximum d'entrées dans la SILENCE list.
Si la directive n'est pas spécifiée, une limite de 15 sera appliquée.
</p>
<p>
<font class="set">set::maxbans &lt;limit&gt;;</font><br>
Fixe une limite pour le nombre maximum de ban (+b) autorisés par salon.
La valeur par défaut est 60.
Si vous la changez, prennez également attention au maxbanlength (voir ci-après) !
</p>
<p>
<font class="set">set::maxbanlength &lt;limit&gt;;</font><br>
Similaire au précédent, mais fixe le nombre maximum de caractères pour tous les bans ajoutés l'un à l'autre.
Donc, en pratique, ceci fixe une limite sur la quantité (semi-)maximum de mémoire que tous les bans sur un salon peuvent prendre.
La valeur par défaut est 2048 (bytes).
Avec une valeur par défaut pour le set::maxbans de 60 ceci permet 2048:60=34 caractères par ban en moyenne.
</p>
<p>
<font class="set">set::oper-only-stats &lt;stats-list&gt;;</font><br>
Spécifie une liste de flags stats (sans séparateur) qui définit les flags stats que seuls les opérateurs pourront utiliser.
Ne donnez pas de valeur si vous voulez permettre aux utilisateurs d'utiliser tous les flags, ou spécifiez * pour que les utilisateurs ne puissent en utiliser aucun.
Seuls les flags stats courts peuvent être utilisés ici.
</p>
<p>
<font class="set">set::oper-only-stats {&lt;stats-flag&gt;; &lt;stats-flag&gt;;};</font><br>
Spécifie une liste de flags stats pouvant être utilisés uniquement par les opérateurs.
Ceci ne marche qu'avec les flags stats longs.
</p>
<p>
<font class="set">set::maxchannelsperuser &lt;amount-of-channels&gt;;</font><br>
Spécifie le nombre de salons sur lesquels un utilisateur peut être en même temps.
</p>
<p>
<font class="set">set::maxdccallow &lt;amount-of-entries&gt;;</font><br>
Spécifie le nombre maximum d'entrées qu'un utilisateur peut avoir dans sa liste DCCALLOW.
</p>
<p>
<font class="set">set::channel-command-prefix &lt;command-prefixes&gt;;</font><br>
Spécifie les caractères de préfixe pour les commandes de salon des services.
Les messages commençant par l'un des caractères spécifiés seront envoyés même si le client est en +d.
La valeur par défaut est "`!.".
</p>
<p>
<font class="set">set::allowed-nickchars { &lt;list&gt; };</font><br>
Jeux de caractères autorisés dans les pseudos, voir <a href="#feature_nickchars">Caractères admis dans les pseudos</a>.
</p>
<p>
<font class="set">set::allow-userhost-change [never|always|not-on-channels|force-rejoin]</font><br>
Spécifie ce qu'il arrive quand un user@host change (+x/-x/chghost/chgident/setident/vhost/etc).<br>
<i>never</i> supprime toutes les commandes,
<i>always</i> le permet toujours même si le client est sur un salon (peut causer le desync du client) [défaut]
<i>not-on-channels</i> le permet uniquement si l'utilisateur n'est sur aucun salon,
<i>force-rejoin</i> forcera à rejoindre tous les salons avec re-op/voice/etc si nécessaire.
</p>
<p>
<font class="set">set::options::hide-ulines;</font><br>
Si il est présent, les serveurs avec Uline seront cachés dans une requête /links envoyée par les non-opers.
</p>
<p>
<font class="set">set::options::flat-map;</font><br>
Si il est présent, tous les serveurs apparaîtront comme directement linkés dans /map et /links, ainsi vous ne pourrez plus voir quel serveur est linké directement auquel.
C'est une petite aide contre les attaque (D)DoS parce que les personnes mal-intentionnées ne peuvent plus voir facilement les 'points faibles'.
</p>
<p>
<font class="set">set::options::show-opermotd;</font><br>
Si il est présent, l'opermotd sera montré aux utilisateurs une fois qu'ils se seront /oper avec succès.
</p>
<p>
<font class="set">set::options::identd-check;</font><br>
Si il est présent, la présence d'un serveur d'identd sera vérifiée et la valeur retournée sera utilisée comme username.
Si aucune requête d'ident n'est retournée ou si le serveur d'identd n'existe pas, l'username de l'utilisateur spécifié sera préfixé d'un ~.
Si cette valeur est omise, aucune vérification ne sera faite.
</p>
<p>
<font class="set">set::options::show-connect-info;</font><br>
Si il est présent, les notices "ident request", "hostname lookup", etc seront affichées à la connexion de l'utilisateur.
</p>
<p>
<font class="set">set::options::dont-resolve;</font><br>
Si il est présent, les hosts des utilisateurs entrants ne seront pas résolus, peut être utile si beaucoup de vos utilisateur n'ont pas d'host pour accélérer la connexion.<br>
Notez que depuis que le 'non resolving' existe vous pouvez également avoir des allow blocks basés sur les hosts.
</p>
<p>
<font class="set">set::options::mkpasswd-for-everyone;</font><br>
Fait en sorte que le /mkpasswd puisse être utilisé par tout le monde à la place des opers uniquement, l'usage de cette commande par les non-opers est envoyé aux EYES snomask.
</p>
<p>
<font class="set">set::options::allow-part-if-shunned;</font><br>
Permet aux utilisateurs shun d'utiliser /part.
</p>
<p>
<font class="set">set::options::fail-oper-warn;</font><br>
Si il est présent, un utilisateur sera prévenu que sa tentative de /oper manquée a été enregistrée.
</p>
<p>
<font class="set">set::options::allow-insane-bans;</font><br>
Autorise des bans étendus déraisonables tels que /GLINE *@*.fr
Avec ceci, vous pouvez très facilement bannir tout le monde de votre réseau, donc faites très attention !
</p>
<p>
<font class="set">set::options::disable-cap;</font><br>
Désactive les Client Capabilities Extensions (CAP).
Notez que ceci rend SASL et d'autres fonctionnalités indisponibles ou plus difficiles à utiliser pour les clients.
</p>
<p id="set_nopost_ban_action">
<font class="set">set::nopost::ban-action</font> (requière <a href="#modules_m_nopost">m_nopost</a>)<br>
Action à effectuer si un utilisateur essaye d'utiliser une commande HTTP POST.
Les valeurs autorisées sont : kill, gline, gzline, kline, zline, shun et tempshun.
La valeur par défaut est kill.
Si vous utilisez une *line ou shun, prenez note que si un utilisateur crédule s'est fait piéger et visite un site générant une attaque <acronym title="Spam d'IRC par script transprotocole">XPS IRC spamming</acronym>, il sera affecté par le shun ou la *line sur toutes ses autres connexions.
La valeur par défaut kill évite ce genre d'accidents, mais l'utilisation d'une *line et surtout d'une gzline peut être nécessaire dans certains cas.
</p>
<p id="set_nopost_ban_reason">
<font class="set">set::nopost::ban-reason</font> (requière <a href="#modules_m_nopost">m_nopost</a>)<br>
La raison du ban à utiliser lorsque m_nopost déconnecte ou bannit un utilisateur.
</p>
<p id="set_nopost_ban_time">
<font class="set">set::nopost::ban-time</font> (requière <a href="#modules_m_nopost">m_nopost</a>)<br>
La durée des shuns, glines, gzlines, klines et zlines placés par m_nopost.
La valeur par défaut est 4h.
</p>
<p id="set_nopost_except_hosts">
<font class="set">set::nopost::except-hosts</font> (requière <a href="#modules_m_nopost">m_nopost</a>)<br>
Une liste des hostmasks exemptés des kill et des *lines de m_nopost.
Vous ne devriez jamais avoir besoin d'utiliser cette option.
</p>
<p>
<font class="set">set::dns::timeout &lt;timevalue&gt;;</font> (PAS IMPLEMENTE)<br>
Une valeur de temps spécifie la durée qu'un serveur DNS a pour répondre.
Une valeur de temps est un numérique avec d pour jour, h pour heure, m pour minutes, et s pour secondes, par exemple 1d2h3m signifie 1 jour, 2 heures, 3 minutes.
</p>
<p>
<font class="set">set::dns::retries &lt;number-of-retries&gt;;</font> (PAS IMPLEMENTE)<br>
Une valeur numérique spécifie le nombre de fois que la résolution de DNS reprendra en cas d'échec.
</p>
<p>
<font class="set">set::dns::nameserver &lt;name-of-dns-server&gt;;</font> (PAS IMPLEMENTE)<br>
Spécifie l'hostname du serveur qui sera utilisé pour la résolution de DNS.</p>
<p>
<font class="set">set::dns::bind-ip &lt;ip&gt;;</font><br>
Spécifie l'IP à relier au résolveur, presque jamais requis.
</p>
<p>
<font class="set">set::network-name &lt;name-of-network&gt;;</font><br>
Spécifie le nom du réseau sur lequel ce serveur tourne.
Cette valeur devrait être exactement la même sur tous les serveurs d'un réseau.
</p>
<p>
<font class="set">set::default-server &lt;server-name&gt;;</font><br>
Défini le nom au serveur par défaut à indiquer aux utilisateurs pour se connecter si celui-ci est plein.
</p>
<p id="set_defaultipv6clonemask">
<font class="set">set::default-ipv6-clone-mask</font><br>
Le masque de détection des clônes IPv6 par défaut.
Voir <a href="#allowblock_ipv6clonemask">allow::ipv6-clone-mask</a>.
La valeur par défaut est 64.
</p>
<p id="set-services-server">
<font class="set">set::services-server &lt;server-name&gt;;</font><br>
Indique le nom du serveur auquel les bots des services sont connectés.
C'est un paramètre obligatoire, donc mettez quelque chose comme services.votrereseau.com si vous n'avez pas de services.
</p>
<p id="set-stats-server">
<font class="set">set::stats-server &lt;server-name&gt;;</font><br>
Indique le nom du serveur auquel le bot des statistiques se connecte.
S'il n'y a pas de statistiques, cette valeur peut être omise.
</p>
<p id="set-sasl-server">
<font class="set">set::sasl-server &lt;server-name&gt;;</font><br>
Indique le nom du serveur auquel les messages d'authentification SASL doivent être envoyés.
</p>
<p>
<font class="set">set::help-channel &lt;network-help-channel&gt;;</font><br>
Spécifie le nom du salon d'aide du réseau.
</p>
<p>
<font class="set">set::cloak-keys { "key1"; "key2"; "key3"; };</font><br>
Spécifie les clés qui seront utilisés pour générer les +x hosts.
Cette valeur doit être la même sur tous les serveurs d'un réseau.
Si ce n'est pas le cas, les serveurs ne pourront plus linker.
Les 3 set::cloak-keys:: doivent être des strings de 5 à 100 caractères (10 à 20, c'est bien), elles doivent contenir des minuscules (a-z), des majuscules (A-Z) et des chiffres (0-9).
Noter que cela dépend du module de cloaking que vous utilisez, d'autres règles peuvent être appliquées.
</p>
<p>
<font class="set">set::hiddenhost-prefix &lt;prefix-value&gt;;</font><br>
Définit le préfixe utilisé pour les +x hosts.
Il est généralement composé de trois ou quatre lettres représentant le nom du réseau.
Les différents serveurs d'un réseau doivent avoir le même hiddenhost-prefix pour que les bans des salons fonctionnent correctement.
</p>
<p>
<font class="set">set::hosts::local &lt;locop-host-name&gt;;</font><br>
Définit l'hostname qui sera assigné aux opérateurs locaux quand ils se mettent le umode +x.
Vous pouvez optionnellement specifier un username@host pour cette valeur.
</p>
<p>
<font class="set">set::hosts::global &lt;globop-host-name&gt;;</font><br>
Définit l'hostname qui sera assigné aux opérateurs globaux quand ils se mettent le umode +x.
Vous pouvez optionnellement specifier un username@host pour cette valeur.
</p>
<p>
<font class="set">set::hosts::coadmin &lt;coadmin-host-name&gt;;</font><br>
Définit l'hostname qui sera assigné aux co-admins quand ils se mettent le umode +x.
Vous pouvez optionnellement specifier un username@host pour cette valeur.</p>
<p>
<font class="set">set::hosts::admin &lt;admin-host-name&gt;;</font><br>
Définite l'hostname qui sera assigné aux admins quand ils se mettent le umode +x.
Vous pouvez optionnellement specifier un username@host pour cette valeur.
</p>
<p>
<font class="set">set::hosts::servicesadmin &lt;servicesadmin-host-name&gt;;</font><br>
Définit l'hostname qui sera assigné aux services-admins quand ils se mettent le umode +x.
Vous pouvez optionnellement specifier un username@host pour cette valeur.
</p>
<p>
<font class="set">set::hosts::netadmin &lt;netadmin-host-name&gt;;</font><br>
Définit l'hostname qui sera assigné aux netadmins quand ils se mettent le umode +x.
Vous pouvez optionnellement specifier un username@host pour cette valeur.
</p>
<p>
<font class="set">set::hosts::host-on-oper-up &lt;yes/no&gt;;</font><br>
Si vous mettez yes, le flag H/get_host sera honoré et le umode +x sera automatiquement mis quand vous vous /oper.
Si vous mettez no, l'utilisateur doit se mettre le umode +x manuellement pour recevoir l'oper host.
</p>
<p>
<font class="set">set::ssl::egd &lt;filename&gt;;</font><br>
Spécifie que le support de l'EGD (Entropy Gathering Deamon) devrait être activé.
Si vous utilisez OpenSSL 0.9.7 ou une version postérieure, alors /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool et /etc/entropy seront recherchés par défaut donc aucun nom de fichier n'est nécessaire, vous pouvez simplement spécifier set::ssl::egd sans valeur.
Si vous utilisez une version d'OpenSSL antérieure à la 0.9.7 ou vous voulez utiliser un socket EGD placé ailleurs que dans la liste des emplacements listés ci-dessus, vous pouvez spécifier le nom de fichier de l'UNIX Domain Socket qu'un EGD écoute.
</p>
<p>
<font class="set">set::ssl::certificate &lt;filename&gt;;</font><br>
Spécifie le nom de fichier où le certificat SSL du serveur est situé.
</p>
<p>
<font class="set">set::ssl::key &lt;filename&gt;;</font><br>
Spécifie le nom de fichier où la clé privée SSL du serveur est située.
</p>
<p>
<font class="set">set::ssl::trusted-ca-file &lt;filename&gt;;</font><br>
Spécifie le nom de fichier où les certificats des <acronym title="Certification Authorities">CAs</acronym> de confiance sont stockés.
</p>
<p>
<font class="set">set::ssl::server-cipher-list &lt;cipherlist&gt;;</font><br>
Spécifie quel chiffrement est autorisé, par défaut, on laisse ce choix à OpenSSL.
Voir <a href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT">http://www.openssl.org/docs/apps/ciphers.html</a> pour savoir comment spécifier une liste de chiffrement.
</p>
<p>
<font class="set">set::ssl::renegotiate-bytes &lt;value&gt;;</font><br>
Spécifie après combien d'octets une session SSL devrait être renégotiée (ex: 20m pour 20 Mo).
</p>
<p>
<font class="set">set::ssl::renegotiate-timeout &lt;timevalue&gt;;</font><br>
Spécifie après combiend de temps une session SSL devrait être renégotiée (ex: 1h pour 1 heure).
</p>
<p>
<font class="set">set::ssl::options::fail-if-no-clientcert;</font><br>
Refuse les connexions de clients qui n'ont pas de certificat.
</p>
<p>
<font class="set">set::ssl::options::no-self-signed;</font><br>
Refuse les connexions de clients avec des certificats auto-signés.
</p>
<p>
<font class="set">set::ssl::options::verify-certificate;</font><br>
Force Unreal à vérifier si le certificat SSL est valide avant d'accepter une connexion.
</p>
<p>
<font class="set">set::ssl::options::no-starttls;</font><br>
Désactive le STARTTLS. STARTTLS autorise les clients à utiliser SSL sur des ports normaux (non SSL).
</p>
<p>
<font class="set">set::throttle::period &lt;timevalue&gt;</font><br>
Combien de temps un utilisateur doit attendre avant de se reconnecter plus que set::throttle::connections fois.
</p>
<p>
<font class="set">set::throttle::connections &lt;amount&gt;;</font><br>
Combien de fois un utilisateur doit se connecter avec le même host avant d'être bloqué par le throttle.
</p>
<p>
<font class="set">set::ident::connect-timeout &lt;amount&gt;;</font><br>
Nombre de secondes avant de renoncer à la connexion au serveur d'ident (défaut : 10s).
</p>
<p>
<font class="set">set::ident::read-timeout &lt;amount&gt;;</font><br>
Nombre de secondes avant de renoncer à une réponse du serveur d'ident (défaut : 30s).
</p>
<p>
<font class="set">set::anti-flood::unknown-flood-bantime &lt;timevalue&gt;;</font><br>
Spécifie combien de temps une connexion inconnue d'un floodeur est bannie.
</p>
<p>
<font class="set">set::anti-flood::unknown-flood-amount &lt;amount&gt;;</font><br>
Spécifie la quantité de données (en kilo-octets) que la connexion inconnue doit envoyer pour que l'utilisateur soit killé.
</p>
<p>
<font class="set">set::anti-flood::away-flood &lt;count&gt;:&lt;period&gt;</font><br>
Protection contre le flood d'away : limite le nombre de /away par "périod" (en secondes).
Ceci réclame que le NO_FLOOD_AWAY soit activé dans le config.h.
Exemple : <i>away-flood 5:60s;</i> signifie maximum 5 changements en 60 secondes.
</p>
<p>
<font class="set">set::anti-flood::nick-flood &lt;count&gt;:&lt;period&gt;</font><br>
Protection contre le NickFlood : limite le nombre de changements de pseudo par "period" en secondes.
Par exemple <i>nick-flood 4:90</i> signifie 4 en 90 secondes, le défaut est 3 en 60 secondes.
</p>
<p>
<font class="set">set::default-bantime &lt;time&gt;</font><br>
Le bantime par défaut quand vous faites /kline, /gline, /zline, /shun, etc sans paramètre de temps (comme /gline *@some.nasty.isp), par défaut, celui ci est permanent (0).
Exemple: <i>default-bantime 90d;</i>
</p>
<p>
<font class="set">set::modef-default-unsettime &lt;value&gt;</font><br>
Pour le chmode +f vous pouvez spécifier un unsettime par défaut, si vous spécifiez 10 par exemple, alors +f [5j]:15 sera transformé en [5j#i10]:15.
La valeur par défaut est pas d'unsettime.
</p>
<p>
<font class="set">set::modef-max-unsettime &lt;value&gt;</font><br>
Le nombre maximum de minutes pour l'unsettime du mode +f (dans +f [5j#i&lt;TIME&gt;]:15), c'est une valeur comprise entre 0 et 255.
Par défaut, ceci est à 60 (= 1 heure).
</p>
<p>
<font class="set">set::ban-version-tkl-time &lt;value&gt;</font><br>
Si vous spécifiez une 'action' comme zline/gline/etc dans les ban version, alors vous pouvez spécifier ici combien de temps l'ip va être bannie, par défaut, ceci est mis à 86400 (1 jour).
</p>
<p>
<font class="set">set::spamfilter::ban-time &lt;value&gt;</font><br>
Même chose qu'au dessus mais pour les *lines/shuns ajoutés par le spamfilter.
</p>
<p>
<font class="set">set::spamfilter::ban-reason &lt;reason&gt;</font><br>
La raison utilisée pour l'ajout de bans par le spamfilter.
</p>
<p>
<font class="set">set::spamfilter::virus-help-channel &lt;channel&gt;</font><br>
Le salon a utiliser pour l'action 'viruschan' dans le spamfilter.
</p>
<p>
<font class="set">set::spamfilter::virus-help-channel-deny &lt;yes|no&gt;</font><br>
Si vous mettez yes (ou "1") cela enverra "invite only" à tous les utilisateurs normaux essayant de rejoindre le virus-help-channel.
Seuls les opérateurs, les personnes forcé par le spamfilter et les personnes qui sont /invite peuvent le rejoindre.
</p>
<p>
<font class="set">set::spamfilter::except &lt;target(s)&gt;</font><br>
Ces cibles sont exemptés du spamfilter (aucun filtre ne sera appliqué), cela peut être une simple cible, ou une liste séparé par des virgules. Ex: except "#help,#spamreport".
</p>
<p>
<font class="set">set::spamfilter::slowdetect-warn &lt;value&gt;</font><br>
Si un filtre de spamfilter prend plus de temps que cette durée en millisecondes (1000ms = 1s) pour s'exécuter, alors un avertissement sera envoyé à tous les opérateurs (par défaut : 250).
Voir aussi <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.
</p>
<p>
<font class="set">set::spamfilter::slowdetect-fatal &lt;value&gt;</font><br>
Si un filtre de spamfilter prend plus de temps que cette durée en millisecondes (1000ms = 1s) pour s'exécuter, alors ce filtre sera enlevé (default: 500).
Voir aussi <a href="#feature_spamfilter_slow">Slow Spamfilter Detection</a>.
</p>
<p>
<font class="set">set::check-target-nick-bans &lt;yes|no&gt;</font><br>
A chaque fois qu'un utilisateur change son pseudo, vérifie si le nouveau pseudo est banni.
Si c'est le cas, le changement de pseudo n'est pas autorisé. La valeur par défaut est "yes".
</p>
<p>
<font class="set">set::timesynch::enabled &lt;yes|no&gt;</font><br>
Active ou désactive la synchronisation du temps au démarrage. Yes par défaut.
</p>
<p>
<font class="set">set::timesynch::server &lt;IP&gt;</font><br>
Serveur avec lequel synchroniser le temps.
Peut comporter jusqu'à 4 IP séparées par des virgules.
Les serveurs doivent supporter le protocole NTP version 4.
La valeur par défaut est le support de 3 serveurs (US, EU, AU).
Les requètes sont envoyées en parallèle, celui qui répond le plus rapidement gagne.
</p>
<p>
<font class="set">set::timesynch::timeout &lt;time&gt;</font><br>
Durée maximum pendant laquelle attendre la réponse du serveur.
Cette valeur est entre 1 et 5, plus ce n'est pas possible car cela crée trop d'incohérences.
Ce paramètre est réglé par défaut à 3 et il n'y a <i>a priori</i> aucune bonne raison de la changer.
</p>
<p>
<font class="set">set::ping-cookie &lt;yes|no&gt;</font><br>
Envoie un challenge avec PING, auquel les clients répondent par un PONG.
Très utile pour éviter entre autres des attaques par HTTP-POST, ainsi que pour empêcher le spoofing TCP sur d'anciens systèmes d'exploitation avec des piles TCP bugguées.
La valeur par défaut est 'yes'.
</p>
<p>
<font class="set">set::pingpong-warning &lt;yes|no&gt;</font><br>
Lorsque set::ping-cookie est activé (généralement sous Windows), envoie un avertissement à chaque utilisateur, d'utiliser '/quote pong ...' si ils ont des problèmes pour se connecter.
La valeur par défaut est 'no'.
</p>
<p>
<font class="set">set::watch-away-notification &lt;yes|no&gt;</font><br>
Vous permet d'activer et de désactiver les notifications d'AWAY dans WATCH.
La valeur par défaut est 'yes'.
</p>
</div>
<p id="filesblock">
<font class="block_section">4.38 - </font><font class="block_name">Files Block</font> <font class="block_optional">OPTIONNEL</font>
</p>
<div class="desc">
<p>
Vous n'avez pas besoin d'utiliser un <a href="#tldblock">TLD block</a> pour vos fichiers de <acronym title="Message of the day">MOTDs</acronym> et de règles.
Ce bloc définit les paramètres par défaut pour ceux-ci, en plus du pidfile et du fichier irc.tune.
Tout ce qui n'est pas indiqué ici aura pour valeur par défaut celle mentionnée dans la section <a href="#addtlfiles">Fichiers Additionnels</a>.
</p>
<p>
Les chemins relatives seront interprétés par rapport au dossier racine de UnrealIRCd, qui est normalement celui contenant <tt>unrealircd.conf</tt>.
Ce bloc peut être utilisé pour exécuter plus d'une instance de IRCd depuis le même répertoire.
Dans ce cas, vous devriez au moins spécifier un pidfile et un irc.tune pour chaque serveur.
</p>
<p>
Syntaxe :
</p>
<pre>files {
motd &lt;motd file&gt;;
shortmotd &lt;short motd file&gt;;
opermotd &lt;oper motd file&gt;;
svsmotd &lt;services motd file&gt;;
botmotd &lt;bot motd file&gt;;
rules &lt;rules file&gt;;
tunefile &lt;tune file&gt;;
pidfile &lt;pid file&gt;;
};</pre>
<p>
Exemple :
</p>
<pre>files {
motd /etc/motd;
pidfile /var/lib/run/unrealircd.pid;
};</pre>
</div>
<p id="addtlfiles">
<b><font size="+2">5 &#8211; Fichiers additionnels</font></b>
</p>
<div class="desc">
<p>
En plus des fichiers de configuration, Unreal compte quelques autres fichiers comme MOTD, OperMOTD, BotMOTD et les règles (Rules).
Ci-dessous ce trouve la liste des fichiers et leurs utilités.<br>
Notez que les fichiers motd (tous les types) et les fichiers de règles peuvent aussi être spécifiés dans un <a href="#tldblock">tld block</a> ou un <a href="#filesblock">files block</a>, ce sont juste les fichiers utilisés par défauts (et pour les MOTD / Rules distants).
</p>
<table border="1" width="83%">
<tr>
<th>ircd.motd</th>
<td>Affiché lorsqu'un /motd est exécuté et (si ircd.smotd n'est pas présent) lorsqu'un utilisateur se connecte</td>
</tr>
<tr>
<th>ircd.smotd</th>
<td>Affiché à la connexion uniquement (MOTD court)</td>
</tr>
<tr>
<th>ircd.rules</th>
<td>Affiché lorsqu'un /rules est exécuté</td>
</tr>
<tr>
<th>oper.motd</th>
<td>Affiché lorsqu'un /opermotd est exécuté ou lorsqu'un utilisateur s'identifie avec /oper</td>
</tr>
<tr>
<th>bot.motd</th>
<td>Affiché lorsqu'un /botmotd est exécuté</td>
</tr>
</table>
</div>
<p id="userchannelmodes">
<b><font size="+2">6 &#8211; Modes des salons et des utilisateurs</font></b>
</p>
<div class="desc">
<table border="1" width="83%" id="channelmodes">
<caption style="font-size:1.2em;font-weight:bold;margin-bottom:1em;">Modes des salons</caption>
<tr>
<th>Mod</th>
<th>Description</th>
</tr>
<tr>
<td style="text-align:center;">A</td>
<td>Seuls les administrateurs peuvent rejoindre le salon</td>
</tr>
<tr>
<td style="text-align:center;">a &lt;nick&gt;</td>
<td>Rend l'utilisateur administrateur du salon</td>
</tr>
<tr>
<td style="text-align:center;">b &lt;nick!user@host&gt;</td>
<td>Banni du salon l'utilisateur spécifié</td>
</tr>
<tr>
<td style="text-align:center;">c</td>
<td>Aucune couleur ANSI ne peut être envoyé sur le salon</td>
</tr>
<tr>
<td style="text-align:center;">C</td>
<td>Aucun CTCP n'est accepté sur le salon</td>
</tr>
<tr>
<td style="text-align:center;">e &lt;nick!user@host&gt;</td>
<td>Exception ban : l'utilisateur spécifié peut rejoindre le salon même s'il en est banni</td>
</tr>
<tr>
<td style="text-align:center;">f [&lt;number&gt;&lt;type&gt;]:&lt;seconds&gt;</td>
<td>Protection des salons contre le flood. Voir la <a href="#feature_antiflood">section 3.12</a>.</td>
</tr>
<tr>
<td style="text-align:center;">G</td>
<td>Applique le remplacement des mots spécifiés dans les Badword Blocks.</td>
</tr>
<tr>
<td style="text-align:center;">h &lt;nick&gt;</td>
<td>Donne le statut de half-op à l'utilisateur</td>
</tr>
<tr>
<td style="text-align:center;">i</td>
<td>Le salon ne peut être rejoint que sur invitation</td>
</tr>
<tr>
<td style="text-align:center;">I &lt;nick!user@host&gt;</td>
<td>Invite exceptions ("invex") - Si quelqu'un correspond à ceci, il pourra outrepasser le +i pour entrer sur le salon.</td>
</tr>
<tr>
<td style="text-align:center;">j &lt;joins:secondes&gt;</td>
<td>Limite les joins par utilisateur à <i>joins</i> par <i>secondes</i> secondes</td>
</tr>
<tr>
<td style="text-align:center;">K</td>
<td>/knock n'est pas autorisé</td>
</tr>
<tr>
<td style="text-align:center;">k &lt;key&gt;</td>
<td>Attribue un mot de passe à spécifier pour rejoindre le salon</td>
</tr>
<tr>
<td style="text-align:center;">l &lt;##&gt;</td>
<td>Spécifie le nombre maximum d'utilisateurs</td>
</tr>
<tr>
<td style="text-align:center;">L &lt;Chan&gt;</td>
<td>Si le maximum spécifié par +l est atteint, les utilisateurs seront redirigés vers ce salon</td>
</tr>
<tr>
<td style="text-align:center;">M</td>
<td>Seuls les utilisateurs dont le pseudo est enregistré (+r) peuvent parler sur le salon</td>
</tr>
<tr>
<td style="text-align:center;">m</td>
<td>Salon modéré. Seuls les utilisateurs +v/h/o/a/q peuvent parler</td>
</tr>
<tr>
<td style="text-align:center;">N</td>
<td>Aucun changement de pseudo n'est autorisé</td>
</tr>
<tr>
<td style="text-align:center;">n</td>
<td>Aucun message ne peut être envoyé de l'extérieur du salon</td>
</tr>
<tr>
<td style="text-align:center;">O</td>
<td>Seuls les IRCops peuvent joindre le salon</td>
</tr>
<tr>
<td style="text-align:center;">o &lt;nick&gt;</td>
<td>Donne le statut d'opérateur à l'utilisateur</td>
</tr>
<tr>
<td style="text-align:center;">p</td>
<td>Rend le salon privé (n'apparaît plus dans les /whois)</td>
</tr>
<tr>
<td style="text-align:center;">q &lt;nick&gt;</td>
<td>Rend l'utilisateur "owner" (propriétaire) du salon</td>
</tr>
<tr>
<td style="text-align:center;">Q</td>
<td>Seuls les U:Lined peuvent kicker les utilisateurs</td>
</tr>
<tr>
<td style="text-align:center;">r</td>
<td>Ce salon est enregistré (ne peut être mis que par les services)</td>
</tr>
<tr>
<td style="text-align:center;">R</td>
<td>Seuls les utilisateurs enregistrés peuvent rejoindre le salon</td>
</tr>
<tr>
<td style="text-align:center;">S</td>
<td>Supprime toutes les couleurs</td>
</tr>
<tr>
<td style="text-align:center;">s</td>
<td>Rend le salon secret (n'apparaît plus dans /list et dans les /whois)</td>
</tr>
<tr>
<td style="text-align:center;">t</td>
<td>Seuls les halfops, les chanops ou plus peuvent changer le topic</td>
</tr>
<tr>
<td style="text-align:center;">T</td>
<td>Aucune notice ne peut être envoyée sur le salon</td>
</tr>
<tr>
<td style="text-align:center;">u</td>
<td>Auditorium : Les commandes /names et /who #chan n'affichent que les opérateurs </td>
</tr>
<tr>
<td style="text-align:center;">V</td>
<td>/invite n'est pas autorisé</td>
</tr>
<tr>
<td style="text-align:center;">v &lt;nick&gt;</td>
<td>Donne le statut de voice à l'utilisateur (peut parler quand le salon est modéré, +m)</td>
</tr>
<tr>
<td style="text-align:center;">z</td>
<td>Seuls les utilisateurs avec une connexion sécurisée (SSL) peuvent joindre le salon</td>
</tr>
<tr>
<td style="text-align:center;">Z</td>
<td>
Mis en place par le serveur pour indiquer que tous les utilisateurs du salon sont sur une connexion sécurisée (SSL).
N'est actif que si le mode +z est actif.
Les ULines (par exemple : BotServ) sont ignorés lors de la vérification des utilisateurs "non sécurisés".
Les admins des serveurs sont toujours responsables de la sécurité des tranferts entre les serveurs (par exemple en utilisant SSL, mais aussi un VPN, l'interface de loopback, un chiffrement quantique, etc), l'IRCd ne le détecte pas et ne peut pas le faire.
</td>
</tr>
</table>
<table border="1" width="83%" id="usermodes">
<caption style="font-size:1.2em;font-weight:bold;margin-bottom:1em;margin-top:2em;">Modes des utilisateurs</caption>
<tr>
<th>Mode</th>
<th>Description</th>
</tr>
<tr>
<td style="text-align:center;">A</td>
<td>Server Admin (défini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">a</td>
<td>Services Admin (défini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">B</td>
<td>Vous marque comme étant un bot</td>
</tr>
<tr>
<td style="text-align:center;">C</td>
<td>Co-Admin (défini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">d</td>
<td>Fait en sorte que vous ne puissiez pas recevoir de message provenant des channels (à l'exception de texte commencant par certains caractères, voir set::channel-command-prefix)</td>
</tr>
<tr>
<td style="text-align:center;">G</td>
<td>Filtre tous les badwords définis par configuration</td>
</tr>
<tr>
<td style="text-align:center;">g</td>
<td>Peut envoyer et lire les globops et locops</td>
</tr>
<tr>
<td style="text-align:center;">H</td>
<td>Cache le status d'IRCop (IRCop uniquement)</td>
</tr>
<tr>
<td style="text-align:center;">h</td>
<td>Disponible pour aide (HelpOp) (défini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align: center">I</td>
<td>Cache le temps d'inactivité d'un IRCop dans les WHOIS pour les utilisateurs normaux</td>
</tr>
<tr>
<td style="text-align:center;">i</td>
<td>Invisible (n'est pas montré dans un /who)</td>
</tr>
<tr>
<td style="text-align:center;">N</td>
<td>Network Administrator (défini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">O</td>
<td>Local IRC Operator (défini par Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">o</td>
<td>Global IRC Operator (défini par Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">p</td>
<td>Cache les canaux sur lesquels vous êtes dans les /whois</td>
</tr>
<tr>
<td style="text-align:center;">q</td>
<td>Seuls les U:Lines peuvent vous kicker (Services Admin uniquement)</td>
</tr>
<tr>
<td style="text-align:center;">R</td>
<td>Vous permet de ne recevoir de messages privés et de notices que d'utilisateurs enregistrés (+r)</td>
</tr>
<tr>
<td style="text-align:center;">r</td>
<td>Identifie le pseudo comme étant enregistré</td>
</tr>
<tr>
<td style="text-align:center;">S</td>
<td>Utilisé pour protéger les Services Daemons</td>
</tr>
<tr>
<td style="text-align:center;">s</td>
<td>Peut lire les server notices</td>
</tr>
<tr>
<td style="text-align:center;">T</td>
<td>Vous empêche de recevoir des CTCPs</td>
</tr>
<tr>
<td style="text-align:center;">t</td>
<td>Dis que vous utilisé un /vhost</td>
</tr>
<tr>
<td style="text-align:center;">V</td>
<td>Vous marque comme un utilisateur de WebTV</td>
</tr>
<tr>
<td style="text-align:center;">v</td>
<td>Reçoit les notices de refus de DCC infectés</td>
</tr>
<tr>
<td style="text-align:center;">W</td>
<td>Vous laisse voir quand quelqu'un vous /whois (IRCop uniquement)</td>
</tr>
<tr>
<td style="text-align:center;">w</td>
<td>Peut lire les wallops</td>
</tr>
<tr>
<td style="text-align:center;">x</td>
<td>Donne à l'utilisateur un hostname caché</td>
</tr>
<tr>
<td style="text-align:center;">z</td>
<td>Indique que vous êtes un client SSL</td>
</tr>
</table>
</div>
<p id="useropercommands">
<font size="+2"><b>7 &#8211; Commandes utilisateurs et opérateurs</b></font>
</p>
<div class="desc">
<p>
Notez que la documentation fournie par /helpop est plus récente, utilisez /helpop commande (ou /helpop ?commande si vous êtes oper) pour avoir des informations sur une commande.
</p>
<table border="1" width="90%">
<tr>
<th width="33%">Commande</th>
<th width="57%">Description</th>
<th width="10%">Qui</th>
</tr>
<tr>
<td>nick &lt;newnickname&gt;</td>
<td>Change votre pseudo. Averti les autres de votre changement de pseudo</td>
<td>Tous</td>
</tr>
<tr id="command_whois">
<td>whois &lt;nick&gt;</td>
<td>Affiche les informations sur l'utilisateur ciblé. Inclus le pseudo, l'host, les salons sur lesquels il se trouve et son statut d'Oper. Si vous êtes un IRCOP, vous avez accès à plus d'informations tel que les umodes de l'utilisateur.</td>
<td>Tous</td>
</tr>
<tr id="command_whois_nicknick">
<td>whois &lt;nick&gt; &lt;nick&gt;</td>
<td>
Réalise une commande <a href="#command_whois">WHOIS</a> distante.
Si un utilisateur n'est pas sur le même serveur que vous, un WHOIS simple n'affichera pas toutes les informations fournies habituellement par WHOIS.
Par exmple, les temps d'inactivité ne sont pas affichés dans ce cas.
Pour exécuter une commande WHOIS distante, faites un WHOIS en précisant le pseudo de l'utilisateur distant en premier et en deuxième paramètres.
</td>
<td>Tous</td>
</tr>
<tr>
<td>who &lt;mask&gt;</td>
<td>Vous permet de chercher des utilisateurs. Masques inclus : pseudo, #salon, hostmask (*.attbi.com)</td>
<td>Tous</td>
</tr>
<tr>
<td>whowas &lt;nick&gt; &lt;max de réponses&gt;</td>
<td>Affiche les informations sur un pseudo qui n'est plus connecté. Le nombre maximum de réponses est facultatif et limite le nombre d'enregistrements qui seront retournés</td>
<td>Tous</td>
</tr>
<tr>
<td>ison &lt;nick1 nick2 nick3 ...&gt;</td>
<td>Vous permet de vérifier qu'un utilisateur (ou plusieurs) est connecté. Réponse simple, meilleur usage pour les scripts.</td>
<td>Tous</td>
</tr>
<tr>
<td>join &lt;channel1,channel2, ...&gt;</td>
<td>Vous permet de rejoindre des salons. Utiliser /join #salon1,#salon2,#salon3 vous permettra de rejoindre plus d'un salon en une fois. La commande /join 0 vous fait partir (PART) de tous les salons.</td>
<td>Tous</td>
</tr>
<tr>
<td>cycle &lt;channel1, channel2, ...&gt;</td>
<td>Cycle les salons spécifiés. Cette commande équivaut à faire un PART suivi d'un JOIN. (Pour les utilisateurs de mIRC, la commande /hop est équivalente)</td>
<td>Tous</td>
</tr>
<tr>
<td>motd &lt;server&gt;</td>
<td>Affiche le <acronym title="Message of the day">motd</acronym> du serveur. Vous pouvez spécifier un nom de serveur si vous souhaitez voir le motd d'un serveur particulier sur un réseau.</td>
<td>Tous</td>
</tr>
<tr>
<td>rules &lt;server&gt;</td>
<td>Affiche le ircd.rules d'un serveur. Ajouter le nom d'un serveur. Vous pouvez spécifier un nom de serveur si vous souhaitez voir le ircd.rules d'un serveur particulier sur un réseau.</td>
<td>Tous</td>
</tr>
<tr>
<td>lusers &lt;server&gt; </td>
<td>Affiche le nombre actuel et maximum d'utilisateurs, en global et local. Vous pouvez spécifier un nom de serveur si vous souhaitez voir les statistiques d'un serveur particulier sur un réseau.</td>
<td>Tous</td>
</tr>
<tr>
<td>map</td>
<td>Affiche la carte (map) du réseau</td>
<td>Tous</td>
</tr>
<tr>
<td>quit &lt;reason&gt;</td>
<td>Vous déconnecte du serveur. Si vous ajoutez une raison, elle sera affichée sur tous les salons, lorsque vous quitterez.</td>
<td>Tous</td>
</tr>
<tr>
<td>ping &lt;user&gt;</td>
<td>Envoie une requête de PING à l'utilisateur. Utilisé pour vérifier une connexion et son lag. Les serveurs envoient des pings à des moments déterminés pour vérifier que les utilisateurs sont toujours connectés.</td>
<td>Tous</td>
</tr>
<tr>
<td>version &lt;nick&gt;</td>
<td>Cela envoie une requête de CTCP Version à l'utilisateur. Si il est configuré pour, le client renverra sa version en réponse.</td>
<td>Tous</td>
</tr>
<tr>
<td>links</td>
<td>Affiche la liste de tous les serveurs reliés au réseau.</td>
<td>Tous</td>
</tr>
<tr>
<td>Admin &lt;server&gt;</td>
<td>Affiche les "admin info" du serveur. Si un nom de serveur est inclus, il affichera les infos de ce serveur.</td>
<td>Tous</td>
</tr>
<tr>
<td>userhost &lt;nick&gt;</td>
<td>Affiche les userhost du pseudo spécifié. Généralement utilisé pour les scripts.</td>
<td>All</td>
</tr>
<tr>
<td>topic &lt;salon&gt; &lt;topic&gt;</td>
<td>Topic &lt;salon&gt; affichera le topic courrant du salon spécifié. Topic &lt;salon&gt; &lt;topic&gt; changera le topic du salon spécifié.</td>
<td>Tous</td>
</tr>
<tr>
<td>invite &lt;nick&gt; &lt;channel&gt;</td>
<td>Invite l'utilisateur spécifié à rejoindre le salon spécifié. (Vous devez être channel Op)</td>
<td>ChanOp</td>
</tr>
<tr>
<td>kick &lt;channel, channel&gt; &lt;user, user&gt; &lt;reason&gt;</td>
<td>Kick le ou les utilisateurs spécifiés du ou des salons spécifiés. Une raison peut également être précisée.</td>
<td>ChanOp</td>
</tr>
<tr>
<td>away &lt;raison&gt;</td>
<td>Vous marque comme étant absent. Une raison peut également être spécifiée.</td>
<td>Tous</td>
</tr>
<tr>
<td>Watch [+|-]&lt;nick&gt; [+|-]&lt;nick&gt;</td>
<td>
Watch est un nouveau système de "notify-type" dans UnrealIRCd qui est en même temps plus rapide et moins gourmant en ressources du réseau qu'aucun autre ancien système de notification.
Le serveur vous envoie un message lorsqu'un pseudo de votre watch list se connecte ou se déconnecte.
La watch list NE RESTE PAS ENTRE 2 SESSIONS - vous (ou votre script ou client) devez ajouter les pseudos dans la watch list à chaque fois que vous vous connectez sur un serveur IRC.
</td>
<td>Tous</td>
</tr>
<tr>
<td>helpop &lt;topic&gt; ou ?&lt;topic&gt; ou !&lt;topic&gt;</td>
<td>
HelpOp est un nouveau système pour avoir l'aide d'un serveur IRC.
Vous tapez soit /HELPOP ? &lt;sujet du système d'aide&gt; ou /HELPOP ! &lt;question&gt;
Le "?" dans /HELPOP veut dire interroger le système d'aide et si vous n'avez pas de réponse, "!" enverra la question à un Opérateur connecté.
Utiliser ni ? ni ! signifie que la question sera d'abord envoyée au système d'aide et que si aucune réponse n'est trouvée, elle sera envoyée à un Opérateur.
</td>
<td>Tous</td>
</tr>
<tr>
<td>list &lt;élément recherché&gt;</td>
<td>
Si vous ne spécifiez pas d'élément recherché, par défaut toute la liste des salons vous serra envoyée.
Ci-dessous, les options que vous pouvez utiliser, et ce que la liste des salons vous reverra lorsque vous les utiliserez.<br>
&gt;nombre affichera la liste des salons comptant plus de &lt;nombre&gt; utilisateurs.<br>
&lt;nombre affichera la liste des salons comptant moins de &lt;nombre&gt; utilisateurs.<br>
C&gt;nombre affichera les salons créés depuis &lt;nombre&gt; minutes.<br>
C&lt;nombre affichera les salons créés avant &lt;nombre&gt; minutes.<br>
T&gt;nombre affichera les salons dont le topic n'a plus été changé depuis au moins &lt;nombre&gt; minutes<br>
T&lt;nombre affichera les salons dont le topic a été changé depuis moins de &lt;nombre&gt; minutes.<br>
*mask* affichera les salons comprennant *mask*<br>
!*mask* affichera les salons ne comprennant pas *mask*
</td>
<td>Tous</td>
</tr>
<tr>
<td>Knock &lt;salon&gt; &lt;message&gt;</td>
<td>Vous permet de "frapper à la porte" d'un salon sous invitation (+i) pour demander le droit de le rejoindre. Ne fonctionnera pas sur les salons ayant les modes suivants : +K +V. Ne fonctionnera pas non plus si vous êtes banni.</td>
<td>Tous</td>
</tr>
<tr>
<td>setname</td>
<td>Permet aux utilisateurs de changer leur "Real Name" sans avoir à se reconnecter.</td>
<td>Tous</td>
</tr>
<tr>
<td>vhost &lt;login&gt; &lt;mot de passe&gt;</td>
<td>Cache votre host en utilisant une vhost fournie par le serveur.</td>
<td>Tous</td>
</tr>
<tr>
<td>mode &lt;salon/pseudo&gt; &lt;mode&gt;</td>
<td>Vous permet de changer les modes des salons et des utilisateurs. Voir <a href="#userchannelmodes">Modes des salons et des utilisateurs</a> pour avoir la liste.</td>
<td>Tous</td>
</tr>
<tr>
<td>credits</td>
<td>Affiche la liste de toutes les personnes ayant aider à créer UnrealIRCd.</td>
<td>Tous</td>
</tr>
<tr>
<td>license</td>
<td>Affiche la licence GNU.</td>
<td>Tous</td>
</tr>
<tr>
<td>time &lt;server&gt;</td>
<td>Affiche la date et l'heure du serveur. Spécifier un nom de serveur vous permet d'interroger un autre serveur.</td>
<td>Tous</td>
</tr>
<tr>
<td>botmotd &lt;server&gt;</td>
<td>Affiche le motd du serveur de bot. Spécifier un nom de serveur vous permet d'interroger un autre serveur.</td>
<td>Tous</td>
</tr>
<tr>
<td>identify &lt;mot de passe&gt;</td>
<td>Envoie votre mot de passe aux services pour identifier votre pseudo.</td>
<td>Tous</td>
</tr>
<tr>
<td>identify &lt;salon&gt; &lt;mot de passe&gt;</td>
<td>Envoie votre mot de passe aux services pour vous identifier en tant que "founder" (fondateur) d'un salon.</td>
<td>Tous</td>
</tr>
<tr>
<td>dns &lt;option&gt;</td>
<td>Renvoie les informations concernant les DNS cache du serveur IRC. Notez que depuis, certains clients ont leur propre commande DNS, vous pourrez alors utiliser /raw DNS. Les Opérateurs peuvent spécifier un "l" comme premier paramètre dans la commande pour recevoir une liste d'entrée dans le DNS cache.</td>
<td>Tous</td>
</tr>
<tr>
<td>userip &lt;nick&gt;</td>
<td>Retourne l'adresse IP de l'utilisateur en question.</td>
<td>Tous</td>
</tr>
<tr>
<td>silence [+|-]&lt;nick&gt;</td>
<td>Permet d'ignorer tous les messages d'un utilisateur ou d'une liste d'utilisateurs depuis le serveur lui-même.</td>
<td>Tous</td>
</tr>
<tr>
<td>oper &lt;login&gt; &lt;mot de passe&gt;</td>
<td>Commande pour donner le status d'Opérateur à un utilisateur si les spécifications correspondent à un Oper Block.</td>
<td>IRCop</td>
</tr>
<tr>
<td>wallops &lt;message&gt;</td>
<td>Envoie un message à tous les utilisateurs +w</td>
<td>IRCop</td>
</tr>
<tr>
<td>globops &lt;message&gt;</td>
<td>Envoie un message à tous les IRCops globaux</td>
<td>IRCop</td>
</tr>
<tr>
<td>chatops &lt;message&gt;</td>
<td>Envoie un message à tous les IRCops (locaux et globaux)</td>
<td>IRCop</td>
</tr>
<tr>
<td>locops &lt;message&gt;</td>
<td>Envoie un message à tous les IRCops locaux</td>
<td>IRCop</td>
</tr>
<tr>
<td>adchat &lt;message&gt;</td>
<td>Envoie un message à tous les Admins</td>
<td>IRCop</td>
</tr>
<tr>
<td>nachat &lt;message&gt;</td>
<td>Envoie un message à tous les NetAdmins</td>
<td>IRCop</td>
</tr>
<tr>
<td>kill &lt;nick&gt; &lt;raison&gt;</td>
<td>Kill l'utilisateur du réseau</td>
<td>IRCop</td>
</tr>
<tr>
<td>kline [+|-]&lt;user@host | nick&gt; [&lt;durée du ban&gt; &lt;raison&gt;]</td>
<td>
Bannir le hostmask du serveur sur lequel la commande a été utilisée. Une kline n'est pas un ban global.<br>
<b>La durée du ban</b> peut être: a) une valeur en seconde, b) une durée, comme "1d" pour un jour (day) c) "0" pour permanent.
Le temps et la raison sont optionnels, si rien n'est spécifié, ce sera set::default-bantime (défaut : 0 / permanent) et "no reason" qui seront utilisés.<br>
Pour enlever une kline, utilisez /kline -user@host.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>zline [+|-]&lt;*@ip&gt; [&lt;durée du ban&gt; &lt;raison&gt;]</td>
<td>
Bannir une adresse ip du serveur local sur lequel la commande a été utilisée (pas global). Regardez kline pour plus d'informations.
Utilisez /zline -*@ip pour l'enlever.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>gline [+|-]&lt;user@host | nick&gt; [&lt;durée du ban&gt; &lt;raison&gt;]</td>
<td>
Ajoute un ban global sur l'utilisateur spécifié. Regardez kline pour plus d'informations.
Utilisez /gline -user@host pour l'enlever.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>shun [+|-]&lt;user@host | nick&gt; [&lt;durée du shun&gt; &lt;raison&gt;]</td>
<td>
Empêche un utilisateur d'utiliser n'importe quelle commande et de parler.
Les shuns sont globaux (comme les glines).
Regardez kline pour plus d'informations.
Utilisez /shun -user@host pour l'enlever.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>gzline [+|-]&lt;ip&gt; &lt;durée du ban&gt; :&lt;raison&gt;</td>
<td>
Ajoute une zline globale. Regardez kline pour plus d'informations.
Utilisez /gzline -*@ip pour l'enlever.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>rehash &lt;server|-global&gt; &#8211;&lt;flags&gt;</td>
<td>
Rehash le fichier de configuration des serveurs. Spécifier un nom de serveur, vous permet de rehasher le fichier de configuration d'un serveur distant et spécifier -global le fait sur tous les serveurs du réseau (ces deux options sont réservées aux NetworkAdmins).
De nombreux flags sont disponibles. Ils incluent :<br>
-dns - réinitialise et recharge le résolveur<br>
-motd - recharge les fichiers MOTD, BOTMOTD, OPERMOTD et RULES (notamment ceux précisés dans un <a href="#tldblock">TLD blocks</a>)<br>
-garbage - force le nettoyage de la mémoire<br>
-ssl - recharge les certificats SSL
</td>
<td>IRCop</td>
</tr>
<tr>
<td>restart &lt;mot de passe&gt; &lt;raison&gt;</td>
<td>Relance le processus IRCd. Le mot de passe est requis si drpass est présent. Vous devez aussi spécifier une raison.</td>
<td>IRCop</td>
</tr>
<tr>
<td>die &lt;mot de passe&gt;</td>
<td>Arrête le process IRCD. Le mot de passe est requis si drpass est présent.</td>
<td>IRCop</td>
</tr>
<tr>
<td>lag &lt;server&gt; </td>
<td>
Cette commande est comme un sonar ou un traceroute pour serveur IRC.
Vous tapez /LAG irc.rs2i.net et il répondra de chaque serveur qu'il rencontre avec le temps.
Utile lorsque vous cherchez d'où viens le lag et les TS futurs et passés.</td>
<td>IRCop</td>
</tr>
<tr>
<td>sethost &lt;nouveau host&gt;</td>
<td>Vous permet de changer votre vhost.</td>
<td>IRCop</td>
</tr>
<tr>
<td>setident &lt;nouvel ident&gt;</td>
<td>Vous permet de changer votre ident.</td>
<td>IRCop</td>
</tr>
<tr>
<td>chghost &lt;nick&gt; &lt;nouvel host&gt;</td>
<td>Vous permet de changer l'hostname d'un utilisateur connecté.</td>
<td>IRCop</td>
</tr>
<tr>
<td>chgident &lt;nick&gt; &lt;nouvel ident&gt;</td>
<td>Vous permet de changer l'ident d'un utilisateur connecté.</td>
<td>IRCop</td>
</tr>
<tr>
<td>chgname &lt;nick&gt; &lt;nouveau nom&gt;</td>
<td>Vous permet de changer votre le realname d'un utilisateur connecté.</td>
<td>IRCop</td>
</tr>
<tr>
<td>squit &lt;server&gt;</td>
<td>Déconnecte un serveur du réseau.</td>
<td>IRCop</td>
</tr>
<tr>
<td>connect &lt;server&gt; &lt;port&gt; &lt;server&gt;</td>
<td>
Si un seul serveur est précisé, le serveur sur lequel vous êtes va tenter de se connecter au serveur spécifié.
Si 2 serveurs sont précisés, ils vont tenter de se connecter l'un à l'autre.
Mettre le hub en deuxième position.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>dccdeny &lt;filemask&gt; &lt;reason&gt;</td>
<td>Ajoute un DCCDENY pour ce filemask. Empêche ce fichier d'être envoyé.</td>
<td>IRCop</td>
</tr>
<tr>
<td>undccdeny &lt;filemask&gt;</td>
<td>Enlève un DCCDENY</td>
<td>IRCop</td>
</tr>
<tr>
<td>sajoin &lt;nick&gt; &lt;channel&gt;, &lt;channel&gt;</td>
<td>Force l'utilisateur à joindre le, les salons. Accessible par les services et network admins seulement.</td>
<td>IRCop</td>
</tr>
<tr>
<td>sapart &lt;nick&gt; &lt;channel&gt;, &lt;channel&gt;</td>
<td>Force l'utilisateur à partir du, des salons. Accessible par les services et network admins seulement.</td>
<td>IRCop</td>
</tr>
<tr>
<td>samode &lt;channel&gt; &lt;mode&gt;</td>
<td>Permet aux services et network admins de changer les modes d'un salon sans en être ChanOp.</td>
<td>IRCop</td>
</tr>
<tr>
<td>rping &lt;servermask&gt;</td>
<td>Calcule en millisecondes le lag entre les serveurs.</td>
<td>IRCop</td>
</tr>
<tr>
<td>trace &lt;servermask|nickname&gt;</td>
<td>Quand elle est utilisée sur un utilisateur, elle vous donnera les informations sur la classe et le lag. Si elle est utilisée sur un serveur, elle vous donnera les informations sur le classe, la version et le link.</td>
<td>IRCop</td>
</tr>
<tr>
<td>opermotd </td>
<td>Affiche le fichier OperMotd des serveurs.</td>
<td>IRCop</td>
</tr>
<tr>
<td>addmotd :&lt;text&gt;</td>
<td>Ajoute le texte donné à la fin du Motd</td>
<td>IRCop</td>
</tr>
<tr>
<td>addomotd :&lt;text&gt;</td>
<td>Ajoute le texte donné à la fin du OperMotd</td>
<td>IRCop</td>
</tr>
<tr>
<td>sdesc &lt;nouvelle description&gt;</td>
<td>Permet aux administrateurs de changer la description de leur serveur sans avoir à le relancer.</td>
<td>IRCop</td>
</tr>
<tr>
<td>addline &lt;texte&gt;</td>
<td>Vous permet d'ajouter des lignes à unrealircd.conf. Vous devez charger le module m_addline pour utiliser cette commande depuis UnrealIRCd-3.2.9</td>
<td>IRCop</td>
</tr>
<tr id="cmd_mkpasswd">
<td>mkpasswd &lt;auth-type&gt; &lt;password&gt;</td>
<td>
Va chiffrer &lt;password&gt; en utilisant la méthode de hash &lt;auth-type&gt;.
Voir la section <a href="#feature_authtypes">Types d'Authentication</a> pour une liste des méthodes de hash disponibles.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>tsctl offset +/- &lt;time&gt;</td>
<td>Ajuste l'horloge interne de l'IRCD (NE PAS utiliser si vous ne savez pas exactement ce que vous faites).</td>
<td>IRCop</td>
</tr>
<tr>
<td>tsctl time</td>
<td>Donnera un rapport TS.</td>
<td>IRCop</td>
</tr>
<tr>
<td>tsctl alltime</td>
<td>Donnera un rapport TS de tous les serveurs.</td>
<td>IRCop</td>
</tr>
<tr>
<td>tsctl svstime &lt;timestamp&gt;</td>
<td>Applique le temps TS à tous les serveurs (NE PAS utiliser si vous ne savez pas exactement ce que vous faites).</td>
<td>IRCop</td>
</tr>
<tr>
<td>htm &lt;option&gt;</td>
<td>
Réglages relatifs au mode "high traffic".
Le mode "high traffic" (HTM) désactive certaines commandes comme : list, whois, who, etc. en réponse à un traffic important sur le serveur. Les options sont :<br>
-ON Force le passage du serveur en HTM <br>
-OFF Force la sortie du serveur du HTM <br>
-NOISY Active l'avertissement des utilisateurs / admins lorsque le serveur entre / sort du HTM<br>
-QUIT Désactive l'avertissement des utilisateurs / admins lorsque le serveur entre / sort du HTM<br>
-TO &lt;valeur&gt; Dis au HTM, à quel taux il doit s'activer
</td>
<td>IRCop</td>
</tr>
<tr>
<td>stats &lt;option&gt;</td>
<td>
B - banversion - envoie la liste des versions de ban<br>
b - badword - envoie la liste des mots censurés<br>
C - link - envoie la liste des link block <br>
d - denylinkauto - envoie la liste des links block (auto) interdits<br>
D - denylinkall - envoie la liste des links block (tous) interdits<br>
e - exceptthrottle - envoie la liste des except throttle block <br>
E - exceptban - envoie la liste des except ban et except tkl block<br>
f - spamfilter - envoie la liste des spamfilter<br>
F - denydcc - envoie la liste des deny dcc block<br>
G - gline - envoie la liste des gline et des gzline<br>
&nbsp;&nbsp;Flags secondaires: [+/-mrs] [masque] [raison] [mis par]<br>
&nbsp;&nbsp;&nbsp;&nbsp;m Renvoie les glines contenant / ne contenant pas la mask spécifié <br>
&nbsp;&nbsp;&nbsp;&nbsp;r Renvoie les glines dont la raison est / n'est pas celle spécifiée<br>
&nbsp;&nbsp;&nbsp;&nbsp;s Renvoie les glines mis / n'ont mis par la personne spécifiée<br>
I - allow - envoie la liste des allow block<br>
j - officialchans - envoie la liste des salons officiels<br>
K - kline - envoie la liste des ban user / ban ip / except ban<br>
l - linkinfo - envoie les informations sur le link<br>
L - linkinfoall - envoie les informations sur les links<br>
M - command - envoie le nombre de fois que les commandes ont été utilisées<br>
n - banrealname - envoie la liste des ban realname block<br>
O - oper - envoie la liste des oper block<br>
P - port - envoie les informations concernant les ports<br>
q - sqline - envoie la liste des SQLINE<br>
Q - bannick - envoie la liste des ban nick block <br>
r - chanrestrict - envoie la liste des chans deny / allow block<br>
R - usage - envoie les informations d'usage<br>
S - set - envoie la liste des set block<br>
s - shun - envoie la liste des shuns<br>
&nbsp;&nbsp;Flags secondaires: [+/-mrs] [masque] [raison] [mis par]<br>
&nbsp;&nbsp;&nbsp;&nbsp;m Renvoie les glines contenant / ne contenant pas la mask spécifié <br>
&nbsp;&nbsp;&nbsp;&nbsp;r Renvoie les glines dont la raison est / n'est pas celle spécifiée<br>
&nbsp;&nbsp;&nbsp;&nbsp;s Renvoie les glines mis / n'ont mis par la personne spécifiée<br>
t - tld - envoie la liste des tld block<br>
T - traffic - envoie les informations sur le traffic<br>
u - uptime - envoie l'uptime du serveur et le nombre de connexions<br>
U - uline - envoie la liste des ulines block<br>
v - denyver - envoie la liste des deny version block<br>
V - vhost - envoie la liste des vhost block<br>
X - notlink - envoie le liste des serveurs qui ne sont pas actuellement linkés<br>
Y - class - envoie la liste des class block<br>
Z - mem - envoie les informations sur la mémoire utilisée
</td>
<td>Tous</td>
</tr>
<tr>
<td>module</td>
<td>Liste tous les modules chargés</td>
<td>Tous</td>
</tr>
<tr>
<td>close</td>
<td>Cette commande déconnectera toutes les connexions inconnues du serveur IRC.</td>
<td>IRCop</td>
</tr>
</table>
</div>
<p id="security">
<font size="+2"><b>8 &#8211; Conseils de sécurité/checklist</b></font>
</p>
<div class="desc">
<p>
Si vous êtes concernés par la sécurité, et vous le devriez, cette section vous donnera un aperçu des risques possibles et leurs niveaux de risques.
Vous pouvez également utiliser celle-ci comme une checklist pour parcourir la configuration de votre réseau et le rendre plus sécurisé.
</p>
<p>
Cette liste est ordonnée suivant la popularité, le niveau de risque et les méthodes les plus souvent utilisées.
</p>
</div>
<p id="secpasswords">
<b><font size="+2">8.1 &#8211; Mots de passe</font></b>
</p>
<div class="desc">
<p>
Choisissez de bons mots de passe oper, link, etc. :<br>
- mélangez les lettres (majuscules et minuscules) et les chiffres ("Whbviwf5") et/ou quelque chose de long ("blaheatsafish", "AlphaBeta555").<br>
- N'UTILISEZ PAS vos mots de passe oper, link pour autre chose comme votre compte mail, bot, forums, etc ...
</p>
</div>
<p id="secnonircd">
<b><font size="+2">8.2 &#8211; Vulnérabilités non liées à l'IRCd</font></b>
</p>
<div class="desc">
<p>
Il y a beaucoup plus de chance qu'un serveur se fasse pirater à cause d'une vulnérabilité non-ircd qu'à cause d'un bug UnrealIRCd.
Si vous faites tourner sur la même machine des serveurs http, dns, smpt ou ftp par exemple, vous avez de plus grands risques.
Aussi, si vous êtes sur une machine Multi-Utilisateurs (ex. : vous louez un shell) il y a des risques de failles locales ou mauvaises permissions (voir plus loin).
Le risque est grand donc soyez prudent lors du choix de votre loueur de shell.
</p>
</div>
<p id="secpermissions">
<b><font size="+2">8.3 &#8211; Permissions et fichier de configuration</font></b>
</p>
<div class="desc">
<p>
Soyez toujours sur que vos dossiers home et UnrealIRCd ont des permissions correctes, les autres groupes ne doivent pas avoir la permission de les lire.
Sinon un utilisateur local pourra ouvrir votre fichier de configuration et chercher les mots de passe ...
Vous pouvez faire : <i>chmod -R go-rwx /path/to/Unreal3.2</i> si vous n'en êtes pas sûr.<br>
Autres choses dans le même style : ne mettez jamais votre UnrealIRCd dans un webroot ou un autre type de fichier partagé.
Et pour les backups (sauvegardes), assurez vous qu'elles aient les bonnes permissions également (il arrive assez souvent
que tout est bien sécurisé mais qu'il y a un backup.tar.gz quelque part lisible par tout le monde).
</p>
<p>
Vous voulez probablement également crypter les mots de passe lorsque ce sera possible, si vous compilez avec le support de OpenSSL
(Ce que vous faites depuis que vous êtes interessé par les problèmes de sécurité, n'est-ce pas ?)
je vous suggère donc d'utiliser l'encrytion des mots de passe en <i>sha1</i> ou <i>ripemd160</i> ou encore <i>md5</i>.
Si il vous reste encore des oper block encrypté avec Unreal3.2.1 ou avant, je vous suggère de ré-encrypter ceux-ci (réutilisez juste /mkpasswd), car 3.2.1 introduit certaines caractéristiques anti-cracks intéréssantes
(basiquement une diminution de 14x la vitesse de crack et rend impossible le crack par stored-plain-ciphertext)
</p>
<p>
Notez que même si ceci n'est "qu'une autre couche de sécurité", beaucoup de mots de passe faibles être craqués facilement, et si quelqu'un s'empare de votre fichier de configuration, il pourra y trouver des choses intéréssante pour planifier une attaque comme link::password-connect.
</p>
</div>
<p id="secuser">
<b><font size="+2">8.4 &#8211; Problèmes liés aux utilisateurs</font></b>
</p>
<div class="desc">
<p>
Tout comme beaucoup des choses dites ici, ceci n'est pas spécifique à UnrealIRCd, mais ...<br>
Choisissez toujours bien vos opers et admins. Et rappelez-vous le concept du maillon faible.
Même si vous êtes prudents et suivez la documentation, peut-être qu'un de vos amis oper fera quelque chose de stupide.
Comme partager son disque dur via netbios/kazaa/morpheus/..., avoir un trojan, utiliser un mauvais mot de passe, etc ...
Malheureusement, ce n'est pas toujours sous votre contrôle.<br>
Une chose que vous pouvez tout de fois faire est choisir soigneusement de quels privilèges chacun a besoin (oper::flags).
</p>
</div>
<p id="secsnif">
<b><font size="+2">8.5 &#8211; SSL/SSH &amp; sniffing</font></b>
</p>
<div class="desc">
<p>
Utilisez des connexions SSL entre les serveurs et pour les opers, cela vous protègera contre le "sniffing".
Le sniffing est possible si quelqu'un attaque un serveur entre vous et votre serveur ircd, il pourra voir
tout votre trafic qui passe par ce serveur.
Lire les conversations, récupérer les mots de passe (les logins oper, nickserv, etc ...) ...
Pour les mêmes raisons, utilisez toujours ssh à la place de telnet.
</p>
</div>
<p id="secDoS">
<b><font size="+2">8.6 &#8211; Denial of Service attacks (DoS) [ou: comment protéger mon hub]</font></b>
</p>
<div class="desc">
<p>
Beaucoup de réseaux ont expérimenté combien était "fun" un flood ou une (D)DoS attaque, vous pouvez toutes fois faire certaines choses permettant d'en réduire les dommages.
La plupart des réseaux ont un serveur hub, ce que certaines personnes oublient, c'est qu'il est assez facile de protèger le hub contre des attaques.<br>
Je vais l'expliquer ici :
</p>
<ol>
<li>
<ul>
<li>
Choissisez pour le hub un hostname qui n'existe pas (ex. : hub.yournet.com), mais n'ajoutez pas un enregistrement de dns pour lui.<br>
De cette manière, un attaquant ne pourra ni resoudre son host ni le flooder.
</li>
<li>
Ensuite, linkez vos serveurs au hub en spécifiant l'ip ou un hostname non publique
</li>
<li>
Exemple 1: <i>link visibiblename.yournet.com { hostname 194.15.123.16; [etc] };</i>.
</li>
<li>
Exemple 2: <i>link visibiblename.yournet.com { hostname thehostnamethatworks.yournet.com; [etc] };</i>.
</li>
<li>
Remarque : pour le dernier exemple, vous devez être sûr que votre nom de serveur ne permet pas de zones de transfert, mais ceci nous éloigne du sujet.
</li>
</ul>
</li>
<li>
<ul>
<li>
Une autre étape importante est alors de cacher "/stats c" et autres informations "stats" sinon les attaquants pourront simplement lister vos links blocks.
</li>
<li>
Si vous êtes paranoyaque,vous pouvez simplement faire : set { oper-only-stats "*"; }; pour restreindre l'utulisation de tous les /stats.
</li>
<li>
Si vous ne voulez pas cela, cachez seulement "CdDlLXz". Vous en verrez plus sur ce sujet dans la section suivante.
</li>
</ul>
</li>
</ol>
<p>
Évidemment, ces techniques sont moins utiles si elles ne sont pas appliquées dès le lancement du serveur puisque l'IP peut déjà être connu de quelqu'un de malveillant, qui attend que ça vaille le coup d'attaquer.
</p>
<p>
Notez aussi que les attaquants peuvent toujours flooder les serveurs qui ne sont pas des Hubs, mais cela demande plus d'efforts que juste attaquer 1 ou 2 points faibles (les hubs), aussi de cette manière vos hubs et services resteront saufs :).
</p>
</div>
<p id="secinformation">
<b><font size="+2">8.7 &#8211; Conseils sur la divulgation d'informations</font></b>
</p>
<div class="desc">
<p>
<b>STATS</b><br>
La commande /stats fournit beaucoup d'informations, vous voulez probablement restreindre son usage le plus possible.
Une question que vous devez vous poser est "Qu'est ce que je veux que mes utilisateurs voient ?".
La plupart des gros réseaux choisissent "rien", lorsque d'autres préfèrent que leurs clients puisse faire "/stats g" et "/stats k".<br>
Je vous suggère d'utiliser <i>set { oper-only-stats "*"; };</i> pour empêcher tous /stats pour les non-opers, mais si vous ne voulez pas cela, inspectez la liste des "/stats" et empèchez l'accès à tout ce que vous voulez ...
(en cas de doute, empêcher... Pourquoi auraient-ils besoin de savoir cela ?)
</p>
<p>
Pour vous donner quelques exemples :
</p>
<ul>
<li>/stats o: vous donne le noms des opers (avec la 'case' correcte) et leurs hostmasks.</li>
<li>/stats c: vous donne une idée des links et qui peut être utilisée comme backup, etc ...</li>
<li>/stats g, /stats k: en général utilisés pour bannir les proxys ... donc cela donnera juste aux attaquants une liste de proxys qu'ils peuvent utiliser.</li>
<li>/stats E, /stats e: informations plus sensibles, spécialement si un attaquant peut utiliser ces adresses.</li>
<li>/stats i, /stats y: peut aider un attaquant à trouver des hosts permettant beaucoup de connexions.</li>
<li>/stats P: aide à trouver des ports serveronly</li>
<li>etc c...</li>
</ul>
<p>
<b>MAP / LINKS</b><br>
Beaucoup de personnes ont demandé si il était possible de désactiver /map ou /links.
Notre position sur ce sujet est que c'est bête et donne un mauvais sens à la sécurité, laissez moi vous expliquer...
Cacher les serveurs sur lesquels les utilisateurs sont connectés est inutile vu qu'ils les connaissent déjà (sinon comment s'y seraient-ils connectés ?).
Pour les serveurs sur lesquels vous ne voulez aucuns utilisateurs, reportez vous à la section 8.6.
</p>
<p>
Maintenant, que POUVEZ vous faire ?
Depuis la version 3.2.1, il existe une option appelée 'flat map' (set::options::flat-map), cela fera apparaître tous les serveurs comme 'directement connectés' dans /map et /links, comme cela les utilisateurs ne sauront plus voir quel serveur est lié auquel ...
Ça peut être une bonne couche supplémentaire de protection car ainsi une personne ne pourra pas repérer les 'points faibles' avec /map ou /links.
Donc, utiliser cela est recommandé.
Notez que cela n'élimine pas totalement les risques ...
Si un split arrive, quelqu'un peut toujours voir quel serveur est linké auquel, et ceci est aussi valable pour d'autres choses.
</p>
<p>
<b>UTILISATEURS NORMAUX ET SNOMASKS</b><br>
Une chose qui n'est pas toujours connues est que les utilisateurs normaux peuvent également s'appliquer certains snomask limités, +s et +k.
Grâce à cela, ils peuvent voir des choses comme les rehashes, les kills et d'autres messages variés.
Pour désactiver cela, vous pouvez utiliser set::restrict-usermodes comme ceci : <i>set { restrict-usermodes "s"; };</i>.
</p>
<p>
Évidement tout ceci n'est que de la "dissimulation d'informations", ce n'est pas de la "vraie" sécurité.
Cela rendra plus difficiles / importants les efforts requis pour attaquer / pirater.
</p>
</div>
<p id="secantiexploit">
<b><font size="+2">8.8 &#8211; Se protéger des exploits</font></b>
</p>
<div class="desc">
<p>
Il y a des patches de kernel qui rendent plus difficiles les stack et heap exploits.
Ceci est très bien mais ne doit pas être votre principal point d'inquiétude, vous avez des risques de loin plus importants d'être attaqué par d'autres points que celui-ci...
Pour des raisons variées.
</p>
<p>
Une autre option est l'activation du chrooting (*NIX uniquement), ce qui signifie que lors d'un exploit réussi,
l'utiliateur est confiné dans le dossier UnrealIRCd et ne peut accèder à aucun autre fichier.
Ceci requière un accès root, la modification de include/config.h (la recherche du CHROOTDIR ainsi que la définition de IRC_USER et IRC_GROUP), et une recompilation.
</p>
<p>
Il y a une chose que vous devez toujours faire, c'est TOUJOURS UTILISER LA DERNIÈRE VERSION, inscrivez vous à la <a href="http://lists.sourceforge.net/mailman/listinfo/unreal-notify" target="_blank">unreal-notify mailinglist</a> tout de suite et vous recevrez les annonces de release (la unreal-notify est pour les annonces de release uniquement, d'où seulement 1 mail tout les X mois).
En général il est explicitement mentionné dans l'annonce si la release permet de fixer (de hauts risques) de sécurité, mais il est malgré tout bon d'upgrader dès que possible.
</p>
</div>
<p id="secsummary">
<b><font size="+2">8.9 &#8211; Conclusion</font></b>
</p>
<div class="desc">
<p>
Comme vous l'aurez je l'espère maintenant compris, vous ne pouvez jamais être 100% sécurisé.
Vous (et nous) devons trouver et éliminer toutes les failles car un attaquant a juste besoin de trouver une faille sur un serveur.
Tout ce qui a été expliqué ici DOIT de toutes façons aider à minimiser les risques considérablement.
Prenez le temps de sécuriser votre réseau et éduquer vos opers.
Beaucoup de personne ne font pas attention à la sécurité, jusqu'à ce qu'ils se fassent attaquer, essayez d'éviter ca :).
</p>
</div>
<p id="faq">
<font size="+2"><b>9 &#8211; Foire aux Questions (FAQ)</b></font>
</p>
<div class="desc">
<p>
La FAQ est disponible en ligne <a href="http://www.vulnscan.org/UnrealIRCd/faq/" target="_blank">ici</a>
</p>
</div>
<p id="modules">
<font size="+2"><b>10 &#8211; Modules</b></font>
</p>
<div class="desc">
<p>
Voici la description de quelques modules fournis avec UnrealIRCd.
Malheureusement, un seul d'entre eux est documenté pour le moment.
</p>
</div>
<p id="modules_m_nopost">
<font size="+2"><b>10.1 &#8211; m_nopost</b></font>
</p>
<div class="desc">
<p>
Ce module bannit automatiquement les utilisateurs essayant d'envoyer une requête de type HTTP.
Il a été écrit par Syzop pour contrer l'attaque XPS touchant Firefox, grâce à laquelle les navigateurs supportant l'AJAX peuvent agir comme robots spammeurs sur IRC.
Pour choisir ce que m_nopost doit faire lorsqu'il reçoit une telle requête, configurez <a href="#set_nopost_ban_action">
set::nopost::ban-action</a> et <a href="#set_nopost_ban_time">set::nopost::ban-time</a> (et leurs amis).
</p>
<p>
Ce module est une nouveauté de UnrealIRCd 3.2.9 et est compilé dans commands.so.
Par conséquent, il est chargé par dé dans la plupart des cas.
</p>
</div>
<p id="regex">
<font size="+2"><b>A &#8211; Expressions Régulières</b></font>
</p>
<div class="desc">
<p>
Les expressions régulières sont utilisées à beaucoup d'endroits dans Unreal, dont les badwords, spamfilter, et aliases.
Elles sont un outil très complexe utilisé comme modèle de comparaison.
Elles sont parfois appellées "regexp" ou "regex".
Unreal utilise la librairie d'expressions régulières TRE pour ses regex.
Cette librairie supporte quelques expressions très complexes et avancées pouvant être confuses.
Les informations suivantes vous aiderons à comprendre comment les regexps fonctionnent.
Si vous êtes intéressé par des informations plus techniques et détaillées au sujet de la syntaxe des regexp utilisés par Unreal, visitez le <a href="http://www.laurikari.net/tre/syntax.html" target="_new">site de TRE</a>.
</p>
</div>
<p id="regexlit">
<font size="+2"><b>A.1 &#8211; Litéraux</b></font>
</p>
<div class="desc">
<p>
Les litéraux sont les composents les plus basiques d'un regexp.
Fondamentalement, ce sont des caractères qui sont traités comme du texte simple.
Par exemple, le modèle "test" correspond aux quatres lettres, "t", "e", "s", et "t".
Dans Unreal, les litéraux sont traités sans respect de la case, donc le regex précédent correspondra aussi bien à "test" qu'à "TEST".
Chaque caractère n'étant pas un "méta caractère" (expliqué dans les sections suivantes) est traité comme un litéral.
Vous pouvez également rendre explicitement un caratère litéral en utilisant un backslash (\).
Par exemple, le point (.) est un métacaractère.
Si vous voulez inclure le litéral ., utilisez simplement \. et Unreal le traitera comme un point.
Il est également possible que vous vouliez rechercher un caractère qui n'est pas facilement écrivable, comme la caractère ASCII 3 (coloré).
Plutôt que de devoir vous débattre avec un client IRC pour créer ce caractère, vous pouvez utiliser une séquence spéciale, le \x. Si vous tappez \x3, alors il sera interprété comme étant le caractère ASCII 3.
Le nombre après le \x est représenté par un hexidécimal et peut être dans l'interval de \x0 à \xFF.
</p>
</div>
<p id="regexdot">
<font size="+2"><b>A.2 &#8211; L'opérateur Point</b></font>
</p>
<div class="desc">
<p>
L'opérateur point (.) est utilisé pour correspondra à "n'importe quel caractère".
Il correspond à un caractère simple qui n'a pas de valeur particulière.
Par exemple, la regex "a.c" correspondra à "abc", "adc", etc.
Cependant, il ne correspondra pas à "abd" car "a" et "c" sont des litéraux devant correspondre exactement.
</p>
</div>
<p id="regexrep">
<font size="+2"><b>A.3 &#8211; Les opérateurs de Répétition</b></font>
</p>
<div class="desc">
<p>
L'une des erreurs communes faites par les personnes utilisant les regex est de présumer qu'ils fonctionnent juste comme des wildcards.
Ce sont, les caractères * et ? qui fonctionnent juste comme une wildcard.
Alors que ces caractères ont une signification similaire dans un regex, ils ne sont pas exactement identiques.
De plus, les expressions régulières supportent également d'autres méthodes plus avancées de répétition.
</p>
<p>
L'opérateur de répétition le plus basique est le ?.
Cet opérateur correspond à 0 ou 1 fois le caractère précédent.
Le ? dans une regex diffère d'une wildcard.
Dans une wildcard, l'expression "a?c" correspond à un "a" suivi par n'importe quel caractère (ou aucun caractère), suivi par un "c".
Dans une regex, cela a un signification différente.
Il correspond à 0 ou 1 fois la lettre "a" suivi par la lettre "c".
Basiquement, le ? modifie le a en spécifiant combien de a doivent être présents.
Pour émuler le ? d'une wildcard, l'opérateur point . est utilisé.
Le regex "a.?c" est équivalent à la wildcard préalablement mentionnée.
Il correspond à la lettre "a" suivi par 0 ou 1 fois n'importe quel caractère (le ? modifie le .), suivi par un "c".
</p>
<p>
L'opérateur de répétition suivant est le *.
A nouveau, cet opérateur est similaire à une wildcard.
Il correspond à 0 ou plusieurs fois le caractère précédent.
Notez que ce "caractère précédent" est caractéristique à tous les opérateurs de répétition.
Le regex "a*c" correspond à 0 ou plusieurs a suivi par un "c".
Par exemple, "aaaaaac" correspond.
Encore une fois, pour que ceci fonctionne comme une wildcard, vous devrez utiliser "a.*c" ce qui forcera
la * a modifier le . (n'importe quel caractère) plutôt que le "a").
</p>
<p>
L'opérateur + est très similaire au *.
Cependant, au lieu de correspondre à 0 ou plus, il correspond à 1 ou plus.
Basiquement, "a*c" correspondra à "c" (0 a suivi par un c), là où "a+c" ne le fera pas.
Le "a+" signifie qu'il doit y avoir "au moins" 1 a.
Donc "c" ne correspond pas mais "ac" et "aaaaaaaaac" oui.
</p>
<p>
L'opérateur de répétition le plus avancé est une "borne".
Une borne vous laisse définir des contraintes exactes sur le nombre de fois que le caractère précédent doit être présent.
Par exemple, vous pouvez vouloir rechercher exactement 8 a, ou au moins 8 a, ou entre 3 et 5 a.
La borne vous permet de réaliser tout cela.
La syntaxe basique est {M,N} où M est la borne inférieure, et N est la borne suppérieure.
Par exemple, pour rechercher de 3 à 5 a, vous devrez mettre "a{3,5}".
Cependant, vous êtes pas obligés de spécifier les 2 nombres.
Si vous mettez "a{8}" cela signifie qu'il doit y avoir exactement 8 a.
Ainsi, "a{8}" est équivalent à "aaaaaaaa".
Pour spécifier l'exemple "au moins", vous créez simplement un intervalle qui a uniquement une borne inférieure.
Donc pour au moins 8 a, vous devrez mettre "a{8,}".
</p>
<p>
Par défaut, tous les opérateurs de répétition sont "gourmands".
La gourmandise est une notion quelque peu complexe.
Basiquement, cela signifie qu'un opérateur correspondra à autant de caractères qu'il pourra.
Il est plus simple d'expliquer avec un exemple.
</p>
<p>
Disons que nous avons le texte suivant :<br>
HELLO<br>
Et le regex suivant :<br>
.+L
</p>
<p>
Dans cet exemple, vous pourriez penser que le .+ correspond à "HE".
Cependant, ceci est incorrect.
Car le + est gourmand, il correspond à "HEL".
La raison est qu'il choisi la plus large portion du texte entré pouvant correspondre au regex.
Dans cet exemple, il choisi "HEL" car la seule autre condition est que le caractère après le texte correspondant au .+ doit être un "L".
Etant donné que le texte est "HELLO", "HEL" est suivi par un "L", et donc ca correspond.
</p>
<p>
Parfois, cependant, il est utile d'utiliser un opérateur non 'gourmand'.
Ceci peut être effectué en ajoutant un caractère ? après l'opérateur de répétition.
En modifiant ce que nous avions en ".+?L", le .+? correspondra maintenant à "HE" plutôt qu'à "HEL" étant donné qu'il a été rendu 'non gourmand'.
Le ? peut être ajouté à n'importe quel caractère de répétition : ??, *?, +?, {M,N}?.
</p>
</div>
<p id="regexbracket">
<font size="+2"><b>A.4 &#8211; Expressions Avec Crochets</b></font>
</p>
<div class="desc">
<p>
Les expressions avec crochets fournissent une manière pratique de faire un opérateur "ou".
Par exemple, si vous voulez dire "correspond à a ou à b".
Cette expression se présente sous la forme d'une série de caractères compris entre des crochets ([]), d'où son nom.
Ces caractères sont traités comme si il y avait un "ou" entre eux.
Par exemple, l'expression "[abc]" correspond à un "a", un "b" ou un "c".
Ainsi, le regexp "a[bd]c" correspond à "abc" et "adc" mais pas à "acc."
</p>
<p>
Une chose très commune à faire est rechercher quelque chose comme, une lettre ou un chiffre.
Plutôt que de faire, par exemple, "[0123456789]", l'opérateur crochet supporte les intervalles.
Ils fonctionnent en spécifiant le début et la fin avec un - entre eux.
Donc, une façon plus simple de rechercher un chiffre est de d'utiliser "[0-9]".
La même chose peut être utilisée pour des lettres, ou en fait, n'importe quel intervalle de valeurs ASCII.
Si vous voulez rechercher une lettre, utilisez simplement "[a-z]" étant donné qu'Unreal n'est pas sensible à la case, il correspondra à toutes les lettres.
Vous pouvez également inclure plusieurs intervalles dans la même expression.
Pour rechercher une lettre ou un nombre, "[0-9a-z]".
Une complication que cela génère est le fait que le - est un caractère spécial dans une expression avec crochets.
Pour pouvoir rechercher un - comme caractère littéral, la manière la plus simple est de le placer comme le premier ou le dernier caractère dans l'expression.
Par exemple, "[0-9-]" correspond à un chiffre ou à un -.
</p>
<p>
Pour rendre les choses encore plus simples, il existe plusieurs "classes de caractères" pouvant être utilisées dans une expression avec crochets.
Ces classes de caractères élimine le besoin de définir certains intervalles.
Les classes de caractères sont écrites en mettant leur nom entre : .
Par exemple, "[0-9]" peut également être écrit "[:digit:]".
La liste ci-dessous montre toutes les classes de caractères disponibles et ce qu'elles font :
</p>
<ul>
<li><tt>alnum</tt> - caractères alphanumériques</li>
<li><tt>alpha</tt> - acaractères alphabétique</li>
<li><tt>blank</tt> - caractères blanc /li>
<li><tt>cntrl</tt> - caractères de contrôle</li>
<li><tt>digit</tt> - chiffres décimaux (de 0 à 9)</li>
<li><tt>graph</tt> - tous les caractères imprimables excepté l'espace</li>
<li><tt>lower</tt> - lettres minuscules</li>
<li><tt>print</tt> - tous les caractères imprimables, espace inclus</li>
<li><tt>punct</tt> - tous les caractères imprimables n'etant ni un espace ni un alphanumérique</li>
<li><tt>space</tt> - espaces</li>
<li><tt>upper</tt> - lettres majuscules</li>
<li><tt>xdigit</tt> - nombres hexadécimaux</li>
</ul>
<p>
Une note important à propos des classes de caractères est qu'elles DOIVENT être le seul élément dans l'expression.
Par exemple, [:digit:-] N'est PAS autorisé.
A la place, vous pouvez réaliser le même but en imbriquant les expressions, par exemple, pour faire la même chose que "[0-9-]" en utilisant une classe de caractères, vous pouvez mettre "[[:digit:]-]".
</p>
<p>
La dernière caractéristique des expressions avec crochets est la négation.
Parfois, c'est utile pour dire "n'importe quoi excepté ces caractères".
Par exemple, si vous voulez vérifier si le caractère "n'est pas une lettre", il est plus facile de lister a-z et de dire "pas ceux-ci", que de lister tous les caractères n'étant pas des lettres.
Les expressions avec crochets vous permette de réaliser ceci avec une négation.
Vous niez l'expression en spécifiant un "^" comme premier caractère.
Par exemple, "[^a-z]" correspondra à tout caractère n'étant pas une lettre.
Comme avec le -, si vous voulez inclure un ^ literal, ne le placez pas en première position : "[a-z^]".
De plus, pour nier une classe de caractère, vous devez, une fois encore, utiliser l'imbrication, "[^[:isdigit:]]" correspondra à n'importe quel caractère n'étant pas un chiffre.
</p>
</div>
<p id="regexassert">
<font size="+2"><b>A.5 &#8211; Assertions</b></font>
</p>
<div class="desc">
<p>
Les assertions vous permettent de tester certaines conditions n'étant pas représentables par des chaînes de caractères, aussi bien qu'en utilisant des raccourcis pour certaines expressions avec crochets communes.
</p>
<p>
Le caractère ^ est désigné sous le nom de "ancre gauche".
Ce caractère correspond au début d'une chaîne.
Si vous spécifiez simplement une regex tel que "test", il correspondra, par exemple à "ceci est un test" car cette chaîne contient "test".
Mais, parfois, il est utile de s'assurer que la chaîne commence réellement avec le modèle.
Ceci peut être réalisé avec ^.
Par exemple "^test" signifique que le texte doit commencer par "test".
De plus, le caractère $ est l'"ancre droite".
Ce caractère correspond à la fin de la chaîne.
Donc si vous mettiez "^test$", alors la chaîne devrait être exactement le mot "test".
</p>
<p>
Des tests similaires existent également pour les mots.
Toutes les autres assertions sont spécifiées par l'usage d'un \ suivi par un caractère spécifique.
Par exemple, pour tester le début et la fin d'un mot, vous pouvez utiliser respectivement \< et \>.
</p>
<p>
Les assertions restantes ont deux formes : une négative et une positive.
Elles sont listés ici :
</p>
<ul>
<li><tt>\b</tt> - Limite d'un mot
<li><tt>\B</tt> - Intérieur d'un mot
<li><tt>\d</tt> - Chiffre (équivalent à <tt>[[:digit:]]</tt>)</li>
<li><tt>\D</tt> - Caractère n'étant pas un chiffre (équivalent à <tt>[^[:digit:]]</tt>)</li>
<li><tt>\s</tt> - Espace (équivalent à <tt>[[:space:]]</tt>)</li>
<li><tt>\S</tt> - Caractère n'étant pas un espace (équivalent à <tt>[^[:space:]]</tt>)</li>
<li><tt>\w</tt> - Mots (équivalent à <tt>[[:alnum:]_]</tt>)</li>
<li><tt>\W</tt> - Caractère n'étant pas un mots (équivalent à <tt>[^[:alnum:]_]</tt>)</li>
</ul>
</div>
<p id="regexalt">
<font size="+2"><b>A.6 &#8211; Alternation</b></font>
</p>
<div class="desc">
<p>
L'alternation est une méthode pour dire "ou".
L'opérateur alternation est une barre verticale (|).
Par exemple, si vous vouliez dire dire "a ou b" vous pouvez mettre "a|b".
Pour des lettres normales, ceci peut être remplacè par une expression avec crochets, mais l'alternation peut également être utilisée avec des sous-expressions (abordées dans la section suivante).
</p>
</div>
<p id="regexsub">
<font size="+2"><b>A.7 &#8211; Sous-expressions</b></font>
</p>
<div class="desc">
<p>
Une sous-expression est une portion d'une regex qui sera traitée comme une entité à part entière.
Il y a deux manière de créer une sous-expression.
Les deux méthodes diffèrent par rapport aux références arrières, qui seront expliquées plus tard.
Pour déclarer une sous-expression utilisant des références arrières, mettez la simplement entre parenthèses ().
Pour créer une sous-expression n'utilisant pas de références arrières, replacez la parenthèse ouvrante par "(?:".
Par exemple, "([a-z])" et "(?:[a-z])".
La raison pour laquelle les sous-expressions sont utiles est que vous pouvez alors appliquer des opérateurs à l'expression.
Tous les opérateurs de répétition, par exemple, ceux qui mentionnent "X ou plus de fois le caractère précédent", peut également être utilisé pour "X ou plus de fois la sous-expression précédente".
Par exemple, si vous avez un regex tel que "[0-9][a-z][0-9]", pour rechercher un chiffre, suivi par une lettre,
suivi par un chiffre, et que la vous décidez que vous voulez rechercher cette séquence deux fois.
Normallement, vous devriez utiliser, "[0-9][a-z][0-9][0-9][a-z][0-9]".
Avec les sous-expressions, par contre, vous pourrez simplement utiliser "([0-9][a-z][0-9]){2}".
</p>
</div>
<p id="regexbackref">
<font size="+2"><b>A.8 &#8211; Références arrières</b></font>
</p>
<div class="desc">
<p>
Les références arrières (back references) vous permettent de référencer une chaîne qui correspond à une des sous-expressions ou des regexp.
Vous utilisez une référence en spécifiant un backslash (\) suivi par un nombre, 0-9, par exemple \1.
\0 est une back reference spéciale qui se réferre au regexp entier, plutôt qu'à une sous-expression.
Les back references sont utilises lorsque vous voulez rechercher quelque chose qui contient la même chaîne deux fois.
Par exemple, disons que vous avez un nick!user@host. Vous savez qu'il y a un trojan qui utilise un nickname et un username correspondant à "[0-9][a-z]{5}", et les deux sont les mêmes.
Utiliser "[0-9][a-z]{5}![0-9][a-z]{5}@.+" ne fonctionnera pas car il permettra au nickname et à l'username d'être différents.
Par exemple, le nickname pourra être 1abcde et l'username 2fghij.
Les références arrières vous permettent de contourner cette limitation.
Utiliser, "([0-9][a-z]{5})!\1@.+" permettra de réaliser exactement ce qui était attendu.
Ceci cherchera le nickname correspondra aux sous-expressions données, et utilisera ensuite une référence arrière pour dire que l'username doit être exactement le même texte.
</p>
<p>
C'est parce que vous ne pouvez avoir que 9 back references, que la notation (?:) est utile.
Elle vous permet de créer une sous-expression sans gacher une référence.
De plus, vu que les informations des références arrières n'ont pas besoin d'être sauvées, elles sont plus rapides.
A cause de ceci, des sous-expressions non-références arrières peuvent être utilisées même si des références arrières ne sont pas obligatoire.
</p>
</div>
<p id="regexcase">
<font size="+2"><b>A.9 &#8211; Sensibilité à la case</b></font>
</p>
<div class="desc">
<p>
Comme déjà mentionné, Unreal considère toutes les regexps comme insensibles à la case par défaut.
La raison principale à cela est qu'il semble qu'il y a beaucoup plus de cas où vous voulez être insensible à la case que l'inverse, par exemple, si vous bloquez le texte "www.test.com", vous voulez certainement bloquer aussi "WWW.TEST.COM".
Cependant, il y a des cas où vous pouvez vouloir être sensible à la case, par exemple, chercher certains trojans.
C'est pourquoi, une méthode existe pour permettre de dynamiquement activer/désactiver l'insensibilité à la case.
</p>
<p>
Pour la désactiver, utilisez simplement "(?-i)" et pour l'activer, "(?i)". Par exemple, "(?-i)[a-z](?i)[a-z]" correspondra à une lettre minuscule (insensibilité à la case désactivée) suivie par une lettre minuscule ou majuscule (insensibilité à la case activée).
De plus, plutôt que d'avoir à toujours se rappeller de changer de mode lorsque vous avez fini, vous pouvez également spécifier que le changement de mode doit uniquement s'appliquer à une sous-expression, par exemple, "(?-i:[a-z])[a-z]" est équivalent au précédent regexp car le -i s'applique uniquement à la sous-expression donnée.
</p>
</div>
</body>
</html>