Index: docs/manual/mod/mod_proxy.xml =================================================================== --- docs/manual/mod/mod_proxy.xml (revision 607638) +++ docs/manual/mod/mod_proxy.xml (working copy) @@ -369,6 +369,22 @@ + +ProxyFtpDirCharset +Define the character set for proxied FTP listings +ProxyFtpDirCharset character set +ProxyFtpDirCharset ISO-8859-1 +server configvirtual host +directory +Available in Apache 2.2.7 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 Index: modules/proxy/mod_proxy.c =================================================================== --- modules/proxy/mod_proxy.c (revision 607638) +++ modules/proxy/mod_proxy.c (working copy) @@ -1024,6 +1024,9 @@ = apr_array_append(p, base->cookie_domains, add->cookie_domains); new->cookie_path_str = base->cookie_path_str; new->cookie_domain_str = base->cookie_domain_str; + new->ftp_directory_charset = add->ftp_directory_charset ? + add->ftp_directory_charset : + base->ftp_directory_charset; return new; } @@ -1724,6 +1727,15 @@ 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, @@ -1931,6 +1943,8 @@ "Configure Status: proxy status to one of: on | off | full"), AP_INIT_RAW_ARGS("ProxySet", set_proxy_param, NULL, RSRC_CONF|ACCESS_CONF, "A balancer or worker name with list of params"), + AP_INIT_TAKE1("ProxyFtpDirCharset", set_ftp_directory_charset, NULL, + RSRC_CONF|ACCESS_CONF, "Define the character set for proxied FTP listings"), {NULL} }; Index: modules/proxy/mod_proxy.h =================================================================== --- modules/proxy/mod_proxy.h (revision 607638) +++ modules/proxy/mod_proxy.h (working copy) @@ -212,6 +212,7 @@ apr_array_header_t* cookie_domains; const apr_strmatch_pattern* cookie_path_str; const apr_strmatch_pattern* cookie_domain_str; + const char *ftp_directory_charset; } proxy_dir_conf; typedef struct { Index: modules/proxy/mod_proxy_ftp.c =================================================================== --- modules/proxy/mod_proxy_ftp.c (revision 607638) +++ modules/proxy/mod_proxy_ftp.c (working copy) @@ -1690,7 +1690,13 @@ /* set content-type */ if (dirlisting) { - ap_set_content_type(r, "text/html"); + proxy_dir_conf *dconf = ap_get_module_config(r->per_dir_config, + &proxy_module); + + ap_set_content_type(r, apr_pstrcat(p, "text/html;charset=", + dconf->ftp_directory_charset ? + dconf->ftp_directory_charset : + "ISO-8859-1", NULL)); } else { if (r->content_type) { Index: include/ap_mmn.h =================================================================== --- include/ap_mmn.h (revision 607638) +++ include/ap_mmn.h (working copy) @@ -119,6 +119,7 @@ * 20051115.8 (2.2.7) Added flags to proxy_alias (minor) * 20051115.9 (2.2.7) Add ap_send_interim_response API * 20051115.10(2.2.7) Added ap_mod_status_reqtail (minor) + * 20051115.11(2.2.7) Add *ftp_directory_charset to proxy_dir_conf * */ @@ -127,7 +128,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20051115 #endif -#define MODULE_MAGIC_NUMBER_MINOR 10 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 11 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a