Skip to content

Commit 37e4514

Browse files
authored
Merge branch 'apache:trunk' into lock-token-length-check
2 parents 18e6e1b + e26ed1f commit 37e4514

55 files changed

Lines changed: 578 additions & 200 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*) mod_proxy_ajp: Fix a wrong comparison in ajp_msg_copy.
2+
[Elhanan Haenel <elhanan.haenel@gmail.com>]

docs/manual/content-negotiation.html.fr.utf8

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
<a href="./ko/content-negotiation.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
3030
<a href="./tr/content-negotiation.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
3131
</div>
32-
<div class="outofdate">Cette traduction peut être périmée. Vérifiez la version
33-
anglaise pour les changements récents.</div>
3432

3533

3634
<p>Apache HTTPD prend en charge la négociation de
@@ -187,11 +185,43 @@ conventions de nommage</a></li>
187185
</code></p></div>
188186

189187
<p>Notez aussi qu'un fichier de correspondances de types prend le pas sur
190-
les extensions de noms de fichiers, même si les Multivues sont activées.
191-
Si les variantes sont de qualités différentes, on doit l'indiquer
192-
à l'aide du paramètre «&nbsp;qs&nbsp;» à la suite du type de média, comme pour cette
193-
image
194-
(disponible aux formats JPEG, GIF, ou ASCII-art) : </p>
188+
les extensions de noms de fichier, même si les Multivues sont activées. Si
189+
un fichier de correspondances de types <code>.var</code> est trouvé au cours
190+
d’un balayage de répertoire de Multivues, le serveur n’utilisera
191+
<em>que</em> les variantes listées dans ce fichier de correspondances de
192+
types. Tout autre fichier du répertoire qui correspond au nom de base mais
193+
n’est pas listé dans les correspondances de types sera totalement ignoré.
194+
Par exemple, si <code>foo.var</code> existe et ne liste que
195+
<code>foo.en.html</code> et <code>foo.fr.de.html</code>, un fichier
196+
<code>foo.mn.html</code> présent dans le même répertoire ne sera jamais
197+
servi après négociation, même si le client demande «&nbsp;Mongolian&nbsp;». Pour
198+
qu’une telle variante soit disponible, elle doit être ajoutée au fichier de
199+
correspondances de types.</p>
200+
201+
<p>Ce comportement est intéressant pour les sites qui ajoutent de nouvelles
202+
variantes linguistiques au cours du temps. Si vous avez une ressource
203+
existante <code>foo.html</code> et ajoutez par la suite des variantes
204+
traduites avec des extensions de langue, vous devez lister toutes les
205+
variantes (y compris l’original) dans le fichier de
206+
correspondances de types. Il est possible d’assigner sa langue au fichier
207+
original dans le fichier de
208+
correspondances de types sans avoir à le renommer&nbsp;:</p>
209+
210+
<div class="example"><p><code>
211+
URI: foo<br />
212+
<br />
213+
URI: foo.html<br />
214+
Content-type: text/html<br />
215+
Content-language: en<br />
216+
<br />
217+
URI: foo.fr.html<br />
218+
Content-type: text/html<br />
219+
Content-language: fr<br />
220+
</code></p></div>
221+
222+
<p>Si les variantes possèdent des qualités de source différentes, elles
223+
peuvent être indiquées par l’ajout du paramètre «&nbsp;qs&nbsp;» au type de média,
224+
comme pour cette image (disponible en JPEG, GIF ou ASCII-art)&nbsp;:</p>
195225

196226
<div class="example"><p><code>
197227
URI: foo<br />

docs/manual/content-negotiation.xml.fr

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
44
<!-- French translation : Lucien GENTIS -->
55
<!-- Reviewed by : Vincent Deffontaines -->
6-
<!-- English Revision: 1673932:1932308 (outdated) -->
6+
<!-- English Revision: 1932308 -->
77

88
<!--
99
Licensed to the Apache Software Foundation (ASF) under one or more
@@ -170,11 +170,43 @@
170170
</example>
171171

