/*
 * example.conf par Daniel Hawton AKA Osiris (osiris@unrealircd.org).
 * $Id: example.fr.conf,v 1.1.4.5 2006/12/22 21:10:29 syzop Exp $
 * Traduction française par babass (babass@unrealircd.org). 
 * 
 * Fonctionne pour Unreal3.2 et supérieur
 * 
 * Okay les mecs.  Voici la nouvelle version de l'example.conf. Cela ressemble plus à du C++.
 * Peu importe, il est temps de se lancer.  Il est difficile de l'attaquer pour la première fois, mais
 * avec un peu d'expérience et en lisant vous comprendrez.
 *
 * Copiez juste ce fichier dans votre répertoire unrealircd principal et appellez le 'unrealircd.conf'.
 * 
 * NOTE:  Toutes les lignes, excepté la ligne d'ouverture { , les lignes finissant par un ;, 
 * et celle de fermeture } incluses.
 * L'IRCd ignorera les lignes commentées.
 *
 * LISEZ S'IL VOUS PLAIT doc/unreal32docs.fr.html! La version en ligne est aussi disponible à :
 * www.vulnscan.org/UnrealIRCd/unreal32docs.fr.html
 * Elle contient beaucoup d'informations à propos du fichier de configuration : fournis des informations 
 * à propos de chaque blocs, variable, etc..
 * Si vous essayez de modifier ce fichier sans avoir bien lu la documentation,
 * vous êtes presque sûr de vous tromper.
 */

/* Type de commentaires */
#Commentaire type 1 (type Shell)
// Commentaire type 2 (style C++)
/* Commentaire type 3 (style C) */
#Ces lignes sont ignorées par l'ircd.

/*
 * UnrealIRCd supportes des modules, en charger certains est requis.
 * Vous aurez besoin au moins du module commands et du module cloaking.
 */

/* POUR *NIX, décommentez les 2 lignes suivantes : */
//loadmodule "src/modules/commands.so";
//loadmodule "src/modules/cloak.so";

/* POUR Windows, décommentez les 2 lignes suivantes : */
//loadmodule "modules/commands.dll";
//loadmodule "modules/cloak.dll";

/*
 * Vous pouvez également inclure d'autres fichiers de configuration.
 * help.conf contient tous le texte de /helpop. Les fichiers badwords.*.conf
 * contiennent tous les badwords pour le mode +G...
 * spamfilter.conf contient quelques bonnes règles pour les trojans courrants.
 * Vous voudrez probablement les inclure:
 */
include "help.conf";
include "badwords.channel.conf";
include "badwords.message.conf";
include "badwords.quit.conf";
include "spamfilter.conf";

/*
 * ACTUEL : me {} 
 * ANCIEN : M:Line 
 * me {} definit le nom, la description et le numeric du serveur unreal
 * pour ce serveur. La syntaxe est la suivante : 
 * me { 
 *  name "nom.du.serveur"; 
 *  info "Description du Serveur";
 *  numeric (numeric* serveur);
 * }; 
 * En cas de link, ce numeric ne peut être utilisé pour aucun autre serveur du réseau.
 */
me
{
	name "irc.foonet.com";
	info "FooNet Server";
	numeric 1;
};

/*
 * ACTUEL : admin {} 
 * ANCIEN : A:Line 
 * Admin donne des informations sur les server admins.
 * Vous pouvez mettre autant de lignes que vous voulez après admin {. 
 * La syntaxe est la suivante :
 * admin {
 *   "première ligne"; 
 *   "deuxième ligne"; 
 *   [etc]
 * };
 */
admin {
	"Bob Smith";
	"bob";
	"widely@used.name";
};

/*
 * ACTUEL : class {} 
 * ANCIEN : Y:line (l'ancien était déroutant) 
 * Défini les réglages pour les classes. Une classe est un groupe de réglages pour 
 * des connexions. Par exemple, les connexions serveurs, au lieu de passer par une classe
 * client, vous utilisez directement une classe serveur. La syntaxe est la suivante :
 * class (nom de la classe)
 * {
 *     pingfreq (fréquence des pings utilisateurs/serveurs en secondes);
 *     maxclients (combien de connexions pour cette classe);
 *     sendq (file d'attente maximum pour l'envoie depuis une connexion);
 *     recvq (file d'attente maximum pour la réception depuis une connexion [contrôle du flood]);
 *  };
 */

