<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1345917 -->
+<!-- English Revision: 1355934:1367511 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<highlight language="lua">
-<strong>example.lua</strong>
+<strong>example.lua</strong><br/>
-- exemple de gestionnaire
require "string"
if r.method == 'GET' then
for k, v in pairs( r:parseargs() ) do
r:puts( string.format("%s: %s\n", k, v) )
- end<!--
-/* Not supported yet */
+ end
elseif r.method == 'POST' then
for k, v in pairs( r:parsebody() ) do
r:puts( string.format("%s: %s\n", k, v) )
end
--->
else
r:puts("Unsupported HTTP method " .. r.method)
end
gestionnaires (ou points d'entrée, ou filtres) dans le même script.
</p>
+</section>
+<section id="writingauthzproviders">
+<title>Ecriture de fournisseurs d'autorisation</title>
+
+<p><module>mod_authz_core</module> fournit une interface d'autorisation
+de haut niveau bien plus facile à utiliser que dans les hooks
+correspondants. Le premier argument de la directive <directive
+module="mod_authz_core">Require</directive> permet de spécifier le
+fournisseur d'autorisation à utiliser. Pour chaque directive <directive
+module="mod_authz_core">Require</directive>,
+<module>mod_authz_core</module> appellera le fournisseur d'autorisation
+spécifié, le reste de la ligne constituant les paramètres. Le
+fournisseur considéré va alors vérifier les autorisations et fournir le
+résultat dans une valeur de retour.</p>
+
+<p>En général, le fournisseur authz est appelé avant l'authentification.
+S'il doit connaître le nom d'utilisateur authentifié (ou si
+l'utilisateur est appelé à être authentifié), le fournisseur doit
+renvoyer <code>apache2.AUTHZ_DENIED_NO_USER</code>, ce qui va
+déclancher le processus d'authentification et un deuxième appel du
+fournisseur authz.</p>
+
+<p>La fonction du fournisseur authz ci-dessous accepte deux arguments,
+une adresse IP et un nom d'utilisateur. Elle autorise l'accès dans le
+cas où la requête provient de l'adresse IP spécifiée, ou si
+l'utilisateur authentifié correspond au second argument :</p>
+
+<highlight language="lua">
+<strong>authz_provider.lua</strong><br/>
+
+require 'apache2'
+
+function authz_check_foo(r, ip, user)
+ if r.useragent_ip == ip then
+ return apache2.AUTHZ_GRANTED
+ elseif r.user == nil then
+ return apache2.AUTHZ_DENIED_NO_USER
+ elseif r.user == user then
+ return apache2.AUTHZ_GRANTED
+ else
+ return apache2.AUTHZ_DENIED
+ end
+end
+</highlight>
+
+<p>La configuration suivante enregistre cette fonction en tant que
+fournisseur <code>foo</code>, et la configure por l'URL <code>/</code> :</p>
+<highlight language="config">
+LuaAuthzProvider foo authz_provider.lua authz_check_foo
+<Location />
+ Require foo 10.1.2.3 john_doe
+</Location>
+</highlight>
+
</section>
<section id="writinghooks"><title>Ecriture de fonctions d'accroche
que vous pouvez écrire dans lua sous la forme <code>apache2.OK</code>,
<code>apache2.DONE</code>, ou <code>apache2.DECLINED</code>.</p>
+
<highlight language="lua">
-<strong>translate_name.lua</strong>
+<strong>translate_name.lua</strong><br/>
-- exemple d'accroche qui réécrit un URI en chemin du système de
fichiers.
end
</highlight>
+
<highlight language="lua">
-<strong>translate_name2.lua</strong>
+<strong>translate_name2.lua</strong><br/>
--[[ exemple d'accroche qui réécrit un URI vers un autre URI. Il renvoie
un apache2.DECLINED pour permettre à un autre interpréteur d'URL de
travailler sur la substitution, y compris l'accroche translate_name
<td>oui</td>
</tr>
+ <tr>
+ <td><code>context_prefix</code></td>
+ <td>string</td>
+ <td>non</td>
+ </tr>
+ <tr>
+ <td><code>context_document_root</code></td>
+ <td>string</td>
+ <td>non</td>
+ </tr>
+
<tr>
<td><code>document_root</code></td>
<td>string</td>
<td>string</td>
<td>non</td>
</tr>
+ <tr>
+ <td><code>log_id</code></td>
+ <td>string</td>
+ <td>non</td>
+ </tr>
<tr>
<td><code>method</code></td>
<td>string</td>
<td>string</td>
<td>oui</td>
</tr>
+ <tr>
+ <td><code>useragent_ip</code></td>
+ <td>string</td>
+ <td>non</td>
+ </tr>
</table>
<p>La structure request_rec possède (au minimum) les méthodes
</highlight>
<highlight language="lua">
- r:parseargs() -- renvoie une table lua contenant la chaîne
- d'arguments de la requête
+ r:parseargs() -- renvoie une table Lua contenant la chaîne
+ d'arguments de la requête
</highlight>
-<!--
-/* Not supported yet */
+
+
<highlight language="lua">
- r:parsebody() ‐- parse the request body as a POST and return a lua table
+ r:parsebody() -- interprète toutes données POST de la requête et
+ les renvoie sous forme de table Lua
</highlight>
--->
+
+
<highlight language="lua">
r:puts("bonjour", " le monde", "!") -- affichage dans le corps de la réponse
</highlight>
</usage>
</directivesynopsis>
+<directivesynopsis>
+<name>LuaAuthzProvider</name>
+<description>Branche une fonction fournisseur d'autorisation dans <module>mod_authz_core</module>
+</description>
+<syntax>LuaAuthzProvider provider_name /path/to/lua/script.lua function_name</syntax>
+<contextlist><context>server config</context> </contextlist>
+<compatibility>Disponible depuis la version 2.5.0 du serveur HTTP Apache</compatibility>
+
+<usage>
+<p>Lorsqu'une fonction lua a été enregistrée en tant que fournisseur
+d'autorisation, elle peut être appelée via la directive <directive
+module="mod_authz_core">Require</directive> :</p>
+
+<example>
+<highlight language="config">
+LuaRoot /usr/local/apache2/lua
+LuaAuthzProvider foo authz.lua authz_check_foo
+<Location />
+ Require foo bar
+</Location>
+</highlight>
+</example>
+
+</usage>
+</directivesynopsis>
+
+
</modulesynopsis>