172172
<p>Notez aussi qu'un fichier de correspondances de types prend le pas sur
173-
les extensions de noms de fichiers, même si les Multivues sont activées.
174-
Si les variantes sont de qualités différentes, on doit l'indiquer
175-
à l'aide du paramètre « qs » à la suite du type de média, comme pour cette
176-
image
177-
(disponible aux formats JPEG, GIF, ou ASCII-art) : </p>
173+
les extensions de noms de fichier, même si les Multivues sont activées. Si
174+
un fichier de correspondances de types <code>.var</code> est trouvé au cours
175+
dun balayage de répertoire de Multivues, le serveur nutilisera
176+
<em>que</em> les variantes listées dans ce fichier de correspondances de
177+
types. Tout autre fichier du répertoire qui correspond au nom de base mais
178+
nest pas listé dans les correspondances de types sera totalement ignoré.
179+
Par exemple, si <code>foo.var</code> existe et ne liste que
180+
<code>foo.en.html</code> et <code>foo.fr.de.html</code>, un fichier
181+
<code>foo.mn.html</code> présent dans le même répertoire ne sera jamais
182+
servi après négociation, même si le client demande « Mongolian ». Pour
183+
quune telle variante soit disponible, elle doit être ajoutée au fichier de
184+
correspondances de types.</p>
185+
186+
<p>Ce comportement est intéressant pour les sites qui ajoutent de nouvelles
187+
variantes linguistiques au cours du temps. Si vous avez une ressource
188+
existante <code>foo.html</code> et ajoutez par la suite des variantes
189+
traduites avec des extensions de langue, vous devez lister toutes les
190+
variantes (y compris loriginal) dans le fichier de
191+
correspondances de types. Il est possible dassigner sa langue au fichier
192+
original dans le fichier de
193+
correspondances de types sans avoir à le renommer :</p>
194+
195+
<example>
196+
URI: foo<br />
197+
<br />
198+
URI: foo.html<br />
199+
Content-type: text/html<br />
200+
Content-language: en<br />
201+
<br />
202+
URI: foo.fr.html<br />
203+
Content-type: text/html<br />
204+
Content-language: fr<br />
205+
</example>
206+
207+
<p>Si les variantes possèdent des qualités de source différentes, elles
208+
peuvent être indiquées par lajout du paramètre « qs » au type de média,
209+
comme pour cette image (disponible en JPEG, GIF ou ASCII-art) :</p>
178210

179211
<example>
180212
URI: foo<br />

