2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1673947 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- $LastChangedRevision: 2015042601 $ -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <modulesynopsis metafile="mod_firehose.xml.meta">
27 <name>mod_firehose</name>
28 <description>Multiplexage des entrées/sorties vers un fichier ou un pipe.</description>
29 <status>Extension</status>
30 <sourcefile>mod_firehose.c</sourcefile>
31 <identifier>firehose_module</identifier>
34 <p><code>mod_firehose</code> fournit un mécanisme permettant
35 d'enregistrer les données transmises entre le serveur httpd et le
36 client au niveau élémentaire de la connexion dans un fichier ou un
37 pipe, de façon à ce que les données puissent être analysées ou
38 rejouées ultérieurement par le serveur. Il s'apparente à un "tcpdump
41 <p>Les connexions sont enregistrées après décodage de la couche SSL,
42 et peuvent ainsi être utilisées dans le cadre d'une réquisition
45 <p>L'utilitaire <program>firehose</program> permet en retour de
46 démultiplexer le flux enregistré dans des fichiers individuels pour
47 analyse ou rejeu via des outils tels que <code>netcat</code>.</p>
49 <note><title>AVERTISSEMENT</title>Ce module ignore tout mécanisme
50 invoqué au niveau de la requête pour rendre les données privées. Il
51 est donc de la responsabilité de l'administrateur de s'assurer que
52 les données privées ne seront pas compromises par son utilisation.
56 <seealso><program>firehose</program></seealso>
59 <title>Activation de la "Lance à incendie" (Firehose)</title>
61 <p>Pour activer ce module, il doit être compilé et chargé via la
62 configuration de votre instance httpd courante, et les directives
63 ci-dessous permettent de sélectionner les données que vous souhaitez
66 <p>Il est possible d'enregistrer les données entrantes et sortantes
67 dans le même fichier, car la direction du flux est indiquée dans
70 <p>Il est possible d'écrire vers des fichiers normaux ou des listes
71 fifos (pipes). Dans le cas des listes fifos, mod_firehose fait en
72 sorte que la taille des paquets ne dépasse pas la valeur de PIPE_BUF
73 afin de s'assurer que l'écriture de ces derniers s'effectue en une
76 <p>Si une liste fifo sous forme de pipe doit être utilisée, pour que
77 cette dernière soit ouverte en écriture, certaines données doivent
78 en être extraites avant le démarrage de httpd. Si l'ouverture du
79 pipe échoue, mod_firehose ne sera pas activé, et le serveur sera
80 lancé normalement.</p>
82 <p>Par défaut, toute tentative d'écriture bloque le serveur. Si le
83 serveur a été compilé avec APR version 2.0 ou supérieure, et si le
84 paramètre "nonblock" a été spécifié, les écritures dans les fichiers
85 seront non blocantes, et tout dépassement de tampon entraînera la
86 perte des données de débogage. Dans ce cas, il est possible donner
87 la priorité à l'exécution du serveur sur l'enregistrement des
88 données firehose.</p>
93 <title>Format du flux</title>
95 <p>En général, le serveur gère plusieurs connexions simultanément,
96 et de ce fait, les requêtes et les réponses doivent être
97 multiplexées avant d'être écrites dans le firehose.</p>
99 <p>Chaque fragment se présente sous la forme d'un texte en clair
100 de façon à ce qu'un firehose puisse être ouvert et inspecté par un
101 éditeur de texte standard. Il est aussi possible d'utiliser
102 l'utilitaire <program>firehose</program> pour démultiplexer le
103 firehose en requêtes ou connexions individuelles.</p>
105 <p>La taille maximale des fragments multiplexés est définie par la
106 variable PIPE_BUF. Elle correspond à la taille maximale d'un
107 élément que le système peut écrire. Si la taille des fragments
108 multiplexés reste en dessous de PIPE_BUF, le module garantit que les
109 contenus des différents fragments ne se recouperont pas. La valeur
110 de PIPE_BUF varie en fonction du système d'exploitation.</p>
112 <p>La BNF du format du fragment est la suivante :</p>
115 stream = 0*(fragment)
117 fragment = header CRLF body CRLF
119 header = length SPC timestamp SPC ( request | response ) SPC uuid SPC count
121 length = <longueur de fragment sur 16 octets hexadécimaux>
122 timestamp = <temps depuis 1970 en microsecondes sur 16 octets hexadécimaux>
125 uuid = <uuid formaté de la connexion>
126 count = <numéro hexadécimal du fragment dans la connexion>
128 body = <contenu binaire du fragment>
131 CRLF = <un retour chariot suivi d'une nouvelle ligne>
134 <p>Tous les fragments d'une connexion ou d'une requête partagent le
135 même UUID, selon que les connexions ou les requêtes sont
136 enregistrées ou non. Si les connexions sont enregistrées, plusieurs
137 requêtes peuvent apparaître dans la même connexion. Un fragment de
138 longueur nulle indique la fin de la connexion.</p>
140 <p>Certains fragments peuvent manquer ou être supprimés si le
141 processus qui les lit est trop lent. Si cela se produit, il y aura
142 des trous dans le comptage des connections. Un avertissement
143 indiquant l'UUID et le numéro du fragment supprimé sera enregistré
144 dans le journal des erreurs.</p>
146 <p>En cas de crash ou d'arrêt forcé du processus httpd, il est
147 possible que le fragment vide de terminaison n'apparaisse pas. Cela
148 peut aussi se produire si le processus qui lit les fragments n'est
149 pas assez rapide.</p>
155 <name>FirehoseConnectionInput</name>
156 <description>Capture le trafic entrant dans le serveur à chaque
157 connexion.</description>
158 <syntax>FirehoseConnectionInput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
159 <default>none</default>
160 <contextlist><context>server config</context></contextlist>
161 <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
162 Apache.</compatibility>
165 <p>Capture le trafic entrant dans le serveur à chaque connexion.
166 Plusieurs requêtes seront capturées pour la même connexion si les
167 connexions persistantes sont activées.</p>
169 <example><title>Exemple</title>
170 <highlight language="config">
171 FirehoseConnectionInput connection-input.firehose
180 <name>FirehoseConnectionOutput</name>
181 <description>Capture le trafic sortant du serveur à chaque connexion</description>
182 <syntax>FirehoseConnectionOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
183 <default>none</default>
184 <contextlist><context>server config</context></contextlist>
185 <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
186 Apache.</compatibility>
189 <p>Capture le trafic sortant du serveur à chaque connexion.
190 Plusieurs requêtes seront capturées pour la même connexion si les
191 connexions persistantes sont activées.
194 <example><title>Exemple</title>
195 <highlight language="config">
196 FirehoseConnectionOutput connection-output.firehose
205 <name>FirehoseRequestInput</name>
206 <description>Capture le trafic entrant dans le serveur à chaque requête</description>
207 <syntax>FirehoseRequestInput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
208 <default>none</default>
209 <contextlist><context>server config</context></contextlist>
210 <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
211 Apache.</compatibility>
214 <p>Capture le trafic entrant dans le serveur à chaque requête. Les
215 requêtes sont capturées séparément, que les connexions persistantes
216 soient activées ou non.</p>
218 <example><title>Exemple</title>
219 <highlight language="config">
220 FirehoseRequestInput request-input.firehose
229 <name>FirehoseRequestOutput</name>
230 <description>Capture le trafic sortant du serveur à chaque requête</description>
231 <syntax>FirehoseRequestOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
232 <default>none</default>
233 <contextlist><context>server config</context></contextlist>
234 <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
235 Apache.</compatibility>
238 <p>Capture le trafic sortant du serveur à chaque requête. Les
239 requêtes sont capturées séparément, que les connexions persistantes
240 soient activées ou non.</p>
242 <example><title>Exemple</title>
243 <highlight language="config">
244 FirehoseRequestOutput request-output.firehose
253 <name>FirehoseProxyConnectionInput</name>
254 <description>Capture le trafic entrant dans mod_proxy</description>
255 <syntax>FirehoseProxyConnectionInput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
256 <default>none</default>
257 <contextlist><context>server config</context></contextlist>
258 <compatibility></compatibility>
261 <p>Capture le trafic reçu par mod_proxy.</p>
263 <example><title>Exemple</title>
264 <highlight language="config">
265 FirehoseProxyConnectionInput proxy-input.firehose
274 <name>FirehoseProxyConnectionOutput</name>
275 <description>Capture le trafic envoyé par mod_proxy</description>
276 <syntax>FirehoseProxyConnectionOutput <var>[ block | nonblock ]</var> <var>filename</var></syntax>
277 <default>none</default>
278 <contextlist><context>server config</context></contextlist>
279 <compatibility>Disponible à partir de la version 2.5.0 du serveur HTTP
280 Apache.</compatibility>
283 <p>Capture le trafic envoyé par mod_proxy.</p>
285 <example><title>Exemple</title>
286 <highlight language="config">
287 FirehoseProxyConnectionOutput proxy-output.firehose