class           clients
{
	pingfreq 90;
	maxclients 500;
	sendq 100000;
	recvq 8000;
};

class           servers
{
	pingfreq 90;
	maxclients 10;		/* Nombre maximum de serveurs pouvant être reliés en même temps */
	sendq 1000000;
	connfreq 100; /* Combien de secondes entre chaque tentatives de connexions */
};

/*
 * ACTUEL : allow {} 
 * ANCIEN : I:Line
 * Défini les autorisations de connexions...
 * Principalement pour les clients, cela leur permet de se connecter, vous pouvez donc avoir un certain
 * contrôle et/ou mettre un mot de passe. 
 * La syntaxe est la suivante : 
 * allow {
 *    ip (ip mask à autoriser);
 *    hostname (host mask);
 *    class (classe à laquelle les renvoyer [voir class {}]);
 *    password "(mot de passe)"; (optionnel)
 *    maxperip (nombre de connexions par ip); (optionnel) 
 * };
 */

allow {
	ip             *@*;
	hostname       *@*;
	class           clients;
	maxperip 5;
};

/* connexion autorisée avec mot de passe */
allow {
	ip             *@255.255.255.255;
	hostname       *@*.passworded.ugly.people;
	class           clients;
	password "f00Ness";
	maxperip 1;
};

/*
 * ACTUEL : allow channel {} 
 * ANCIEN : chrestrict 
 * Autorise un utilisateur à joindre un salon...
 * comme une exception au deny channel. 
 * Syntaxe :
 * allow channel {
 *   channel "nom du salon";
 * };
 */
allow           channel {
	channel "#WarezSucks";
};

/*
 * ACTUEL : oper {} 
 * ANCIEN : O:Line 
 * Défini un IRC Operateur
 * Les IRC operateurs sont là pour préserver la qualité du serveur mais aussi d'en assurer
 * la maintenance et sa connexion au réseau. 
 * La syntaxe est la suivante : 
 * oper (login) { 
 *     class (classe à laquelle les associer, si différent de moi, déplacez les vers une
 *                nouvelle classe); 
 *     from { 
 *        userhost (ident@host);
 *        userhost (ident@host);
 *     }; 
 *     flags
 *     { 
 *       (flags ici*);
 *     };
 *     OU
 *     flags "ancien type de flags, comme OAaRD";
 * };
 */


/* Pour avoir la liste des flags oper, voir doc/unreal32docs.fr.html#operblock
 * [lecture HAUTEMENT recommendée]
 */

oper bobsmith {
	class           clients;
	from {
		userhost bob@smithco.com;
	};
	password "f00";
	flags
	{
		netadmin;
		can_zline;
		can_gzline;
		can_gkline;
		global;
	};
};

/*
 * ACTUEL : listen {}
 * ANCIEN : P:Line
 * Défini un port à rattacher à l'ircd, pour autoriser
 * des utilisateurs/serveurs à se connecter au serveur. 
 * La syntaxe est la suivante :
 * listen (ip):(port) 
 * { 
 *   options {
 *     (options ici);
 *   };
 * };
 * ou pour une écoute
 * indifférente : listen (ip):(port);
 * 
 * NOTICE : pour les ips ipv6 (3ffe:b80:2:51d::2 etc), utilisez listen [ip]:port;
 * 
 * Cela fonctionne également.
 */

/* Options de listen:
      ANCIEN	| 	ACTUEL
	S		serversonly
	C		clientsonly
	J		java
	s		ssl
	*		standard
*/

/* NOTE SUR LES PORTS SSL: les ports SSL sont plutôt non standardisés,
 * A côté des nombreux ports high-SSL, certaines personnes disent que vous devez 
 * l'utiliser sur le port 994 car c'est le port SSL officiel.. mais cela
 * requière d'être root! D'un autre coté, le port 194 est le port irc officiel et
 * avez vous déjà vu un ircd fonctionner sur celui-ci ?
 * Donc, notre suggestion est d'utiliser le port 6697 pour le SSL, ceci est utilisé par
 * assez bien de réseaux et est reconnu par exemple par StunTour.
 * Vous êtes libre d'ouvrir autant de ports SSL que vous le désirez mais
 * en utilisant (au moins) 6697 vous aidez le monde à standardiser un peu a bit ;).
 */