docs/manual/content-negotiation.xml.meta

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<variants>
1010
<variant>en</variant>
11-
<variant outdated="yes">fr</variant>
11+
<variant>fr</variant>
1212
<variant outdated="yes">ja</variant>
1313
<variant outdated="yes">ko</variant>
1414
<variant outdated="yes">tr</variant>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* mod_example_1.c: Example module for Apache HTTP Server 2.4
3+
* A simple "Hello, world!" handler.
4+
*/
5+
6+
#include "httpd.h"
7+
#include "http_config.h"
8+
#include "http_protocol.h"
9+
#include "ap_config.h"
10+
11+
static int example_handler(request_rec *r)
12+
{
13+
/* First off, we need to check if this is a call for the "example-handler" handler.
14+
* If it is, we accept it and do our things, if not, we simply return DECLINED,
15+
* and the server will try somewhere else.
16+
*/
17+
if (!r->handler || strcmp(r->handler, "example-handler")) return (DECLINED);
18+
19+
/* Now that we are handling this request, we'll write out "Hello, world!" to the client.
20+
* To do so, we must first set the appropriate content type, followed by our output.
21+
*/
22+
ap_set_content_type(r, "text/html");
23+
ap_rprintf(r, "Hello, world!");
24+
25+
/* Lastly, we must tell the server that we took care of this request and everything went fine.
26+
* We do so by simply returning the value OK to the server.
27+
*/
28+
return OK;
29+
}
30+
31+
static void register_hooks(apr_pool_t *pool)
32+
{
33+
/* Create a hook in the request handler, so we get called when a request arrives */
34+
ap_hook_handler(example_handler, NULL, NULL, APR_HOOK_LAST);
35+
}
36+
37+
AP_DECLARE_MODULE(example) =
38+
{
39+
STANDARD20_MODULE_STUFF,
40+
NULL,
41+
NULL,
42+
NULL,
43+
NULL,
44+
NULL,
45+
register_hooks /* Our hook registering function */
46+
};
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
/*
2+
* mod_example_2.c: Example module for Apache HTTP Server 2.4
3+
* This module calculates and displays MD5 or SHA1 digests of files.
4+
*/
5+
6+
#include "httpd.h"
7+
#include "http_config.h"
8+
#include "http_protocol.h"
9+
#include "ap_config.h"
10+
#include "apr_md5.h"
11+
#include "apr_sha1.h"
12+
#include "apr_file_io.h"
13+
#include "apr_tables.h"
14+
15+
static int example_handler(request_rec *r)
16+
{
17+
int rc, exists;
18+
apr_finfo_t finfo;
19+
apr_file_t *file;
20+
char *filename;
21+
char buffer[256];
22+
apr_size_t readBytes;
23+
int n;
24+
apr_table_t *GET;
25+
apr_array_header_t *POST;
26+
const char *digestType;
27+
28+
29+
/* Check that the "example-handler" handler is being called. */
30+
if (!r->handler || strcmp(r->handler, "example-handler")) return (DECLINED);
31+
32+
/* Figure out which file is being requested by removing the .sum from it */
33+
filename = apr_pstrdup(r->pool, r->filename);
34+
filename[strlen(filename)-4] = 0; /* Cut off the last 4 characters. */
35+
36+
/* Figure out if the file we request a sum on exists and isn't a directory */
37+
rc = apr_stat(&finfo, filename, APR_FINFO_MIN, r->pool);
38+
if (rc == APR_SUCCESS) {
39+
exists =
40+
(
41+
(finfo.filetype != APR_NOFILE)
42+
&& !(finfo.filetype & APR_DIR)
43+
);
44+
if (!exists) return HTTP_NOT_FOUND; /* Return a 404 if not found. */
45+
}
46+
/* If apr_stat failed, we're probably not allowed to check this file. */
47+
else return HTTP_FORBIDDEN;
48+
49+
/* Parse the GET and, optionally, the POST data sent to us */
50+
51+
ap_args_to_table(r, &GET);
52+
ap_parse_form_data(r, NULL, &POST, -1, 8192);
53+
54+
/* Set the appropriate content type */
55+
ap_set_content_type(r, "text/html");
56+
57+
/* Print a title and some general information */
58+
ap_rprintf(r, "<h2>Information on %s:</h2>", filename);
59+
ap_rprintf(r, "<b>Size:</b> %" APR_OFF_T_FMT " bytes<br/>", finfo.size);
60+
61+
/* Get the digest type the client wants to see */
62+
digestType = apr_table_get(GET, "digest");
63+
if (!digestType) digestType = "MD5";
64+
65+
66+
rc = apr_file_open(&file, filename, APR_READ, APR_OS_DEFAULT, r->pool);
67+
if (rc == APR_SUCCESS) {
68+
69+
/* Are we trying to calculate the MD5 or the SHA1 digest? */
70+
if (!strcasecmp(digestType, "md5")) {
71+
/* Calculate the MD5 sum of the file */
72+
union {
73+
char chr[16];
74+
uint32_t num[4];
75+
} digest;
76+
apr_md5_ctx_t md5;
77+
apr_md5_init(&md5);
78+
readBytes = 256;
79+
while ( apr_file_read(file, buffer, &readBytes) == APR_SUCCESS ) {
80+
apr_md5_update(&md5, buffer, readBytes);
81+
}
82+
apr_md5_final(digest.chr, &md5);
83+
84+
/* Print out the MD5 digest */
85+
ap_rputs("<b>MD5: </b><code>", r);
86+
for (n = 0; n < APR_MD5_DIGESTSIZE/4; n++) {
87+
ap_rprintf(r, "%08x", digest.num[n]);
88+
}
89+
ap_rputs("</code>", r);
90+
/* Print a link to the SHA1 version */
91+
ap_rputs("<br/><a href='?digest=sha1'>View the SHA1 hash instead</a>", r);
92+
}
93+
else {
94+
/* Calculate the SHA1 sum of the file */
95+
union {
96+
char chr[20];
97+
uint32_t num[5];
98+
} digest;
99+
apr_sha1_ctx_t sha1;
100+
apr_sha1_init(&sha1);
101+
readBytes = 256;
102+
while ( apr_file_read(file, buffer, &readBytes) == APR_SUCCESS ) {
103+
apr_sha1_update(&sha1, buffer, readBytes);
104+
}
105+
apr_sha1_final(digest.chr, &sha1);
106+
107+
/* Print out the SHA1 digest */
108+
ap_rputs("<b>SHA1: </b><code>", r);
109+
for (n = 0; n < APR_SHA1_DIGESTSIZE/4; n++) {
110+
ap_rprintf(r, "%08x", digest.num[n]);
111+
}
112+
ap_rputs("</code>", r);
113+
114+
/* Print a link to the MD5 version */
115+
ap_rputs("<br/><a href='?digest=md5'>View the MD5 hash instead</a>", r);
116+
}
117+
apr_file_close(file);
118+
119+
}
120+
/* Let the server know that we responded to this request. */
121+
return OK;
122+
}
123+
124+
static void register_hooks(apr_pool_t *pool)
125+
{
126+
/* Create a hook in the request handler, so we get called when a request arrives */
127+
ap_hook_handler(example_handler, NULL, NULL, APR_HOOK_LAST);
128+
}
129+
130+
AP_DECLARE_MODULE(example) =
131+
{
132+
STANDARD20_MODULE_STUFF,
133+
NULL,
134+
NULL,
135+
NULL,
136+
NULL,
137+
NULL,
138+
register_hooks /* Our hook registering function */
139+
};

