OSDN Git Service

* Added Features.
authorAtsushi Konno <konn@users.sourceforge.jp>
Tue, 7 Apr 2009 13:34:18 +0000 (22:34 +0900)
committerAtsushi Konno <konn@users.sourceforge.jp>
Tue, 7 Apr 2009 13:34:18 +0000 (22:34 +0900)
    - Added ChxjPostLogEnv directive for CustomLog.

include/mod_chxj.h
src/mod_chxj.c

index fd18b6e..aa09cee 100644 (file)
@@ -356,6 +356,8 @@ struct mod_chxj_config {
   char                  *allowed_cookie_domain; /* default is null */
 
   chxj_new_line_type_t  new_line_type;
+
+  char                  *post_log;              /* post log environment name. */
 };
 
 #define IS_COOKIE_STORE_DBM(X)      ((X) == COOKIE_STORE_TYPE_DBM)
index a5e36d5..1432630 100644 (file)
@@ -262,6 +262,12 @@ chxj_headers_fixup(request_rec *r)
     else {
       char *client_ip = (char *)apr_table_get(r->headers_in, CHXJ_HEADER_ORIG_CLIENT_IP);
       if (client_ip) {
+        if (dconf->post_log) {
+          apr_table_setn(r->subprocess_env, dconf->post_log, dconf->post_log);
+        }
+        else {
+          apr_table_setn(r->subprocess_env, "chxj-post-log", "chxj-post-log");
+        }
         apr_sockaddr_t *address = NULL;
         apr_status_t rv = apr_sockaddr_info_get(&address, ap_get_server_name(r), APR_UNSPEC, ap_get_server_port(r), 0, r->pool);
         if (rv != APR_SUCCESS) {
@@ -1714,6 +1720,7 @@ chxj_create_per_dir_config(apr_pool_t *p, char *arg)
   conf->forward_url_base = NULL;
   conf->forward_server_ip = NULL;
   conf->allowed_cookie_domain = NULL;
+  conf->post_log              = NULL;
 
   if (arg == NULL) {
     conf->dir                  = NULL;
@@ -1759,6 +1766,7 @@ chxj_merge_per_dir_config(apr_pool_t *p, void *basev, void *addv)
   mrg->forward_url_base = NULL;
   mrg->forward_server_ip = NULL;
   mrg->allowed_cookie_domain = NULL;
+  mrg->post_log         = NULL;
 
   mrg->dir = apr_pstrdup(p, add->dir);
 
@@ -1984,6 +1992,12 @@ chxj_merge_per_dir_config(apr_pool_t *p, void *basev, void *addv)
   else {
     mrg->allowed_cookie_domain = base->allowed_cookie_domain;
   }
+  if (add->post_log) {
+    mrg->post_log = add->post_log;
+  }
+  else {
+    mrg->post_log = base->post_log;
+  }
   return mrg;
 }
 
@@ -2838,6 +2852,23 @@ cmd_set_new_line_type(
   return NULL;
 }
 
+static const char *
+cmd_post_log_env(
+  cmd_parms   *cmd, 
+  void        *mconfig, 
+  const char  *arg)
+{
+  mod_chxj_config  *dconf;
+  if (strlen(arg) > 255)
+    return "mod_chxj: ChxjPostLogEnv is too long.";
+
+  dconf = (mod_chxj_config *)mconfig;
+
+  dconf->post_log = apr_pstrdup(cmd->pool, arg);
+
+  return NULL;
+}
+
 
 static const command_rec cmds[] = {
   AP_INIT_TAKE1(
@@ -2994,6 +3025,12 @@ static const command_rec cmds[] = {
     NULL,
     OR_ALL,
     "Domain that permits parameter addition for cookie besides hostname.(Default:hostname Only)"),
+  AP_INIT_TAKE1(
+    "ChxjPostLogEnv",
+    cmd_post_log_env,
+    NULL,
+    OR_ALL,
+    "for CustomLog directive. mod_chxj's internal POST log environment name.(Default:chxj-post-log)"),
   {NULL}
 };