listen         *:6697
{
	options
	{
		ssl;
		clientsonly;
	};
};

listen         *:8067;
listen         *:6667;

/* NOTE: Si vous êtes sur un shell shell avec de multiples IP's vous êtes 
 *       susceptibles d'avoir l'erreur 'Address already in use' (adresse déjà utilisée) 
 *       dans vos logs et l'ircd refusera de démarer.
 *       Cela signifie que vous devrez utiliser une IP spécifique au lieu de '*',
 *       Donc par exemple :
 *       listen 1.2.3.4:6667;
 *       Evidemment, remplacez l'IP par celle qui vous a été assignée.
 */

/*
 * ACTUEL : link {}
 * ANCIEN : C/N:Lines
 * Défini un accord pour la connexion d'un serveur.
 * NOTE : CHACUN DES SERVEURS NECESSITE UN PARAMETRE LINK {} POUR SE CONNECTER CORRECTEMENT !
 * La syntaxe est la suivante :
 * link (nom du serveur)
 * {
 *	username	(username, * fonctionne aussi);
 * 	hostname	(ip/hostmask);
 *	bind-ip		(Quelle IP à laquelle se relier lors de la connexion, ou *);
 *	port		(port auquel se connecter, si il y en a un);
 *	hub (Si c'est un a hub, * fonctionne, ou les servermasks qu'il doit porter);
 *	[ou leaf *;]
 *	password-connect "(mot de passe à envoyer)";
 *	password-receive "(mot de passe que l'on doit recevoir)";
 *	class		(classe à affecter aux serveurs);
 *	options {
 *		(options ici*);
 *	};
 *      /* Si vous utilisez le SSL, vous pouvez choisir quel cryptage (cipher) utiliser dans le mode SSL
 *       * Retrouvez une liste "crytages openssl", séparez les cryptages par des :
 *      */
 *      ciphers "DES-CBC3-MD5";
 * 
 * };
*/

/*
	options:
	ANCIEN	|	ACTUEL
	S		ssl
	Z		zip
	N/A		autoconnect
	N/A		quarantine
	N/A		nodnscache
*/


link            hub.mynet.com
{
	username	*;
	hostname 	1.2.3.4;
	bind-ip 	*;
	port 		7029;
	hub             *;
	password-connect "LiNk";
	password-receive "LiNk";
	class           servers;
		options {
			/* Note : Vous ne devriez pas utiliser autoconnect lorsque vous linkez des services */
			autoconnect;
			ssl;
			zip;
		};
};
/*
 *
 * ACTUEL : ulines {}
 * ANCIEN : U:Line
 * Les U-lines donnent aux serveurs plus de pouvoir/commandes, ceci doit UNIQUEMENT être appliqué
 * aux serveurs de services/stats et JAMAIS pour des servuers UnrealIRCd normaux !
 * La syntaxe est la suivante :
 * ulines {
 *	(serveur auquel appliquer la uline);
 *	(serveur auquel appliquer la uline);
 *  [etc]
 * };
*/
ulines {
	services.roxnet.org;
	stats.roxnet.org;
};

/*
 * ACTUEL : drpass {}
 * ANCIEN : X:Line
 * Défini les mots de passe pour les commandes /die et /restart.
 * La syntaxe est la suivante :
 * drpass { 
 *  restart		"(mot de passe pour relancer)";
 *  die		        "(mot de passe pour arrêter)";
 * };
 */
drpass {
	restart "I-love-to-restart";
	die "die-you-stupid";
};

/*
 * ACTUEL : log {} 
 * ANCIEN : N/A 
 * Dit à l'ircd où et quoi loguer. Vous pouvez en avoir
 * autant que vous le souhaitez.
 * 
 * FLAGS : errors, kills, tkl, connects, server-connects, kline, oper
 * 
 * Syntaxe : 
 * log "fichier de log" 
 * {
 *    flags
 *    {
 *        flag;
 *        flag; 
 *        etc.. 
 *    }; 
 * };
 */

log "ircd.log" {
	/* Efface le fichier de log et commence un nouveau lorsqu'il dépasse 2MB, 
	   retirez ceci pour toujour utiliser le même fichier de log */
	maxsize 2097152;
	flags {
		oper;
		kline;
		connects;
		server-connects;
		kills;
		errors;
		sadmin-commands;
		chg-commands;
		oper-override;
		spamfilter;
	};
};