docs/manual/developer/modguide.html.en.utf8

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ In C code, our example handler will now look like this:
296296
<p>
297297
Now, we put all we have learned together and end up with a program that
298298
looks like
299-
<a href="http://people.apache.org/~humbedooh/mods/examples/mod_example_1.c">mod_example_1.c</a>
299+
<a href="mod_example_1.c">mod_example_1.c</a>
300300
. The functions used in this example will be explained later in the section
301301
<a href="#functions">"Some useful functions you should know"</a>.
302302
</p>
@@ -706,7 +706,7 @@ out the MD5 or SHA1 digest of files:
706706

707707
<p>
708708
This version in its entirety can be found here:
709-
<a href="http://people.apache.org/~humbedooh/mods/examples/mod_example_2.c">mod_example_2.c</a>.
709+
<a href="mod_example_2.c">mod_example_2.c</a>.
710710
</p>
711711

712712

docs/manual/developer/modguide.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ static int example_handler(request_rec *r)
297297
<p>
298298
Now, we put all we have learned together and end up with a program that
299299
looks like
300-
<a href="http://people.apache.org/~humbedooh/mods/examples/mod_example_1.c">mod_example_1.c</a>
300+
<a href="mod_example_1.c">mod_example_1.c</a>
301301
. The functions used in this example will be explained later in the section
302302
<a href= "#functions">&quot;Some useful functions you should know&quot;</a>.
303303
</p>
@@ -712,7 +712,7 @@ static int example_handler(request_rec *r)
712712

713713
<p>
714714
This version in its entirety can be found here:
715-
<a href="http://people.apache.org/~humbedooh/mods/examples/mod_example_2.c">mod_example_2.c</a>.
715+
<a href="mod_example_2.c">mod_example_2.c</a>.
716716
</p>
717717
</section>
718718

0 commit comments

Comments
 (0)