1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-29 00:06:38 +02:00
Files
unrealircd/doc/unreal32docs.fr.html
T

5114 lines
243 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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=iso-8859-1">
<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$ -->
<!-- Accents used in the French translation :
&agrave; &acirc; &auml; &Agrave; &Auml; &ccedil; &Ccedil; &eacute; &egrave; &ecirc; &Eacute; &Egrave; &Ecirc; &icirc; &ocirc; &ouml; &Ouml; &ugrave; &ucirc;
-->
<body>
<a href="unreal32docs.html">English</a> |
<a href="unreal32docs.de.html">German</a> |
<a href="unreal32docs.es.html">Spanish</a> |
<a href="unreal32docs.hu.html">Hungarian</a> |
French |
<a href="unreal32docs.gr.html">Greek</a> |
<a href="unreal32docs.nl.html">Dutch</a> |
<a href="unreal32docs.ru.html">Russian</a> |
<a href="unreal32docs.tr.html">Turkish</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.9</font><br>
<b>Derni&egrave;re mise &agrave; jour de la documentation:</b> 2011-10-09
</div>
<br>
<b>D&eacute;veloppeur principal:</b> Syzop<br>
<b>D&eacute;veloppeurs:</b> binki<br>
<b>Anciens d&eacute;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&eacute;&eacute;critures majeures), codemastr et beaucoup de contributeurs<br>
<b>Traduction fran&ccedil;aise:</b> Alef Burzmali - <a href="http://www.burzmali.com">www.burzmali.com</a><br>
<b>Pr&eacute;c&eacute;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 &agrave; 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 &agrave; jour et le m&eacute;lange des versions 3.1.x -&gt; 3.2</a><br>
---1.2. <a href="#notesonupgrade">Notes sur la mise &agrave; jour entre versions 3.2</a><br>
2. <a href="#installation">Installation</a><br>
3. <a href="#features">Fonctionnalit&eacute;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&egrave;s des op&eacute;rateurs</a><br>
-- 3.7. <a href="#feature_opercmds">Commandes op&eacute;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_ziplinks">Zip links</a><br>
-- 3.11. <a href="#feature_dyndns">Support des links avec DNS/IP dynamiques</a><br>
-- 3.12. <a href="#feature_antiflood">Fonctionnalit&eacute;s anti-flood</a><br>
-- 3.13. <a href="#feature_bantypes">Types de ban</a><br>
-- 3.14. <a href="#feature_spamfilter">Spamfilter</a><br>
-- 3.15. <a href="#feature_cidr">CIDR</a><br>
-- 3.16. <a href="#feature_nickchars">Caract&egrave;res admis dans les pseudos</a><br>
-- 3.17. <a href="#feature_cgiirc">Support de CGI:IRC</a><br>
-- 3.18. <a href="#feature_timesync">Synchronisation de l'heure</a><br>
-- 3.19. <a href="#feature_other">Autres fonctionnalit&eacute;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&eacute;rateurs</a><br>
8. <a href="#security">Conseils de s&eacute;curit&eacute;/checklist</a><br>
---8.1. <a href="#secpasswords">Mots de passe</a><br>
---8.2. <a href="#secnonircd">Vuln&eacute;rabilit&eacute;s non li&eacute;es &agrave; l'Ircd</a><br>
---8.3. <a href="#secpermissions">Permissions et fichier de configuration</a><br>
---8.4. <a href="#secuser">Probl&egrave;mes li&eacute;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&eacute;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&eacute;guli&egrave;res</a><br>
---A.1. <a href="#regexlit">Lit&eacute;raux</a><br>
---A.2. <a href="#regexdot">L'op&eacute;rateur Point</a><br>
---A.3. <a href="#regexrep">Les op&eacute;rateurs de r&eacute;p&eacute;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&eacute;f&eacute;rences arri&egrave;res (back references)</a><br>
---A.9. <a href="#regexcase">Sensibilit&eacute; &agrave; 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 &eacute;t&eacute; &eacute;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 &eacute;crite de l'&eacute;quipe de d&eacute;veloppement d'UnrealIRCd.
Ce document peut &ecirc;tre copi&eacute;/imprim&eacute;/reproduit/publi&eacute; autant de fois que vous le souhaitez, &agrave; condition que ce soit pour l'utilisation d'UnrealIRCd et qu'il ne soit jamais modifi&eacute; d'une quelconque mani&egrave;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&eacute;pond &agrave; plus de 80% des questions/probl&egrave;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&eacute;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 &agrave; jour et le m&eacute;lange des versions 3.1.x -&gt; 3.2</b></font>
</p>
<div class="desc">
<p>
Au cas o&ugrave; vous souhaiteriez mettre &agrave; jour Unreal3.1.x vers Unreal3.2 vous noterez que l'ensemble des fichiers de configuration a chang&eacute;, vous pourriez trouver cela difficile au d&eacute;but, mais une fois que vous aurez chang&eacute; vous trouverez cela beaucoup mieux !
</p>
<p>
N'oubliez pas de lire la section 3 &agrave; propos des fonctionnalit&eacute;s, bien que vous connaissiez d&eacute;j&agrave; la plupart d'entre elles car elles sont issues des 3.1.x, il y en a tout de m&ecirc;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&eacute;ellement le faire, vous aurez besoin d'une version 3.1.4 minimum, mais une 3.1.5 est fortement conseill&eacute;e.
</p>
</div>
<p id="notesonupgrade">
<font size="+2"><b>1.2 &#8211; Notes sur la mise &agrave; jour entre versions 3.2</b></font><br>
</p>
<div class="desc">
<p>
Nous vous recommandons de proc&eacute;der de la mani&egrave;re suivante pour mettre &agrave; jour :
</p>
<ul>
<li>
Linux :
<ol>
<li>Renommez votre ancien dossier UnrealIRCd (sinon vous &eacute;craserez son contenu dans la prochaine &eacute;tape)</li>
<li>Extraire la nouvelle version d'UnrealIRCd et ex&eacute;cutez ./Config puis make</li>
<li>Copiez vos anciens fichiers de configuration vers le nouveau r&eacute;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&eacute;sinstalleur pour toutes les pr&eacute;c&eacute;dentes versions d'Unreal que vous avez install&eacute;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&eacute;rifier les RELEASE NOTES pour voir ce qui a chang&eacute;.
Si vous notez des changements (ou bug) entre les versions, VOUS DEVEZ &Ecirc;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&egrave;mes d'exploitation test&eacute;s et support&eacute;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&eacute;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&egrave;me d'exploitation, envoyer les d&eacute;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&eacute;pondez aux questions avec le meilleur de vos connaissances.
G&eacute;n&eacute;ralement, si vous n'&ecirc;tes pas s&ucirc;r, les param&egrave;tres par d&eacute;faut devraient fonctionner !
</li>
<li>make</li>
<li>Maintenant cr&eacute;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&eacute;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&eacute;s</b></font>
</p>
<div class="desc">
<p>
La plupart des fonctionnalit&eacute;s importantes ou utiles sont expliqu&eacute;es dans cette section.
Elle fourni une vue d'ensemble, et fait parfois r&eacute;f&eacute;rence aux fichiers de configuration (quelque chose que vous n'&ecirc;tes pas sens&eacute;s connaitre actuellement).
</p>
<p>
Vous pouvez sauter cette section, toutefois il est sugg&eacute;r&eacute; de la lire avant ou apr&egrave;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&eacute;ritable host (domaine) des utilisateurs, par exemple si votre host r&eacute;el est <i>d5142341.cable.wanadoo.fr</i>,
il sera affich&eacute; (lors des join, part, whois, etc) ainsi : <i>rox-2DCA3201.cable.wanadoo.fr</i>.
Cette fonctionnalit&eacute; est utile pour emp&ecirc;cher les floods entre utilisateurs depuis qu'ils ne peuvent plus voir l'host ou l'IP r&eacute;el.
</p>
<p>
Ceci est contr&ocirc;l&eacute; par le usermode +x (comme : /mode votrepseudo +x), les administrateurs peuvent forcer le mode +x par d&eacute;faut, voire interdire aux utilisateurs de l'enlever.
</p>
<p>
Un host camoufl&eacute; est g&eacute;n&eacute;r&eacute; par un module de cloaking (il est obligatoire d'en avoir un charg&eacute;), il y en a un seul officiel &agrave; ce jour :<br>
<b>cloak :</b> C'est le module officiel de cloaking depuis la version 3.2.1, il est plus s&eacute;curis&eacute; que l'ancien algorithme, il utilise la m&eacute;thode de hachage md5 et requi&egrave;re trois cl&eacute;s set::cloak-keys:: compos&eacute;es de caract&egrave;res alphanum&eacute;riques (a-z, A-Z et 0-9) [ex: CZCBd45Q6DmtExAd8Bm2"].
Regardez example.fr.conf pour un exemple.
</p>
<p>
Ces cl&eacute;s DOIVENT &ecirc;tre les m&ecirc;mes sur TOUS LES SERVEURS d'un r&eacute;seau.
Elles doivent &ecirc;tre gard&eacute;es SECR&Ecirc;TES car il est possible de d&eacute;chiffrer l'host original si vous connaissez ces cl&eacute;s (ce qui rendrait le umode +x inutile).
</p>
<p>
Astuce: Si vous utilisez un syst&egrave;me *UNIX et devez cr&eacute;er de nouvelles cl&eacute;s de cloaking, vous pouvez ex&eacute;cuter './unreal gencloak' dans votre shell, ce qui affichera trois cha&icirc;nes al&eacute;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&egrave;s pratique car :<br>
- Vous pouvez les charger/d&eacute;charger pendant que l'ircd est lanc&eacute; (avec /rehash).
Cela vous permet de corriger certains bugs ou d'ajouter de nouvelles fonctionnalit&eacute;s sans &ecirc;tre oblig&eacute; de red&eacute;marrer !<br>
- D'autres personnes peuvent cr&eacute;er des modules tiers avec de nouvelles commandes, modes utilisateurs et m&ecirc;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&eacute; 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&eacute;cial de usermode qui d&eacute;finit quelles notices vous recevrez des serveurs.
(cela est utilis&eacute; le plus souvent par les op&eacute;rateurs).
</p>
<p>
Cela peut &ecirc;tre d&eacute;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 &eacute;crivant simplement : /mode votrepseudo -s
</p>
<p>
Les snomasks disponibles sont :<br>
c - les connexions locales<br>
F - les connexions globales (except&eacute;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&eacute;s aux non-op&eacute;rateurs]<br>
</p>
<p>
Vous pouvez contr&ocirc;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&eacute;faut, si un utilisateur applique uniquement le mode +s, certains snomasks sont appliqu&eacute;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&eacute; &agrave; Nickserv (cela sera traduit en : privmsg nickserv identify blabla).
Vous pouvez bien entendu cr&eacute;er des alias plus compliqu&eacute;s comme /register qui sera envoy&eacute; &agrave; Chanserv si le premier param&egrave;tre commence par un # et sinon &agrave; Nickserv.
</p>
<p>
Les alias sont &agrave; configurer dans les <a href="#aliasblock">alias blocks</a> du fichier de configuration.
Vous pouvez aussi inclure un fichier avec des alias par d&eacute;faut adapt&eacute;s &agrave; 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&egrave;me d'aide interne accessible via /helpop.
La commande /helpop est enti&egrave;rement configurable via le help block dans le fichier de configuration.
En suppl&eacute;ment, un help.conf est inclus, il contient une aide basique pour toutes les commandes par d&eacute;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 &ecirc;tes un op&eacute;rateur (helpop) vous devrez ajouter le pr&eacute;fix ? aux mots cl&eacute;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&egrave;s des op&eacute;rateurs</b></font>
</p>
<div class="desc">
<p>
Dans UnrealIRCd, plusieurs <a href="#operblock_flags">niveaux d'op&eacute;rateurs</a> sont accessibles et vous pouvez d&eacute;finir des droits suppl&eacute;mentaires (comme l'utilisation de /gline) pour chacun d'eux.
Grâce &agrave; cela vous pouvez donner aux op&eacute;rateurs les privil&egrave;ges dont ils ont besoin.
</p>
<p>
Cela est contr&ocirc;l&eacute; par les flags op&eacute;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&eacute;rateurs</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a beaucoup de commandes performantes pour les op&eacute;rateurs qui sont expliqu&eacute;es dans <a href="#useropercommands">Commandes utilisateurs et op&eacute;rateurs</a>, vous voudrez probablement lire cela apr&egrave;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&eacute;curiser les connexions en les chiffrant.
Vous pouvez l'utiliser pour s&eacute;curiser le trafic entre serveurs mais aussi le trafic client&lt;-&gt;serveur.
Habituellement, SSL est utilis&eacute; pour prot&eacute;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 &agrave; un port SSL (donc ne mettez pas le port irc par d&eacute;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&eacute;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 = yesSynchronisation de l'heure
[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&eacute; et retourn&eacute; 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&eacute;ment (comme dans l'exemple stunnel) sinon vous serez vuln&eacute;rable aux attaques "active sniffing" (ssl redirects).
Ce n'est toutefois pas l'endroit appropri&eacute; pour en parler (renseignez vous sur le SSL, ne nous demandez rien).
[mIRC et xchat vous donne la possibilit&eacute; 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 &ecirc;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&eacute;rimentale de l'IPv6 pour w2k/XP, cela n'est pas (encore) support&eacute; par UnrealIRCd.
</p>
</div>
<p id="feature_ziplinks">
<font size="+2"><b>3.10 - Zip links</b></font>
</p>
<div class="desc">
<p>
Les Zip links peuvent &ecirc;tre activ&eacute;s pour les transferts entre serveurs (links).
Cela compresse les donn&eacute;es en utilisant zlib et peut sauvegarder entre 60 et 80% de votre bande passante ...
C'est donc tr&egrave;s utile pour les links avec des bandes passantes faibles ou des links avec &eacute;norm&eacute;ment d'utilisateurs, et peut &ecirc;tre tr&egrave;s b&eacute;n&eacute;fique lorsque vous liez deux serveurs, car de nombreuses donn&eacute;es sont &eacute;chang&eacute;es sur chaque utilisateur, salon, etc.
</p>
<p>
Pour compiler avec le support des zip links, il faudra r&eacute;pondre Yes lors de la question portant sur le zlib pendant le ./Config et ajouter dans votre link block link::options::zip (sur les deux serveurs).
</p>
</div>
<p id="feature_dyndns">
<font size="+2"><b>3.11 - Support des links avec IP/DNS dynamiques</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a quelques (nouvelles) fonctionnalit&eacute;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.12 - Fonctionnalit&eacute;s Anti-Flood</b></font>
</p>
<div class="desc">
<p>
<b>Throttling</b><br>
Le Throttling est une m&eacute;thode qui vous permet de d&eacute;terminer le temps minimum pour qu'un client se reconnecte apr&egrave;s une d&eacute;connexion &agrave; votre serveur.
Vous pouvez configurer cela dans votre set::throttle block pour autoriser X connexions toutes les Y secondes depuis la m&ecirc;me IP.<br>
<br>
<b>Modes des salons</b><br>
Certains modes salons sont aussi tr&egrave;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&eacute;s peuvent parler, <b>j</b> = join throttling (par utilisateur).<br>
<br>
Depuis la beta18, il y a un mode channel beaucoup plus avanc&eacute; +f ...<br>
<b>Mode salon f</b><br>
&Agrave; la place d'utiliser des scripts ou des bots pour vous prot&eacute;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&eacute;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&eacute;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&eacute;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 &ecirc;tre plus avanc&eacute; et complexe:<br>
&Agrave; la place de l'action par d&eacute;faut, vous pouvez sp&eacute;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 &eacute;galement des param&egrave;tres que vous pouvez ajouter pour enlever les modes apr&egrave;s X minutes : <i>+f [20j#R5]:15</i> mettra le salon en +R si la limite est atteinte et l'enlevera apr&egrave;s 5 minutes.<br><br>
Un serveur peut avoir un temps par d&eacute;faut pour l'enl&egrave;vement de ces modes (set::modef-default-unsettime) donc si vous &eacute;crivez <i>+f [20j]:15</i>, cel&agrave; pourra &ecirc;tre transform&eacute; en <i>+f [20j#i10]:15</i>. C'est juste par d&eacute;faut, vous pouvez toujours mettre [20j#i2]:15 ou quelque chose dans le genre, et vous pouvez aussi annuler compl&eacute;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&eacute; +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&eacute;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&eacute; 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&ucirc;t personnel.
Que faire si aucun op n'est disponible quand un &eacute;v&eacute;nement se produit, voudrais-je que le salon soit bloqu&eacute; pendant 15 minutes (= pas agr&eacute;able pour les utilisateurs) ou 5 minutes (= la fautif n'ayant qu'&agrave; attendre 5 min et flooder &agrave; nouveau).
&Ccedil;a d&eacute;pend aussi du type de flood, emp&ecirc;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 &eacute;tablir diff&eacute;rents temps de retrait des modes.<br><br>
<b>Mode salon j</b><br>
Le mode +f inclus un dispositif permettant d'emp&ecirc;cher les join floods, toutefois ce dispositif est "global".
Par exemple, si il est regl&eacute; &agrave; 5:10 et que 5 utilisateurs <u>diff&eacute;rents</u> joignent en 10 secondes, la protection contre le flood est activ&eacute;e.<br>
Le mode de salon +j est diff&eacute;rent.
Ce mode fonctionne sur la base d'un utilisateur.
Plut&ocirc;t que de prot&eacute;ger contre les join floods, il est fait pour prot&eacute;ger contre les join-part floods.
Le mode prend un param&egrave;tre de la forme X:Y o&ugrave; X est le nombre de joins et Y est le nombre de secondes.
Si un utilisateur d&eacute;passe la limite, il ne pourra plus rejoindre le salon.
</p>
</div>
<p id="feature_bantypes">
<font size="+2"><b>3.13 - 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&eacute; de quelqu'un est 'rox-ACB17294.isp.com' et que vous bannissez *!*@rox-ACB17294.isp.com, alors m&ecirc;me si l'utilisateur enl&egrave;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&eacute;rifi&eacute;s pour les hosts r&eacute;els ET les hosts masqu&eacute;s.<br>
Les bans avec des IP sont aussi disponibles (ex: *!*@128.*) et sont aussi toujours v&eacute;rifi&eacute;s.<br><br>
Les bans sur les IPs masqu&eacute;es requi&egrave;rent quelques explications, :<br>
Si l'IP d'un utilisateur est 1.2.3.4, son cloaked host pourrait &ecirc;tre 341C6CEC.8FC6128B.303AEBC6.IP.<br>
Si vous bannissez *!*@341C6CEC.8FC6128B.303AEBC6.IP vous bannirez donc aussi *!*@1.2.3.4 (ce qui semble &eacute;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 &agrave; savoir comment un ban doit &ecirc;tre &eacute;tabli le moment venu.<br><br>
<b>Types de ban &eacute;tendus</b><br>
Les bans &eacute;tendus ressemble &agrave; ~&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&eacute;rent du traditionnel masque nick!user@host.
Ils permettent aussi des choses comme rendre muet un utilisateur.<br><br>
Ces types de bans pr&eacute;cisent quelles actions sont associ&eacute;es &agrave; 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 &agrave; 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 &agrave; 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 &agrave; ce ban, il ne pourra pas rejoindre le salon. Par contre, s'il est d&eacute;j&agrave; dessus, il pourra faire ce qu'il veut, comme parler ou changer de pseudo.<br><i>Ex: ~j:*!*@*.aol.com</i><br>
Ceci peut &ecirc;tre pratique pour emp&ecirc;cher les utilisateurs d'un FAI particulier de rejoindre le salon, mais leur permettre quand m&ecirc;me de l'utiliser librement une fois dessus, comme par exemple apr&egrave;s un /invite</td>
</tr>
</table>
<p>
Ces types de bans introduisent de nouveux crit&egrave;res de s&eacute;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&eacute;sent sur le salon d&eacute;sign&eacute; par ce ban, alors il ne pourra pas joindre le salon dans lequel ce ban a &eacute;t&eacute; plac&eacute;.
Un pr&eacute;fixe peut aussi &ecirc;tre sp&eacute;cifi&eacute; (+/%/@/&amp;/~), pour ne d&eacute;signer que les utilisateurs ayant au moins le flag sp&eacute;cifi&eacute; sur le salon consid&eacute;r&eacute;.<br>
<i>Ex: +b ~c:#lamers, +e ~c:@#trusted </i><br>
Ceci emp&ecirc;chera &agrave; tous les utilisateurs pr&eacute;sents sur #lamers, sauf s'ils sont aussi au moins op&eacute;rateurs de #trusted de venir sur le salon sur lequel est plac&eacute; 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 &agrave; la fois &agrave; un espace (' ') et &agrave; un underscore ('_'), donc 'Stupid bot script v1.4' sera bloqu&eacute; par ce ban.</td>
</tr>
<tr>
<td>~R</td><td>registered</td><td>Si l'utilisateur s'est identifi&eacute; aupr&egrave;s des services (habituellement NickServ) et correspond &agrave; ce nick, alors ce ban le d&eacute;signera. Par cons&eacute;quent, ce ban est uniquement utile pour les exceptions (+e).<br>
<i>Ex: +e ~R:Nick</i> autorisera Nick sur le salon, m&ecirc;me s'il correspond &agrave; un ban, s'il s'est identifi&eacute; aupr&egrave;s de NickServ et utilise le pseudo Nick.</td>
</tr>
<tr>
<td>~a</td><td>account</td><td>s'est identifi&eacute; aupr&egrave;s des services (habituellement NickServ) avec ce compte, ce ban le d&eacute;signera.<br>
Ce ban est l&eacute;g&egrave;rement diff&eacute;rent de ~R, puisqu'un utilisateur de nick ABC peut &ecirc;tre connect&eacute; avec le compte XYZ. Tous les services ne supportent pas cette option, et dans ce cas, vous devrez utiliser ~R &agrave; la place.<br>
<i>Ex: +e ~a:UnCompte</i> autorisera le(s) utilisateur(s) se connectant au compte UnCompte &agrave; rejoindre le salon en ignorant les bans.</td>
</tr>
</table>
<p>
Vous pouvez cumuler les bans &eacute;tendus du premier groupe avec ceux du deuxi&egrave;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 &egrave;tre utilis&eacute;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 &eacute;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&egrave;me de lutte contre le spam, la publicit&eacute;, les worms et plein d'autres choses.
Il fonctionne un peu comme que le syst&egrave;me de badwords mais il a de nombreux avantages.
</p>
<p>
Les Spamfilters sont ajout&eacute;s grâce &agrave; 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&eacute;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&eacute; 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&eacute;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&eacute; &agrave; nick!user@host:realname</td>
</tr>
</table>
Vous pouvez sp&eacute;cifier plusieurs cibles, comme : <i>cpNn</i>
</td>
</tr>
<tr valign="top">
<th>[action]</th>
<td>
Sp&eacute;cifie l'action devant &ecirc;tre prise (seule 1 action peut &ecirc;tre indiqu&eacute;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&eacute;)</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&ecirc;che l'utilisateur donc d'envoyer d'autres DCCs</td>
</tr>
<tr valign="top">
<td>viruschan</td><td>&Eacute;jecte l'utilisateur de tous les salons, le force &agrave; rejoindre le salon d&eacute;fini par set::spamfilter::virus-help-channel et d&eacute;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&eacute;vient l'utilisateur que son message a &eacute;t&eacute; intercept&eacute;. Aucune autre action n'est effectu&eacute;e et le message n'est pas bloqu&eacute;.</td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<th>[duree]</th>
<td>
Dur&eacute;e de la *line/shun ajout&eacute;e par le filtre, utilisez '-' pour mettre la valeur par d&eacute;faut ou pour ignorer le param&egrave;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&eacute;s par des espaces lors de l'utilisation. De m&ecirc;me, un double underscore ('__') sera remplac&eacute; par un underscore ('_').
Encore une fois, utilisez '-' pour utiliser la valeur par d&eacute;faut.
</td>
</tr>
<tr valign="top">
<th>[regex]</th>
<td>
Ceci est l'<a href="#regex">expression r&eacute;guli&egrave;re</a> correspondant au terme qui doit &ecirc;tre bloqu&eacute;.
</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&eacute; dans un message priv&eacute; ou sur un salon alors le message sera bloqu&eacute; et une gline sera imm&eacute;diatement ajout&eacute;e.<br><br>
Un autre exemple: <i>/spamfilter add pc block - - come to irc\..+\..+</i><br>
Ceci est une <a href="#regex">expression r&eacute;guli&egrave;re</a> qui d&eacute;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&eacute; dans un message priv&eacute; alors l'utilisateur est glin&eacute; pour 3 heures avec comme raison : <i>Please go to www.viruscan.xx/nicepage/virus=blah</i>.
</p>
<p>
Les filtres antispams ajout&eacute;s avec /spamfilter sont globaux.
Ils fonctionnent que l'utilisateur/salon ait le mode +G d&eacute;fini ou pas, seuls les op&eacute;rateurs et les ulines (services) sont exempt&eacute;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&eacute;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&eacute;e par d&eacute;faut pour les *lines ajout&eacute;es par le spamfilter (d&eacute;faut: 1 jour)<br>
<b>set::spamfilter::ban-reason</b> vous permet de sp&eacute;cifier une raison par d&eacute;faut (d&eacute;faut: 'Spam/advertising')<br>
<b>set::spamfilter::virus-help-channel</b> vous permet de sp&eacute;cifier le salon &agrave; joindre pour l'action 'viruschan' (d&eacute;faut: #help)<br>
<b>set::spamfilter::virus-help-channel-deny</b> vous permet de bloquer tout join normal au virus-help-channel (d&eacute;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&eacute;guli&egrave;re</a> utilis&eacute;e dans un filtre anti-spam peut consid&eacute;rablement ralentir l'IRCd.
Cela d&eacute;pend de l'expression r&eacute;guli&egrave;re (et de comment le moteur de regex la g&egrave;re), certains sont tr&egrave;s rapides et UnrealIRCd peut en ex&eacute;cuter des milliers par seconde.
D'autres peut &ecirc;tre extr&egrave;mement lentes, prendre plusieures secondes &agrave; s'ex&eacute;cuter et faire freezer l'IRCd.<br><br>
Afin de limiter ce ph&eacute;nom&egrave;ne, Unreal dispose d'une Slow Spamfilter Detection : pour chaque filtre, Unreal v&eacute;rifie le temps qu'il met &agrave; &ecirc;tre ex&eacute;cut&eacute; &agrave; chaque fois qu'il l'utilise.
Lorsqu'un certain seuil est atteint, Unreal peut avertir voire supprimer ce filtre.<br>
L'avertissement est configur&eacute; gr&acirc;ce &agrave; <b>set::spamfilter::slowdetect-warn</b> (d&eacute;faut : 250ms) et la suppression automatique gr&acirc;ce &agrave; <b>set::spamfilter::slowdetect-fatal</b> (defaut : 500ms).
Vous pouvez mettre les deux &agrave; 0 (z&eacute;ro) pour d&eacute;sactiver la d&eacute;tection<br><br>
Cette fonctionnalit&eacute; n'est pas encore disponible sur Windows.
</p>
</div>
<p id="feature_cidr">
<font size="+2"><b>3.15 - 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&eacute;es aux FAI en utilisant CIDR, cela vous permet en pla&ccedil;ant un ban bas&eacute; sur le CIDR de bannir facilement un FAI.
Unreal supporte le CIDR pour l'IPv4 et l'IPv6.
Les masques CIDR peuvent &ecirc;tre utilis&eacute;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 &ecirc;tre utilis&eacute; dans les /kline, /gline, /zline, /gzline, et /shun.
Unreal utilise la syntaxe standard d'IP/bits, 127.0.0.0/8 (correspond &agrave; la plage 127.0.0.0 - 127.255.255.255) et fe80:0:0:123::/64 (correspond &agrave; 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.16 - Caract&egrave;res admis dans les pseudos</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a maintenant la capacit&eacute; de sp&eacute;cifier quels caract&egrave;res/langages doivent &ecirc;tre autoris&eacute;s dans les pseudos.
Vous appliquez cela avec <b>set::allowed-nickchars</b>.
</p>
<p>
Pour le fran&ccedil;ais, le choix conseill&eacute; est <b>latin1</b> qui reprend tous les caract&egrave;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&egrave;res/encodage:</th>
</tr>
<tr><td>catalan</td><td>Caract&egrave;res catalans</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>danish</td><td>Caract&egrave;res danois</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>dutch</td><td>Caract&egrave;res n&eacute;erlandais</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>french</td><td>Caract&egrave;res fran&ccedil;ais</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>german</td><td>Caract&egrave;res allemands</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>swiss-german</td><td>Caract&egrave;res Suisse-Allemand (non es-zett)</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>icelandic</td><td>Caract&egrave;res islandais</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>italian</td><td>Caract&egrave;res italiens</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>spanish</td><td>Caract&egrave;res espagnols</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>swedish</td><td>Caract&egrave;res su&eacute;dois</td><td>iso8859-1 (latin1)</td></tr>
<tr><td><b>latin1</b></td><td>Fran&ccedil;ais, catalan, danois, n&eacute;erlandais, allemand, suisse-allemand, islandais, italien et su&eacute;dois</td><td>iso8859-1 (latin1)</td></tr>
<tr><td>hungarian</td><td>Caract&egrave;res hongrois</td><td>iso8859-2 (latin2), windows-1250</td></tr>
<tr><td>polish-iso</td><td>Caract&egrave;res polonais (attention : polish-w1250 est plus souvent utilis&eacute;)</td><td>iso8859-2 (latin2)</td></tr>
<tr><td>romanian</td><td>Caract&egrave;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&egrave;res polonais, variante windows</td><td>windows-1250</td></tr>
<tr><td>slovak-w1250</td><td>Caract&egrave;res slovaques, variante windows</td><td>windows-1250</td></tr>
<tr><td>czech-w1250</td><td>Caract&egrave;res tch&egrave;ques, variante windows</td><td>windows-1250</td></tr>
<tr><td><b>windows-1250</b></td><td>Polonais (polish-w1250), slovaque (slovak-w1250), tch&egrave;que (czech-w1250), hongrois et roumain</td><td>windows-1250</td></tr>
<tr><td>russian-w1251</td><td>Caract&egrave;res russes</td><td>windows-1251</td></tr>
<tr><td>belarussian-w1251</td><td>Caract&egrave;res belarusses</td><td>windows-1251</td></tr>
<tr><td>ukrainian-w1251</td><td>Caract&egrave;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&egrave;res grecques</td><td>iso8859-7</td></tr>
<tr><td>turkish</td><td>Caract&egrave;res turcs</td><td>iso8859-9</td></tr>
<tr><td>hebrew</td><td>Caract&egrave;res h&eacute;breux</td><td>iso8859-8-I/windows-1255</td></tr>
<tr><td>chinese-simp</td><td>Chinois simplifi&eacute;</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&egrave;res chinese-*</td><td>Multibyte: GBK</td></tr>
<tr><td><b>gbk</b></td><td>Caract&egrave;res chinese-*</td><td>Multibyte: GBK</td></tr>
</table>
<p>
<b>Note 1 :</b> Attention, certaines combinaisons peuvent poser des probl&egrave;mes.
Par exemple, vous ne pouvez pas combiner latin* et chinese-*, UnrealIRCd affichera une erreur.
Mixer d'autres charsets pourra poser des probl&egrave;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&eacute;rence entre un caract&egrave;re minuscule accentu&eacute; et sa variante majuscule) est fait en accord avec l'US-ASCII, ceci signifie que &ouml; et &Ouml; ne seront pas reconnu comme le m&ecirc;me caract&egrave;re et par cons&eacute;quent quelqu'un peut avoir un pseudo avec B&auml;r et quelqu'un d'autre B&Auml;r au m&ecirc;me moment.
Ceci est une limitation du syst&egrave;me et des standards IRC qui ne pourra pas &ecirc;tre r&eacute;solue dans un avenir proche.
Les gens doivent &ecirc;tre au courant de cette limitation.
Notez que celle-ci a toujours &eacute;t&eacute; appliqu&eacute;e aux salons sur lesquels presque tous les symboles &eacute;taient permis et le casemapping &eacute;tait appliqu&eacute;.
</p>
<p>
<b>Note 3 :</b> Les caract&egrave;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&egrave;res chinois normaux :
</p>
<pre> set { allowed-nickchars { chinese-simp; chinese-trad; }; };</pre>
</div>
<p id="feature_cgiirc">
<font size="+2"><b>3.17 - 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 &agrave; 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.18 - Synchronisation de l'heure</b></font>
</p>
<div class="desc">
<p>
Avoir l'heure exacte est extr&ecirc;mement important pour les serveurs IRC.
Sans cela, des salons peuvent se d&eacute;synchroniser, des utilisateurs innocents peuvent &ecirc;tre victimes de kill, des salons peuvent
ne pas s'afficher correctement dans /LIST, en r&eacute;sum&eacute; : d'&eacute;normes probl&egrave;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&eacute;calages de quelques secondes), elle devrait venir &agrave; bout de la plupart des &eacute;carts de temps.
Si cela vous est possible, il vous est fortement recommend&eacute; 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&ecirc;ter celui d'Unreal, voir ci-apr&egrave;s).
</p>
<p>
Ce que fait UnrealIRCd (par d&eacute;faut) est une seule tentative de synchronisation au lancement.
Il envoie (par d&eacute;faut) une requ&ecirc;te &egrave; de multiples serveurs de temps et lorsqu'il recoit la premi&egrave;re r&eacute;ponse (la plus rapide), il ajuste l'horloge interne de l'ircd (pas l'horloge syst&egrave;me).
Si, pour certaines raisons, Unreal ne recoit pas de r&eacute;ponse du serveur dans les 3 secondes, l'IRCd continuera la lancement
malgr&eacute; tout (cela devrait &ecirc;tre tr&egrave;s rare).
</p>
<p>
La synchronisation du temps se configure (et peut &ecirc;tre d&eacute;sactiv&eacute;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_other">
<font size="+2"><b>3.19 - Autres fonctionnalit&eacute;s</b></font>
</p>
<div class="desc">
<p>
UnrealIRCd a &eacute;norm&eacute;ment de fonctionnalit&eacute;s donc tout ne peut pas &ecirc;tre expos&eacute; ici ...
Vous d&eacute;couvrirez tout cela par vous m&ecirc;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&eacute;er votre premier unrealircd.conf vous prendra du temps (disons entre 15 et 60 minutes).
Cr&eacute;er un <u>bon</u> unrealircd.conf prendra encore plus de temps.
Vous ne devriez pas vous d&eacute;p&ecirc;cher pour lancer l'IRCd le plus vite possible, mais au contraire y aller &eacute;tape par &eacute;tape.
Si vous avez un probl&egrave;me, v&eacute;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&egrave;me utilise un format bas&eacute; sur des blocs.
Chaque entr&eacute;e, ou bloc, dans le nouveau format a un format sp&eacute;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&eacute;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&egrave;res repr&eacute;sentant un commentaire, vous devez le placer entre guillements (").
Si vous voulez utiliser un guillement &agrave; l'int&eacute;rieur d'une chaine d&eacute;limit&eacute;e par des guillements, vous devez utiliser \".
</p>
<p>
Une &lt;directive&gt; peut elle-m&ecirc;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&eacute;cifi&eacute;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&eacute;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&eacute; (et qui sera utilis&eacute; dans ce document) parce qu'il est facile &agrave; lire.
</p>
<p>
<b>Note :</b> le fichier de configuration est sensible &agrave; la case (aux majuscules / minuscules) donc <i>NOM-DU-BLOC</i> n'est pas la m&ecirc;me chose que <i>nom-du-bloc</i>.
</p>
<p>
Il y a une notation sp&eacute;ciale utilis&eacute;e pour parler d'entr&eacute;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&ecirc;me pour d&eacute;signer une sous-directive, vous ajouterez un autre :: et le nom de la sous-directive.
</p>
<p>
Pour parler d'une directive non nomm&eacute;e vous devrez mettre &lt;nom-bloc&gt;:: qui voudra dans ce cas dire &lt;valeur-bloc&gt;, ou cela pourra &ecirc;tre une entr&eacute;e dans un sous bloc qui n'a pas de nom.
</p>
<p>
Trois types de commentaires sont support&eacute;s :
</p>
<pre> # commentaire sur une seule ligne
// commentaire sur une seule ligne
/* Commentaire
multi-ligne */</pre>
<p>
Maintenant que vous savez comment &ccedil;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&eacute;ez votre <i>unrealircd.conf</i> depuis z&eacute;ro).
Il est recommand&eacute; d'y aller pas &agrave; pas avec les diff&eacute;rents blocs et de suivre ce manuel de r&eacute;f&eacute;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&eacute;c&eacute;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&ocirc;t claires.
Le <b>name</b> d&eacute;finit le nom du serveur, <b>info</b> d&eacute;finit la description du serveur, <b>numeric</b> d&eacute;finit un identifiant num&eacute;rique propre serveur.
Ce dernier doit avoir une valeur comprise entre 0 et 254 qui est SP&Eacute;CIFIQUE au serveur, ce qui signifie qu'aucun autre serveur du r&eacute;seau ne doit avoir le m&ecirc;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&eacute;c&eacute;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&eacute;fini le texte qui sera affich&eacute; lors d'une requ&ecirc;te /admin.
Vous pouvez sp&eacute;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 &eacute;galement inclure d'autres moyens de contact que vous d&eacute;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&eacute;c&eacute;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&eacute;es (par exemple pour les allow blocks ou les serveurs des link blocks), vous avez g&eacute;n&eacute;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&eacute; comme r&eacute;f&eacute;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&eacute;).
</p>
<p>
<b>connfreq</b> est utilis&eacute; uniquement pour les serveurs et repr&eacute;sente le nombre de secondes entre 2 tentatives de connexions si l'autoconnexion est activ&eacute;e.
</p>
<p>
<b>maxclients</b> sp&eacute;cifie le nombre maximum de clients / serveurs pouvant faire partie de cette classe.
</p>
<p>
<b>sendq</b> sp&eacute;cifie la quantit&eacute; d'informations pouvant &ecirc;tre dans la file d'envoi (send queue) (tr&egrave;s grand pour les serveurs avec une faible bande passante, moyen pour les clients).
</p>
<p>
<b>recvq</b> sp&eacute;cifie la quantit&eacute; d'informations pouvant &ecirc;tre dans la file de reception (receive queue) et est utilis&eacute; pour contr&ocirc;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&eacute;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 &ecirc;tre link&eacute; au m&ecirc;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&eacute;c&eacute;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&eacute;cifiez qui peut se connecter &agrave; ce serveur. Vous pouvez avoir plusieurs allow blocks.
</p>
<p>
<b>A propos des correspondances</b><br>
Le contr&ocirc;le des acc&egrave;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&eacute;r&eacute;, donc vous devez sp&eacute;cifier les host/ip particuliers APR&Egrave;S votre allow block g&eacute;n&eacute;ral *@*.
De plus, si vous voulez sp&eacute;cifier un bloc bas&eacute; uniquement sur la correspondance &agrave; un ip, alors mettez pour l'hostname quelque chose d'invalide, tel que "hostname PERSONNE;",
cela permettra au bloc de ne v&eacute;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&eacute;fini par *, ip est l'ipmask.
Quelques exemples : *@* (depuis n'importe o&ugrave;), *@192.168.* (seulement depuis les adresses commen&ccedil;ant par 192.168), etc.
</p>
<p>
<b>host</b><br>
&Eacute;galement un user@host hostmask, user est souvent d&eacute;fini par *. Quelques exemples : *@* (n'importe o&ugrave;), *@*.wanadoo.fr (seulement depuis wanadoo.fr).
</p>
<p>
<b>password</b> (optionnel)<br>
Requiert un mot de passe &agrave; la connexion. Vous pouvez &eacute;galement sp&eacute;cifier une m&eacute;thode de chiffrage des mots de passe ici.
</p>
<p>
<b>class</b><br>
Sp&eacute;cifie le nom de la classe dans laquelle les connexions correspondant &agrave; cet allow block sont plac&eacute;es.
</p>
<p>
<b>maxperip</b> (optionnel, mais recommend&eacute;)<br>
Vous permet de sp&eacute;cifier combien de connexions &agrave; ce serveur sont autoris&eacute;es par une m&ecirc;me ip (exemple : maxperip 4;).
</p>
<p id="allowblock_ipv6clonemask">
<b>ipv6-clone-mask</b> (optionnel, par d&eacute;faut <a href="#set_defaultipv6clonemask">set::default-ipv6-clone-mask</a>)<br>
Cette option contr&ocirc;le la d&eacute;tection des cl&ocirc;nes.
Si deux clients se connectent depuis deux adresses IPv6 qui ne diff&egrave;rent que par leurs derniers bits, il est presque garanti que ces deux clients sont une seule et m&ecirc;me personne.
Cette option ne fait qu'affecter le fonctionnement de<a href="#allowblock_maxperip">allow::maxperip</a>.
Par exemple, si vous d&eacute;finissez cette option &agrave; 128, alors toutes les adresses IPv6 seront consid&eacute;r&eacute;es comme uniques.
En raison de la politique actuelle d'attribution des adresses IP, il est recommand&eacute; que votre <a href="#allowblock">Allow block</a> le plus g&eacute;n&eacute;ral utilise une valeur de 64.
</p>
<p>
<b>redirect-server</b> (optionnel)<br>
Si la classe est pleine, les utilisateurs seront redirig&eacute;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&eacute;cifi&eacute; vous pouvez d&eacute;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 &agrave; la place de l'hostname<br>
&nbsp;&nbsp;&nbsp;<b>noident</b> n'utilise pas d'ident mais l'username sp&eacute;cifi&eacute; par le client<br>
&nbsp;&nbsp;&nbsp;<b>ssl</b> ne fonctionne que si le client est connect&eacute; via ssl<br>
&nbsp;&nbsp;&nbsp;<b>nopasscont</b> continue de tester les concordances si aucun mot de passe n'est donn&eacute; (ainsi vous pourrez mettre des clients dans des classes sp&eacute;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&eacute;c&eacute;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&eacute;cifier les ports d'&eacute;coute de votre IRCd.
Si aucune option n'est requise, vous pouvez le sp&eacute;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&eacute;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 &eacute;couter.
Vous pouvez &eacute;galement sp&eacute;cifier un intervalle de ports &agrave; la place d'une valeur unique.
Par exemple, 6660-6669 &eacute;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 (&eacute;couter en localhost sur le port 6667).
Si vous utilisez l'IPv6 et que vous voulez &eacute;couter une adresse Ipv4 sp&eacute;cifique vous devrez utiliser ::ffff:&lt;IPv4ip&gt;.
Par exemple : [::ffff:203.123.67.1]:6667 qui &eacute;coutera l'IP 203.123.67.1 sur le port 6667.
&Eacute;videmment, vous pouvez aussi utiliser *.
</p>
<p>
<b>options block</b> (optionnel)<br>
Vous pouvez pr&eacute;ciser des options sp&eacute;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&eacute;serv&eacute; aux clients</td>
</tr>
<tr>
<th><center>serversonly</center></th>
<td>Port r&eacute;serv&eacute; 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&eacute;c&eacute;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;; };
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&eacute;rateurs IRC (IRCop ou oper) pour votre serveur.
Le <b>oper::</b> sp&eacute;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&eacute;cifier plus qu'un seul hostmask en cr&eacute;ant plusieurs oper::from::userhost.
</p>
<p id="operblock_password">
Le <b>oper::password::</b> est le mot de passe que l'op&eacute;rateur doit indiquer.
<b>oper::password::auth-type</b> vous permet de sp&eacute;cifier une m&eacute;thode d'authentification du mot de passe.
Ne pr&eacute;cisez pas d'<b>oper::password::auth-type</b> pour un mot de passe en clair.
Les m&eacute;thodes valides sont <tt>crypt</tt>, <tt>md5</tt>, <tt>sha1</tt>, <tt>ripemd160</tt> et <tt>sslclientcert</tt>.
Indiquer l'une de ces m&eacute;thodes signifie que la valeur de <b>oper::password::</b> est un hash g&eacute;n&eacute;r&eacute; avec <a href="#cmd_mkpasswd">mkpasswd</a> en utilisant ladite m&eacute;thode.
</p>
<p id="operblock_password_sslclientcert">
<tt>sslclientcert</tt> est une m&eacute;thode d'authentification exceptionnelle.
Quand elle est choisie comme auth-type, <b>oper::password::</b> doit &ecirc;tre un fichier (chemin relatif depuis le dossier d'installlation d'UnrealIRCd).
Le fichier doit &ecirc;tre un certificat SSL encod&eacute; par PEM (le certificat public, pas une cl&eacute;).
Cela indique que pour se connecter, le client IRC doit :
</p>
<ol>
<li>&ecirc;tre connect&eacute; en utilisant SSL</li>
<li>utiliser le certificat client correspondant au certificat public</li>
<li>a acc&egrave;s &agrave; la cl&eacute; priv&eacute;e associ&eacute;ee au fichier du certificat</li>
</ol>
<p>
Bien s&ucirc;r, cette fonctionnalit&eacute; n&eacute;cessite que UnrealIRCd a &eacute;t&eacute; compil&eacute; avec le support SSL.
Aussi, comme n'importe quelle cl&eacute; associ&eacute;e &agrave; un certificat SSL est beaucoup plus longue qu'un mot de pase normal et bien plus al&eacute;atoire, c'est la m&eacute;thode d'authentification la plus s&eacute;curis&eacute;e.
Pour se connecter avec /oper lorsque vous avez sp&eacute;cifi&eacute; un certificat SSL, assurez-vous que le client est correctement configur&eacute; et faites : <code>/oper &lt;name&gt; :</code> .
La m&eacute;thode d'authentification <tt>sslclientcert</tt> peut aussi &ecirc;tre utilis&eacute;e pour s&eacute;curiser les <a href="#linkblock">link blocks</a> avec <a href="#linkblock_passwordreceive">link::password-receive</a>.
</p>
<p>
<b>Attention :</b> les login et mot de passe sont tous deux sensibles &agrave; la case : les majuscules et les minuscules ont leur importance.
</p>
<p>
La directive <b>oper::class</b> sp&eacute;cifie le nom d'une classe pr&eacute;existante (donc qui appara&icirc;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&eacute;thode <i>flags &lt;flags&gt;;</i>, si vous voulez utiliser la nouvelle m&eacute;thode, alors vous utiliserez la m&eacute;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&eacute;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;">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&eacute;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&eacute;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 &agrave; 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&eacute;d&eacute;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&eacute;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 &agrave; propos de l'OperOverride :</b><br>
L'OperOverride permet aux opers des choses comme joindre un salon malgr&eacute; les modes +ikl et passer outre les bans (vous devrez d'abord vous inviter avec <i>/invite Pseudo #salon</i>), vous mettre op&eacute;rateur du salon, etc ...<br>
Le flag can_override a &eacute;t&eacute; ajout&eacute; de mani&egrave;re &agrave; &eacute;viter les abus de pouvoirs d'op&eacute;rateurs IRC.
Aucun oper n'est capable d'override par d&eacute;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&eacute;c&eacute;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&eacute;finit les mots de passe n&eacute;cessaire pour utiliser les commandes /restart et /die avec respectivement drpass::restart et drpass::die.
Les drpass::restart:: et drpass::die:: vous permettent de sp&eacute;cifier le type d'authentification qu'ils utilisent.
Les types d'authentification actuellement support&eacute;s sont crypt, md5, sha1 et ripemd-160 (voir <a href="#operblock_password">oper::password::</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&eacute;cifie le nom de fichier devant &ecirc;tre charg&eacute; comme fichier de configuration s&eacute;par&eacute;.
Ce fichier peut contenir n'importe quel type de bloc de configuration et peut &eacute;galement inclure d'autres fichiers.
Les wildcards (*) sont support&eacute; 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&eacute;seau :
</p>
<pre>include mynetwork.network;</pre><p></p>
<p>
Ce sera la syntaxe &agrave; utiliser si vous voulez utiliser un fichier r&eacute;seau s&eacute;par&eacute;.
Les fichiers r&eacute;seaux s&eacute;par&eacute;s ne sont plus requis et tous les param&egrave;tres r&eacute;seaux peuvent &ecirc;tre ins&eacute;r&eacute;s directement dans
unrealircd.conf.
Ou vous pouvez mettre un include pour les charger depuis le fichier.
</p>
<p>
<b>Exemple 2 : d&eacute;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 &agrave; diff&eacute;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&eacute;alit&eacute; 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&eacute;faut <font color="red">OBLIGATOIRE</font> (ou n'importe quel autre module de cloaking)
</li>
</ul>
<p>
Vous voulez &ecirc;tre s&ucirc;r que ces deux modules sont charg&eacute;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&eacute;rents fichiers de log pour diff&eacute;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&eacute;cifier la taille &agrave; laquelle vous voulez que le fichier soit effac&eacute; et relanc&eacute;.
Vous pouvez utiliser MB pour m&eacute;ga-octets (megabytes), KB pour kilo-octets, GB pour giga-octets.
Le <b>log::flags</b> sp&eacute;cifie quel type d'information sera dans ce log.
Ci-dessous la liste des flags disponibles.
</p>
<p>
Vous pouvez &eacute;galement avoir plusieurs log block, pour loguer diff&eacute;rentes choses dans des fichiers diff&eacute;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&eacute;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&eacute;ussies et rat&eacute;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&eacute;c&eacute;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&eacute;cifier un <acronym title="message of the day">motd</acronym> (message d'accueil &agrave; la connexion au serveur), des rules (r&egrave;gles) et salon par d&eacute;faut pour un utilisateur en se basant sur son host.
C'est utile si vous voulez diff&eacute;rents motd pour diff&eacute;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&eacute;cifient respectivement les fichiers motd, shortmotd, opermotd, botmotd et rules qui doivent &ecirc;tre affich&eacute;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&eacute;cifier un salon que cet utilisateur sera forc&eacute; de joindre &agrave; sa connexion.
S'il est pr&eacute;sent, il remplacera le auto-join channel par d&eacute;faut (d&eacute;fini par <a href="#setblock">set::auto-join</a>).
</p>
<p>
Le bloc <b>tld::options</b> vous permet de d&eacute;finir des exigences suppl&eacute;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&eacute;es TLD sont v&eacute;rifi&eacute;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&eacute;c&eacute;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 &agrave; plusieurs pseudos, et ban::reason vous permet de sp&eacute;cifier la raison pour laquelle ce ban a &eacute;t&eacute; plac&eacute;.
Le plus souvent ces blocs sont utilis&eacute;s pour bannir l'usage de pseudos g&eacute;n&eacute;ralement utilis&eacute;s par des services r&eacute;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&eacute;c&eacute;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 &agrave; sa connexion au serveur.
Le ban::mask est une version avec joker du user@host &agrave; bannir et ban::reason est la raison pour laquelle ce ban a &eacute;t&eacute; plac&eacute;.
Notez que ceci est uniquement un ban local et l'utilisateur peut toujours se connecter &agrave; un autre serveur pour rejoindre le r&eacute;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&eacute;c&eacute;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&egrave;tre ban::mask est un IP pouvant contenir un joker (*) et ban::reason est la raison pour laquelle ce ban a &eacute;t&eacute; plac&eacute;.
Comme ce ban affecte les serveurs, il doit &ecirc;tre utilis&eacute; tr&egrave;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&eacute;c&eacute;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&ecirc;che un serveur de se connecter au r&eacute;seau.
Si le serveur se link directement &agrave; votre serveur, le link sera rejet&eacute;.
Si le serveur se link &agrave; un autre serveur, le serveur local se d&eacute;connectera du r&eacute;seau.
Le champ ban::mask sp&eacute;cifie un masque avec joker &agrave; confronter au nom du serveur tentant de se connecter et ban::reason sp&eacute;cifie la raison pour laquelle ce ban a &eacute;t&eacute; plac&eacute;.
</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&eacute;c&eacute;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&eacute; sur le champs GECOS (realname).
Cela est utilis&eacute; pour emp&ecirc;cher les flood de cl&ocirc;nes car souvent les bots cl&ocirc;nes utilisent le m&ecirc;me realname.
Le ban::mask sp&eacute;cifie le realname devant &ecirc;tre banni.
Le masque peut contenir un joker.
Le ban::reason sp&eacute;cifie pour ce ban a &eacute;t&eacute; plac&eacute;.
</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&eacute;ponse au CTCP version envoy&eacute; au client.
Il est donc bien entendu que si le client n'envoie pas de r&eacute;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&eacute;cifie la version devant &ecirc;tre bannie.
Le mask peut contenir un joker.
Le <b>ban::reason</b> sp&eacute;cifie la raison pour laquelle le ban a &eacute;t&eacute; plac&eacute;.
Vous pouvez &eacute;galement sp&eacute;cifier <b>ban::action</b>, <i>kill</i> est la valeur par d&eacute;faut,
<i>tempshun</i> shunera uniquement la connexion de l'utilisateur et devrait fonctionner tr&egrave;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&eacute;e de ce ban peut &ecirc;tre configur&eacute;e avec set::ban-version-tkl-time et est de 1 jour par d&eacute;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&eacute;c&eacute;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&eacute;cifier un user@host qui outrepassera un ban {}, une Kline ou une Zline plac&eacute;s sur une plage de host.
Ceci est tr&egrave;s utile lorsque vous voulez bannir un FAI, mais que vous voulez que certains utilisateurs sp&eacute;cifiques puissent toujours se connecter.
La directive except::mask sp&eacute;cifie le masque user@host du client qui sera autoris&eacute; &agrave; se connecter.
</p>
<p>
NOTE : Si vous voulez exempter compl&egrave;tement un host de toutes les formes de bans possibles (sauf un ban de spamfilter), vous aurez besoin &agrave; 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&eacute;cifier un user@host qui pourra outrepasser un ban TKL plac&eacute; sur une plage de host.
Ceci est tr&egrave;s utile lorsque vous voulez bannir un FAI, mais que vous voulez que certains utilisateurs sp&eacute;cifiques puissent toujours se connecter.
La directive except::mask sp&eacute;cifie le masque user@host du client qui sera autoris&eacute; &agrave; se connecter.
L' except::type sp&eacute;cifie quel type de ban pourra &ecirc;tre outrepass&eacute;.
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&eacute;, plusieurs types peuvent &ecirc;tre sp&eacute;cifi&eacute;s.
</p>
<p>
NOTE : Si vous voulez exempter compl&egrave;tement un host de toutes les formes de bans possibles (sauf un ban de spamfilter), vous aurez besoin &agrave; 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&eacute;cifier une IP qui pourra outrepasser le throttling system.
Ceci fonctionne uniquement si vous avez choisi d'activer le throttling.
L'except::mask sp&eacute;cifie l'IP qui ne sera pas bannie &agrave; 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&eacute;c&eacute;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&eacute;cifier un nom de fichier qui ne pourra &ecirc;tre envoy&eacute; par DCC via le serveur.
Ceci est tr&egrave;s utile pour stopper la propagation de virus et/ou trojans.
</p>
<p>
Le param&egrave;tre <b>deny::filename</b> sp&eacute;cifie un masque avec joker du nom de fichier &agrave; rejeter et <b>deny::reason</b> sp&eacute;cifie la raison pour laquelle ce fichier est bloqu&eacute;.
</p>
<p>
Il existe aussi une option <b>deny::soft</b> .
Si elle a la valeur 'yes' (oui) le dcc sera bloqu&eacute; &agrave; 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&eacute;c&eacute;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 &agrave; 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 &agrave; comprendre.
La directive deny::mask sp&eacute;cifie le nom du serveur (avec joker) auquel il s'applique.
</p>
<p>
Le deny::version sp&eacute;cifie le num&eacute;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&egrave;re de ce param&egrave;tre peut &ecirc;tre un des suivant &gt;, &lt;, =, !.
Ce caract&egrave;re dit &agrave; l'IRCd comment interpr&eacute;ter la version.
Si ce caract&egrave;re est un &gt; alors toutes les versions sup&eacute;rieures &agrave; celle sp&eacute;cifi&eacute;e seront interdites.
Si c'est un &lt; toutes les versions inf&eacute;rieures seront interdites.
Si c'est un = seulement cette version sera interdite.
Si c'est un ! alors toutes les versions seront interdites except&eacute;e celle sp&eacute;cifi&eacute;e.
</p>
<p>
La directive deny::flags vous permet de sp&eacute;cifier quelles options de compilations flag le serveur doit ou ne doit pas avoir.
Les flags sont plac&eacute;s l'un apr&egrave;s l'autre sans s&eacute;paration entre eux.
Si un caract&egrave;re est pr&eacute;c&eacute;d&eacute; d'un !, le serveur ne doit pas &ecirc;tre compil&eacute; avec ce flag, sinon s'il n'y a pas de pr&eacute;fixe ! alors le serveur doit &ecirc;tre compil&eacute; 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&eacute;c&eacute;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&egrave;gles sp&eacute;cifiques pour interdire le link d'un serveur.
Le deny::mask sp&eacute;cifie un nom de serveur (avec joker) auquel cette r&egrave;gle s'applique.
La directive deny::rules est tr&egrave;s complexe.
</p>
<p>
Une expression "crule" vous permet de contr&ocirc;ler le link en d&eacute;tail, et s'&eacute;crit comme une ligne d'un langage de programmation.
Quatre op&eacute;rateurs sont support&eacute;s :
</p>
<ul>
<li><b>connected(&lt;servermask&gt;)</b> : retourne vrai si un serveur correspondant au servermask est connect&eacute;</li>
<li><b>directcon(&lt;servermask&gt;)</b> : retourne vrai si un serveur correspondant au servermask est directement connect&eacute; &agrave; ce serveur</li>
<li><b>via(&lt;viamask&gt;,&lt;servermask&gt;)</b> : retourne vrai si un serveur correspondant au servermask est connect&eacute; sur un serveur correspondant au viamask</li>
<li><b>directop()</b> : si l'IRCop utilisant /connect est directement connect&eacute; sur ce serveur</li>
</ul>
<p>
Ces op&eacute;rateurs peuvent &ecirc;tre combin&eacute;s en utilisant &amp;&amp; (et) et || (ou), les items peuvent &eacute;galement &ecirc;tre mis entre parenth&egrave;ses pour permettre le regroupement.
De plus, un op&eacute;rateur pr&eacute;c&eacute;d&eacute; d'un ! v&eacute;rifie si l'op&eacute;rateur retourne faux.
Si l'expression est &eacute;valu&eacute;e comme enti&egrave;rement vraie, alors le link est refus&eacute;.
</p>
<p>
Le deny::type permet deux valeurs diff&eacute;rentes, auto (s'applique uniquement aux autoconnexions, /connect fonctionnera toujours), et all
(s'applique &agrave; 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&eacute;c&eacute;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&eacute;cifie le nom d'un salon (avec joker) que les utilisateurs ne pourront rejoindre et le <b>deny::reason</b> sp&eacute;cifie la raison pour laquelle le salon ne peut &ecirc;tre rejoint.
De plus, vous pouvez sp&eacute;cifier un <b>deny::redirect</b>.
Si celui-ci est sp&eacute;cifi&eacute;, lorsqu'un utilisateur essaye de rejoindre un salon correspondant &agrave; un deny::channel, il sera redirig&eacute; vers deny::redirect.
Et il y a &eacute;galement <b>deny::warn</b> qui (si il est activ&eacute;) 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&eacute;cifier des salons que les utilisateurs pourront joindre, m&ecirc;me s'ils sont bloqu&eacute;s par un <i>deny::channel</i>.
La directive allow::channel sp&eacute;cifie les noms de salon avec joker pouvant &ecirc;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&eacute;cifier des exceptions au deny dcc block, les jokers sont permis.
Si <b>allow dcc::soft</b> est mis &agrave; 'yes' il s'applique &agrave; la liste des 'soft dcc bans', si il est mis &agrave; 'no' il s'applique &agrave; la liste des dcc bans normaux ('hard').
</p>
<p>
Exemple :
</p>
<pre>allow dcc {
filename "*.jpg"; /* Les images sont g&eacute;n&eacute;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&eacute;c&eacute;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&eacute;cifier un login/mot de passe pouvant &ecirc;tre utilis&eacute; avec la commande /vhost pour obtenir un faux hostname.
Le param&egrave;tre vhost::vhost peut &ecirc;tre un user@host ou juste un host que l'utilisateur recevra apr&egrave;s un /vhost r&eacute;ussi.
Le vhost::from::userhost contient un user@host auquel l'utilisateur doit correspondre pour &ecirc;tre &eacute;ligible pour un vhost.
Vous pouvez sp&eacute;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 &ecirc;tre entr&eacute;
Le vhost::password:: vous permet de sp&eacute;cifier le type d'authentification utilis&eacute; par cet &eacute;l&eacute;ment.
Les types d'authentification actuellement support&eacute;s sont crypt, md5, sha1 et ripemd-160 (voir <a href="#operblock_password">oper::password::</a>).
</p>
<p>
Enfin, vhost::swhois vous permet d'ajouter un ligne suppl&eacute;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&eacute;c&eacute;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&eacute;e pour le mode utilisateur et salon +G pour censurer les 'mauvais mots'.
</p>
<p>
<b>badword::</b> sp&eacute;cifie le type de messages auquel ce filtre s'applique. Les types valides sont :
</p>
<ul>
<li><tt>channel</tt> s'applique aux messages &agrave; l'int&eacute;rieur des salons +G</li>
<li><tt>message</tt> s'applique aux messages priv&eacute;s re&ccedil;us par un utilisateur +G</li>
<li><tt>quit</tt> s'applique &agrave; tous les messages de quit</li>
<li><tt>all</tt> correspond &agrave; ces trois situations</li>
</ul>
<p>
Le <b>badword::word</b> peut &ecirc;tre un simple mot ou une <a href="#regex">expression r&eacute;guli&egrave;re</a> &agrave; rechercher.
Le <b>badword::replace</b> est ce par quoi le mot doit &ecirc;tre remplac&eacute;.
Si <b>badword::replace</b> n'est pas sp&eacute;cifi&eacute;, le mot est remplac&eacute; par &lt;censored&gt;.
Le <b>badword::action</b> d&eacute;fini quelle action doit &ecirc;tre r&eacute;alis&eacute;e si un mauvais mots est trouv&eacute;.
Si vous sp&eacute;cifiez replace, alors seul le mot censur&eacute; est remplac&eacute;, si vous sp&eacute;cifez block, le message entier sera bloqu&eacute;.
Si vous ne sp&eacute;cifiez pas de <b>badword::action</b>, le mot sera remplac&eacute;.
</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&eacute;c&eacute;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&eacute;finir certains serveurs comme ayant des possibilit&eacute;s suppl&eacute;mentaires.
Ceci doit uniquement &ecirc;tre utilis&eacute; pour des serveurs comme les services et les stats.
Ceci ne doit pas &ecirc;tre appliqu&eacute; &agrave; un serveur normal.
Chaque entr&eacute;e est le nom du serveur qui recevra les possibilit&eacute;s suppl&eacute;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&eacute;c&eacute;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&icirc;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 &ecirc;tre diff&eacute;rent de l'hostname).
</p>
<p>
<b>username</b><br>
Vous pouvez le sp&eacute;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&eacute; pour la connexion et pour l'authentification / v&eacute;rification du cot&eacute; 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&eacute;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 &agrave; de l'IPv4.</td></tr>
</table>
<p>
<b>bind-ip</b> (optionnel)<br>
Peut &ecirc;tre utilis&eacute; pour sp&eacute;cifier une IP (ex. : 192.168.0.1) depuis laquelle nous devons nous connecter, presque jamais utilis&eacute;.
</p>
<p>
<b>port</b><br>
Port auquel on se connecte (celui que le serveur distant &eacute;coutera).
</p>
<p>
<b>password-connect</b><br>
Le mot de passe utilis&eacute; pour se connecter au serveur distant, doit &ecirc;tre &eacute;crit en clair.
</p>
<p id="linkblock_passwordreceive">
<b>password-receive</b><br>
Le mot de passe utilis&eacute; pour valider le lien entrant.
Il peut &ecirc;tre chiffr&eacute; de la m&ecirc;me mani&egrave;re que <a href="#operblock_password"><b>oper::password</b></a>.
Il peut, notamment, utiliser la m&eacute;thode <a href="#operblock_password_sslclientcert"><tt>sslclientcert</tt></a>.
En v&eacute;rit&eacute;, c'est m&ecirc;me vivement conseill&eacute;, car c'est infiniment plus r&eacute;sistant aux attaques brute-force.
</p>
<p>
<b>hub et leaf</b><br>
Un hub a plusieurs serveurs link&eacute; &agrave; lui, un leaf n'a qu'un seul link ... vers vous.
Un serveur est un leaf &agrave; moins qu'il n'ait une directive hub.
C'est &eacute;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 &agrave; ne pas avoir de directive hub.
</p>
<p>
<b>leafdepth</b> (optionnel)<br>
Cette valeur sp&eacute;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 &ecirc;tre li&eacute; &agrave; des serveurs mais que ceux-ci ne peuvent avoir rien du tout en dessous d'eux (cela signifie que ce hub peut uniquement &ecirc;tre reli&eacute; &agrave; des leaf).
Une valeur de O signifie aucune limite, et c'est la valeur par d&eacute;faut.
</p>
<p>
<b>class</b><br>
La classe dont ce serveur fait partie, souvent une classe de serveurs s&eacute;par&eacute;e est utilis&eacute; pour ceci.
</p>
<p>
<b>compression-level</b> (optionnel)<br>
Sp&eacute;cifie le taux de compression (1-9) pour ce link.
Seulement utilis&eacute; si link::options::zip est activ&eacute;.
</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 &ecirc;tre sp&eacute;cifi&eacute;s comme une liste s&eacute;par&eacute;e par des <tt>:</tt> .
</p>
<p>
<b>options block</b><br>
Une ou plusieurs options utilis&eacute;es pour se connecter &agrave; ce serveur. Parfois non requises.
</p>
<table border="0">
<tr>
<th>ssl</th>
<td>si vous &ecirc;tes connect&eacute; &agrave; un port ssl.</td>
</tr>
<tr>
<th>autoconnect</th>
<td>le serveur essayera de se connecter automatiquement, la fr&eacute;quence est sp&eacute;cifi&eacute;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&eacute;s, vous devez compiler les deux serveurs concern&eacute;s avec l'option zip activ&eacute;</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&eacute;der au status de globop (ils seront kill&eacute;s), utilis&eacute;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&eacute;f&eacute;rence &agrave; <span class="inline_pre">&lt;name&gt;</span>)<br>
(Note 2 : r&eacute;f&eacute;rez-vous &agrave; 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 &agrave; un utilisateur,
par exemple /chanserv envoie un message &agrave; 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&eacute;.
Si <b>alias::</b> est identique au nom de la cible, <b>alias::target</b> peut &ecirc;tre omis.
</li>
<li>
<b>alias::type</b> sp&eacute;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&egrave;s</a>)</li>
</ul>
</li>
<li>
<b>alias::spamfilter</b> (optionnel) : si d&eacute;fini sur yes (oui), le message sera v&eacute;rifi&eacute; par Spamfilter (valeur par d&eacute;faut : 'no').
</li>
</ul>
<p id="aliasblock-command">
Syntaxe des alias de commandes :
</p>
<pre>alias &lt;name&gt; {
/* Pour un alias &agrave; 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&eacute;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&eacute; <a href="#aliasblock-command">ci-dessus</a>, il devient un alias de commande.
Utilis&eacute; dans ce format, le bloc devient beaucoup plus flexible.
Par exemple, vous pouvez cr&eacute;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&eacute;cifie une <a href="#regex">expression r&eacute;guli&egrave;re</a> qui sert &agrave; tester les arguments envoy&eacute;s sur la commande qui sert d'alias.
Le sous-bloc du premier <b>alias::format</b> rencontr&eacute; correspondant aux param&egrave;tres sera utilis&eacute;.
Par cons&eacute;quent, vous pouvez avoir plusieurs <b>alias::format</b> pour que la commande fasse des choses diff&eacute;rentes en fonction des param&egrave;tres qu'elle re&ccedil;oit.
</li>
<li>
<b>alias::format::target</b> est la cible &agrave; laquelle l'alias est envoy&eacute;.
Cette valeur n'est pas utilis&eacute;e si <b>alias::format::type</b> est d&eacute;fini sur "<span class="inline_pre">real</span>".
</li>
<li>
<b>alias::format::type</b> sp&eacute;cifie le type de la cible &agrave; laquelle l'alias est envoy&eacute;.
En plus des types mentionn&eacute;s pour les <a href="#aliasblock">alias standards</a>, le type "<span class="inline_pre">real</span>" peut &ecirc;tre utilis&eacute; pour un "vrai alias" (un alias qui peut &ecirc;tre autre chose qu'une commande PRIVMSG).
</li>
<li>
<b>alias::format::parameters</b> (pour les "vrais alias") est ce qui sera envoy&eacute; &agrave; la commande comme param&egrave;tres.<br>
Pour sp&eacute;cifier un des param&egrave;tres envoy&eacute;s &agrave; l'alias, utilisez <span class="inline_pre">%</span> suivi du nombre correspondant &agrave; la place du param&egrave;tre.
Par exemple, <span class="inline_pre">%1</span> correspond au premier param&egrave;tre.<br>
Pour r&eacute;cup&eacute;rer tous les param&egrave;tres &agrave; 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&egrave;tres du deuxi&egrave;me jusqu'au dernier.<br>
De plus, vous pouvez utiliser <span class="inline_pre">%n</span> qui sera remplac&eacute; par le pseudo de l'utilisateur ex&eacute;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&eacute;er des entr&eacute;es &agrave; utiliser dans /helpop.
L' help:: est la valeur qui doit &ecirc;tre pass&eacute;e en param&egrave;tre de /helpop, si help:: est laiss&eacute; vide, alors il sera utilis&eacute; lorsqu'aucun param&egrave;tre n'est pr&eacute;cis&eacute; pour /helpop.
</p>
<p>
Les entr&eacute;es pour l'help block sont les textes qui seront affich&eacute;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&eacute;s dans /list m&ecirc;me si aucun utilisateur n'y est pr&eacute;sent.
Le <b>topic</b> est optionnel et n'est montr&eacute; dans la /list que si il n'y a aucun utilisateur (sinon, le topic courant du salon sera utilis&eacute;).
</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&eacute;seau).<br>
Voir <a href="#feature_spamfilter">cette section</a> pour plus d'information &agrave; 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&eacute;guli&egrave;re</a> &agrave; lauqlle le mot doit correspondre.<br>
<b>target</b> sp&eacute;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&eacute;cifie l'action &agrave; effectuer, reportez-vous <a href="#feature_spamfilter">ici</a> pour obtenir la liste des types disponibles (ex: 'gline')<br>
<b>reason</b> (optionnel) : sp&eacute;cifie la raison du ban ou du blocage, sinon la raison par d&eacute;faut est utilis&eacute;e.<br>
<b>ban-time</b> (optionnel) : sp&eacute;cifie la dur&eacute;e d'un ban *line ou d'un shun, sinon la valeur par d&eacute;faut est utilis&eacute;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 &ecirc;tre 'webirc' ou 'old'.<br>
<b>username</b> est compar&eacute; avec l'ident (si il est pr&eacute;sent). Si il n'est pas sp&eacute;cifi&eacute;, il est suppos&eacute; &eacute;gal &agrave; "*".<br>
<b>hostname</b> est l'hostmask auquel il faut correspondre.<br>
<b>password</b> est le mot de passe webirc, uniquement utilis&eacute; pour le type 'webirc'.<br>
</p>
<p>
<b>Comment configurer avec la m&eacute;thode 'webirc' ? (m&eacute;thode recommand&eacute;e)</b><br>
Dans votre fichier de configuration de CGI:IRC (cgiirc.conf) vous assignez &agrave; 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 &agrave; 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&eacute;thode 'old' ?</b><br>
Note : Ce n'est pas la m&eacute;thode recommand&eacute;e car elle a deux d&eacute;savantages :
cette m&eacute;thode va envoyer l'IP/host &agrave; transmettre &agrave; la place du mot de passe serveur, signifiant que vous ne pouvez pas sp&eacute;cifier un mot de passe serveur en tant qu'utilisateur de CGI:IRC.
De plus, le contr&ocirc;le des acc&egrave;s est uniquement bas&eacute; sur les IP et ne n&eacute;cessite pas de mot de passe suppl&eacute;mentaire comme la m&eacute;thode 'webirc'.
En r&eacute;sum&eacute;, vous ne devriez pas utiliser cette m&eacute;thode sauf en cas de bonne raison.
</p>
<p>
Dans votre fichier de configuration de CGI:IRC (cgiirc.conf) vous assignez &agrave; 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&eacute;c&eacute;demment comme unrealircd.conf/networks file)</font>
</p>
<div class="desc">
<p>
Sur des r&eacute;seaux compos&eacute;s d'un seul serveur, plut&ocirc;t que d'avoir 3 fichiers idff&eacute;rents, vous pouvez mettre tout mettre dans unrealircd.conf.
Sur des r&eacute;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&eacute;seau, il y a des chances que vous utilisiez le m&ecirc;me set block pour tous les serveurs.
Par cons&eacute;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&eacute;f&eacute;rons aux r&eacute;glages / directives avec la notation &lt;block-name&gt;::&lt;block-directive&gt;.
Ce format n'est pas celui &agrave; utiliser dans le fichier de configuration !
Il doit &ecirc;tre converti dans le format ci-dessous :
<!-- Il est pr&eacute;sent&eacute; dans un format qui le rend plus simple &agrave; 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&eacute;finit des options pour des fonctionnalit&eacute;s ind&eacute;pendantes.
Chaque entr&eacute;e fait quelque chose de diff&eacute;rent et donc toutes seront d&eacute;crites ici.
Certaines directives ont des sous-blocs qui seront aussi d&eacute;crits.
</p>
<p>
Il y a beaucoup de r&eacute;glages diff&eacute;rents &agrave; couvrir, toutes les directives ci-dessous peuvent &ecirc;tre plac&eacute;es dans le m&ecirc;me bloc set.
Si une directive a des options, celles-ci sont &agrave; pr&eacute;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&eacute;par&eacute;s, pr&eacute;f&eacute;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 &agrave; laquelle doivent &ecirc;tre envoy&eacute;es les questions sur les K:line.
Cette valeur doit &ecirc;tre sp&eacute;cifi&eacute;e.
</p>
<p>
<font class="set">set::gline-address &lt;email-address&gt;;</font><br>
L'adresse email &agrave; laquelle doivent &ecirc;tre envoy&eacute;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&eacute;s &agrave; un utilisateur &agrave; la connexion.
</p>
<p>
<font class="set">set::snomask-on-connect &lt;+modes&gt;</font><br>
Les snomask qui seront appliqu&eacute;s &agrave; un utilisateur &agrave; la connexion.
</p>
<p>
<font class="set">set::modes-on-oper &lt;+modes&gt;;</font><br>
Les modes qui seront appliqu&eacute;s &agrave; 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&eacute;s &agrave; 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&eacute;s &agrave; un salon lors de sa cr&eacute;ation.
Tous les modes ne peuvent pas &ecirc;tre utilis&eacute;s par cette commande.
+qaohvbeOAzlLk ne peuvent &ecirc;tre appliqu&eacute;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&eacute; &agrave; un utilisateur lorsqu'il sera le premier &agrave; rejoindre le salon.
La valeur par d&eacute;faut est 'op' (op&eacute;rateur du salon).
</p>
<p>
<font class="set">set::restrict-usermodes &lt;modes&gt;</font><br>
Emp&ecirc;che les utilisateurs d'appliquer / enlever les usermodes list&eacute;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&ccedil;on vous obligez tous les utilisateurs &agrave; avoir le mode +G et les emp&ecirc;cher de se mettre en -G.
</p>
<p>
<font class="set">set::restrict-channelmodes &lt;modes&gt;</font><br>
Emp&ecirc;che les utilisateurs d'appliquer / enlever les modes de salon list&eacute;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&ccedil;on vous obligez tous les (nouveaux) salons &agrave; avoir le mode +G et les emp&ecirc;cher de se mettre en -G.<br>
NOTE : il peut toujours &ecirc;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&ecirc;cher, vous devrez demander aux codeurs de vos services d'impl&eacute;menter une option restrict-channelmodes &eacute;galement.
</p>
<p>
<font class="set">set::restrict-extendedbans &lt;types|*&gt;</font><br>
Ne permet pas aux utilisateurs d'utiliser des bans &eacute;tendus ("*") ou en emp&ecirc;che certains (ex. : "qc").
</p>
<p>
<font class="set">set::auto-join &lt;channels&gt;;</font><br>
Les salons qu'un utilisateur est forc&eacute; de rejoindre &agrave; la connexion.
Pour sp&eacute;cifier plus d'un salon, utilisez une virgule pour les s&eacute;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&eacute; de rejoindre apr&egrave;s /oper.
Pour sp&eacute;cifier plus d'un salon, utilisez une virgule pour les s&eacute;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&eacute;e sp&eacute;cifie la dur&eacute;e minimale pendant laquelle l'utilisateur doit &ecirc;tre connect&eacute; avant de pouvoir afficher un message /quit.
Utilis&eacute; pour pr&eacute;venir le spam.
Une dur&eacute;e est une valeur num&eacute;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&eacute;finit le texte qui sera affich&eacute; devant le message de quit.
Si la valeur est 0, alors le texte standard "Quit:" sera appliqu&eacute;.</p>
<p>
<font class="set">set::static-quit &lt;quit message&gt;;</font><br>
D&eacute;finit le message de quit qui sera envoy&eacute; quelque soit le message envoy&eacute; par le client lorsqu'il quitte le r&eacute;seau.
Ceci &eacute;limine le besoin de recourir &agrave; 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&ecirc;chera toutes les raisons de part, le 'no' laissera fonctionner les part comme d'habitude, n'importe quoi d'autre sera utilis&eacute; comme commentaire de part (ex. : static-part "Bye!") mais ca peut &ecirc;tre assez ennuyeux, alors utilisez le prudemment.
</p>
<p>
<font class="set">set::who-limit &lt;limit&gt;;</font><br>
D&eacute;finit le nombre maximum de r&eacute;ponses retourn&eacute;es lors d'un /who.
Si cette option n'est pas sp&eacute;cifi&eacute;e, il n'y aura pas de limite.
</p>
<p>
<font class="set">set::silence-limit &lt;limit&gt;;</font><br>
D&eacute;finit le maximum d'entr&eacute;es dans la SILENCE list.
Si la directive n'est pas sp&eacute;cifi&eacute;e, une limite de 15 sera appliqu&eacute;e.
</p>
<p>
<font class="set">set::maxbans &lt;limit&gt;;</font><br>
Fixe une limite pour le nombre maximum de ban (+b) autoris&eacute;s par salon.
La valeur par d&eacute;faut est 60.
Si vous la changez, prennez &eacute;galement attention au maxbanlength (voir ci-apr&egrave;s) !
</p>
<p>
<font class="set">set::maxbanlength &lt;limit&gt;;</font><br>
Similaire au pr&eacute;c&eacute;dent, mais fixe le nombre maximum de caract&egrave;res pour tous les bans ajout&eacute;s l'un &agrave; l'autre.
Donc, en pratique, ceci fixe une limite sur la quantit&eacute; (semi-)maximum de m&eacute;moire que tous les bans sur un salon peuvent prendre.
La valeur par d&eacute;faut est 2048 (bytes).
Avec une valeur par d&eacute;faut pour le set::maxbans de 60 ceci permet 2048:60=34 caract&egrave;res par ban en moyenne.
</p>
<p>
<font class="set">set::oper-only-stats &lt;stats-list&gt;;</font><br>
Sp&eacute;cifie une liste de flags stats (sans s&eacute;parateur) qui d&eacute;finit les flags stats que seuls les op&eacute;rateurs pourront utiliser.
Ne donnez pas de valeur si vous voulez permettre aux utilisateurs d'utiliser tous les flags, ou sp&eacute;cifiez * pour que les utilisateurs ne puissent en utiliser aucun.
Seuls les flags stats courts peuvent &ecirc;tre utilis&eacute;s ici.
</p>
<p>
<font class="set">set::oper-only-stats {&lt;stats-flag&gt;; &lt;stats-flag&gt;;};</font><br>
Sp&eacute;cifie une liste de flags stats pouvant &ecirc;tre utilis&eacute;s uniquement par les op&eacute;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&eacute;cifie le nombre de salons sur lesquels un utilisateur peut &ecirc;tre en m&ecirc;me temps.
</p>
<p>
<font class="set">set::maxdccallow &lt;amount-of-entries&gt;;</font><br>
Sp&eacute;cifie le nombre maximum d'entr&eacute;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&eacute;cifie les caract&egrave;res de pr&eacute;fixe pour les commandes de salon des services.
Les messages commen&ccedil;ant par l'un des caract&egrave;res sp&eacute;cifi&eacute;s seront envoy&eacute;s m&ecirc;me si le client est en +d.
La valeur par d&eacute;faut est "`!.".
</p>
<p>
<font class="set">set::allowed-nickchars { &lt;list&gt; };</font><br>
Jeux de caract&egrave;res autoris&eacute;s dans les pseudos, voir <a href="#feature_nickchars">Caract&egrave;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&eacute;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&ecirc;me si le client est sur un salon (peut causer le desync du client) [d&eacute;faut]
<i>not-on-channels</i> le permet uniquement si l'utilisateur n'est sur aucun salon,
<i>force-rejoin</i> forcera &agrave; rejoindre tous les salons avec re-op/voice/etc si n&eacute;cessaire.
</p>
<p>
<font class="set">set::options::hide-ulines;</font><br>
Si il est pr&eacute;sent, les serveurs avec Uline seront cach&eacute;s dans une requ&ecirc;te /links envoy&eacute;e par les non-opers.
</p>
<p>
<font class="set">set::options::flat-map;</font><br>
Si il est pr&eacute;sent, tous les serveurs appara&icirc;tront comme directement link&eacute;s dans /map et /links, ainsi vous ne pourrez plus voir quel serveur est link&eacute; directement auquel.
C'est une petite aide contre les attaque (D)DoS parce que les personnes mal-intentionn&eacute;es ne peuvent plus voir facilement les 'points faibles'.
</p>
<p>
<font class="set">set::options::show-opermotd;</font><br>
Si il est pr&eacute;sent, l'opermotd sera montr&eacute; aux utilisateurs une fois qu'ils se seront /oper avec succ&egrave;s.
</p>
<p>
<font class="set">set::options::identd-check;</font><br>
Si il est pr&eacute;sent, la pr&eacute;sence d'un serveur d'identd sera v&eacute;rifi&eacute;e et la valeur retourn&eacute;e sera utilis&eacute;e comme username.
Si aucune requ&ecirc;te d'ident n'est retourn&eacute;e ou si le serveur d'identd n'existe pas, l'username de l'utilisateur sp&eacute;cifi&eacute; sera pr&eacute;fix&eacute; d'un ~.
Si cette valeur est omise, aucune v&eacute;rification ne sera faite.
</p>
<p>
<font class="set">set::options::show-connect-info;</font><br>
Si il est pr&eacute;sent, les notices "ident request", "hostname lookup", etc seront affich&eacute;es &agrave; la connexion de l'utilisateur.
</p>
<p>
<font class="set">set::options::dont-resolve;</font><br>
Si il est pr&eacute;sent, les hosts des utilisateurs entrants ne seront pas r&eacute;solus, peut &ecirc;tre utile si beaucoup de vos utilisateur n'ont pas d'host pour acc&eacute;l&eacute;rer la connexion.<br>
Notez que depuis que le 'non resolving' existe vous pouvez &eacute;galement avoir des allow blocks bas&eacute;s sur les hosts.
</p>
<p>
<font class="set">set::options::mkpasswd-for-everyone;</font><br>
Fait en sorte que le /mkpasswd puisse &ecirc;tre utilis&eacute; par tout le monde &agrave; la place des opers uniquement, l'usage de cette commande par les non-opers est envoy&eacute; 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&eacute;sent, un utilisateur sera pr&eacute;venu que sa tentative de /oper manqu&eacute;e a &eacute;t&eacute; enregistr&eacute;e.
</p>
<p>
<font class="set">set::options::allow-insane-bans;</font><br>
Autorise des bans &eacute;tendus d&eacute;raisonables tels que /GLINE *@*.fr
Avec ceci, vous pouvez très facilement bannir tout le monde de votre r&eacute;seau, donc faites très attention !
</p>
<p id="set_nopost_ban_action">
<font class="set">set::nopost::ban-action</font> (requi&egrave;re <a href="#modules_m_nopost">m_nopost</a>)<br>
Action &agrave; effectuer si un utilisateur essaye d'utiliser une commande HTTP POST.
Les valeurs autoris&eacute;es sont : kill, gline, gzline, kline, zline, shun et tempshun.
La valeur par d&eacute;faut est kill.
Si vous utilisez une *line ou shun, prenez note que si un utilisateur cr&eacute;dule s'est fait pi&eacute;ger et visite un site g&eacute;n&eacute;rant une attaque <acronym title="Spam d'IRC par script transprotocole">XPS IRC spamming</acronym>, il sera affect&eacute; par le shun ou la *line sur toutes ses autres connexions.
La valeur par d&eacute;faut kill &eacute;vite ce genre d'accidents, mais l'utilisation d'une *line et surtout d'une gzline peut être n&eacute;cessaire dans certains cas.
</p>
<p id="set_nopost_ban_reason">
<font class="set">set::nopost::ban-reason</font> (requi&egrave;re <a href="#modules_m_nopost">m_nopost</a>)<br>
La raison du ban &agrave; utiliser lorsque m_nopost d&eacute;connecte ou bannit un utilisateur.
</p>
<p id="set_nopost_ban_time">
<font class="set">set::nopost::ban-time</font> (requi&egrave;re <a href="#modules_m_nopost">m_nopost</a>)<br>
La dur&eacute;e des shuns, glines, gzlines, klines et zlines plac&eacute;s par m_nopost.
La valeur par d&eacute;faut est 4h.
</p>
<p id="set_nopost_except_hosts">
<font class="set">set::nopost::except-hosts</font> (requi&egrave;re <a href="#modules_m_nopost">m_nopost</a>)<br>
Une liste des hostmasks exempt&eacute;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&eacute;cifie la dur&eacute;e qu'un serveur DNS a pour r&eacute;pondre.
Une valeur de temps est un num&eacute;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&eacute;rique sp&eacute;cifie le nombre de fois que la r&eacute;solution de DNS reprendra en cas d'&eacute;chec.
</p>
<p>
<font class="set">set::dns::nameserver &lt;name-of-dns-server&gt;;</font> (PAS IMPLEMENTE)<br>
Sp&eacute;cifie l'hostname du serveur qui sera utilis&eacute; pour la r&eacute;solution de DNS.</p>
<p>
<font class="set">set::dns::bind-ip &lt;ip&gt;;</font><br>
Sp&eacute;cifie l'IP &agrave; relier au r&eacute;solveur, presque jamais requis.
</p>
<p>
<font class="set">set::network-name &lt;name-of-network&gt;;</font><br>
Sp&eacute;cifie le nom du r&eacute;seau sur lequel ce serveur tourne.
Cette valeur devrait &ecirc;tre exactement la m&ecirc;me sur tous les serveurs d'un r&eacute;seau.
</p>
<p>
<font class="set">set::default-server &lt;server-name&gt;;</font><br>
D&eacute;fini le nom au serveur par d&eacute;faut &agrave; 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&eacute;tection des cl&ocirc;nes IPv6 par d&eacute;faut.
Voir <a href="#allowblock_ipv6clonemask">allow::ipv6-clone-mask</a>.
La valeur par d&eacute;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&eacute;s.
C'est un param&egrave;tre obligatoire, donc mettez quelque chose comme services.votrereseauc.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 &ecirc;tre omise.
</p>
<p>
<font class="set">set::help-channel &lt;network-help-channel&gt;;</font><br>
Sp&eacute;cifie le nom du salon d'aide du r&eacute;seau.
</p>
<p>
<font class="set">set::cloak-keys { "key1"; "key2"; "key3"; };</font><br>
Sp&eacute;cifie les cl&eacute;s qui seront utilis&eacute;s pour g&eacute;n&eacute;rer les +x hosts.
Cette valeur doit &ecirc;tre la m&ecirc;me sur tous les serveurs d'un r&eacute;seau.
Si ce n'est pas le cas, les serveurs ne pourront plus linker.
Les 3 set::cloak-keys:: doivent &ecirc;tre des strings de 5 &agrave; 100 caract&egrave;res (10 &agrave; 20, c'est bien), elles doivent contenir des minuscules (a-z), des majuscules (A-Z) et des chiffres (0-9).
Noter que cela d&eacute;pend du module de cloaking que vous utilisez, d'autres r&egrave;gles peuvent &ecirc;tre appliqu&eacute;es.
</p>
<p>
<font class="set">set::hiddenhost-prefix &lt;prefix-value&gt;;</font><br>
D&eacute;finit le pr&eacute;fixe utilis&eacute; pour les +x hosts.
Il est g&eacute;n&eacute;ralement compos&eacute; de trois ou quatre lettres repr&eacute;sentant le nom du r&eacute;seau.
</p>
<p>
<font class="set">set::hosts::local &lt;locop-host-name&gt;;</font><br>
D&eacute;finit l'hostname qui sera assign&eacute; aux op&eacute;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&eacute;finit l'hostname qui sera assign&eacute; aux op&eacute;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&eacute;finit l'hostname qui sera assign&eacute; 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&eacute;finite l'hostname qui sera assign&eacute; 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&eacute;finit l'hostname qui sera assign&eacute; 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&eacute;finit l'hostname qui sera assign&eacute; 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&eacute; 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&eacute;cifie que le support de l'EGD (Entropy Gathering Deamon) devrait &ecirc;tre activ&eacute;.
Si vous utilisez OpenSSL 0.9.7 ou une version post&eacute;rieure, alors /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool et /etc/entropy seront recherch&eacute;s par d&eacute;faut donc aucun nom de fichier n'est n&eacute;cessaire, vous pouvez simplement sp&eacute;cifier set::ssl::egd sans valeur.
Si vous utilisez une version d'OpenSSL ant&eacute;rieure &agrave; la 0.9.7 ou vous voulez utiliser un socket EGD plac&eacute; ailleurs que dans la liste des emplacements list&eacute;s ci-dessus, vous pouvez sp&eacute;cifier le nom de fichier de l'UNIX Domain Socket qu'un EGD &eacute;coute.
</p>
<p>
<font class="set">set::ssl::certificate &lt;filename&gt;;</font><br>
Sp&eacute;cifie le nom de fichier o&ugrave; le certificat SSL du serveur est situ&eacute;.
</p>
<p>
<font class="set">set::ssl::key &lt;filename&gt;;</font><br>
Sp&eacute;cifie le nom de fichier o&ugrave; la cl&eacute; priv&eacute;e SSL du serveur est situ&eacute;e.
</p>
<p>
<font class="set">set::ssl::trusted-ca-file &lt;filename&gt;;</font><br>
Sp&eacute;cifie le nom de fichier o&ugrave; les certificats des <acronym title="Certification Authorities">CAs</acronym> de confiance sont stock&eacute;s.
</p>
<p>
<font class="set">set::ssl::server-cipher-list &lt;cipherlist&gt;;</font><br>
Sp&eacute;cifie quel chiffrement est autoris&eacute;, par d&eacute;faut, on laisse ce choix &agrave; 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&eacute;cifier une liste de chiffrement.
</p>
<p>
<font class="set">set::ssl::renegotiate-bytes &lt;value&gt;;</font><br>
Sp&eacute;cifie apr&egrave;s combien d'octets une session SSL devrait &ecirc;tre ren&eacute;goti&eacute;e (ex: 20m pour 20 Mo).
</p>
<p>
<font class="set">set::ssl::renegotiate-timeout &lt;timevalue&gt;;</font><br>
Sp&eacute;cifie apr&egrave;s combiend de temps une session SSL devrait &ecirc;tre ren&eacute;goti&eacute;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&eacute;s.
</p>
<p>
<font class="set">set::ssl::options::verify-certificate;</font><br>
Force Unreal &agrave; v&eacute;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&eacute;sactive le STARTTLS. STARTTLS autorise les clients &agrave; 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&ecirc;me host avant d'&ecirc;tre bloqu&eacute; par le throttle.
</p>
<p>
<font class="set">set::ident::connect-timeout &lt;amount&gt;;</font><br>
Nombre de secondes avant de renoncer &agrave; la connexion au serveur d'ident (d&eacute;faut : 10s).
</p>
<p>
<font class="set">set::ident::read-timeout &lt;amount&gt;;</font><br>
Nombre de secondes avant de renoncer &agrave; une r&eacute;ponse du serveur d'ident (d&eacute;faut : 30s).
</p>
<p>
<font class="set">set::anti-flood::unknown-flood-bantime &lt;timevalue&gt;;</font><br>
Sp&eacute;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&eacute;cifie la quantit&eacute; de donn&eacute;es (en kilo-octets) que la connexion inconnue doit envoyer pour que l'utilisateur soit kill&eacute;.
</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&eacute;riod" (en secondes).
Ceci r&eacute;clame que le NO_FLOOD_AWAY soit activ&eacute; 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&eacute;faut est 3 en 60 secondes.
</p>
<p>
<font class="set">set::default-bantime &lt;time&gt;</font><br>
Le bantime par d&eacute;faut quand vous faites /kline, /gline, /zline, /shun, etc sans param&egrave;tre de temps (comme /gline *@some.nasty.isp), par d&eacute;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&eacute;cifier un unsettime par d&eacute;faut, si vous sp&eacute;cifiez 10 par exemple, alors +f [5j]:15 sera transform&eacute; en [5j#i10]:15.
La valeur par d&eacute;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&eacute;faut, ceci est &agrave; 60 (= 1 heure).
</p>
<p>
<font class="set">set::ban-version-tkl-time &lt;value&gt;</font><br>
Si vous sp&eacute;cifiez une 'action' comme zline/gline/etc dans les ban version, alors vous pouvez sp&eacute;cifier ici combien de temps l'ip va &ecirc;tre bannie, par d&eacute;faut, ceci est mis &agrave; 86400 (1 jour).
</p>
<p>
<font class="set">set::spamfilter::ban-time &lt;value&gt;</font><br>
M&ecirc;me chose qu'au dessus mais pour les *lines/shuns ajout&eacute;s par le spamfilter.
</p>
<p>
<font class="set">set::spamfilter::ban-reason &lt;reason&gt;</font><br>
La raison utilis&eacute;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" &agrave; tous les utilisateurs normaux essayant de rejoindre le virus-help-channel.
Seuls les op&eacute;rateurs, les personnes forc&eacute; 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&eacute;s du spamfilter (aucun filtre ne sera appliqu&eacute;), cela peut &ecirc;tre une simple cible, ou une liste s&eacute;par&eacute; 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&eacute;e en millisecondes (1000ms = 1s) pour s'ex&eacute;cuter, alors un avertissement sera envoy&eacute; &agrave; tous les op&eacute;rateurs (par d&eacute;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&eacute;e en millisecondes (1000ms = 1s) pour s'ex&eacute;cuter, alors ce filtre sera enlev&eacute; (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&eacute;rifie si le nouveau pseudo est banni.
Si c'est le cas, le changement de pseudo n'est pas autoris&eacute;. La valeur par d&eacute;faut est "yes".
</p>
<p>
<font class="set">set::timesynch::enabled &lt;yes|no&gt;</font><br>
Active ou d&eacute;sactive la synchronisation du temps au d&eacute;marrage. Yes par d&eacute;faut.
</p>
<p>
<font class="set">set::timesynch::server &lt;IP&gt;</font><br>
Serveur avec lequel synchroniser le temps.
Peut comporter jusqu'&agrave; 4 IP s&eacute;par&eacute;es par des virgules.
Les serveurs doivent supporter le protocole NTP version 4.
La valeur par d&eacute;faut est le support de 3 serveurs (US, EU, AU).
Les requ&egrave;tes sont envoy&eacute;es en parall&egrave;le, celui qui r&eacute;pond le plus rapidement gagne.
</p>
<p>
<font class="set">set::timesynch::timeout &lt;time&gt;</font><br>
Dur&eacute;e maximum pendant laquelle attendre la r&eacute;ponse du serveur.
Cette valeur est entre 1 et 5, plus ce n'est pas possible car cela cr&eacute;e trop d'incoh&eacute;rences.
Ce param&egrave;tre est r&eacute;gl&eacute; par d&eacute;faut &agrave; 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&eacute;pondent par un PONG.
Tr&eagrave;s utile pour &eacute;viter entre autres des attaques par HTTP-POST, ainsi que pour emp&ecirc;cher le spoofing TCP sur d'anciens syst&eagrave;mes d'exploitation avec des piles TCP buggu&eacute;es.
La valeur par d&eacute;faut est 'yes'.
</p>
<p>
<font class="set">set::pingpong-warning &lt;yes|no&gt;</font><br>
Lorsque set::ping-cookie est activ&eacute; (g&eacute;n&eacute;ralement sous Windows), envoie un avertissement &agrave; chaque utilisateur, d'utiliser '/quote pong ...' si ils ont des probl&egrave;mes pour se connecter.
La valeur par d&eacute;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&eacute;sactiver les notifications d'AWAY dans WATCH.
La valeur par d&eacute;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&egrave;gles.
Ce bloc d&eacute;finit les param&egrave;tres par d&eacute;faut pour ceux-ci, en plus du pidfile et du fichier irc.tune.
Tout ce qui n'est pas indiqu&eacute; ici aura pour valeur par d&eacute;faut celle mentionn&eacute;e dans la section <a href="#addtlfiles">Fichiers Additionnels</a>.
</p>
<p>
Les chemins relatives seront interpr&eacute;t&eacute;s par rapport au dossier racine de UnrealIRCd, qui est normalement celui contenant <tt>unrealircd.conf</tt>.
Ce bloc peut &ecirc;tre utilis&eacute; pour ex&eacute;cuter plus d'une instance de IRCd depuis le m&ecirc;me r&eacute;pertoire.
Dans ce cas, vous devriez au moins sp&eacute;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&egrave;gles (Rules).
Ci-dessous ce trouve la liste des fichiers et leurs utilit&eacute;s.<br>
Notez que les fichiers motd (tous les types) et les fichiers de r&egrave;gles peuvent aussi &ecirc;tre sp&eacute;cifi&eacute;s dans un <a href="#tldblock">tld block</a> ou un <a href="#filesblock">files block</a>, ce sont juste les fichiers utilis&eacute;s par d&eacute;fauts (et pour les MOTD / Rules distants).
</p>
<table border="1" width="83%">
<tr>
<th>ircd.motd</th>
<td>Affich&eacute; lorsqu'un /motd est ex&eacute;cut&eacute; et (si ircd.smotd n'est pas pr&eacute;sent) lorsqu'un utilisateur se connecte</td>
</tr>
<tr>
<th>ircd.smotd</th>
<td>Affich&eacute; &agrave; la connexion uniquement (MOTD court)</td>
</tr>
<tr>
<th>ircd.rules</th>
<td>Affich&eacute; lorsqu'un /rules est ex&eacute;cut&eacute;</td>
</tr>
<tr>
<th>oper.motd</th>
<td>Affich&eacute; lorsqu'un /opermotd est ex&eacute;cut&eacute; ou lorsqu'un utilisateur s'identifie avec /oper</td>
</tr>
<tr>
<th>bot.motd</th>
<td>Affich&eacute; lorsqu'un /botmotd est ex&eacute;cut&eacute;</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&eacute;cifi&eacute;</td>
</tr>
<tr>
<td style="text-align:center;">c</td>
<td>Aucune couleur ANSI ne peut &ecirc;tre envoy&eacute; sur le salon</td>
</tr>
<tr>
<td style="text-align:center;">C</td>
<td>Aucun CTCP n'est accept&eacute; sur le salon</td>
</tr>
<tr>
<td style="text-align:center;">e &lt;nick!user@host&gt;</td>
<td>Exception ban : l'utilisateur sp&eacute;cifi&eacute; peut rejoindre le salon m&ecirc;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&eacute;cifi&eacute;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 &agrave; l'utilisateur</td>
</tr>
<tr>
<td style="text-align:center;">i</td>
<td>Le salon ne peut &ecirc;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 &agrave; 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 &agrave; <i>joins</i> par <i>secondes</i> secondes</td>
</tr>
<tr>
<td style="text-align:center;">K</td>
<td>/knock n'est pas autoris&eacute;</td>
</tr>
<tr>
<td style="text-align:center;">k &lt;key&gt;</td>
<td>Attribue un mot de passe &agrave; sp&eacute;cifier pour rejoindre le salon</td>
</tr>
<tr>
<td style="text-align:center;">l &lt;##&gt;</td>
<td>Sp&eacute;cifie le nombre maximum d'utilisateurs</td>
</tr>
<tr>
<td style="text-align:center;">L &lt;Chan&gt;</td>
<td>Si le maximum sp&eacute;cifi&eacute; par +l est atteint, les utilisateurs seront redirig&eacute;s vers ce salon</td>
</tr>
<tr>
<td style="text-align:center;">M</td>
<td>Seuls les utilisateurs dont le pseudo est enregistr&eacute; (+r) peuvent parler sur le salon</td>
</tr>
<tr>
<td style="text-align:center;">m</td>
<td>Salon mod&eacute;r&eacute;. 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&eacute;</td>
</tr>
<tr>
<td style="text-align:center;">n</td>
<td>Aucun message ne peut &ecirc;tre envoy&eacute; de l'ext&eacute;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&eacute;rateur &agrave; l'utilisateur</td>
</tr>
<tr>
<td style="text-align:center;">p</td>
<td>Rend le salon priv&eacute; (n'appara&icirc;t plus dans les /whois)</td>
</tr>
<tr>
<td style="text-align:center;">q &lt;nick&gt;</td>
<td>Rend l'utilisateur "owner" (propri&eacute;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&eacute; (ne peut &ecirc;tre mis que par les services)</td>
</tr>
<tr>
<td style="text-align:center;">R</td>
<td>Seuls les utilisateurs enregistr&eacute;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&icirc;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 &ecirc;tre envoy&eacute;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&eacute;rateurs </td>
</tr>
<tr>
<td style="text-align:center;">V</td>
<td>/invite n'est pas autoris&eacute;</td>
</tr>
<tr>
<td style="text-align:center;">v &lt;nick&gt;</td>
<td>Donne le statut de voice &agrave; l'utilisateur (peut parler quand le salon est mod&eacute;r&eacute;, +m)</td>
</tr>
<tr>
<td style="text-align:center;">z</td>
<td>Seuls les utilisateurs avec une connexion s&eacute;curis&eacute;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&eacute;curis&eacute;e (SSL).
N'est actif que si le mode +z est actif.
Les ULines (par exemple : BotServ) sont ignor&eacute;s lors de la v&eacute;rification des utilisateurs "non s&eacute;curis&eacute;s".
Les admins des serveurs sont toujours responsables de la s&eacute;curit&eacute; 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&eacute;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&eacute;fini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">a</td>
<td>Services Admin (d&eacute;fini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">B</td>
<td>Vous marque comme &eacute;tant un bot</td>
</tr>
<tr>
<td style="text-align:center;">C</td>
<td>Co-Admin (d&eacute;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 (&agrave; l'exception de texte commencant par certains caract&egrave;res, voir set::channel-command-prefix)</td>
</tr>
<tr>
<td style="text-align:center;">G</td>
<td>Filtre tous les badwords d&eacute;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&eacute;fini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align: center">I</td>
<td>Cache le temps d'inactivit&eacute; 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&eacute; dans un /who)</td>
</tr>
<tr>
<td style="text-align:center;">N</td>
<td>Network Administrator (d&eacute;fini dans Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">O</td>
<td>Local IRC Operator (d&eacute;fini par Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">o</td>
<td>Global IRC Operator (d&eacute;fini par Oper Block)</td>
</tr>
<tr>
<td style="text-align:center;">p</td>
<td>Cache les canaux sur lesquels vous &ecirc;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&eacute;s et de notices que d'utilisateurs enregistr&eacute;s (+r)</td>
</tr>
<tr>
<td style="text-align:center;">r</td>
<td>Identifie le pseudo comme &eacute;tant enregistr&eacute;</td>
</tr>
<tr>
<td style="text-align:center;">S</td>
<td>Utilis&eacute; pour prot&eacute;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&ecirc;che de recevoir des CTCPs</td>
</tr>
<tr>
<td style="text-align:center;">t</td>
<td>Dis que vous utilis&eacute; 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&ccedil;oit les notices de refus de DCC infect&eacute;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 &agrave; l'utilisateur un hostname cach&eacute;</td>
</tr>
<tr>
<td style="text-align:center;">z</td>
<td>Indique que vous &ecirc;tes un client SSL</td>
</tr>
</table>
</div>
<p id="useropercommands">
<font size="+2"><b>7 &#8211; Commandes utilisateurs et op&eacute;rateurs</b></font>
</p>
<div class="desc">
<p>
Notez que la documentation fournie par /helpop est plus r&eacute;cente, utilisez /helpop commande (ou /helpop ?commande si vous &ecirc;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&eacute;. Inclus le pseudo, l'host, les salons sur lesquels il se trouve et son statut d'Oper. Si vous &ecirc;tes un IRCOP, vous avez acc&egrave;s &agrave; 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&eacute;alise une commande <a href="#command_whois">WHOIS</a> distante.
Si un utilisateur n'est pas sur le m&ecirc;me serveur que vous, un WHOIS simple n'affichera pas toutes les informations fournies habituellement par WHOIS.
Par exmple, les temps d'inactivit&eacute; ne sont pas affich&eacute;s dans ce cas.
Pour ex&eactue;cuter une commande WHOIS distante, faites un WHOIS en pr&eacute;cisant le pseudo de l'utilisateur distant en premier et en deuxi&egrave;me param&egrave;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&eacute;ponses&gt;</td>
<td>Affiche les informations sur un pseudo qui n'est plus connect&eacute;. Le nombre maximum de r&eacute;ponses est facultatif et limite le nombre d'enregistrements qui seront retourn&eacute;s</td>
<td>Tous</td>
</tr>
<tr>
<td>ison &lt;nick1 nick2 nick3 ...&gt;</td>
<td>Vous permet de v&eacute;rifier qu'un utilisateur (ou plusieurs) est connect&eacute;. R&eacute;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&eacute;cifi&eacute;s. Cette commande &eacute;quivaut &agrave; faire un PART suivi d'un JOIN. (Pour les utilisateurs de mIRC, la commande /hop est &eacute;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&eacute;cifier un nom de serveur si vous souhaitez voir le motd d'un serveur particulier sur un r&eacute;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&eacute;cifier un nom de serveur si vous souhaitez voir le ircd.rules d'un serveur particulier sur un r&eacute;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&eacute;cifier un nom de serveur si vous souhaitez voir les statistiques d'un serveur particulier sur un r&eacute;seau.</td>
<td>Tous</td>
</tr>
<tr>
<td>map</td>
<td>Affiche la carte (map) du r&eacute;seau</td>
<td>Tous</td>
</tr>
<tr>
<td>quit &lt;reason&gt;</td>
<td>Vous d&eacute;connecte du serveur. Si vous ajoutez une raison, elle sera affich&eacute;e sur tous les salons, lorsque vous quitterez.</td>
<td>Tous</td>
</tr>
<tr>
<td>ping &lt;user&gt;</td>
<td>Envoie une requ&ecirc;te de PING &agrave; l'utilisateur. Utilis&eacute; pour v&eacute;rifier une connexion et son lag. Les serveurs envoient des pings &agrave; des moments d&eacute;termin&eacute;s pour v&eacute;rifier que les utilisateurs sont toujours connect&eacute;s.</td>
<td>Tous</td>
</tr>
<tr>
<td>version &lt;nick&gt;</td>
<td>Cela envoie une requ&ecirc;te de CTCP Version &agrave; l'utilisateur. Si il est configur&eacute; pour, le client renverra sa version en r&eacute;ponse.</td>
<td>Tous</td>
</tr>
<tr>
<td>links</td>
<td>Affiche la liste de tous les serveurs reli&eacute;s au r&eacute;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&eacute;cifi&eacute;. G&eacute;n&eacute;ralement utilis&eacute; 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&eacute;cifi&eacute;. Topic &lt;salon&gt; &lt;topic&gt; changera le topic du salon sp&eacute;cifi&eacute;.</td>
<td>Tous</td>
</tr>
<tr>
<td>invite &lt;nick&gt; &lt;channel&gt;</td>
<td>Invite l'utilisateur sp&eacute;cifi&eacute; &agrave; rejoindre le salon sp&eacute;cifi&eacute;. (Vous devez &ecirc;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&eacute;cifi&eacute;s du ou des salons sp&eacute;cifi&eacute;s. Une raison peut &eacute;galement &ecirc;tre pr&eacute;cis&eacute;e.</td>
<td>ChanOp</td>
</tr>
<tr>
<td>away &lt;raison&gt;</td>
<td>Vous marque comme &eacute;tant absent. Une raison peut &eacute;galement &ecirc;tre sp&eacute;cifi&eacute;e.</td>
<td>Tous</td>
</tr>
<tr>
<td>Watch +-&lt;nick&gt; +-&lt;nick&gt;</td>
<td>
Watch est un nouveau syst&egrave;me de "notify-type" dans UnrealIRCd qui est en m&ecirc;me temps plus rapide et moins gourmant en ressources du r&eacute;seau qu'aucun autre ancien syst&egrave;me de notification.
Le serveur vous envoie un message lorsqu'un pseudo de votre watch list se connecte ou se d&eacute;connecte.
La watch list NE RESTE PAS ENTRE 2 SESSIONS - vous (ou votre script ou client) devez ajouter les pseudos dans la watch list &agrave; 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&egrave;me pour avoir l'aide d'un serveur IRC.
Vous tapez soit /HELPOP ? &lt;sujet du syst&egrave;me d'aide&gt; ou /HELPOP ! &lt;question&gt;
Le "?" dans /HELPOP veut dire interroger le syst&egrave;me d'aide et si vous n'avez pas de r&eacute;ponse, "!" enverra la question &agrave; un Op&eacute;rateur connect&eacute;.
Utiliser ni ? ni ! signifie que la question sera d'abord envoy&eacute;e au syst&egrave;me d'aide et que si aucune r&eacute;ponse n'est trouv&eacute;e, elle sera envoy&eacute;e &agrave; un Op&eacute;rateur.
</td>
<td>Tous</td>
</tr>
<tr>
<td>list &lt;&eacute;l&eacute;ment recherch&eacute;&gt;</td>
<td>
Si vous ne sp&eacute;cifiez pas d'&eacute;l&eacute;ment recherch&eacute;, par d&eacute;faut toute la liste des salons vous serra envoy&eacute;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&eacute;&eacute;s depuis &lt;nombre&gt; minutes.<br>
C&lt;nombre affichera les salons cr&eacute;&eacute;s avant &lt;nombre&gt; minutes.<br>
T&gt;nombre affichera les salons dont le topic n'a plus &eacute;t&eacute; chang&eacute; depuis au moins &lt;nombre&gt; minutes<br>
T&lt;nombre affichera les salons dont le topic a &eacute;t&eacute; chang&eacute; 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 &agrave; 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 &ecirc;tes banni.</td>
<td>Tous</td>
</tr>
<tr>
<td>setname</td>
<td>Permet aux utilisateurs de changer leur "Real Name" sans avoir &agrave; 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 &agrave; cr&eacute;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&eacute;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&eacute;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&eacute;rateurs peuvent sp&eacute;cifier un "l" comme premier param&egrave;tre dans la commande pour recevoir une liste d'entr&eacute;e dans le DNS cache.</td>
<td>Tous</td>
</tr>
<tr>
<td>userip &lt;nick&gt;</td>
<td>Returne l'adresse IP de l'utilisateur en question.</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&eacute;rateur &agrave; un utilisateur si les sp&eacute;cifications correspondent &agrave; un Oper Block.</td>
<td>IRCop</td>
</tr>
<tr>
<td>wallops &lt;message&gt;</td>
<td>Envoie un message &agrave; tous les utilisateurs +w</td>
<td>IRCop</td>
</tr>
<tr>
<td>globops &lt;message&gt;</td>
<td>Envoie un message &agrave; tous les IRCops globaux</td>
<td>IRCop</td>
</tr>
<tr>
<td>chatops &lt;message&gt;</td>
<td>Envoie un message &agrave; tous les IRCops (locaux et globaux)</td>
<td>IRCop</td>
</tr>
<tr>
<td>locops &lt;message&gt;</td>
<td>Envoie un message &agrave; tous les IRCops locaux</td>
<td>IRCop</td>
</tr>
<tr>
<td>adchat &lt;message&gt;</td>
<td>Envoie un message &agrave; tous les Admins</td>
<td>IRCop</td>
</tr>
<tr>
<td>nachat &lt;message&gt;</td>
<td>Envoie un message &agrave; tous les NetAdmins</td>
<td>IRCop</td>
</tr>
<tr>
<td>kill &lt;nick&gt; &lt;raison&gt;</td>
<td>Kill l'utilisateur du r&eacute;seau</td>
<td>IRCop</td>
</tr>
<tr>
<td>kline [+|-]&lt;user@host | nick&gt; [&lt;dur&eacute;e du ban&gt; &lt;raison&gt;]</td>
<td>
Bannir le hostmask du serveur sur lequel la commande a &eacute;t&eacute; utilis&eacute;e. Une kline n'est pas un ban global.<br>
<b>La dur&eacute;e du ban</b> peut &ecirc;tre: a) une valeur en seconde, b) une dur&eacute;e, comme "1d" pour un jour (day) c) "0" pour permanent.
Le temps et la raison sont optionnels, si rien n'est sp&eacute;cifi&eacute;, ce sera set::default-bantime (d&eacute;faut : 0 / permanent) et "no reason" qui seront utilis&eacute;s.<br>
Pour enlever une kline, utilisez /kline -user@host.
</td>
<td>IRCop</td>
</tr>
<tr>
<td>zline [+|-]&lt;*@ip&gt; [&lt;dur&eacute;e du ban&gt; &lt;raison&gt;]</td>
<td>
Bannir une adresse ip du serveur local sur lequel la commande a &eacute;t&eacute; utilis&eacute;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&eacute;e du ban&gt; &lt;raison&gt;]</td>
<td>
Ajoute un ban global sur l'utilisateur sp&eacute;cifi&eacute;. 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&eacute;e du shun&gt; &lt;raison&gt;]</td>
<td>
Emp&ecirc;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&eacute;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&eacute;cifier un nom de serveur, vous permet de rehasher le fichier de configuration d'un serveur distant et sp&eacute;cifier -global le fait sur tous les serveurs du r&eacute;seau (ces deux options sont r&eacute;serv&eacute;es aux NetworkAdmins).
De nombreux flags sont disponibles. Ils incluent :<br>
-dns - r&eacute;initialise et recharge le r&eacute;solveur<br>
-motd - recharge les fichiers MOTD, BOTMOTD, OPERMOTD et RULES (notamment ceux pr&eacute;cis&eacute;s dans un <a href="#tldblock">TLD blocks</a>)<br>
-garbage - force le nettoyage de la m&eacute;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&eacute;sent. Vous devez aussi sp&eacute;cifier une raison.</td>
<td>IRCop</td>
</tr>
<tr>
<td>die &lt;mot de passe&gt;</td>
<td>Arr&ecirc;te le process IRCD. Le mot de passe est requis si drpass est pr&eacute;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&eacute;pondra de chaque serveur qu'il rencontre avec le temps.
Utile lorsque vous cherchez d'o&ugrave; viens le lag et les TS futurs et pass&eacute;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&eacute;.</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&eacute;.</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&eacute;.</td>
<td>IRCop</td>
</tr>
<tr>
<td>squit &lt;server&gt;</td>
<td>D&eacute;connecte un serveur du r&eacute;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&eacute;cis&eacute;, le serveur sur lequel vous &ecirc;tes va tenter de se connecter au serveur sp&eacute;cifi&eacute;.
Si 2 serveurs sont pr&eacute;cis&eacute;s, ils vont tenter de se connecter l'un &agrave; l'autre.
Mettre le hub en deuxi&egrave;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&ecirc;che ce fichier d'&ecirc;tre envoy&eacute;.</td>
<td>IRCop</td>
</tr>
<tr>
<td>undccdeny &lt;filemask&gt;</td>
<td>Enl&egrave;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 &agrave; 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 &agrave; 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 &ecirc;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&eacute;e sur un utilisateur, elle vous donnera les informations sur la classe et le lag. Si elle est utilis&eacute;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&eacute; &agrave; la fin du Motd</td>
<td>IRCop</td>
</tr>
<tr>
<td>addomotd :&lt;text&gt;</td>
<td>Ajoute le texte donn&eacute; &agrave; 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 &agrave; le relancer.</td>
<td>IRCop</td>
</tr>
<tr>
<td>addline &lt;texte&gt;</td>
<td>Vous permet d'ajouter des lignes &agrave; 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&eacute;thode de hash &lt;auth-type&gt;.
Les m&eacute;thodes disponibles sont :
<ul>
<li>crypt [<em>n&eacute;cessite SSL pour Windows</em>]</li>
<li>md5</li>
<li>sha1 [<em>n&eacute;cessite SSL</em>]</li>
<li>ripemd160 [<em>n&eacute;cessite SSL</em>]</li>
</ul>
</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 &agrave; 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&eacute;glages relatifs au mode "high traffic".
Le mode "high traffic" (HTM) d&eacute;sactive certaines commandes comme : list, whois, who, etc. en r&eacute;ponse &agrave; 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&eacute;sactive l'avertissement des utilisateurs / admins lorsque le serveur entre / sort du HTM<br>
-TO &lt;valeur&gt; Dis au HTM, &agrave; 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&eacute;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&eacute;cifi&eacute; <br>
&nbsp;&nbsp;&nbsp;&nbsp;r Renvoie les glines dont la raison est / n'est pas celle sp&eacute;cifi&eacute;e<br>
&nbsp;&nbsp;&nbsp;&nbsp;s Renvoie les glines mis / n'ont mis par la personne sp&eacute;cifi&eacute;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 &eacute;t&eacute; utilis&eacute;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&eacute;cifi&eacute; <br>
&nbsp;&nbsp;&nbsp;&nbsp;r Renvoie les glines dont la raison est / n'est pas celle sp&eacute;cifi&eacute;e<br>
&nbsp;&nbsp;&nbsp;&nbsp;s Renvoie les glines mis / n'ont mis par la personne sp&eacute;cifi&eacute;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&eacute;s<br>
Y - class - envoie la liste des class block<br>
z - zip - envoie les informations sur la compression des serveurs ziplinked (si ils ont &eacute;t&eacute; compil&eacute;s avec le support ziplink)<br>
Z - mem - envoie les informations sur la m&eacute;moire utilis&eacute;e
</td>
<td>Tous</td>
</tr>
<tr>
<td>module</td>
<td>Liste tous les modules charg&eacute;s</td>
<td>Tous</td>
</tr>
<tr>
<td>close</td>
<td>Cette commande d&eacute;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&eacute;curit&eacute;/checklist</b></font>
</p>
<div class="desc">
<p>
Si vous &ecirc;tes concern&eacute;s par la s&eacute;curit&eacute;, et vous le devriez, cette section vous donnera un aper&ccedil;u des risques possibles et leurs niveaux de risques.
Vous pouvez &eacute;galement utiliser celle-ci comme une checklist pour parcourir la configuration de votre r&eacute;seau et le rendre plus s&eacute;curis&eacute;.
</p>
<p>
Cette liste est ordonn&eacute;e suivant la popularit&eacute;, le niveau de risque et les m&eacute;thodes les plus souvent utilis&eacute;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&eacute;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&eacute;rabilit&eacute;s non li&eacute;es &agrave; l'IRCd</font></b>
</p>
<div class="desc">
<p>
Il y a beaucoup plus de chance qu'un serveur se fasse pirater &agrave; cause d'une vuln&eacute;rabilit&eacute; non-ircd qu'&agrave; cause d'un bug UnrealIRCd.
Si vous faites tourner sur la m&ecirc;me machine des serveurs http, dns, smpt ou ftp par exemple, vous avez de plus grands risques.
Aussi, si vous &ecirc;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 &ecirc;tes pas s&ucirc;r.<br>
Autres choses dans le m&ecirc;me style : ne mettez jamais votre UnrealIRCd dans un webroot ou un autre type de fichier partag&eacute;.
Et pour les backups (sauvegardes), assurez vous qu'elles aient les bonnes permissions &eacute;galement (il arrive assez souvent
que tout est bien s&eacute;curis&eacute; mais qu'il y a un backup.tar.gz quelque part lisible par tout le monde).
</p>
<p>
Vous voulez probablement &eacute;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 &ecirc;tes interess&eacute; par les probl&egrave;mes de s&eacute;curit&eacute;, n'est-ce pas ?)
je vous sugg&egrave;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&eacute; avec Unreal3.2.1 ou avant, je vous sugg&egrave;re de r&eacute;-encrypter ceux-ci (r&eacute;utilisez juste /mkpasswd), car 3.2.1 introduit certaines caract&eacute;ristiques anti-cracks int&eacute;r&eacute;ssantes
(basiquement une diminution de 14x la vitesse de crack et rend impossible le crack par stored-plain-ciphertext)
</p>
<p>
Notez que m&ecirc;me si ceci n'est "qu'une autre couche de s&eacute;curit&eacute;", beaucoup de mots de passe faibles &ecirc;tre craqu&eacute;s facilement, et si quelqu'un s'empare de votre fichier de configuration, il pourra y trouver des choses int&eacute;r&eacute;ssante pour planifier une attaque comme link::password-connect.
</p>
</div>
<p id="secuser">
<b><font size="+2">8.4 &#8211; Probl&egrave;mes li&eacute;s aux utilisateurs</font></b>
</p>
<div class="desc">
<p>
Tout comme beaucoup des choses dites ici, ceci n'est pas sp&eacute;cifique &agrave; UnrealIRCd, mais ...<br>
Choisissez toujours bien vos opers et admins. Et rappelez-vous le concept du maillon faible.
M&ecirc;me si vous &ecirc;tes prudents et suivez la documentation, peut-&ecirc;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&ocirc;le.<br>
Une chose que vous pouvez tout de fois faire est choisir soigneusement de quels privil&egrave;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&egrave;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&eacute;cup&eacute;rer les mots de passe (les logins oper, nickserv, etc ...) ...
Pour les m&ecirc;mes raisons, utilisez toujours ssh &agrave; la place de telnet.
</p>
</div>
<p id="secDoS">
<b><font size="+2">8.6 &#8211; Denial of Service attacks (DoS) [ou: comment prot&eacute;ger mon hub]</font></b>
</p>
<div class="desc">
<p>
Beaucoup de r&eacute;seaux ont exp&eacute;riment&eacute; combien &eacute;tait "fun" un flood ou une (D)DoS attaque, vous pouvez toutes fois faire certaines choses permettant d'en r&eacute;duire les dommages.
La plupart des r&eacute;seaux ont un serveur hub, ce que certaines personnes oublient, c'est qu'il est assez facile de prot&egrave;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&egrave;re, un attaquant ne pourra ni resoudre son host ni le flooder.
</li>
<li>
Ensuite, linkez vos serveurs au hub en sp&eacute;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 &ecirc;tre s&ucirc;r que votre nom de serveur ne permet pas de zones de transfert, mais ceci nous &eacute;loigne du sujet.
</li>
</ul>
</li>
<li>
<ul>
<li>
Une autre &eacute;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 &ecirc;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>
&Eacute;videmment, ces techniques sont moins utiles si elles ne sont pas appliqu&eacute;es d&egrave;s le lancement du serveur puisque l'IP peut d&eacute;j&agrave; &ecirc;tre connu de quelqu'un de malveillant, qui attend que &ccedil;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&egrave;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&eacute;seaux choisissent "rien", lorsque d'autres pr&eacute;f&egrave;rent que leurs clients puisse faire "/stats g" et "/stats k".<br>
Je vous sugg&egrave;re d'utiliser <i>set { oper-only-stats "*"; };</i> pour emp&ecirc;cher tous /stats pour les non-opers, mais si vous ne voulez pas cela, inspectez la liste des "/stats" et emp&egrave;chez l'acc&egrave;s &agrave; tout ce que vous voulez ...
(en cas de doute, emp&ecirc;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&eacute;e des links et qui peut &ecirc;tre utilis&eacute;e comme backup, etc ...</li>
<li>/stats g, /stats k: en g&eacute;n&eacute;ral utilis&eacute;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&eacute;cialement si un attaquant peut utiliser ces adresses.</li>
<li>/stats i, /stats y: peut aider un attaquant &agrave; trouver des hosts permettant beaucoup de connexions.</li>
<li>/stats P: aide &agrave; trouver des ports serveronly</li>
<li>etc c...</li>
</ul>
<p>
<b>MAP / LINKS</b><br>
Beaucoup de personnes ont demand&eacute; si il &eacute;tait possible de d&eacute;sactiver /map ou /links.
Notre position sur ce sujet est que c'est b&ecirc;te et donne un mauvais sens &agrave; la s&eacute;curit&eacute;, laissez moi vous expliquer...
Cacher les serveurs sur lesquels les utilisateurs sont connect&eacute;s est inutile vu qu'ils les connaissent d&eacute;j&agrave; (sinon comment s'y seraient-ils connect&eacute;s ?).
Pour les serveurs sur lesquels vous ne voulez aucuns utilisateurs, reportez vous &agrave; la section 8.6.
</p>
<p>
Maintenant, que POUVEZ vous faire ?
Depuis la version 3.2.1, il existe une option appel&eacute;e 'flat map' (set::options::flat-map), cela fera appara&icirc;tre tous les serveurs comme 'directement connect&eacute;s' dans /map et /links, comme cela les utilisateurs ne sauront plus voir quel serveur est li&eacute; auquel ...
&Ccedil;a peut &ecirc;tre une bonne couche suppl&eacute;mentaire de protection car ainsi une personne ne pourra pas rep&eacute;rer les 'points faibles' avec /map ou /links.
Donc, utiliser cela est recommand&eacute;.
Notez que cela n'&eacute;limine pas totalement les risques ...
Si un split arrive, quelqu'un peut toujours voir quel serveur est link&eacute; 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 &eacute;galement s'appliquer certains snomask limit&eacute;s, +s et +k.
Grâce &agrave; cela, ils peuvent voir des choses comme les rehashes, les kills et d'autres messages vari&eacute;s.
Pour d&eacute;sactiver cela, vous pouvez utiliser set::restrict-usermodes comme ceci : <i>set { restrict-usermodes "s"; };</i>.
</p>
<p>
&Eacute;videment tout ceci n'est que de la "dissimulation d'informations", ce n'est pas de la "vraie" s&eacute;curit&eacute;.
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&eacute;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&egrave;s bien mais ne doit pas &ecirc;tre votre principal point d'inqui&eacute;tude, vous avez des risques de loin plus importants d'&ecirc;tre attaqu&eacute; par d'autres points que celui-ci...
Pour des raisons vari&eacute;es.
</p>
<p>
Une autre option est l'activation du chrooting (*NIX uniquement), ce qui signifie que lors d'un exploit r&eacute;ussi,
l'utiliateur est confin&eacute; dans le dossier UnrealIRCd et ne peut acc&egrave;der &agrave; aucun autre fichier.
Ceci requi&egrave;re un acc&egrave;s root, la modification de include/config.h (la recherche du CHROOTDIR ainsi que la d&eacute;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&Egrave;RE VERSION, inscrivez vous &agrave; 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&ugrave; seulement 1 mail tout les X mois).
En g&eacute;n&eacute;ral il est explicitement mentionn&eacute; dans l'annonce si la release permet de fixer (de hauts risques) de s&eacute;curit&eacute;, mais il est malgr&eacute; tout bon d'upgrader d&egrave;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&egrave;re maintenant compris, vous ne pouvez jamais &ecirc;tre 100% s&eacute;curis&eacute;.
Vous (et nous) devons trouver et &eacute;liminer toutes les failles car un attaquant a juste besoin de trouver une faille sur un serveur.
Tout ce qui a &eacute;t&eacute; expliqu&eacute; ici DOIT de toutes fa&ccedil;ons aider &agrave; minimiser les risques consid&eacute;rablement.
Prenez le temps de s&eacute;curiser votre r&eacute;seau et &eacute;duquer vos opers.
Beaucoup de personne ne font pas attention &agrave; la s&eacute;curit&eacute;, jusqu'&agrave; ce qu'ils se fassent attaquer, essayez d'&eacute;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&eacute; 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&ecirc;te de type HTTP.
Il a &eacute;t&eacute; &eacute;crit par Syzop pour contrer l'attaque XPS touchant Firefox, gr&acirc;ce &agrave; 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&ecirc;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&eacute; de UnrealIRCd 3.2.9 et est compil&eacute; dans commands.so.
Par cons&eacute;quent, il est charg&eacute; par d&eacute; dans la plupart des cas.
</p>
</div>
<p id="regex">
<font size="+2"><b>A &#8211; Expressions R&eacute;guli&egrave;res</b></font>
</p>
<div class="desc">
<p>
Les expressions r&eacute;guli&egrave;res sont utilis&eacute;es &agrave; beaucoup d'endroits dans Unreal, dont les badwords, spamfilter, et aliases.
Elles sont un outil tr&egrave;s complexe utilis&eacute; comme mod&egrave;le de comparaison.
Elles sont parfois appell&eacute;es "regexp" ou "regex".
Unreal utilise la librairie d'expressions r&eacute;guli&egrave;res TRE pour ses regex.
Cette librairie supporte quelques expressions tr&egrave;s complexes et avanc&eacute;es pouvant &ecirc;tre confuses.
Les informations suivantes vous aiderons &agrave; comprendre comment les regexps fonctionnent.
Si vous &ecirc;tes int&eacute;ress&eacute; par des informations plus techniques et d&eacute;taill&eacute;es au sujet de la syntaxe des regexp utilis&eacute;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&eacute;raux</b></font>
</p>
<div class="desc">
<p>
Les lit&eacute;raux sont les composents les plus basiques d'un regexp.
Fondamentalement, ce sont des caract&egrave;res qui sont trait&eacute;s comme du texte simple.
Par exemple, le mod&egrave;le "test" correspond aux quatres lettres, "t", "e", "s", et "t".
Dans Unreal, les lit&eacute;raux sont trait&eacute;s sans respect de la case, donc le regex pr&eacute;c&eacute;dent correspondra aussi bien &agrave; "test" qu'&agrave; "TEST".
Chaque caract&egrave;re n'&eacute;tant pas un "m&eacute;ta caract&egrave;re" (expliqu&eacute; dans les sections suivantes) est trait&eacute; comme un lit&eacute;ral.
Vous pouvez &eacute;galement rendre explicitement un carat&egrave;re lit&eacute;ral en utilisant un backslash (\).
Par exemple, le point (.) est un m&eacute;tacaract&egrave;re.
Si vous voulez inclure le lit&eacute;ral ., utilisez simplement \. et Unreal le traitera comme un point.
Il est &eacute;galement possible que vous vouliez rechercher un caract&egrave;re qui n'est pas facilement &eacute;crivable, comme la caract&egrave;re ASCII 3 (color&eacute;).
Plut&ocirc;t que de devoir vous d&eacute;battre avec un client IRC pour cr&eacute;er ce caract&egrave;re, vous pouvez utiliser une s&eacute;quence sp&eacute;ciale, le \x. Si vous tappez \x3, alors il sera interpr&eacute;t&eacute; comme &eacute;tant le caract&egrave;re ASCII 3.
Le nombre apr&egrave;s le \x est repr&eacute;sent&eacute; par un hexid&eacute;cimal et peut &ecirc;tre dans l'interval de \x0 &agrave; \xFF.
</p>
</div>
<p id="regexdot">
<font size="+2"><b>A.2 &#8211; L'op&eacute;rateur Point</b></font>
</p>
<div class="desc">
<p>
L'op&eacute;rateur point (.) est utilis&eacute; pour correspondra &agrave; "n'importe quel caract&egrave;re".
Il correspond &agrave; un caract&egrave;re simple qui n'a pas de valeur particuli&egrave;re.
Par exemple, la regex "a.c" correspondra &agrave; "abc", "adc", etc.
Cependant, il ne correspondra pas &agrave; "abd" car "a" et "c" sont des lit&eacute;raux devant correspondre exactement.
</p>
</div>
<p id="regexrep">
<font size="+2"><b>A.3 &#8211; Les op&eacute;rateurs de R&eacute;p&eacute;tition</b></font>
</p>
<div class="desc">
<p>
L'une des erreurs communes faites par les personnes utilisant les regex est de pr&eacute;sumer qu'ils fonctionnent juste comme des wildcards.
Ce sont, les caract&egrave;res * et ? qui fonctionnent juste comme une wildcard.
Alors que ces caract&egrave;res ont une signification similaire dans un regex, ils ne sont pas exactement identiques.
De plus, les expressions r&eacute;guli&egrave;res supportent &eacute;galement d'autres m&eacute;thodes plus avanc&eacute;es de r&eacute;p&eacute;tition.
</p>
<p>
L'op&eacute;rateur de r&eacute;p&eacute;tition le plus basique est le ?.
Cet op&eacute;rateur correspond &agrave; 0 ou 1 fois le caract&egrave;re pr&eacute;c&eacute;dent.
Le ? dans une regex diff&egrave;re d'une wildcard.
Dans une wildcard, l'expression "a?c" correspond &agrave; un "a" suivi par n'importe quel caract&egrave;re (ou aucun caract&egrave;re), suivi par un "c".
Dans une regex, cela a un signification diff&eacute;rente.
Il correspond &agrave; 0 ou 1 fois la lettre "a" suivi par la lettre "c".
Basiquement, le ? modifie le a en sp&eacute;cifiant combien de a doivent &ecirc;tre pr&eacute;sents.
Pour &eacute;muler le ? d'une wildcard, l'op&eacute;rateur point . est utilis&eacute;.
Le regex "a.?c" est &eacute;quivalent &agrave; la wildcard pr&eacute;alablement mentionn&eacute;e.
Il correspond &agrave; la lettre "a" suivi par 0 ou 1 fois n'importe quel caract&egrave;re (le ? modifie le .), suivi par un "c".
</p>
<p>
L'op&eacute;rateur de r&eacute;p&eacute;tition suivant est le *.
A nouveau, cet op&eacute;rateur est similaire &agrave; une wildcard.
Il correspond &agrave; 0 ou plusieurs fois le caract&egrave;re pr&eacute;c&eacute;dent.
Notez que ce "caract&egrave;re pr&eacute;c&eacute;dent" est caract&eacute;ristique &agrave; tous les op&eacute;rateurs de r&eacute;p&eacute;tition.
Le regex "a*c" correspond &agrave; 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&egrave;re) plut&ocirc;t que le "a").
</p>
<p>
L'op&eacute;rateur + est tr&egrave;s similaire au *.
Cependant, au lieu de correspondre &agrave; 0 ou plus, il correspond &agrave; 1 ou plus.
Basiquement, "a*c" correspondra &agrave; "c" (0 a suivi par un c), l&agrave; o&ugrave; "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&eacute;rateur de r&eacute;p&eacute;tition le plus avanc&eacute; est une "borne".
Une borne vous laisse d&eacute;finir des contraintes exactes sur le nombre de fois que le caract&egrave;re pr&eacute;c&eacute;dent doit &ecirc;tre pr&eacute;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&eacute;aliser tout cela.
La syntaxe basique est {M,N} o&ugrave; M est la borne inf&eacute;rieure, et N est la borne supp&eacute;rieure.
Par exemple, pour rechercher de 3 &agrave; 5 a, vous devrez mettre "a{3,5}".
Cependant, vous &ecirc;tes pas oblig&eacute;s de sp&eacute;cifier les 2 nombres.
Si vous mettez "a{8}" cela signifie qu'il doit y avoir exactement 8 a.
Ainsi, "a{8}" est &eacute;quivalent &agrave; "aaaaaaaa".
Pour sp&eacute;cifier l'exemple "au moins", vous cr&eacute;ez simplement un intervalle qui a uniquement une borne inf&eacute;rieure.
Donc pour au moins 8 a, vous devrez mettre "a{8,}".
</p>
<p>
Par d&eacute;faut, tous les op&eacute;rateurs de r&eacute;p&eacute;tition sont "gourmands".
La gourmandise est une notion quelque peu complexe.
Basiquement, cela signifie qu'un op&eacute;rateur correspondra &agrave; autant de caract&egrave;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 &agrave; "HE".
Cependant, ceci est incorrect.
Car le + est gourmand, il correspond &agrave; "HEL".
La raison est qu'il choisi la plus large portion du texte entr&eacute; pouvant correspondre au regex.
Dans cet exemple, il choisi "HEL" car la seule autre condition est que le caract&egrave;re apr&egrave;s le texte correspondant au .+ doit &ecirc;tre un "L".
Etant donn&eacute; 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&eacute;rateur non 'gourmand'.
Ceci peut &ecirc;tre effectu&eacute; en ajoutant un caract&egrave;re ? apr&egrave;s l'op&eacute;rateur de r&eacute;p&eacute;tition.
En modifiant ce que nous avions en ".+?L", le .+? correspondra maintenant &agrave; "HE" plut&ocirc;t qu'&agrave; "HEL" &eacute;tant donn&eacute; qu'il a &eacute;t&eacute; rendu 'non gourmand'.
Le ? peut &ecirc;tre ajout&eacute; &agrave; n'importe quel caract&egrave;re de r&eacute;p&eacute;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&egrave;re pratique de faire un op&eacute;rateur "ou".
Par exemple, si vous voulez dire "correspond &agrave; a ou &agrave; b".
Cette expression se pr&eacute;sente sous la forme d'une s&eacute;rie de caract&egrave;res compris entre des crochets ([]), d'o&ugrave; son nom.
Ces caract&egrave;res sont trait&eacute;s comme si il y avait un "ou" entre eux.
Par exemple, l'expression "[abc]" correspond &agrave; un "a", un "b" ou un "c".
Ainsi, le regexp "a[bd]c" correspond &agrave; "abc" et "adc" mais pas &agrave; "acc."
</p>
<p>
Une chose tr&egrave;s commune &agrave; faire est rechercher quelque chose comme, une lettre ou un chiffre.
Plut&ocirc;t que de faire, par exemple, "[0123456789]", l'op&eacute;rateur crochet supporte les intervalles.
Ils fonctionnent en sp&eacute;cifiant le d&eacute;but et la fin avec un - entre eux.
Donc, une fa&ccedil;on plus simple de rechercher un chiffre est de d'utiliser "[0-9]".
La m&ecirc;me chose peut &ecirc;tre utilis&eacute;e pour des lettres, ou en fait, n'importe quel intervalle de valeurs ASCII.
Si vous voulez rechercher une lettre, utilisez simplement "[a-z]" &eacute;tant donn&eacute; qu'Unreal n'est pas sensible &agrave; la case, il correspondra &agrave; toutes les lettres.
Vous pouvez &eacute;galement inclure plusieurs intervalles dans la m&ecirc;me expression.
Pour rechercher une lettre ou un nombre, "[0-9a-z]".
Une complication que cela g&eacute;n&egrave;re est le fait que le - est un caract&egrave;re sp&eacute;cial dans une expression avec crochets.
Pour pouvoir rechercher un - comme caract&egrave;re litt&eacute;ral, la mani&egrave;re la plus simple est de le placer comme le premier ou le dernier caract&egrave;re dans l'expression.
Par exemple, "[0-9-]" correspond &agrave; un chiffre ou &agrave; un -.
</p>
<p>
Pour rendre les choses encore plus simples, il existe plusieurs "classes de caract&egrave;res" pouvant &ecirc;tre utilis&eacute;es dans une expression avec crochets.
Ces classes de caract&egrave;res &eacute;limine le besoin de d&eacute;finir certains intervalles.
Les classes de caract&egrave;res sont &eacute;crites en mettant leur nom entre : .
Par exemple, "[0-9]" peut &eacute;galement &ecirc;tre &eacute;crit "[:digit:]".
La liste ci-dessous montre toutes les classes de caract&egrave;res disponibles et ce qu'elles font :
</p>
<ul>
<li><tt>alnum</tt> - caract&egrave;res alphanum&eacute;riques</li>
<li><tt>alpha</tt> - acaract&egrave;res alphab&eacute;tique</li>
<li><tt>blank</tt> - caract&egrave;res blanc /li>
<li><tt>cntrl</tt> - caract&egrave;res de contr&ocirc;le</li>
<li><tt>digit</tt> - chiffres d&eacute;cimaux (de 0 &agrave; 9)</li>
<li><tt>graph</tt> - tous les caract&egrave;res imprimables except&eacute; l'espace</li>
<li><tt>lower</tt> - lettres minuscules</li>
<li><tt>print</tt> - tous les caract&egrave;res imprimables, espace inclus</li>
<li><tt>punct</tt> - tous les caract&egrave;res imprimables n'etant ni un espace ni un alphanum&eacute;rique</li>
<li><tt>space</tt> - espaces</li>
<li><tt>upper</tt> - lettres majuscules</li>
<li><tt>xdigit</tt> - nombres hexad&eacute;cimaux</li>
</ul>
<p>
Une note important &agrave; propos des classes de caract&egrave;res est qu'elles DOIVENT &ecirc;tre le seul &eacute;l&eacute;ment dans l'expression.
Par exemple, [:digit:-] N'est PAS autoris&eacute;.
A la place, vous pouvez r&eacute;aliser le m&ecirc;me but en imbriquant les expressions, par exemple, pour faire la m&ecirc;me chose que "[0-9-]" en utilisant une classe de caract&egrave;res, vous pouvez mettre "[[:digit:]-]".
</p>
<p>
La derni&egrave;re caract&eacute;ristique des expressions avec crochets est la n&eacute;gation.
Parfois, c'est utile pour dire "n'importe quoi except&eacute; ces caract&egrave;res".
Par exemple, si vous voulez v&eacute;rifier si le caract&egrave;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&egrave;res n'&eacute;tant pas des lettres.
Les expressions avec crochets vous permette de r&eacute;aliser ceci avec une n&eacute;gation.
Vous niez l'expression en sp&eacute;cifiant un "^" comme premier caract&egrave;re.
Par exemple, "[^a-z]" correspondra &agrave; tout caract&egrave;re n'&eacute;tant pas une lettre.
Comme avec le -, si vous voulez inclure un ^ literal, ne le placez pas en premi&egrave;re position : "[a-z^]".
De plus, pour nier une classe de caract&egrave;re, vous devez, une fois encore, utiliser l'imbrication, "[^[:isdigit:]]" correspondra &agrave; n'importe quel caract&egrave;re n'&eacute;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'&eacute;tant pas repr&eacute;sentables par des cha&icirc;nes de caract&egrave;res, aussi bien qu'en utilisant des raccourcis pour certaines expressions avec crochets communes.
</p>
<p>
Le caract&egrave;re ^ est d&eacute;sign&eacute; sous le nom de "ancre gauche".
Ce caract&egrave;re correspond au d&eacute;but d'une cha&icirc;ne.
Si vous sp&eacute;cifiez simplement une regex tel que "test", il correspondra, par exemple &agrave; "ceci est un test" car cette cha&icirc;ne contient "test".
Mais, parfois, il est utile de s'assurer que la cha&icirc;ne commence r&eacute;ellement avec le mod&egrave;le.
Ceci peut &ecirc;tre r&eacute;alis&eacute; avec ^.
Par exemple "^test" signifique que le texte doit commencer par "test".
De plus, le caract&egrave;re $ est l'"ancre droite".
Ce caract&egrave;re correspond &agrave; la fin de la cha&icirc;ne.
Donc si vous mettiez "^test$", alors la cha&icirc;ne devrait &ecirc;tre exactement le mot "test".
</p>
<p>
Des tests similaires existent &eacute;galement pour les mots.
Toutes les autres assertions sont sp&eacute;cifi&eacute;es par l'usage d'un \ suivi par un caract&egrave;re sp&eacute;cifique.
Par exemple, pour tester le d&eacute;but et la fin d'un mot, vous pouvez utiliser respectivement \< et \>.
</p>
<p>
Les assertions restantes ont deux formes : une n&eacute;gative et une positive.
Elles sont list&eacute;s ici :
</p>
<ul>
<li><tt>\b</tt> - Limite d'un mot
<li><tt>\B</tt> - Int&eacute;rieur d'un mot
<li><tt>\d</tt> - Chiffre (&eacute;quivalent &agrave; <tt>[[:digit:]]</tt>)</li>
<li><tt>\D</tt> - Caract&egrave;re n'&eacute;tant pas un chiffre (&eacute;quivalent &agrave; <tt>[^[:digit:]]</tt>)</li>
<li><tt>\s</tt> - Espace (&eacute;quivalent &agrave; <tt>[[:space:]]</tt>)</li>
<li><tt>\S</tt> - Caract&egrave;re n'&eacute;tant pas un espace (&eacute;quivalent &agrave; <tt>[^[:space:]]</tt>)</li>
<li><tt>\w</tt> - Mots (&eacute;quivalent &agrave; <tt>[[:alnum:]_]</tt>)</li>
<li><tt>\W</tt> - Caract&egrave;re n'&eacute;tant pas un mots (&eacute;quivalent &agrave; <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&eacute;thode pour dire "ou".
L'op&eacute;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 &ecirc;tre remplac&egrave; par une expression avec crochets, mais l'alternation peut &eacute;galement &ecirc;tre utilis&eacute;e avec des sous-expressions (abord&eacute;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&eacute;e comme une entit&eacute; &agrave; part enti&egrave;re.
Il y a deux mani&egrave;re de cr&eacute;er une sous-expression.
Les deux m&eacute;thodes diff&egrave;rent par rapport aux r&eacute;f&eacute;rences arri&egrave;res, qui seront expliqu&eacute;es plus tard.
Pour d&eacute;clarer une sous-expression utilisant des r&eacute;f&eacute;rences arri&egrave;res, mettez la simplement entre parenth&egrave;ses ().
Pour cr&eacute;er une sous-expression n'utilisant pas de r&eacute;f&eacute;rences arri&egrave;res, replacez la parenth&egrave;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&eacute;rateurs &agrave; l'expression.
Tous les op&eacute;rateurs de r&eacute;p&eacute;tition, par exemple, ceux qui mentionnent "X ou plus de fois le caract&egrave;re pr&eacute;c&eacute;dent", peut &eacute;galement &ecirc;tre utilis&eacute; pour "X ou plus de fois la sous-expression pr&eacute;c&eacute;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&eacute;cidez que vous voulez rechercher cette s&eacute;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&eacute;f&eacute;rences arri&egrave;res</b></font>
</p>
<div class="desc">
<p>
Les r&eacute;f&eacute;rences arri&egrave;res (back references) vous permettent de r&eacute;f&eacute;rencer une cha&icirc;ne qui correspond &agrave; une des sous-expressions ou des regexp.
Vous utilisez une r&eacute;f&eacute;rence en sp&eacute;cifiant un backslash (\) suivi par un nombre, 0-9, par exemple \1.
\0 est une back reference sp&eacute;ciale qui se r&eacute;ferre au regexp entier, plut&ocirc;t qu'&agrave; une sous-expression.
Les back references sont utilises lorsque vous voulez rechercher quelque chose qui contient la m&ecirc;me cha&icirc;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 &agrave; "[0-9][a-z]{5}", et les deux sont les m&ecirc;mes.
Utiliser "[0-9][a-z]{5}![0-9][a-z]{5}@.+" ne fonctionnera pas car il permettra au nickname et &agrave; l'username d'&ecirc;tre diff&eacute;rents.
Par exemple, le nickname pourra &ecirc;tre 1abcde et l'username 2fghij.
Les r&eacute;f&eacute;rences arri&egrave;res vous permettent de contourner cette limitation.
Utiliser, "([0-9][a-z]{5})!\1@.+" permettra de r&eacute;aliser exactement ce qui &eacute;tait attendu.
Ceci cherchera le nickname correspondra aux sous-expressions donn&eacute;es, et utilisera ensuite une r&eacute;f&eacute;rence arri&egrave;re pour dire que l'username doit &ecirc;tre exactement le m&ecirc;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&eacute;er une sous-expression sans gacher une r&eacute;f&eacute;rence.
De plus, vu que les informations des r&eacute;f&eacute;rences arri&egrave;res n'ont pas besoin d'&ecirc;tre sauv&eacute;es, elles sont plus rapides.
A cause de ceci, des sous-expressions non-r&eacute;f&eacute;rences arri&egrave;res peuvent &ecirc;tre utilis&eacute;es m&ecirc;me si des r&eacute;f&eacute;rences arri&egrave;res ne sont pas obligatoire.
</p>
</div>
<p id="regexcase">
<font size="+2"><b>A.9 &#8211; Sensibilit&eacute; &agrave; la case</b></font>
</p>
<div class="desc">
<p>
Comme d&eacute;j&agrave; mentionn&eacute;, Unreal consid&egrave;re toutes les regexps comme insensibles &agrave; la case par d&eacute;faut.
La raison principale &agrave; cela est qu'il semble qu'il y a beaucoup plus de cas o&ugrave; vous voulez &ecirc;tre insensible &agrave; 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&ugrave; vous pouvez vouloir &ecirc;tre sensible &agrave; la case, par exemple, chercher certains trojans.
C'est pourquoi, une m&eacute;thode existe pour permettre de dynamiquement activer/d&eacute;sactiver l'insensibilit&eacute; &agrave; la case.
</p>
<p>
Pour la d&eacute;sactiver, utilisez simplement "(?-i)" et pour l'activer, "(?i)". Par exemple, "(?-i)[a-z](?i)[a-z]" correspondra &agrave; une lettre minuscule (insensibilit&eacute; &agrave; la case d&eacute;sactiv&eacute;e) suivie par une lettre minuscule ou majuscule (insensibilit&eacute; &agrave; la case activ&eacute;e).
De plus, plut&ocirc;t que d'avoir &agrave; toujours se rappeller de changer de mode lorsque vous avez fini, vous pouvez &eacute;galement sp&eacute;cifier que le changement de mode doit uniquement s'appliquer &agrave; une sous-expression, par exemple, "(?-i:[a-z])[a-z]" est &eacute;quivalent au pr&eacute;c&eacute;dent regexp car le -i s'applique uniquement &agrave; la sous-expression donn&eacute;e.
</p>
</div>
</body>
</html>