/*
 * ACTUEL : alias {}
 * ANCIEN : N/A
 * Ceci vous permet de définir des alias pour les commandes telles que /nickserv, /chanserv etc
 * FLAGS: services, stats, normal
 *
 * Syntaxe :
 * alias "nom" {
 *	target "pointe vers";
 *	type typedalias;
 * };
 *
 * [NOTE : Vous pouvez également inclure un fichier d'alias prédéfinis ici, voir 
 * doc/unreal32docs.fr.html section 2.9]
 */

// Ceci fait pointer la commande /nickserv vers l'utilisateur NickServ qui est connecté au serveur set::services-server
/*alias NickServ {
	target "NickServ";
	type services;
};*/

// Si vous voulez que la commande pointe vers le même nom que la commande, vous pouvez ignorez l'entré du nom
//alias ChanServ { type services; };

// Faire pointer la commande /statserv vers l'utilisateur StatServ sur le serveur set::stats-name
//alias StatServ { type stats; };

// Faire pointer la commande /superbot vers l'utilisateur SuperBot
//alias SuperBot { type normal; };


/* Alias Standards */
alias NickServ { type services; };
alias ChanServ { type services; };
alias OperServ { type services; };
alias HelpServ { type services; };
alias StatServ { type stats; };

/*
 * ACTUEL : alias {}
 * ANCIEN : N/A
 * Ceci vous permet de définir des alias pour les commandes telles que /identify, /services, etc
 *
 * Syntaxe :
 * alias "nom" {
 *	format "format string" {
 *		target "pointer vers";
 *              type typedalias;
 *		parameters "paramètres à envoyer";
 *	};
 *	type command;
 * };
 */
/* Ceci est expliqué séparément car même si elle a le même nom que la directive précédente, elle est très
 * différente dans sa syntaxe, bien que elle a une fonction similaire et dépend des alias standards pour 
 * fonctionner.
 */
/*
alias "identify" {
	format "^#" {
		target "chanserv";
		type services;
		parameters "IDENTIFY %1-";
	};
	format "^[^#]" {
		target "nickserv";
		type services;
		parameters "IDENTIFY %1-";
	};
	type command;
};
*/
/* La direcitive alias::format est une expression régulière. Le premier format correspond à la commande  
 * /identify command lorsque le premier caractère est un #. Cela renvois donc à l'alias chanserv avec 
 * les paramètres IDENTIFY %1-. Le second format correspond à la commanden /identify lorsque le premier
 * caractère n'est pas un #. Cela envoies alors la commande à l'alias nickserv avec les paramètres
 * IDENTIFY %1-.
 */

/* L'alias::format::parameters est similaire aux languages de programmation. %N (où N est un nombre)
 * représente un paramètre envoyé à la commande (dans ce cas /identify). Si vous spécifiez %N- cela
 * signifie que tous les paramètres depuis N jusqu'au dernier paramètre dans la chaîne de caractères.
 * Vous pouvez également spécifier %n qui est remplacé par le pseudo de l'utilisateur.
*/

/* Alias Standards */
alias "services" {
	format "^#" {
		target "chanserv";
		type services;
		parameters "%1-";
	};
	format "^[^#]" {
		target "nickserv";
		type services;
		parameters "%1-";
	};
	type command;
};

alias "identify" {
	format "^#" {
		target "chanserv";
		type services;
		parameters "IDENTIFY %1-";
	};
	format "^[^#]" {
		target "nickserv";
		type services;
		parameters "IDENTIFY %1-";
	};
	type command;
};

/* Ceci est un exemple de véritable alias de commande*/
/* Ceci renvoye /GLINEBOT à /GLINE <parameter> 2d etc... */
alias "glinebot" {
         format ".+" {
                 command "gline";
                 type real;
                 parameters "%1 2d Les bots ne sont pas permis sur ce serveur, lisez s'il-vous-plait la faq sur http://www.example.com/faq/123";
         };
         type command;
 };
 

/*
 * ACTUEL : tld {}
 * ANCIEN : T:Line
 * Ceci applique une motd et des fichiers de règles différents
 * en fonction de l'hostmask des clients.
 * La syntaxe est la suivante : 
 * tld {
 *    mask (ident@host);
 *    motd "(motd file)";
 *    rules "(rules file)";
 * };
 */

