1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10 <title>mod_ext_filter - Serveur Apache HTTP Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
19 <div id="page-header">
20 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
21 <p class="apache">Serveur Apache HTTP Version 2.5</p>
22 <img alt="" src="../images/feather.png" /></div>
23 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
25 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Serveur HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Module Apache mod_ext_filter</h1>
29 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English"> en </a> |
30 <a href="../fr/mod/mod_ext_filter.html" title="Français"> fr </a> |
31 <a href="../ja/mod/mod_ext_filter.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
32 <a href="../ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
34 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Fait traiter le corps de la réponse par un programme
35 externe avant de l'envoyer au client</td></tr>
36 <tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
37 <tr><th><a href="module-dict.html#ModuleIdentifier">Identificateur de Module:</a></th><td>ext_filter_module</td></tr>
38 <tr><th><a href="module-dict.html#SourceFile">Fichier Source:</a></th><td>mod_ext_filter.c</td></tr></table>
41 <p><code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> représente un modèle de
42 programmation simple et bien connu pour les <a href="../filter.html">filtres</a>. Avec ce module, tout programme
43 qui lit l'entrée standard stdin et écrit sur la sortie standard
44 stdout (autrement dit une commande filtre de style Unix) peut
45 servir de filtre pour Apache. Ce mécanisme de filtrage est beaucoup
46 plus lent qu'un filtre spécialement écrit pour
47 l'API d'Apache et faisant partie intégrante du processus du serveur
48 Apache, mais il présente les avantages suivants :</p>
51 <li>le modèle de programmation est beaucoup plus simple</li>
53 <li>tout langage de script ou de programmation peut être utilisé,
54 pourvu qu'il permette au programme de lire l'entrée standard et
55 d'écrire sur la sortie standard.</li>
57 <li>on peut utiliser des programmes existants comme filtres Apache
58 sans modification.</li>
61 <p>Même dans le cas où le niveau de performance est insuffisant pour
62 une utilisation en production, on peut utiliser
63 <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> comme prototype d'environnement pour
67 <div id="quickview"><h3>Sujets</h3>
69 <li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
70 </ul><h3 class="directives">Directives</h3>
72 <li><img alt="" src="../images/down.gif" /> <a href="#extfilterdefine">ExtFilterDefine</a></li>
73 <li><img alt="" src="../images/down.gif" /> <a href="#extfilteroptions">ExtFilterOptions</a></li>
75 <h3>Traitement des bugs</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">Journal des modifications de httpd</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_ext_filter">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_ext_filter">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
77 <li><a href="../filter.html">Filtres</a></li>
78 <li><a href="#comments_section">Commentaires</a></li></ul></div>
79 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
81 <h2><a name="examples" id="examples">Exemples</a></h2>
83 <h3>Générer du HTML à partir d'un autre type de
86 <pre class="prettyprint lang-config"># la directive de mod_ext_filter définissant un filtre
87 # permettant de mettre des fichiers text/c au format HTML en
88 # utilisant le programme externe /usr/bin/enscript, le type du
89 # fichier résultant étant défini à text/html
90 ExtFilterDefine c-to-html mode=output \
91 intype=text/c outtype=text/html \
92 cmd="/usr/bin/enscript --color -W html -Ec -o - -"
94 <Directory "/export/home/trawick/apacheinst/htdocs/c">
95 # directive de base permettant de traiter la sortie avec le
97 SetOutputFilter c-to-html
99 # directive de mod_mime définissant le type des fichiers dont
100 # le nom possède l'extension .c à text/c
102 </Directory></pre>
106 <h3>Implémentation d'un filtre de codage de
108 <p>Note : cet exemple avec gzip n'est fourni qu'à titre
109 d'illustration. Veuillez vous reporter à la documentation de
110 <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> pour un exemple d'implémentation plus
113 <pre class="prettyprint lang-config"># la directive de mod_ext_filter qui définit le filtre externe
114 ExtFilterDefine gzip mode=output cmd=/bin/gzip
116 <Location "/gzipped">
118 # directive de base permettant de traiter la sortie avec le
122 # la directive de mod_headers permettant d'ajouter le champ
123 # d'en-tête "Content-Encoding: gzip"
124 Header set Content-Encoding gzip
125 </Location></pre>
130 <h3>Ralentissement du serveur</h3>
131 <pre class="prettyprint lang-config"># directive de mod_ext_filter définissant un filtre qui fait
132 # passer tous les flux en sortie par la commande cat ; cat ne
133 # modifie rien ; elle ne fait que compliquer le cheminement des
134 # flux et consommer des ressources supplémentaires
135 ExtFilterDefine slowdown mode=output cmd=/bin/cat \
136 ExtFilterDefine slowdown mode=output cmd=/bin/cat \
137 preservescontentlength
140 # directive de base permettant de traiter plusieurs fois la
141 # sortie avec le filtre slowdown
143 SetOutputFilter slowdown;slowdown;slowdown
144 </Location></pre>
148 <h3>Utilisation de sed pour remplacer du texte dans la
151 <pre class="prettyprint lang-config"># directive de mod_ext_filter définissant un filtre qui
152 # remplace du texte dans la réponse
154 ExtFilterDefine fixtext mode=output intype=text/html \
155 cmd="/bin/sed s/verdana/arial/g"
158 # directive de base permettant de traiter la sortie avec le
160 SetOutputFilter fixtext
161 </Location></pre>
165 <p>Vous pouvez aussi utiliser <code class="module"><a href="../mod/mod_substitute.html">mod_substitute</a></code> pour
166 effectuer le même traitement sans avoir à invoquer un programme
172 <h3>Tracer un autre filtre</h3>
173 <pre class="prettyprint lang-config"># Trace les données lues et écrites par mod_deflate pour un
174 # client particulier (IP 192.168.1.31) qui a des problèmes de
176 # Ce premier filtre va tracer ce qui entre dans mod_deflate.
177 ExtFilterDefine tracebefore \
178 cmd="/bin/tracefilter.pl /tmp/tracebefore" \
179 EnableEnv=trace_this_client
181 # Ce second filtre va tracer ce qui sort de mod_deflate.
182 # Notez que sans le paramètre ftype, le type de filtre par
183 # défaut AP_FTYPE_RESOURCE placerait le filtre *avant*
184 # mod_deflate dans la chaîne de filtrage. Le fait d'affecter
185 # à ce paramètre une valeur numérique sensiblement supérieure à
186 # AP_FTYPE_CONTENT_SET permet de s'assurer que le filtre sera
187 # placé après mod_deflate.
188 ExtFilterDefine traceafter \
189 cmd="/bin/tracefilter.pl /tmp/traceafter" \
190 EnableEnv=trace_this_client ftype=21
192 <Directory "/usr/local/docs">
193 SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
194 SetOutputFilter tracebefore;deflate;traceafter
195 </Directory></pre>
198 <div class="example"><h3>Voici le filtre qui trace les données :</h3><pre class="prettyprint lang-perl">#!/usr/local/bin/perl -w
201 open(SAVE, ">$ARGV[0]")
202 or die "can't open $ARGV[0]: $?";
204 while (<STDIN>) {
213 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
214 <div class="directive-section"><h2><a name="extfilterdefine" id="extfilterdefine">Directive</a> <a name="ExtFilterDefine" id="ExtFilterDefine">ExtFilterDefine</a></h2>
215 <table class="directive">
216 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Définit un filtre externe</td></tr>
217 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ExtFilterDefine <var>nom_filtre</var> <var>paramètres</var></code></td></tr>
218 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur</td></tr>
219 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
220 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ext_filter</td></tr>
222 <p>La directive <code class="directive">ExtFilterDefine</code>
223 définit les caractéristiques d'un filtre externe, et en particulier
224 le programme à exécuter ainsi que ses arguments.</p>
226 <p><var>nom_filtre</var> spécifie le nom du filtre en cours de
227 définition. On peut ensuite utiliser ce nom pour référencer le
228 filtre dans les directives <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code>. Il doit être unique parmi les noms de
229 tous les filtres enregistrés. <em>Pour le moment, aucune erreur
230 n'est signalée par l'API register-filter, si bien qu'un problème de
231 noms dupliqués ne sera pas porté à la connaissance de
232 l'utilisateur.</em></p>
234 <p>Viennent ensuite un ou plusieurs paramètres dans un ordre
235 indéfini, qui permettent de spécifier la commande externe à exécuter
236 et certaines autres caractéristiques. Le seul paramètre obligatoire
237 est <code>cmd=</code>. Voici la liste de ces paramètres :</p>
240 <dt><code>cmd=<var>ligne de commande</var></code></dt>
242 <dd>Le mot-clé <code>cmd=</code> spécifie la commande
243 externe à exécuter. Si la ligne de commande comporte des
244 arguments, elle doit être entourée de guillemets (par exemple
245 <code>cmd="<var>/bin/mypgm</var> <var>arg1</var>
246 <var>arg2</var>"</code>). Les guillemets habituels du shell ne
247 sont pas nécessaires car le programme est lancé directement, sans
248 passer par le shell. Les arguments du programme doivent être
249 séparés par des espaces. Si un argument contient des espaces, ces
250 derniers doivent être échappés par un antislash '\'. Si un
251 argument contient des antislashes '\', ces derniers doivent être
252 eux-mêmes échappés par un antislash '\'. Outre les variables
253 d'environnement CGI standards, les variables DOCUMENT_URI,
254 DOCUMENT_PATH_INFO, et QUERY_STRING_UNESCAPED seront également
255 définies pour le programme.</dd>
257 <dt><code>mode=<var>mode</var></code></dt>
259 <dd>Utilisez <code>mode=output</code> (valeur par défaut) pour les
260 filtres qui traitent les réponses. Utilisez
261 <code>mode=input</code> pour les filtres qui traitent les
262 requêtes. <code>mode=input</code> est disponible depuis la version
265 <dt><code>intype=<var>type MIME</var></code></dt>
267 <dd>Ce paramètre spécifie le type de médium Internet
268 (c'est à dire le type MIME) des documents qui doivent être
269 filtrés. Par défaut, tous les documents sont filtrés. Aucun des
270 documents possédant un type MIME autre que celui spécifié par
271 <code>intype=</code> ne sera filtré.</dd>
273 <dt><code>outtype=<var>type MIME</var></code></dt>
275 <dd>Ce paramètre spécifie le type de médium Internet
276 (c'est à dire le type MIME) des documents filtrés. Il intervient
277 lorsque les opérations de filtrage comprennent une modification du
278 type MIME. Par défaut, le type MIME n'est pas modifié.</dd>
280 <dt><code>PreservesContentLength</code></dt>
282 <dd>Le mot-clé <code>PreservesContentLength</code> indique que le
283 filtre doit conserver la taille du contenu. Ce n'est pas le
284 comportement par défaut, car la plupart des filtres modifient cette
285 taille. Ce mot-clé doit être spécifié si le filtre ne doit pas
286 modifier la taille du contenu.</dd>
288 <dt><code>ftype=<var>type de filtre</var></code></dt>
290 <dd>Ce paramètre spécifie une valeur numérique
291 représentant le type de filtre sous lequel le filtre doit être
292 enregistré. La valeur par défaut, AP_FTYPE_RESOURCE, convient dans
293 la plupart des situations. Ce paramètre devient nécessaire dès lors
294 que le filtre doit opérer à un autre point de la chaîne de filtrage
295 que les filtres de ressources.
296 Voir les définitions de AP_FTYPE_...
297 dans util_filter.h pour trouver une valeur appropriée.</dd>
299 <dt><code>disableenv=<var>env</var></code></dt>
301 <dd>Ce paramètre spécifie le nom d'une variable
302 d'environnement qui, si elle est définie, va désactiver le
305 <dt><code>enableenv=<var>env</var></code></dt>
307 <dd>Ce paramètre spécifie le nom d'une variable
308 d'environnement qui doit être définie pour que le filtre ne soit
313 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
314 <div class="directive-section"><h2><a name="extfilteroptions" id="extfilteroptions">Directive</a> <a name="ExtFilterOptions" id="ExtFilterOptions">ExtFilterOptions</a></h2>
315 <table class="directive">
316 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure les options de
317 <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code></td></tr>
318 <tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ExtFilterOptions <var>option</var> [<var>option</var>] ...</code></td></tr>
319 <tr><th><a href="directive-dict.html#Default">Défaut:</a></th><td><code>ExtFilterOptions NoLogStderr</code></td></tr>
320 <tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>répertoire</td></tr>
321 <tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
322 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ext_filter</td></tr>
324 <p>La directive <code class="directive">ExtFilterOptions</code>
325 spécifie des options de traitement particulières pour
326 <code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code>. Les arguments <var>option</var>
327 peuvent contenir :</p>
330 <dt><code>LogStderr | NoLogStderr</code></dt>
332 <dd>Le mot-clé <code>LogStderr</code> indique que les messages
333 envoyés par le programme de filtrage externe sur la sortie
334 d'erreurs standard doivent être enregistrés dans le journal des
335 erreurs d'Apache. <code>NoLogStderr</code> inverse ce
338 <dt><code>Onfail=[abort|remove]</code></dt>
339 <dd>Indique la marche à suivre si le programme de filtrage externe
340 ne peut pas démarrer. Avec <code>abort</code> (la valeur par
341 défaut), le traitement de la requête sera abandonné. Avec <code>remove</code>, le
342 filtre est supprimé, et le traitement de la requête se poursuit
346 <pre class="prettyprint lang-config">ExtFilterOptions LogStderr</pre>
349 <p>Les messages envoyés vers la sortie d'erreurs standard du filtre
350 seront enregistrés dans le journal des erreurs d'Apache.</p>
354 <div class="bottomlang">
355 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English"> en </a> |
356 <a href="../fr/mod/mod_ext_filter.html" title="Français"> fr </a> |
357 <a href="../ja/mod/mod_ext_filter.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
358 <a href="../ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
359 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
360 <script type="text/javascript"><!--//--><![CDATA[//><!--
361 var comments_shortname = 'httpd';
362 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_ext_filter.html';
364 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
365 d.write('<div id="comments_thread"><\/div>');
366 var s = d.createElement('script');
367 s.type = 'text/javascript';
369 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
370 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
373 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
375 })(window, document);
376 //--><!]]></script></div><div id="footer">
377 <p class="apache">Copyright 2017 The Apache Software Foundation.<br />Autorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
378 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
379 if (typeof(prettyPrint) !== 'undefined') {