pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc



Module Name:    pkgsrc
Committed By:   manu
Date:           Tue Aug 30 12:34:40 UTC 2016

Modified Files:
        pkgsrc/doc: CHANGES-2016
        pkgsrc/www: Makefile
Added Files:
        pkgsrc/www/ap2-encoding: DESCR Makefile PLIST distinfo
        pkgsrc/www/ap2-encoding/patches: patch-mod_encoding.c

Log Message:
Import www/ap2-encoding

This module improves non-ascii filename interoperability of apache
(and mod_dav), by supporting various client encoding.

Current license is troublesome because of its clause 4:
> 4. Products derived from this software may not be called "mod_encoding"
>    nor may "mod_encoding" appear in their names without prior written
>    permission of Internet Initiative Japan Inc. For written permission,
>    please contact tai%iij.ad.jp@localhost (Taisuke Yamada).

LICENSE is however left intionnaly blank, as Internet Initiative Japan, Inc.
may revise it in the near future. This is approved by wiz@ and soda@.


To generate a diff of this commit:
cvs rdiff -u -r1.3596 -r1.3597 pkgsrc/doc/CHANGES-2016
cvs rdiff -u -r1.1190 -r1.1191 pkgsrc/www/Makefile
cvs rdiff -u -r0 -r1.1 pkgsrc/www/ap2-encoding/DESCR \
    pkgsrc/www/ap2-encoding/Makefile pkgsrc/www/ap2-encoding/PLIST \
    pkgsrc/www/ap2-encoding/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/www/ap2-encoding/patches/patch-mod_encoding.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/doc/CHANGES-2016
diff -u pkgsrc/doc/CHANGES-2016:1.3596 pkgsrc/doc/CHANGES-2016:1.3597
--- pkgsrc/doc/CHANGES-2016:1.3596      Tue Aug 30 10:59:06 2016
+++ pkgsrc/doc/CHANGES-2016     Tue Aug 30 12:34:39 2016
@@ -1,4 +1,4 @@
-$NetBSD: CHANGES-2016,v 1.3596 2016/08/30 10:59:06 plunky Exp $
+$NetBSD: CHANGES-2016,v 1.3597 2016/08/30 12:34:39 manu Exp $
 
 Changes to the packages collection and infrastructure in 2016:
 
@@ -5140,3 +5140,4 @@ Changes to the packages collection and i
        Removed cad/qcad-manual-hu [plunky 2016-08-30]
        Updated cad/qcad to 3.15.5.4 [plunky 2016-08-30]
        Updated cad/qcad-partlibrary to 20160819 [plunky 2016-08-30]
+       Added www/ap2-encoding 20021209 [manu 2016-08-30]

Index: pkgsrc/www/Makefile
diff -u pkgsrc/www/Makefile:1.1190 pkgsrc/www/Makefile:1.1191
--- pkgsrc/www/Makefile:1.1190  Thu Aug 25 00:17:04 2016
+++ pkgsrc/www/Makefile Tue Aug 30 12:34:39 2016
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.1190 2016/08/25 00:17:04 markd Exp $
+# $NetBSD: Makefile,v 1.1191 2016/08/30 12:34:39 manu Exp $
 #
 
 COMMENT=       Packages related to the World Wide Web
@@ -31,6 +31,7 @@ SUBDIR+=      ap2-auth-xradius
 SUBDIR+=       ap2-authn-otp
 SUBDIR+=       ap2-bw
 SUBDIR+=       ap2-cband
+SUBDIR+=       ap2-encoding
 SUBDIR+=       ap2-fcgid
 SUBDIR+=       ap2-jk
 SUBDIR+=       ap2-limitipconn

Added files:

Index: pkgsrc/www/ap2-encoding/DESCR
diff -u /dev/null pkgsrc/www/ap2-encoding/DESCR:1.1
--- /dev/null   Tue Aug 30 12:34:40 2016
+++ pkgsrc/www/ap2-encoding/DESCR       Tue Aug 30 12:34:39 2016
@@ -0,0 +1,20 @@
+This module improves non-ascii filename interoperability of apache
+(and mod_dav).
+
+It seems many WebDAV clients send filename in its platform-local
+encoding. But since mod_dav expects everything, even HTTP request
+line, to be in UTF-8, this causes an interoperability problem.
+
+I believe this is a future issue for specification (RFC?) to
+standardize encoding used in HTTP request-line and HTTP header, but
+life would be much easier if mod_dav (and others) can handle various
+encodings sent by clients, TODAY. This module does just that.
+
+This module adds following directives: EncodingEngine, SetServerEncoding,
+AddClientEncoding, DefaultClientEncoding, and NormalizeUsername.
+
+Note by maintainer:
+       It also solves the problem with the "hostname\\username"
+       way of authentication that Windows machines do when they
+       attach to a DAV server. See the use of the NormalizeUsername
+       directive.
Index: pkgsrc/www/ap2-encoding/Makefile
diff -u /dev/null pkgsrc/www/ap2-encoding/Makefile:1.1
--- /dev/null   Tue Aug 30 12:34:40 2016
+++ pkgsrc/www/ap2-encoding/Makefile    Tue Aug 30 12:34:39 2016
@@ -0,0 +1,27 @@
+# $NetBSD: Makefile,v 1.1 2016/08/30 12:34:39 manu Exp $
+
+DISTNAME=              mod_encoding-20021209
+PKGNAME=               ${APACHE_PKG_PREFIX}-${DISTNAME:S/mod_//}
+CATEGORIES=            www
+MASTER_SITES=          http://webdav.todo.gr.jp/download/
+
+MAINTAINER=            pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=              http://webdav.todo.gr.jp/
+COMMENT=               Non-ascii filename interoperability
+#LICENSE=              # Pending change from Internet Initiative Japan, Inc.
+
+PKG_APACHE_ACCEPTED=   apache22 apache24
+
+APACHE_MODULE_NAME=    ${DISTNAME:C/-.*//}.la
+GNU_CONFIGURE=         yes
+
+DOC_DIR=               share/doc/${DISTNAME:C/-.*//}
+INSTALLATION_DIRS+=    lib/httpd ${DOC_DIR}
+PLIST_SUBST+=           DOC_DIR=${DOC_DIR}
+
+post-install:
+       ${INSTALL_DATA} ${WRKSRC}/README ${DESTDIR}${PREFIX}/${DOC_DIR}
+       ${INSTALL_DATA} ${WRKSRC}/README.JP ${DESTDIR}${PREFIX}/${DOC_DIR}
+
+.include "../../mk/apache.module.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/www/ap2-encoding/PLIST
diff -u /dev/null pkgsrc/www/ap2-encoding/PLIST:1.1
--- /dev/null   Tue Aug 30 12:34:40 2016
+++ pkgsrc/www/ap2-encoding/PLIST       Tue Aug 30 12:34:39 2016
@@ -0,0 +1,4 @@
+@comment $NetBSD: PLIST,v 1.1 2016/08/30 12:34:39 manu Exp $
+lib/httpd/mod_encoding.so
+${DOC_DIR}/README
+${DOC_DIR}/README.JP
Index: pkgsrc/www/ap2-encoding/distinfo
diff -u /dev/null pkgsrc/www/ap2-encoding/distinfo:1.1
--- /dev/null   Tue Aug 30 12:34:40 2016
+++ pkgsrc/www/ap2-encoding/distinfo    Tue Aug 30 12:34:39 2016
@@ -0,0 +1,7 @@
+$NetBSD: distinfo,v 1.1 2016/08/30 12:34:39 manu Exp $
+
+SHA1 (mod_encoding-20021209.tar.gz) = 019d112d14e9b3d38aca84010726f8af480a43f5
+RMD160 (mod_encoding-20021209.tar.gz) = b0d731f427bb724c402503e4cbc98d78878b94fe
+SHA512 (mod_encoding-20021209.tar.gz) = 64ba7e15ac62c86560b522fc261d3f1b819af65a56f90016f64c840f1f3997efaa9578b5efcee8a05b4f2a97cecafae107e4d745e88bba76384f6589bf44dba6
+Size (mod_encoding-20021209.tar.gz) = 260587 bytes
+SHA1 (patch-mod_encoding.c) = ac5cd0c12aa9e27fcc4b3f44e00fdef787224c3c

Index: pkgsrc/www/ap2-encoding/patches/patch-mod_encoding.c
diff -u /dev/null pkgsrc/www/ap2-encoding/patches/patch-mod_encoding.c:1.1
--- /dev/null   Tue Aug 30 12:34:40 2016
+++ pkgsrc/www/ap2-encoding/patches/patch-mod_encoding.c        Tue Aug 30 12:34:40 2016
@@ -0,0 +1,541 @@
+$NetBSD: patch-mod_encoding.c,v 1.1 2016/08/30 12:34:40 manu Exp $
+
+Patches for Apache 2 from https://github.com/aosm/apache_mod_encoding2
+
+--- mod_encoding.c.orig
++++ mod_encoding.c
+@@ -4,4 +4,68 @@
+  *
+  */
++/*
++ * mod_encoding core module test implementation for Apache2.
++ *  by Kunio Miyamoto (wakatono%todo.gr.jp@localhost)
++ * Original security fix port 2002/06/06
++ *  by Kunio Miyamoto (wakatono%todo.gr.jp@localhost)
++ * Port new function of 20020611a
++ *  by Kunio Miyamoto (wakatono%todo.gr.jp@localhost)
++ * Port new function of 20020611a
++ *  by Kunio Miyamoto (wakatono%todo.gr.jp@localhost)
++ * Add COPYING statement for redistribute only this code.
++ *  by Kunio Miyamoto (wakatono%todo.gr.jp@localhost)
++ */
++/*
++
++
++Copyright (c) 2000-2004
++Internet Initiative Japan Inc. and Kunio Miyamoto All rights reserved.
++
++Redistribution and use in source and binary forms, with or without
++modification, are permitted provided that the following conditions
++are met:
++
++1. Redistributions of source code must retain the above copyright
++   notice, this list of conditions and the following disclaimer. 
++
++2. Redistributions in binary form must reproduce the above copyright
++   notice, this list of conditions and the following disclaimer in
++   the documentation and/or other materials provided with the
++   distribution.
++
++3. All advertising materials mentioning features or use of this
++   software must display the following acknowledgment:
++
++     This product includes software developed by Internet
++     Initiative Japan Inc. and Kunio Miyamoto for use in the 
++     mod_encoding module for Apache2.
++
++4. Products derived from this software may not be called "mod_encoding"
++   nor may "mod_encoding" appear in their names without prior written
++   permission of Internet Initiative Japan Inc. For written permission,
++   please contact tai%iij.ad.jp@localhost (Taisuke Yamada).
++
++5. Redistributions of any form whatsoever must retain the following
++   acknowledgment:
++
++     This product includes software developed by Internet
++     Initiative Japan Inc. and Kunio Miyamoto for use in the
++     mod_encoding module for Apache2 (http://www.apache.org/).
++
++THIS SOFTWARE IS PROVIDED BY INTERNET INITIATIVE JAPAN INC. AND KUNIO
++MIYAMOTO ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
++BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
++FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
++INTERNET INITIATIVE JAPAN INC., KUNIO MIYAMOTO OR ITS CONTRIBUTORS
++BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
++OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
++OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
++BUSINESS INTERRUPTION)
++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
++STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
++OF THE POSSIBILITY OF SUCH DAMAGE.
++
++*/
+ 
+ #include <httpd.h>
+@@ -21,26 +88,21 @@
+  *
+  * Note UTF-8 is the implicit default and will be tried first,
+  * regardless of user configuration.
+  */
++#define DEBUG 0
+ 
+ #ifndef MOD_ENCODING_DEBUG
+-#ifdef DEBUG
++#if DEBUG
+ #define MOD_ENCODING_DEBUG 1
+ #else
+ #define MOD_ENCODING_DEBUG 0
+ #endif
+ #endif
+ 
+ #define DBG(expr) if (MOD_ENCODING_DEBUG) { expr; }
+ 
+-#ifdef __GNUC__
+-#define LOG(level, server, args...) \
+-        ap_log_error(APLOG_MARK, APLOG_NOERRNO|level, server, ##args)
+-#else
+-#define LOG(level, server, ...) \
+-        ap_log_error(APLOG_MARK, APLOG_NOERRNO|level, server, __VA_ARGS__)
+-#endif
++/* FIXME: remove gcc-dependency */
+ 
+ #define ENABLE_FLAG_UNSET 0
+ #define ENABLE_FLAG_OFF   1
+ #define ENABLE_FLAG_ON    2
+@@ -54,15 +116,15 @@
+  */
+ typedef struct {
+   int           enable_function;  /* flag to enable this module */
+   char         *server_encoding;  /* server-side filesystem encoding */
+-  array_header *client_encoding;  /* useragent-to-encoding-list sets */
+-  array_header *default_encoding; /* useragent-to-encoding-list sets */
++  apr_array_header_t *client_encoding;  /* useragent-to-encoding-list sets */
++  apr_array_header_t *default_encoding; /* useragent-to-encoding-list sets */
+ 
+-  int           strip_msaccount;  /* normalize wierd WinXP username */
++ int strip_msaccount;                   /* normalize wierd WinXP username */
+ } encoding_config;
+ 
+-module MODULE_VAR_EXPORT encoding_module;
++module AP_MODULE_DECLARE_DATA encoding_module;
+ 
+ /***************************************************************************
+  * utility methods
+  ***************************************************************************/
+@@ -82,24 +144,21 @@
+   char   *outbuf, *marker;
+   size_t  outlen;
+ 
+   if (srclen == 0) {
+-    LOG(APLOG_DEBUG, r->server, "iconv_string: skipping zero-length input");
+     return srcbuf;
+   }
+ 
+   /* Allocate space for conversion. Note max bloat factor is 4 of UCS-4 */
+-  marker = outbuf = (char *)ap_palloc(r->pool, outlen = srclen * 4 + 1);
++  marker = outbuf = (char *)apr_palloc(r->pool, outlen = srclen * 4 + 1);
+ 
+   if (outbuf == NULL) {
+-    LOG(APLOG_WARNING, r->server, "iconv_string: no more memory");
+     return NULL;
+   }
+ 
+   /* Convert every character within input string. */
+   while (srclen > 0) {
+     if (iconv(cd, &srcbuf, &srclen, &outbuf, &outlen) == (size_t)(-1)) {
+-      LOG(APLOG_DEBUG, r->server, "iconv_string: conversion error");
+       return NULL;
+     }
+   }
+ 
+@@ -139,13 +198,13 @@
+   ap_getparents(r->uri); /* normalize given path for security */
+ 
+   /* Normalize encoding in HTTP request header(s) */
+   for (i = 0 ; keys[i] ; i++) {
+-    if ((buff = (char *)ap_table_get(r->headers_in, keys[i])) != NULL) {
++    if ((buff = (char *)apr_table_get(r->headers_in, keys[i])) != NULL) {
+       ap_unescape_url(buff);
+       if ((buff = iconv_string(r, cd, buff, strlen(buff))) == NULL)
+       return -1;
+-      ap_table_set(r->headers_in, keys[i], buff);
++      apr_table_set(r->headers_in, keys[i], buff);
+     }
+   }
+ 
+   return 0;
+@@ -158,45 +217,39 @@
+  * @param r      Apache request object structure
+  * @param encmap Table of UA-to-encoding(s)
+  * @param lookup Name of the useragent to look for
+  */
+-static array_header *
++static apr_array_header_t *
+ get_client_encoding(request_rec *r,
+-                  array_header *encmap, const char *lookup) {
++                  apr_array_header_t *encmap, const char *lookup) {
+   void         **list = (void **)encmap->elts;
+-  array_header  *encs = ap_make_array(r->pool, 1, sizeof(char *));
++  apr_array_header_t  *encs = apr_array_make(r->pool, 1, sizeof(char *));
+ 
+   int i;
+ 
+-  LOG(APLOG_DEBUG, r->server, "get_client_encoding: entered");
+ 
+   /* push UTF-8 as the first candidate of expected encoding */
+-  *((char **)ap_push_array(encs)) = ap_pstrdup(r->pool, "UTF-8");
++  *((char **)apr_array_push(encs)) = apr_pstrdup(r->pool, "UTF-8");
+ 
+   if (! lookup)
+     return encs;
+ 
+-  LOG(APLOG_DEBUG, r->server, "get_client_encoding: lookup == %s", lookup);
+ 
+   for (i = 0 ; i < encmap->nelts ; i += 2) {
+-    if (ap_regexec((regex_t *)list[i], lookup, 0, NULL, 0) == 0) {
+-      LOG(APLOG_DEBUG, r->server, "get_client_encoding: entry found");
+-      ap_array_cat(encs, (array_header *)list[i + 1]);
++    if (ap_regexec((ap_regex_t *)list[i], lookup, 0, NULL, 0) == 0) {
++      apr_array_cat(encs, (apr_array_header_t *)list[i + 1]);
+       return encs;
+     }
+   }
+ 
+-  LOG(APLOG_DEBUG, r->server, "get_client_encoding: entry not found");
+   return encs;
+ }
+ 
+ /**
+  * Handler for "EncodingEngine" directive.
+  */
+ static const char *
+ set_encoding_engine(cmd_parms *cmd, encoding_config *conf, int flag) {
+-  LOG(APLOG_DEBUG, cmd->server, "set_encoding_engine: entered");
+-  LOG(APLOG_DEBUG, cmd->server, "set_encoding_engine: flag == %d", flag);
+ 
+   if (! cmd->path) {
+     conf = ap_get_module_config(cmd->server->module_config, &encoding_module);
+   }
+@@ -209,15 +262,13 @@
+  * Handler for "SetServerEncoding" directive.
+  */
+ static const char *
+ set_server_encoding(cmd_parms *cmd, encoding_config *conf, char *arg) {
+-  LOG(APLOG_DEBUG, cmd->server, "set_server_encoding: entered");
+-  LOG(APLOG_DEBUG, cmd->server, "set_server_encoding: arg == %s", arg);
+ 
+   if (! cmd->path) {
+     conf = ap_get_module_config(cmd->server->module_config, &encoding_module);
+   }
+-  conf->server_encoding = ap_pstrdup(cmd->pool, arg);
++  conf->server_encoding = apr_pstrdup(cmd->pool, arg);
+   
+   return NULL;
+ }
+ 
+@@ -228,33 +279,29 @@
+  * encoding(s) from that useragent.
+  */
+ static const char *
+ add_client_encoding(cmd_parms *cmd, encoding_config *conf, char *args) {
+-  array_header    *encs;
++  apr_array_header_t    *encs;
+   char            *arg;
+ 
+-  LOG(APLOG_DEBUG, cmd->server, "add_client_encoding: entered");
+-  LOG(APLOG_DEBUG, cmd->server, "add_client_encoding: args == %s", args);
+ 
+   if (! cmd->path) {
+     conf = ap_get_module_config(cmd->server->module_config, &encoding_module);
+   }
+ 
+-  encs = ap_make_array(cmd->pool, 1, sizeof(void *));
++  encs = apr_array_make(cmd->pool, 1, sizeof(void *));
+ 
+   /* register useragent with UserAgent: pattern */
+   if (*args && (arg = ap_getword_conf_nc(cmd->pool, &args))) {
+-    LOG(APLOG_DEBUG, cmd->server, "add_client_encoding: agent: %s", arg);
+-    *(void **)ap_push_array(conf->client_encoding) =
+-      ap_pregcomp(cmd->pool, arg, REG_EXTENDED|REG_ICASE|REG_NOSUB);
++    *(void **)apr_array_push(conf->client_encoding) =
++      ap_pregcomp(cmd->pool, arg, AP_REG_EXTENDED|AP_REG_ICASE|AP_REG_NOSUB);
+   }
+ 
+   /* register list of possible encodings from above useragent */
+   while (*args && (arg = ap_getword_conf_nc(cmd->pool, &args))) {
+-    LOG(APLOG_DEBUG, cmd->server, "add_client_encoding: encname: %s", arg);
+-    *(void **)ap_push_array(encs) = ap_pstrdup(cmd->pool, arg);
++    *(void **)apr_array_push(encs) = apr_pstrdup(cmd->pool, arg);
+   }
+-  *(void **)ap_push_array(conf->client_encoding) = encs;
++  *(void **)apr_array_push(conf->client_encoding) = encs;
+ 
+   return NULL;
+ }
+ 
+@@ -266,22 +313,19 @@
+ static const char *
+ default_client_encoding(cmd_parms *cmd, encoding_config *conf, char *args) {
+   char *arg;
+ 
+-  LOG(APLOG_DEBUG, cmd->server, "default_client_encoding: entered");
+-  LOG(APLOG_DEBUG, cmd->server, "default_client_encoding: args == %s", args);
+ 
+   if (! cmd->path) {
+     conf = ap_get_module_config(cmd->server->module_config, &encoding_module);
+   }
+ 
+-  conf->default_encoding = ap_make_array(cmd->pool, 1, sizeof(char *));
++  conf->default_encoding = apr_array_make(cmd->pool, 1, sizeof(char *));
+ 
+   /* register list of possible encodings as a default */
+   while (*args && (arg = ap_getword_conf_nc(cmd->pool, &args))) {
+-    LOG(APLOG_DEBUG, cmd->server, "default_client_encoding: encname: %s", arg);
+-    *(void **)ap_push_array(conf->default_encoding)
+-      = ap_pstrdup(cmd->pool, arg);
++    *(void **)apr_array_push(conf->default_encoding)
++      = apr_pstrdup(cmd->pool, arg);
+   }
+ 
+   return NULL;
+ }
+@@ -293,10 +337,8 @@
+  *       So where should this go?
+  */
+ static const char *
+ set_normalize_username(cmd_parms *cmd, encoding_config *conf, int flag) {
+-  LOG(APLOG_DEBUG, cmd->server, "set_normalize_username: entered");
+-  LOG(APLOG_DEBUG, cmd->server, "set_normalize_username: flag == %d", flag);
+ 
+   if (! cmd->path) {
+     conf = ap_get_module_config(cmd->server->module_config, &encoding_module);
+   }
+@@ -342,17 +384,17 @@
+ /**
+  * Setup server-level module internal data strcuture.
+  */
+ static void *
+-server_setup(pool *p, server_rec *s) {
++server_setup(apr_pool_t *p, server_rec *s) {
+   encoding_config *conf;
+ 
+   DBG(fprintf(stderr, "server_setup: entered\n"));
+ 
+-  conf = (encoding_config *)ap_pcalloc(p, sizeof(encoding_config));
++  conf = (encoding_config *)apr_pcalloc(p, sizeof(encoding_config));
+   conf->enable_function  = ENABLE_FLAG_UNSET;
+   conf->server_encoding  = NULL;
+-  conf->client_encoding  = ap_make_array(p, 2, sizeof(void *));
++  conf->client_encoding  = apr_array_make(p, 2, sizeof(void *));
+   conf->default_encoding = NULL;
+   conf->strip_msaccount  = STRIP_FLAG_UNSET;
+ 
+   return conf;
+@@ -361,25 +403,25 @@
+ /**
+  * Setup folder-level module internal data strcuture.
+  */
+ static void *
+-folder_setup(pool *p, char *dir) {
++folder_setup(apr_pool_t *p, char *dir) {
+   DBG(fprintf(stderr, "folder_setup: entered\n"));
+   return server_setup(p, NULL);
+ }
+ 
+ /**
+  * Merge configuration.
+  */
+ static void *
+-config_merge(pool *p, void *base, void *override) {
++config_merge(apr_pool_t *p, void *base, void *override) {
+   encoding_config *parent = base;
+   encoding_config *child  = override;
+   encoding_config *merge;
+ 
+   DBG(fprintf(stderr, "config_merge: entered\n"));
+ 
+-  merge = (encoding_config *)ap_pcalloc(p, sizeof(encoding_config));
++  merge = (encoding_config *)apr_pcalloc(p, sizeof(encoding_config));
+ 
+   if (child->enable_function != ENABLE_FLAG_UNSET)
+     merge->enable_function =  child->enable_function;
+   else
+@@ -387,15 +429,16 @@
+ 
+   DBG(fprintf(stderr,
+             "merged: enable_function == %d\n", merge->enable_function));
+ 
++
+   if (child->strip_msaccount != STRIP_FLAG_UNSET)
+     merge->strip_msaccount =  child->strip_msaccount;
+   else
+     merge->strip_msaccount = parent->strip_msaccount;
+ 
+   DBG(fprintf(stderr,
+-            "merged: strip_msaccount == %d\n", merge->strip_msaccount));
++            "merged: strip_msaccount == %d\n", merge->strip_msaccount));
+ 
+   if (child->server_encoding)
+     merge->server_encoding =  child->server_encoding;
+   else
+@@ -409,9 +452,9 @@
+   else
+     merge->default_encoding = parent->default_encoding;
+ 
+   merge->client_encoding =
+-    ap_append_arrays(p, child->client_encoding, parent->client_encoding);
++    apr_array_append(p, child->client_encoding, parent->client_encoding);
+ 
+   return merge;
+ }
+ 
+@@ -423,61 +466,57 @@
+  * server-side expected encoding.
+  */
+ static int
+ mod_enc_convert(request_rec *r) {
+-  encoding_config *conf, *dconf, *sconf;
++  encoding_config  *conf, *dconf, *sconf;
+ 
+   const char      *oenc; /* server-side encoding */
+-  array_header    *ienc; /* list of possible encodings */
++  apr_array_header_t    *ienc; /* list of possible encodings */
+   void           **list; /* same as above (for iteration) */
+ 
+   iconv_t cd;            /* conversion descriptor */
+ 
+   int i;
+ 
+-  LOG(APLOG_DEBUG, r->server, "mod_enc_convert: entered");
+ 
+   sconf = ap_get_module_config(r->server->module_config, &encoding_module);
+   dconf = ap_get_module_config(r->per_dir_config, &encoding_module);
+    conf = config_merge(r->pool, sconf, dconf);
+ 
++ DBG(fprintf(stderr, "mod_enc_convert: entered\n"));
++
+   if (conf->enable_function != ENABLE_FLAG_ON) {
+     return DECLINED;
+   }
+ 
+   oenc = conf->server_encoding ? conf->server_encoding : "UTF-8";
+   ienc = get_client_encoding(r, conf->client_encoding,
+-                           ap_table_get(r->headers_in, "User-Agent"));
++                           apr_table_get(r->headers_in, "User-Agent"));
+ 
+   if (conf->default_encoding)
+-    ap_array_cat(ienc, conf->default_encoding);
++    apr_array_cat(ienc, conf->default_encoding);
+ 
+   list = (void **)ienc->elts;
+ 
+-  LOG(APLOG_DEBUG, r->server, "mod_enc_convert: oenc == %s", oenc);
+ 
+   /* try specified encodings in order */
+   for (i = 0 ; i < ienc->nelts ; i++) {
+-    LOG(APLOG_DEBUG,
+-      r->server, "mod_enc_convert: ienc <> %s", (char *)list[i]);
+-
++    DBG(fprintf(stderr, "mod_enc_convert: trying\n"));
+     /* pick appropriate converter module */
+     if ((cd = iconv_open(oenc, list[i])) == (iconv_t)(-1))
+       continue;
+ 
+     /* conversion tryout */
+     if (iconv_header(r, cd) == 0) {
+-      LOG(APLOG_DEBUG,
+-        r->server, "mod_enc_convert: ienc == %s", (char *)list[i]);
+       iconv_close(cd);
++      DBG(fprintf(stderr, "mod_enc_convert: converted\n"));
+       return DECLINED;
+     }
+ 
+     /* don't fail, but just continue on until list ends */
+     iconv_close(cd);
+   }
+ 
+-  LOG(APLOG_WARNING, r->server, "mod_enc_convert: no conversion done");
+ 
+   return DECLINED;
+ }
+ 
+@@ -494,10 +533,8 @@
+   const char *pass;
+   char       *user;
+   char       *buff;
+ 
+-  LOG(APLOG_DEBUG, r->server, "mod_enc_parse: entered");
+-
+   sconf = ap_get_module_config(r->server->module_config, &encoding_module);
+   dconf = ap_get_module_config(r->per_dir_config, &encoding_module);
+    conf = config_merge(r->pool, sconf, dconf);
+ 
+@@ -512,46 +549,43 @@
+     if (ap_get_basic_auth_pw(r, &pass) != OK)
+       return DECLINED;
+ 
+     /* Is this username broken? */
+-    if ((user = index(r->connection->user, '\\')) == NULL)
++    if ((user = index(r->user, '\\')) == NULL)
+       return DECLINED;
+ 
+     /* Re-generate authorization header */
+     if (*(user + 1)) {
+       buff = ap_pbase64encode(r->pool,
+-                            ap_psprintf(r->pool, "%s:%s", user + 1, pass));
+-      ap_table_set(r->headers_in, "Authorization",
+-                 ap_pstrcat(r->pool, "Basic ", buff, NULL));
++                              apr_psprintf(r->pool, "%s:%s", user + 1, pass));
++      apr_table_set(r->headers_in, "Authorization",
++                   apr_pstrcat(r->pool, "Basic ", buff, NULL));
+ 
+       ap_get_basic_auth_pw(r, &pass); /* update */
+     }
+   }
+ 
+   return DECLINED;
+ }
+ 
++static void register_hooks(apr_pool_t *p)
++{
++      /* filename-to-URI translation */
++/*    ap_hook_translate_name(mod_enc_convert,NULL,NULL,APR_HOOK_FIRST); */
++      ap_hook_post_read_request(mod_enc_convert,NULL,NULL,APR_HOOK_FIRST);
++      ap_hook_header_parser(mod_enc_parse,NULL,NULL,APR_HOOK_FIRST); 
++}
++
+ /***************************************************************************
+  * exported module structure
+  ***************************************************************************/
+ 
+-module MODULE_VAR_EXPORT encoding_module = {
+-  STANDARD_MODULE_STUFF,
+-  NULL,             /* initializer */
+-  folder_setup,     /* dir config */
+-  config_merge,     /* dir config merger */
+-  server_setup,     /* server config */
+-  config_merge,     /* server config merger */
+-  mod_enc_commands, /* command table */
+-  NULL,             /* handlers */
+-  NULL,             /* filename translation */
+-  NULL,             /* check_user_id */
+-  NULL,             /* check auth */
+-  NULL,             /* check access */
+-  NULL,             /* type_checker */
+-  NULL,             /* fixups */
+-  NULL,             /* logger */
+-  mod_enc_parse,    /* header parser */
+-  NULL,             /* child_init */
+-  NULL,             /* child_exit */
+-  mod_enc_convert,  /* post read-request */
++module AP_MODULE_DECLARE_DATA encoding_module = {
++  STANDARD20_MODULE_STUFF,
++  folder_setup,     /* create per-directory config structure */
++  config_merge,     /* merge per-directory(?) config str */
++  server_setup,     /* create per-server config structure */
++  config_merge,     /* merge per-server config ...*/
++  mod_enc_commands, /* command handlers */
++  register_hooks
+ };
++



Home | Main Index | Thread Index | Old Index