tld {
	mask *@*.fr;
	motd "ircd.motd.fr";
	rules "ircd.rules.fr";
};

/* note : vous pouvez juste effacer le bloc d'exemple ci-dessus,
 * en quel cas les fichiers motd/règles par défaut (ircd.motd, ircd.rules)
 * seront utilisés pour tout le monde.
 */

/*
 * ACTUEL : ban nick {}
 * ANCIEN : Q:Line
 * Banni un pseudo, il ne peut donc être utilisé.
 * La syntaxe est la suivante :
 * ban nick {
 *	mask "(pseudo à bannir)";
 *	reason "(raison)";
 * };
*/
ban nick {
	mask "*C*h*a*n*S*e*r*v*";
	reason "Reservé aux Services";
};
/*
 * ACTUEL : ban ip {}
 * ANCIEN : Z:Line
 * Empêche une ip de se connecter au réseau.
 * Syntaxe :
 * ban ip { mask (ip/hostmask); reason "(raison)"; };
*/
ban ip {
	mask 195.86.232.81;
	reason "Serveur délinké";
};
/*
 * ACTUEL : ban server {}
 * ANCIEN : Server Q:Line
 * Empêche un serveur de se connecter au réseau.
 * Si le serveur est linké à un serveur distant, le serveur local
 * sera déconnecté du réseau.
 * La syntaxe est la suivante :
 * ban server {
 *	mask "(nom du serveur)";
 *	reason "(raison à donner)";
 * };
*/

ban server {
	mask eris.berkeley.edu;
	reason "Va-t-en d'ici.";
};
/*
 * ACTUEL : ban user {}
 * ANCIEN : K:Line
 * Fait qu'un utilisateur avec un certain masque ne peut se connecter
 * à votre serveur.
 * Syntaxe :
 * ban user { mask (hostmask/ip); reason "(raison)"; };
*/

ban user {
	mask *tirc@*.saturn.bbn.com;
        reason "Idiot";
};

/*
 * ACTUEL : ban realname {}
 * ANCIEN : n:Line
 * Ceci empêche un certain realname d'être utilisé.
 * Syntaxe :
 * ban realname {
 *	mask "(realname)";
 * 	reason "(raison)";
 * };
*/

ban realname {
	mask "Swat Team";
	reason "mIRKFORCE";
};

ban realname {
	mask "sub7server";
	reason "sub7";
};

/*
 * NOTE POUR TOUS LES BANS, ils peuvent être répetés pour ajouter des entrées !
 * 
 * ACTUEL : except ban {} 
 * ANCIEN : E:Line
 * Fait que vous ne pouvez être banni. 
 * Syntaxe :
 * except ban { mask (ident@host); };
 * Répétez l'except ban {} autant de fois
 * que vous voulez pour différents hosts.
 */

except ban {
	/* ne banni pas stskeeps */
	mask           *stskeeps@212.*;
};

/*
 * ACTUEL : deny dcc {} 
 * ANCIEN : dccdeny.conf
 * Utilisez ceci pour bloquer l'envoie de dcc... stope
 * mieux les virus. 
 * Syntaxe : 
 * deny dcc 
 * { 
 *   filename "fichier à bloquer (ex : *exe)";
 *   reason "raison";
 * };
 */
deny dcc {
	filename "*sub7*";
	reason "Possible Sub7 Virus";
};

/*
 * ACTUEL : deny channel {}
 * ANCIEN : N/A (NEW)
 * Ceci empêche des salons d'être joins.
 * Syntax:
 * deny channel {
 * 	channel "(salon)";
 * 	reason "raison";
 * };
*/
deny channel {
	channel "*warez*";
	reason "Warez is illegal";
};

/*
 * ACTUEL : vhost {}
 * ANCIEN : Vhost.conf file
 * Applique une ip factice aux non-opers, ou aux
 * opers trop flemmards pour utiliser /sethost :P
 * Syntaxe :  
 *   vhost { 
 *       vhost (vhost.com); 
 *       from {
 *            userhost (ident@host à autoriser à utiliser);
 *       };
 *       login (login);
 *       password (mot de passe);
 *   };
 *        ensuite pour utiliser ce vhost, tapez /vhost (login) (mot de passe) sur l'IRC
 */
