From: Jim Jagielski Date: Thu, 3 Jan 2008 13:42:06 +0000 (+0000) Subject: Backported X-Git-Tag: 2.0.62~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=359aa461445ce1b48995e5c4f4b8436b475133ef;p=thirdparty%2Fapache%2Fhttpd.git Backported git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@608484 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index e55a69a17ad..efe17672b3a 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,10 @@ Changes with Apache 2.0.62 mod_imagemap: Fix a cross-site scripting issue. Reported by JPCERT. [Joe Orton] + *) Introduce the ProxyFtpDirCharset directive, allowing the administrator + to identify a default, or specific servers or paths which list their + contents in other-than ISO-8859-1 charset (e.g. utf-8). [Ruediger Pluem] + *) log.c: Ensure Win32 resurrects its lost robust logger processes. [William Rowe] diff --git a/STATUS b/STATUS index d8a3fdb868e..046a634f291 100644 --- a/STATUS +++ b/STATUS @@ -116,14 +116,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_proxy_ftp: Introduce the ProxyFtpDirCharset directive, allowing - the administrator to identify a default, or specific servers or paths - which list their contents in other-than ISO-8859-1 charset (e.g. utf-8). - [Ruediger Pluem] - trunk version; http://svn.apache.org/viewvc?view=rev&revision=607638 - backport; - http://people.apache.org/~rpluem/patches/mod_proxy_ftp_dir_listing-2.0.diff - +1: wrowe, rpluem, jim PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ please place SVN revisions from trunk here, so it is easy to diff --git a/docs/manual/mod/mod_proxy.xml b/docs/manual/mod/mod_proxy.xml index 94c04d60d20..16f11a945b3 100644 --- a/docs/manual/mod/mod_proxy.xml +++ b/docs/manual/mod/mod_proxy.xml @@ -398,6 +398,22 @@ response + +ProxyFtpDirCharset +Define the character set for proxied FTP listings +ProxyFtpDirCharset character set +ProxyFtpDirCharset ISO-8859-1 +server configvirtual host +directory +Available in Apache 2.0.62 and later + + +

The ProxyFtpDirCharset directive defines the + character set to be set for FTP directory listings in HTML generated by + mod_proxy_ftp.

+
+
+ ProxyMatch Container for directives applied to regular-expression-matched diff --git a/include/ap_mmn.h b/include/ap_mmn.h index 2e12465bc95..8ba7f5c4f41 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -86,6 +86,7 @@ * 20020903.10 (2.0.55-dev) add ap_log_cerror() * 20020903.11 (2.0.55-dev) added trace_enable to core_server_config * 20020903.12 (2.0.56-dev) added ap_get_server_revision / ap_version_t + * 20020903.13 (2.0.62-dev) Add *ftp_directory_charset to proxy_dir_conf */ #define MODULE_MAGIC_COOKIE 0x41503230UL /* "AP20" */ @@ -93,7 +94,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20020903 #endif -#define MODULE_MAGIC_NUMBER_MINOR 12 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 13 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a diff --git a/modules/proxy/mod_proxy.c b/modules/proxy/mod_proxy.c index aa51c30cab4..84d5fb10bda 100644 --- a/modules/proxy/mod_proxy.c +++ b/modules/proxy/mod_proxy.c @@ -552,10 +552,14 @@ static void *merge_proxy_dir_config(apr_pool_t *p, void *basev, void *addv) { proxy_dir_conf *new = (proxy_dir_conf *) apr_pcalloc(p, sizeof(proxy_dir_conf)); proxy_dir_conf *add = (proxy_dir_conf *) addv; + proxy_dir_conf *base = (proxy_dir_conf *) basev; new->p = add->p; new->p_is_fnmatch = add->p_is_fnmatch; new->r = add->r; + new->ftp_directory_charset = add->ftp_directory_charset ? + add->ftp_directory_charset : + base->ftp_directory_charset; return new; } @@ -940,6 +944,15 @@ static const char* return NULL; } +static const char* set_ftp_directory_charset(cmd_parms *cmd, void *dconf, + const char *arg) +{ + proxy_dir_conf *conf = dconf; + + conf->ftp_directory_charset = arg; + return NULL; +} + static void ap_add_per_proxy_conf(server_rec *s, ap_conf_vector_t *dir_config) { proxy_server_conf *sconf = ap_get_module_config(s->module_config, @@ -1076,7 +1089,8 @@ static const command_rec proxy_cmds[] = "This overrides the server timeout"), AP_INIT_TAKE1("ProxyBadHeader", set_bad_opt, NULL, RSRC_CONF, "How to handle bad header line in response: IsError | Ignore | StartBody"), - + AP_INIT_TAKE1("ProxyFtpDirCharset", set_ftp_directory_charset, NULL, + RSRC_CONF|ACCESS_CONF, "Define the character set for proxied FTP listings"), {NULL} }; diff --git a/modules/proxy/mod_proxy.h b/modules/proxy/mod_proxy.h index 5184f2a374b..d1ed7d465ae 100644 --- a/modules/proxy/mod_proxy.h +++ b/modules/proxy/mod_proxy.h @@ -166,6 +166,7 @@ typedef struct { const char *p; /* The path */ int p_is_fnmatch; /* Is this path an fnmatch candidate? */ regex_t *r; /* Is this a regex? */ + const char *ftp_directory_charset; } proxy_dir_conf; typedef struct {