]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_ext_filter.html.fr
rebuild
[apache] / docs / manual / mod / mod_ext_filter.html.fr
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" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
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">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body>
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="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
24 <div id="path">
25 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Module Apache mod_ext_filter</h1>
28 <div class="toplang">
29 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
30 <a href="../fr/mod/mod_ext_filter.html" title="Français">&nbsp;fr&nbsp;</a> |
31 <a href="../ja/mod/mod_ext_filter.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
32 <a href="../ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
33 </div>
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>
39 <h3>Sommaire</h3>
40
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>
49
50     <ul>
51       <li>le modèle de programmation est beaucoup plus simple</li>
52
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>
56
57       <li>on peut utiliser des programmes existants comme filtres Apache
58       sans modification.</li>
59     </ul>
60
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
64     les filtres.</p>
65
66 </div>
67 <div id="quickview"><h3>Sujets</h3>
68 <ul id="topics">
69 <li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
70 </ul><h3 class="directives">Directives</h3>
71 <ul id="toc">
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>
74 </ul>
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__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_ext_filter">Problèmes connus</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_ext_filter">Signaler un bug</a></li></ul><h3>Voir aussi</h3>
76 <ul class="seealso">
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>
80 <div class="section">
81 <h2><a name="examples" id="examples">Exemples</a></h2>
82
83     <h3>Générer du HTML à partir d'un autre type de
84     contenu</h3>
85
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 - -"
93
94 &lt;Directory "/export/home/trawick/apacheinst/htdocs/c"&gt;
95     # directive de base permettant de traiter la sortie avec le
96     # nouveau filtre
97     SetOutputFilter c-to-html
98
99     # directive de mod_mime définissant le type des fichiers dont
100     # le nom possède l'extension .c à text/c
101     AddType text/c .c
102 &lt;/Directory&gt;</pre>
103
104     
105
106     <h3>Implémentation d'un filtre de codage de
107     contenu</h3>
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
111       pratique.</p>
112
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
115
116 &lt;Location "/gzipped"&gt;
117
118     # directive de base permettant de traiter la sortie avec le
119   # filtre gzip
120     SetOutputFilter gzip
121
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 &lt;/Location&gt;</pre>
126
127
128     
129
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
138
139 &lt;Location "/"&gt;
140     # directive de base permettant de traiter plusieurs fois la
141     # sortie avec le filtre slowdown
142     #
143     SetOutputFilter slowdown;slowdown;slowdown
144 &lt;/Location&gt;</pre>
145
146     
147
148     <h3>Utilisation de sed pour remplacer du texte dans la
149     réponse</h3>
150
151       <pre class="prettyprint lang-config"># directive de mod_ext_filter définissant un filtre qui
152 # remplace du texte dans la réponse
153 #
154 ExtFilterDefine fixtext mode=output intype=text/html \
155     cmd="/bin/sed s/verdana/arial/g"
156
157 &lt;Location "/"&gt;
158     # directive de base permettant de traiter la sortie avec le
159     # filtre fixtext
160     SetOutputFilter fixtext
161 &lt;/Location&gt;</pre>
162
163
164 <div class="note">
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
167 externe.</p>
168 </div>      
169
170     
171
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
175 # compression.
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
180
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
191
192 &lt;Directory "/usr/local/docs"&gt;
193     SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
194     SetOutputFilter tracebefore;deflate;traceafter
195 &lt;/Directory&gt;</pre>
196
197
198       <div class="example"><h3>Voici le filtre qui trace les données :</h3><pre class="prettyprint lang-perl">#!/usr/local/bin/perl -w
199 use strict;
200
201 open(SAVE, "&gt;$ARGV[0]")
202     or die "can't open $ARGV[0]: $?";
203
204 while (&lt;STDIN&gt;) {
205     print SAVE $_;
206     print $_;
207 }
208
209 close(SAVE);</pre>
210 </div>
211     
212 </div>
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>
221 </table>
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>
225
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>
233
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>
238
239     <dl>
240       <dt><code>cmd=<var>ligne de commande</var></code></dt>
241
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>
256
257       <dt><code>mode=<var>mode</var></code></dt>
258
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
263       2.1 d'Apache.</dd>
264
265       <dt><code>intype=<var>type MIME</var></code></dt>
266
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>
272
273       <dt><code>outtype=<var>type MIME</var></code></dt>
274
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>
279
280       <dt><code>PreservesContentLength</code></dt>
281
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>
287
288       <dt><code>ftype=<var>type de filtre</var></code></dt>
289
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>
298
299       <dt><code>disableenv=<var>env</var></code></dt>
300
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
303       filtre.</dd>
304
305       <dt><code>enableenv=<var>env</var></code></dt>
306
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
309       pas désactivé.</dd>
310     </dl>
311
312 </div>
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>
323 </table>
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>
328
329     <dl>
330       <dt><code>LogStderr | NoLogStderr</code></dt>
331
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
336       comportement.</dd>
337
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
343       sans lui.</dd>
344     </dl>
345
346     <pre class="prettyprint lang-config">ExtFilterOptions LogStderr</pre>
347
348
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>
351
352 </div>
353 </div>
354 <div class="bottomlang">
355 <p><span>Langues Disponibles: </span><a href="../en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
356 <a href="../fr/mod/mod_ext_filter.html" title="Français">&nbsp;fr&nbsp;</a> |
357 <a href="../ja/mod/mod_ext_filter.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
358 <a href="../ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</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&amp;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';
363 (function(w, d) {
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';
368         s.async = true;
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);
371     }
372     else {
373         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
374     }
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') {
380     prettyPrint();
381 }
382 //--><!]]></script>
383 </body></html>