vhost {
	vhost           i.hate.microsefrs.com;
	from {
		userhost       *@*.image.dk;
	};
	login           stskeeps;
	password        moocowsrulemyworld;
};

/* Vous pouvez utiliser d'autres fichiers de configuration */
/* include "klines.conf"; */

/* Configuration du réseau */
set {
	network-name 		"ROXnet";
	default-server 		"irc.roxnet.org";
	services-server 	"services.roxnet.org";
	stats-server 		"stats.roxnet.org";
	help-channel 		"#ROXnet";
	hiddenhost-prefix	"rox";
	/* prefix-quit 		"no"; */
	/* Les Cloak keys doivent être les mêmes sur tous les serveurs du réseau.
	 * Ils sont utilisés pour générer des hosts masqués et doivent être gardés secrets.
	 * Les clés doivent être 3 chaînes de 5-100 caractères melangés.
	 * (10-20 caractères est parfait) et elles doivent être constituées de minuscules (a-z),
	 * majuscules (A-Z) et chiffres (0-9) [voir le premier exemple de clé].
	 */
	cloak-keys {
		"aoAr1HnR6gl3sJ7hVz4Zb7x4YwpW";
		"et une autre";
		"et un autre";
	};
	/* host à l'identification oper */
	hosts {
		local		"locop.roxnet.org";
		global		"ircop.roxnet.org";
		coadmin		"coadmin.roxnet.org";
		admin		"admin.roxnet.org";
		servicesadmin 	"csops.roxnet.org";
		netadmin 	"netadmin.roxnet.org";
		host-on-oper-up "no";
	};
};

/* Configuration spécifique d'un serveur */

set {
	kline-address "mettre.cet.email";
	modes-on-connect "+ixw";
	modes-on-oper	 "+xwgs";
	oper-auto-join "#opers";
	options {
		hide-ulines;
		/* Vous pouvez enclencher la vérification des idents si vous voulez */
		/* identd-check; */
		show-connect-info;
	};

	maxchannelsperuser 10;
	/* Durée maximum pendant laquelle un utilisateur doit rester connecté avant de pouvoir utiliser
	 * un message de QUIT.
	 * Ceci devrait aider à stoper le spam */
	anti-spam-quit-message-time 10s;
	/* Applique le message de static-quit à tous les quits - cela signifie qu'aucun
           message de quit personalisé ne sera autorisé sur le serveur local */
	/* static-quit "Client quit";	*/

	/* Vous pouvez également bloquer toutes les raisons de part en décommentant ceci et en disant
	 * 'yes', ou spécifiez un autre texte (ex: "Bye bye!") pour qu'il soit toujours utilisé.. */
	/* static-part yes; */

	/* Vous permet de restreindre certaines stats aux opers, utilisez * pour toutes les stats,
	 * enlevez le pour autoriser les utilisateurs à voir toutes les stats. Tapez '/stats' pour
	 * une liste complète.
	 * Certains admins pourront vouloir bloquer 'kGs' pour que les utilisateurs normaux ne puissent
	 * lister les klines, glines et shuns.
	 */
	oper-only-stats "okfGsMRUEelLCXzdD";

	/* Throttling: cet exemple applique une limite de 3 tentatives de connection en 60s (par host). */
	throttle {
		connections 3;
		period 60s;
	};

	/* Protection Anti flood */
	anti-flood {
		nick-flood 3:60;	/* 3 changements de pseudo en 60 secondes (la valeur par défaut) */
	};

	/* Filtre anti-spam */
	spamfilter {
		ban-time 1d; /* durée par défaut d'un ban *line appliqué par le spamfilter */
		ban-reason "Spam/Advertising"; /* raison par défaut */
		virus-help-channel "#help"; /* salon à utiliser pour l'action 'viruschan' */
		/* excepté "#help"; salon à exempter de filtrage */
	};
};

/*
 * Problèmes ou besoin de plus d'aide ?
 * 1) www.vulnscan.org/UnrealIRCd/unreal32docs.fr.html
 * 2) www.vulnscan.org/UnrealIRCd/faq/ <- contient 80% de vos questions !
 * 3) Si vous avez encore des problèmes vous pouvez aller sur irc.ircsystems.net #unreal-support,
 *    notez que vous devez avoir LU LA DOCUMENTATION ET LA FAQ d'abord !
 */
