From: Lucien Gentis Date: Tue, 10 Oct 2017 11:14:30 +0000 (+0000) Subject: XML updates. X-Git-Tag: 2.5.0-alpha~49 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=48272c9f7f7bff617179563f34da9718ae5dcf41;p=apache XML updates. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1811665 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/manual/expr.xml.fr b/docs/manual/expr.xml.fr index 9cdb9b3ba6..00b120dcb2 100644 --- a/docs/manual/expr.xml.fr +++ b/docs/manual/expr.xml.fr @@ -1,7 +1,7 @@ - + @@ -85,30 +85,43 @@ (souvent abrégée en BNF, de l'anglais Backus-Naur Form) est une notation permettant de décrire les règles syntaxiques des langages de programmation. En général, les expressions représentent des valeurs booléennes. Dans - ce cas, le point de départ de la BNF est expr. - Cependant, certaines directives comme LogMessage utilisent comme + ce cas, le point de départ de la BNF est cond. + Les directives comme + ErrorDocument, + Require, + AuthName, + Redirect, + Header, + CryptoKey ou + LogMessage utilisent comme paramètres des expressions qui représentent des chaînes de caractères. Dans ce cas, le point de départ de la BNF est string.

-expr        ::= "true" | "false"
-              | "!" expr
-              | expr "&&" expr
-              | expr "||" expr
-              | "(" expr ")"
+expr        ::= cond
+              | string
+
+string      ::= substring
+              | string substring
+
+cond        ::= "true" 
+              | "false"
+              | "!" cond
+              | cond "&&" cond
+              | cond "||" cond
               | comp
+	      | "(" cond ")"
 
 comp        ::= stringcomp
               | integercomp
               | unaryop word
               | word binaryop word
-              | word "in" "{" wordlist "}"
-              | word "in" listfunction
+              | word "in" listfunc
               | word "=~" regex
               | word "!~" regex
+	      | word "in" "{" list "}"
 
 
 stringcomp  ::= word "==" word
@@ -125,35 +138,65 @@ integercomp ::= word "-eq" word | word "eq" wo
               | word "-gt" word | word "gt" word
               | word "-ge" word | word "ge" word
 
-wordlist    ::= word
-              | wordlist "," word
-
-word        ::= word "." word
-              | digit
+word        ::= digits
               | "'" string "'"
-              | """ string """
+              | '"' string '"'
+              | word "." word
               | variable
-	      | rebackref
+	      | sub
+              | join
               | function
+	      | "(" word ")"
 
-string      ::= stringpart
-              | string stringpart
+list        ::= split
+              | listfunc
+              | "{" words "}"
+              | "(" list ")"
 
-stringpart  ::= cstring
+substring   ::= cstring
               | variable
-	      | rebackref
 
-cstring     ::= ...
-digit       ::= [0-9]+
 
 variable    ::= "%{" varname "}"
               | "%{" funcname ":" funcargs "}"
+	      | "%{:" word ":}"
+              | "%{:" cond ":}"
+              | rebackref
+
+sub         ::= "sub" ["("] regsub "," word [")"]
+
+join        ::= "join" ["("] list [")"]
+              | "join" ["("] list "," word [")"]
+
+split       ::= "split" ["("] regany "," list [")"]
+              | "split" ["("] regany "," word [")"]
+
+function    ::= funcname "(" words ")"
+
+listfunc    ::= listfuncname "(" words ")"
+
+words       ::= word
+              | word "," list
 
-rebackref   ::= "$" [0-9]
+regex       ::= "/" regpattern "/" [regflags]
+              | "m" regsep regpattern regsep [regflags]
 
-function     ::= funcname "(" wordlist ")"
+regsub      ::= "s" regsep regpattern regsep string regsep [regflags]
 
-listfunction ::= listfuncname "(" word ")"
+regany      ::= regex | regsub
+
+regsep      ::= "/" | "#" | "$" | "%" | "^" | "|" | "?" | "!" | "'" | '"' | "," | ";" | ":" | "." | "_" | "-"
+
+regflags    ::= 1*("i" | "s" | "m" | "g")
+regpattern  ::= cstring ; except enclosing regsep
+
+rebackref   ::= "$" DIGIT
+
+digits      ::= 1*(DIGIT)
+cstring     ::= 0*(TEXT)
+
+TEXT        ::= <any OCTET except CTLs>
+DIGIT       ::= <any US-ASCII digit "0".."9">
 
@@ -348,6 +391,22 @@ listfunction ::= listfuncname "(" word ")"

Certains modules, comme mod_ssl, définissent des variables supplémentaires.

+

Toute variable peut être insérée dans une chaîne, et ceci non + seulement dans les chaînes entre quotes des expressions booléennes, mais + aussi dans les expressions littérales issues de la concaténation de chaînes + constantes et dynamiques.

+ +

On peut utiliser ici les variables (temporaires) du style + %{:word:} qui permettent d'insérer dans les deux types + d'expressions des variables (et des constructions) avec la syntaxe puissante + word sans entrer en conflit avec les parties constantes de telles + chaînes. Même si la syntaxe word est directement utilisable au sein + des expressions booléennes, ces variables sont cependant surtout utiles dans + les expressions littérales. Ces variables permettent d'évaluer des + expressions rationnelles, des substitutions, de concaténer ou dissocier des + chaînes et des listes au sein des expressions littérales, et donc de + construire des chaînes complexes dynamiquement.

+
@@ -614,8 +673,8 @@ listfunction ::= listfuncname "(" word ")"

En plus des fonctions dont la valeur est une chaîne, il existe aussi des fonctions dont la valeur est une liste, qui acceptent une - chaîne comme argument, et renvoient une liste de mots, autrement dit - une liste de chaînes. La liste de mot peut être utilisée avec + chaîne comme argument, et renvoient une liste , par exemple + une liste de chaînes. La liste peut être utilisée avec l'opérateur spécial -in. Les noms de fonctions sont insensibles à la casse. Les modules peuvent fournir des fonctions supplémentaires.

@@ -687,7 +746,7 @@ listfunction ::= listfuncname "(" word ")" </If> -# Function example in string context +# Exemple de fonction dans un contexte littéral Header set foo-checksum "expr=%{md5:foo}" # L'exemple suivant retarde l'évaluation de la clause de condition par rapport à @@ -695,6 +754,15 @@ Header set foo-checksum "expr=%{md5:foo}" Header always set CustomHeader my-value "expr=%{REQUEST_URI} =~ m#^/special_path\.php$#" +# Ajoute un en-tête permettant d'acheminer le SAN du certificat d'un client vers +# un quelconque serveur d'arrière-plan +RequestHeader set X-Client-SAN "expr=%{:join PeerExtList('subjectAltName'):}" + +# Impose la présence de l'adresse IP distante dans le SAN du certificat d'un client +Require expr %{REMOTE_ADDR} -in split s/.*?IP Address:([^,]+)/$1/, PeerExtList('subjectAltName') +# autre solution : +Require expr "IP Address:%{REMOTE_ADDR}" -in split/, /, join PeerExtList('subjectAltName') +
@@ -707,7 +775,7 @@ m#^/special_path\.php$#" NomAlternative Description -in in - chaîne contenue dans une liste de mots + chaîne contenue dans une liste /regexp/ m#regexp# Expression rationnelle (la seconde forme permet de spécifier diff --git a/docs/manual/mod/mod_proxy.xml.fr b/docs/manual/mod/mod_proxy.xml.fr index 264b7b6641..dc41e959f6 100644 --- a/docs/manual/mod/mod_proxy.xml.fr +++ b/docs/manual/mod/mod_proxy.xml.fr @@ -1,7 +1,7 @@ - + @@ -317,6 +317,15 @@ ProxyPass "/examples" "http://backend.example.com/examples" timeout=10 + Nom d'hôte dans l'URL +

Le nom d'hôte doit commencer par une lettre [a-z]. Par exemple :

+ +ProxyPass "/apps" "http://127" + +

n'est pas valide et provoquera une erreur si une requête correspond + au chemin.

+
+

Les workers définis explicitement sont de deux sortes : workers directs et workers de répartition (de charge). Ils supportent de nombreux attributs de