From 33cb7212065ce1067eeed4963584a8af9bb5946d Mon Sep 17 00:00:00 2001
From: Lucien Gentis
Date: Sat, 7 Sep 2013 15:06:45 +0000
Subject: [PATCH] Update.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1520780 13f79535-47bb-0310-9956-ffa450edef68
---
docs/manual/mod/mod_lua.xml.fr | 200 ++++++++++++++++++++++++++++++++-
1 file changed, 197 insertions(+), 3 deletions(-)
diff --git a/docs/manual/mod/mod_lua.xml.fr b/docs/manual/mod/mod_lua.xml.fr
index 086ea288792..6f418c8a9a4 100644
--- a/docs/manual/mod/mod_lua.xml.fr
+++ b/docs/manual/mod/mod_lua.xml.fr
@@ -1,7 +1,7 @@
-
+
@@ -289,10 +289,12 @@ ou la définition de types MIME :
| Journalisation |
- aucune |
+ LuaHookLog |
Lorsqu'une requête a été traitée, plusieurs phases de
journalisation interviennent, et enregistrent leurs résultats
- dans les fichiers d'erreur ou d'accès. |
+ dans les fichiers d'erreur ou d'accès. Mod_lua peut
+ s'intercaler au départ de ce processus et ainsi contrôler la
+ journalisation.
@@ -1061,6 +1063,15 @@ end
r.date_parse_rfc(string) -- Interprète une chaîne date/heure et renvoie l'équivalent en secondes depuis epoche.
+
+r:getcookie(key) -- Obtient un cookie HTTP
+
+
+
+r:setcookie(key, value, secure, expires) -- Définit un cookie HTTP, par exemple :
+r:setcookie("foo", "bar and stuff", false, os.time() + 86400)
+
+
Fonctions de journalisation
@@ -1589,6 +1600,61 @@ traitement de la requête
+
+LuaHookLog
+Permet une insertion dans la phase de journalisation du
+traitement d'une requête
+LuaHookLog /path/to/lua/script.lua log_function_name
+server configvirtual host
+directory.htaccess
+
+All
+
+
+ Ce dispositif d'insertion simple permet d'exécuter une fonction
+ lorsque httpd entre dans la phase de journalisation du traitement
+ d'une requête. Vous pouvez ainsi ajouter des données à vos propres
+ entrées de journalisation, manipuler les entrées du journal standard
+ avant leur enregistrement ou empêcher l'enregistrement d'une entrée
+ dans le journal. Pour empêcher l'enregistrement normal des entrées
+ du journal, renvoyez simplement apache2.DONE dans votre
+ gestionnaire de journalisation, ou au contraire, renvoyez
+ apache2.OK pour que httpd effectue une journalisation
+ normale.
+
+Exemple :
+
+LuaHookLog /path/to/script.lua logger
+
+
+-- /path/to/script.lua --
+function logger(r)
+ -- on joue à pile ou face :
+ -- Si on obtient 1, on écrit dans notre propre journal Lua et on dit
+ -- à httpd de ne pas enregistrer d'entrée dans le journal standard..
+ -- Si on obtient 2, on nettoie un peu les données avant que httpd ne
+ -- les enregistre dans le journal standard.
+
+ if math.random(1,2) == 1 then
+ -- On effectue notre propre journalisation et le journal
+ -- standard n'est pas alimenté
+ local f = io.open("/foo/secret.log", "a")
+ if f then
+ f:write("Quelque chose de secret est arrivé à " .. r.uri .. "\n")
+ f:close()
+ end
+ return apache2.DONE -- On dit à httpd de ne rien enregistrer
+ --dans le journal standard
+ else
+ r.uri = r.uri:gsub("somesecretstuff", "") -- nettoie les données
+ return apache2.OK -- et httpd doit alors les enregistrer.
+ end
+end
+
+
+
+
+
LuaHookMapToStorage
Fournit un point d'entrée pour la phase map_to_storage du
@@ -1845,6 +1911,134 @@ end
+
+LuaInputFilter
+Fournit une fonction Lua pour le filtrage en entrée
+LuaInputFilter filter_name /path/to/lua/script.lua function_name
+server config
+Disponible depuis la version 2.5.0 du serveur HTTP
+Apache
+
+
+Cette directive permet d'ajouter un filtre en entrée sous la forme
+d'une fonction Lua. A l'instar des filtres en sorties, les filtres en
+entrée fonctionnent comme des sous-routines, intervenant dans un premier
+temps avant l'envoi du contenu des tampons, puis chaque fois qu'un
+paquet de données doit être transmis à la chaîne, et éventuellement
+produisant toute donnée à ajouter aux données en entrée. La variable
+globale bucket contient les paquets de données tels qu'ils
+sont transmis au script Lua :
+
+
+
+LuaInputFilter myInputFilter /www/filter.lua input_filter
+<FilesMatch "\.lua>
+ SetInputFilter myInputFilter
+</FilesMatch>
+
+
+--[[
+ Exemple de filtre en entrée qui convertit toutes les données POST en
+ majuscules.
+]]--
+function input_filter(r)
+ print("luaInputFilter called") -- debug print
+ coroutine.yield() -- Yield and wait for buckets
+ while bucket do -- For each bucket, do...
+ local output = string.upper(bucket) -- Convertit toutes les données POST en majuscules
+ coroutine.yield(output) -- Envoie les données traitées à la chaîne
+ end
+ -- plus aucune donnée à traiter.
+ coroutine.yield("&filterSignature=1234") -- Ajoute une signature à la fin
+end
+
+
+Le filtre en entrée peut interdire ou sauter un filtre s'il est
+considéré comme indésirable :
+
+
+function input_filter(r)
+ if not good then
+ return -- Empêche tout simplement le filtrage et transmet le contenu original
+ end
+ coroutine.yield() -- attend des paquets de données
+ ... -- insert les filtres ici
+end
+
+
+Voir "Modification de contenu avec les
+filtres Lua" pour plus de détails.
+
+
+
+
+
+LuaOutputFilter
+Fournit une fonction Lua pour le filtrage de contenu en
+sortie
+LuaOutputFilter filter_name /path/to/lua/script.lua function_name
+server config
+Disponible à partir de la version 2.5.0 du serveur HTTP
+Apache
+
+
+>Cette directive permet d'ajouter un filtre en sortie sous la forme
+d'une fonction Lua. A l'instar des filtres en sorties, les filtres en
+entrée fonctionnent comme des sous-routines, intervenant dans un premier
+temps avant l'envoi du contenu des tampons, puis chaque fois qu'un
+paquet de données doit être transmis à la chaîne, et éventuellement
+produisant toute donnée à ajouter aux données en sortie. La variable
+globale bucket contient les paquets de données tels qu'ils
+sont transmis au script Lua :
+
+
+
+LuaOutputFilter myOutputFilter /www/filter.lua output_filter
+<FilesMatch "\.lua>
+ SetOutputFilter myOutputFilter
+</FilesMatch>
+
+
+--[[
+ Exemple de filtre en sortie qui échappe toutes les entités HTML en
+ sortie
+]]--
+function output_filter(r)
+ coroutine.yield("(Handled by myOutputFilter)<br/>\n") -- Ajoute des données au début de la sortie, puis attend des paquets de données à traiter
+ while bucket do -- Pour chaque paquet, faire ...
+ local output = r:escape_html(bucket) -- Echappe les données en sortie
+ coroutine.yield(output) -- Envoie les données traitées à la chaîne
+ end
+ -- plus aucune donnée à traiter.
+end
+
+
+Comme les filres en entrée, le filtre en sortie peut interdire ou sauter un filtre s'il est
+considéré comme indésirable :
+
+
+function output_filter(r)
+ if not r.content_type:match("text/html") then
+ return -- Empêche tout simplement le filtrage et transmet le contenu original
+ end
+ coroutine.yield() -- attend des paquets de données
+ ... -- insert les filtres ici
+end
+
+Les filtres Lua avec mod_filter
+Lorsqu'on utilise un filtre Lua comme fournisseur sous-jacent via la
+directive FilterProvider, le
+filtrage ne fonctionnera que si filter-name est identique à
+provider-name.
+
+
+
+Voir "Modification de contenu avec les
+filtres Lua" pour plus de détails.
+
+
+
+
--
2.47.3