Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>mod_ext_filter - Serveur Apache HTTP Version 2.4</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<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" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body>
<div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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>
<p class="apache">Serveur Apache HTTP Version 2.4</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
<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.4</a> > <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Module Apache mod_ext_filter</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_ext_filter.html" title="Franais"> fr </a> |
<a href="../ja/mod/mod_ext_filter.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Fait traiter le corps de la rponse par un programme
externe avant de l'envoyer au client</td></tr>
<tr><th><a href="module-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">IdentificateurdeModule:</a></th><td>ext_filter_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">FichierSource:</a></th><td>mod_ext_filter.c</td></tr></table>
<h3>Sommaire</h3>
<p><code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> reprsente un modle de
programmation simple et bien connu pour les <a href="../filter.html">filtres</a>. Avec ce module, tout programme
qui lit l'entre standard stdin et crit sur la sortie standard
stdout (autrement dit une commande filtre de style Unix) peut
servir de filtre pour Apache. Ce mcanisme de filtrage est beaucoup
plus lent qu'un filtre spcialement crit pour
l'API d'Apache et faisant partie intgrante du processus du serveur
Apache, mais il prsente les avantages suivants :</p>
<ul>
<li>le modle de programmation est beaucoup plus simple</li>
<li>tout langage de script ou de programmation peut tre utilis,
pourvu qu'il permette au programme de lire l'entre standard et
d'crire sur la sortie standard.</li>
<li>on peut utiliser des programmes existants comme filtres Apache
sans modification.</li>
</ul>
<p>Mme dans le cas o le niveau de performance est insuffisant pour
une utilisation en production, on peut utiliser
<code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code> comme prototype d'environnement pour
les filtres.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>Sujets</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#examples">Exemples</a></li>
</ul><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#extfilterdefine">ExtFilterDefine</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#extfilteroptions">ExtFilterOptions</a></li>
</ul>
<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">Problmes 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>
<ul class="seealso">
<li><a href="../filter.html">Filtres</a></li>
<li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">Exemples</a></h2>
<h3>Gnrer du HTML partir d'un autre type de
contenu</h3>
<pre class="prettyprint lang-config"># la directive de mod_ext_filter dfinissant un filtre
# permettant de mettre des fichiers text/c au format HTML en
# utilisant le programme externe /usr/bin/enscript, le type du
# fichier rsultant tant dfini text/html
ExtFilterDefine c-to-html mode=output \
intype=text/c outtype=text/html \
cmd="/usr/bin/enscript --color -W html -Ec -o - -"
<Directory "/export/home/trawick/apacheinst/htdocs/c">
# directive de base permettant de traiter la sortie avec le
# nouveau filtre
SetOutputFilter c-to-html
# directive de mod_mime dfinissant le type des fichiers dont
# le nom possde l'extension .c text/c
AddType text/c .c
</Directory></pre>
<h3>Implmentation d'un filtre de codage de
contenu</h3>
<p>Note : cet exemple avec gzip n'est fourni qu' titre
d'illustration. Veuillez vous reporter la documentation de
<code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> pour un exemple d'implmentation plus
pratique.</p>
<pre class="prettyprint lang-config"># la directive de mod_ext_filter qui dfinit le filtre externe
ExtFilterDefine gzip mode=output cmd=/bin/gzip
<Location "/gzipped">
# directive de base permettant de traiter la sortie avec le
# filtre gzip
SetOutputFilter gzip
# la directive de mod_headers permettant d'ajouter le champ
# d'en-tte "Content-Encoding: gzip"
Header set Content-Encoding gzip
</Location></pre>
<h3>Ralentissement du serveur</h3>
<pre class="prettyprint lang-config"># directive de mod_ext_filter dfinissant un filtre qui fait
# passer tous les flux en sortie par la commande cat ; cat ne
# modifie rien ; elle ne fait que compliquer le cheminement des
# flux et consommer des ressources supplmentaires
ExtFilterDefine slowdown mode=output cmd=/bin/cat \
ExtFilterDefine slowdown mode=output cmd=/bin/cat \
preservescontentlength
<Location "/">
# directive de base permettant de traiter plusieurs fois la
# sortie avec le filtre slowdown
#
SetOutputFilter slowdown;slowdown;slowdown
</Location></pre>
<h3>Utilisation de sed pour remplacer du texte dans la
rponse</h3>
<pre class="prettyprint lang-config"># directive de mod_ext_filter dfinissant un filtre qui
# remplace du texte dans la rponse
#
ExtFilterDefine fixtext mode=output intype=text/html \
cmd="/bin/sed s/verdana/arial/g"
<Location "/">
# directive de base permettant de traiter la sortie avec le
# filtre fixtext
SetOutputFilter fixtext
</Location></pre>
<div class="note">
<p>Vous pouvez aussi utiliser <code class="module"><a href="../mod/mod_substitute.html">mod_substitute</a></code> pour
effectuer le mme traitement sans avoir invoquer un programme
externe.</p>
</div>
<h3>Tracer un autre filtre</h3>
<pre class="prettyprint lang-config"># Trace les donnes lues et crites par mod_deflate pour un
# client particulier (IP 192.168.1.31) qui a des problmes de
# compression.
# Ce premier filtre va tracer ce qui entre dans mod_deflate.
ExtFilterDefine tracebefore \
cmd="/bin/tracefilter.pl /tmp/tracebefore" \
EnableEnv=trace_this_client
# Ce second filtre va tracer ce qui sort de mod_deflate.
# Notez que sans le paramtre ftype, le type de filtre par
# dfaut AP_FTYPE_RESOURCE placerait le filtre *avant*
# mod_deflate dans la chane de filtrage. Le fait d'affecter
# ce paramtre une valeur numrique sensiblement suprieure
# AP_FTYPE_CONTENT_SET permet de s'assurer que le filtre sera
# plac aprs mod_deflate.
ExtFilterDefine traceafter \
cmd="/bin/tracefilter.pl /tmp/traceafter" \
EnableEnv=trace_this_client ftype=21
<Directory "/usr/local/docs">
SetEnvIf Remote_Addr 192.168.1.31 trace_this_client
SetOutputFilter tracebefore;deflate;traceafter
</Directory></pre>
<div class="example"><h3>Voici le filtre qui trace les donnes :</h3><pre class="prettyprint lang-perl">#!/usr/local/bin/perl -w
use strict;
open(SAVE, ">$ARGV[0]")
or die "can't open $ARGV[0]: $?";
while (<STDIN>) {
print SAVE $_;
print $_;
}
close(SAVE);</pre>
</div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="extfilterdefine" id="extfilterdefine">Directive</a> <a name="ExtFilterDefine" id="ExtFilterDefine">ExtFilterDefine</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Dfinit un filtre externe</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ExtFilterDefine <var>nom_filtre</var> <var>paramtres</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>configuration du serveur</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ext_filter</td></tr>
</table>
<p>La directive <code class="directive">ExtFilterDefine</code>
dfinit les caractristiques d'un filtre externe, et en particulier
le programme excuter ainsi que ses arguments.</p>
<p><var>nom_filtre</var> spcifie le nom du filtre en cours de
dfinition. On peut ensuite utiliser ce nom pour rfrencer le
filtre dans les directives <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code>. Il doit tre unique parmi les noms de
tous les filtres enregistrs. <em>Pour le moment, aucune erreur
n'est signale par l'API register-filter, si bien qu'un problme de
noms dupliqus ne sera pas port la connaissance de
l'utilisateur.</em></p>
<p>Viennent ensuite un ou plusieurs paramtres dans un ordre
indfini, qui permettent de spcifier la commande externe excuter
et certaines autres caractristiques. Le seul paramtre obligatoire
est <code>cmd=</code>. Voici la liste de ces paramtres :</p>
<dl>
<dt><code>cmd=<var>ligne de commande</var></code></dt>
<dd>Le mot-cl <code>cmd=</code> spcifie la commande
externe excuter. Si la ligne de commande comporte des
arguments, elle doit tre entoure de guillemets (par exemple
<code>cmd="<var>/bin/mypgm</var> <var>arg1</var>
<var>arg2</var>"</code>). Les guillemets habituels du shell ne
sont pas ncessaires car le programme est lanc directement, sans
passer par le shell. Les arguments du programme doivent tre
spars par des espaces. Si un argument contient des espaces, ces
derniers doivent tre chapps par un antislash '\'. Si un
argument contient des antislashes '\', ces derniers doivent tre
eux-mmes chapps par un antislash '\'. Outre les variables
d'environnement CGI standards, les variables DOCUMENT_URI,
DOCUMENT_PATH_INFO, et QUERY_STRING_UNESCAPED seront galement
dfinies pour le programme.</dd>
<dt><code>mode=<var>mode</var></code></dt>
<dd>Utilisez <code>mode=output</code> (valeur par dfaut) pour les
filtres qui traitent les rponses. Utilisez
<code>mode=input</code> pour les filtres qui traitent les
requtes. <code>mode=input</code> est disponible depuis la version
2.1 d'Apache.</dd>
<dt><code>intype=<var>type MIME</var></code></dt>
<dd>Ce paramtre spcifie le type de mdium Internet
(c'est dire le type MIME) des documents qui doivent tre
filtrs. Par dfaut, tous les documents sont filtrs. Aucun des
documents possdant un type MIME autre que celui spcifi par
<code>intype=</code> ne sera filtr.</dd>
<dt><code>outtype=<var>type MIME</var></code></dt>
<dd>Ce paramtre spcifie le type de mdium Internet
(c'est dire le type MIME) des documents filtrs. Il intervient
lorsque les oprations de filtrage comprennent une modification du
type MIME. Par dfaut, le type MIME n'est pas modifi.</dd>
<dt><code>PreservesContentLength</code></dt>
<dd>Le mot-cl <code>PreservesContentLength</code> indique que le
filtre doit conserver la taille du contenu. Ce n'est pas le
comportement par dfaut, car la plupart des filtres modifient cette
taille. Ce mot-cl doit tre spcifi si le filtre ne doit pas
modifier la taille du contenu.</dd>
<dt><code>ftype=<var>type de filtre</var></code></dt>
<dd>Ce paramtre spcifie une valeur numrique
reprsentant le type de filtre sous lequel le filtre doit tre
enregistr. La valeur par dfaut, AP_FTYPE_RESOURCE, convient dans
la plupart des situations. Ce paramtre devient ncessaire ds lors
que le filtre doit oprer un autre point de la chane de filtrage
que les filtres de ressources.
Voir les dfinitions de AP_FTYPE_...
dans util_filter.h pour trouver une valeur approprie.</dd>
<dt><code>disableenv=<var>env</var></code></dt>
<dd>Ce paramtre spcifie le nom d'une variable
d'environnement qui, si elle est dfinie, va dsactiver le
filtre.</dd>
<dt><code>enableenv=<var>env</var></code></dt>
<dd>Ce paramtre spcifie le nom d'une variable
d'environnement qui doit tre dfinie pour que le filtre ne soit
pas dsactiv.</dd>
</dl>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="extfilteroptions" id="extfilteroptions">Directive</a> <a name="ExtFilterOptions" id="ExtFilterOptions">ExtFilterOptions</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure les options de
<code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code></td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntaxe:</a></th><td><code>ExtFilterOptions <var>option</var> [<var>option</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Dfaut:</a></th><td><code>ExtFilterOptions NoLogStderr</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Contexte:</a></th><td>rpertoire</td></tr>
<tr><th><a href="directive-dict.html#Status">Statut:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_ext_filter</td></tr>
</table>
<p>La directive <code class="directive">ExtFilterOptions</code>
spcifie des options de traitement particulires pour
<code class="module"><a href="../mod/mod_ext_filter.html">mod_ext_filter</a></code>. Les arguments <var>option</var>
peuvent contenir :</p>
<dl>
<dt><code>LogStderr | NoLogStderr</code></dt>
<dd>Le mot-cl <code>LogStderr</code> indique que les messages
envoys par le programme de filtrage externe sur la sortie
d'erreurs standard doivent tre enregistrs dans le journal des
erreurs d'Apache. <code>NoLogStderr</code> inverse ce
comportement.</dd>
<dt><code>Onfail=[abort|remove]</code></dt>
<dd>Indique la marche suivre si le programme de filtrage externe
ne peut pas dmarrer. Avec <code>abort</code> (la valeur par
dfaut), le traitement de la requte sera abandonn. Avec <code>remove</code>, le
filtre est supprim, et le traitement de la requte se poursuit
sans lui.</dd>
</dl>
<pre class="prettyprint lang-config">ExtFilterOptions LogStderr</pre>
<p>Les messages envoys vers la sortie d'erreurs standard du filtre
seront enregistrs dans le journal des erreurs d'Apache.</p>
</div>
</div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/mod/mod_ext_filter.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="../fr/mod/mod_ext_filter.html" title="Franais"> fr </a> |
<a href="../ja/mod/mod_ext_filter.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../ko/mod/mod_ext_filter.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
</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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/mod/mod_ext_filter.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<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>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>