for (ii=0; ii<headers->nelts; ii++) {
if (strcasecmp(hentryp[ii].key, "Set-Cookie") == 0) {
- DBG(r, "REQ[%X] cookie=[%s:%s]", (unsigned int)(apr_size_t)r, hentryp[ii].key, hentryp[ii].val);
+ DBG(r, "REQ[%X] cookie=[%s:%s]", TO_ADDR(r), hentryp[ii].key, hentryp[ii].val);
char* key;
char* val;
}
for (ii=0; ii<err_headers->nelts; ii++) {
if (strcasecmp(err_hentryp[ii].key, "Set-Cookie") == 0) {
- DBG(r, "REQ[%X] cookie=[%s:%s]", (unsigned int)(apr_size_t)r, err_hentryp[ii].key, err_hentryp[ii].val);
+ DBG(r, "REQ[%X] cookie=[%s:%s]", TO_ADDR(r), err_hentryp[ii].key, err_hentryp[ii].val);
char* key;
char* val;
char *pair;
char *header_cookie;
- DBG(r, "start chxj_load_cookie() cookie_id=[%s]", cookie_id);
+ DBG(r, "REQ[%X] start chxj_load_cookie() cookie_id=[%s]", TO_ADDR(r), cookie_id);
chxj_cookie_expire_gc(r);
cookie = (cookie_t*)apr_palloc(r->pool, sizeof(cookie_t));
dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
entryp = chxj_apply_convrule(r, dconf->convrules);
if (! entryp) {
- DBG(r, "end chxj_load_cookie() no pattern");
+ DBG(r, "REQ[%X] end chxj_load_cookie() no pattern", TO_ADDR(r));
goto on_error0;
}
if (! (entryp->action & CONVRULE_COOKIE_ON_BIT)) {
- DBG(r, "end chxj_load_cookie() CookieOff");
+ DBG(r, "REQ[%X] end chxj_load_cookie() CookieOff", TO_ADDR(r));
goto on_error0;
}
load_cookie_table = apr_table_make(r->pool, 0);
}
if (load_string) {
- DBG(r, "load_string=[%s]", load_string);
+ DBG(r, "REQ[%X] load_string=[%s]", TO_ADDR(r), load_string);
header_cookie = apr_palloc(r->pool, 1);
header_cookie[0] = 0;
for (;;) {
load_string = NULL;
if (!pair) break;
- DBG(r, "Cookie:[%s]", pair);
+ DBG(r, "REQ[%X] Cookie:[%s]", TO_ADDR(r), pair);
tmp_pair = apr_pstrdup(r->pool, pair);
val = strchr(tmp_pair, '=');
key = tmp_pair;
*val++ = 0;
apr_table_add(load_cookie_table, key, val);
- DBG(r, "ADD key:[%s] val:[%s]", key, val);
+ DBG(r, "REQ[%X] ADD key:[%s] val:[%s]", TO_ADDR(r), key, val);
}
tmp_pair = apr_pstrdup(r->pool, pair);
tmp_sem = strchr(tmp_pair, ';');
}
}
if (strlen(header_cookie)) {
- DBG(r, "ADD COOKIE to REQUEST HEADER:[%s]", header_cookie);
+ DBG(r, "REQ[%X] ADD COOKIE to REQUEST HEADER:[%s]", TO_ADDR(r), header_cookie);
apr_table_add(r->headers_in, "Cookie", header_cookie);
}
apr_table_setn(r->headers_in, "CHXJ_COOKIE_ID", cookie->cookie_id);
}
- DBG(r, "end chxj_load_cookie()");
+ DBG(r, "REQ[%X] end chxj_load_cookie()", TO_ADDR(r));
return cookie;
on_error0:
- DBG(r, "end chxj_load_cookie()");
+ DBG(r, "REQ[%X] end chxj_load_cookie()", TO_ADDR(r));
return NULL;
}
char *val;
char *pstat;
char *p = apr_pstrdup(r->pool, value);
- const char *host = apr_table_get(r->headers_in, HTTP_HOST);
+ char *host = (char *)apr_table_get(r->headers_in, HTTP_HOST);
- DBG(r, "start valid_domain() value:[%s]", value);
- DBG(r, "host:[%s]", host);
- if (!host)
+ DBG(r, "REQ[%X] start valid_domain() value:[%s]", TO_ADDR(r), value);
+ if (!host) {
+ DBG(r, "REQ[%X] end valid_domain() value:[%s]", TO_ADDR(r), value);
return CHXJ_TRUE;
+ }
+ DBG(r, "REQ[%X] host:[%s]", TO_ADDR(r), host);
+ host = s_cut_until_end_hostname(r, apr_pstrdup(r->pool, host));
+ DBG(r, "REQ[%X] host:[%s](after s_cut_until_end_hostname())", TO_ADDR(r), host);
name = apr_strtok(p,"=", &pstat);
name = qs_trim_string(r->pool, name);
len = strlen(host);
if (len) {
if (chxj_strcasenrcmp(r->pool, host, val, strlen(val))) {
- DBG(r, "not match domain. host domain:[%s] vs value:[%s]", host, val);
+ DBG(r, "REQ[%X] not match domain. host domain:[%s] vs value:[%s]", TO_ADDR(r), host, val);
+ DBG(r, "REQ[%X] end valid_domain() value:[%s]", TO_ADDR(r), value);
return CHXJ_FALSE;
}
}
- DBG(r, "end valid_domain() value:[%s]", value);
+ DBG(r, "REQ[%X] end valid_domain() value:[%s]", TO_ADDR(r), value);
return CHXJ_TRUE;
}
char *dst;
char *name = "";
- DBG(r, "start chxj_add_cookie_parameter() cookie_id=[%s]", (cookie) ? cookie->cookie_id : NULL);
+ DBG(r, "REQ[%X] start chxj_add_cookie_parameter() cookie_id=[%s]", TO_ADDR(r), (cookie) ? cookie->cookie_id : NULL);
dst = apr_pstrdup(r->pool, value);
goto on_error;
if (chxj_cookie_check_host(r, value) != 0) {
- DBG(r, "end chxj_add_cookie_parameter()(check host)");
+ DBG(r, "REQ[%X] end chxj_add_cookie_parameter()(check host)", TO_ADDR(r));
goto on_error;
}
qs = strchr(dst, '?');
if (qs) {
+ char *sv_qs = qs;
+ qs = chxj_delete_chxj_cc_param(r, ++qs);
+ DBG(r, "REQ[%X] qs:[%s]",TO_ADDR(r), qs);
+ *sv_qs = 0;
+ if (qs && strlen(qs)) {
+ dst = apr_psprintf(r->pool, "%s?%s", dst, qs);
+ }
+ }
+ if (qs) {
dst = apr_psprintf(r->pool, "%s&%s=%s%s", dst, CHXJ_COOKIE_PARAM, cookie->cookie_id, name);
}
else {
dst = apr_psprintf(r->pool, "%s?%s=%s%s", dst, CHXJ_COOKIE_PARAM, cookie->cookie_id, name);
}
- DBG(r, "end chxj_add_cookie_parameter() dst=[%s]", dst);
+ DBG(r, "REQ[%X] end chxj_add_cookie_parameter() dst=[%s]", TO_ADDR(r), dst);
return dst;
on_error:
- DBG(r, "end chxj_add_cookie_parameter() (on_error)");
+ DBG(r, "REQ[%X] end chxj_add_cookie_parameter() (on_error)", TO_ADDR(r));
return dst;
}
int
chxj_cookie_check_host(request_rec *r, char *value)
{
- char* hostnm;
+ char *hostnm;
+ mod_chxj_config *dconf;
DBG(r, "REQ[%X] start chxj_cookie_check_host()", (unsigned int)(apr_size_t)r);
- DBG(r, "hostname=[%s] vs Location:[%s]", r->hostname, value);
+ DBG(r, "REQ[%X] hostname=[%s] vs Location:[%s]", (unsigned int)(apr_size_t)r, r->hostname, value);
+
+ dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
hostnm = s_get_hostname_from_url(r, value);
if (hostnm) {
- if (strcasecmp(hostnm, r->hostname) == 0) {
- DBG(r, "REQ[%X] end chxj_cookie_check_host() (true)", (unsigned int)(apr_size_t)r);
- return 0;
+ if (dconf->allowed_cookie_domain) {
+ DBG(r, "REQ[%X] allowed_domain[%s] vs Location:[%s]", (unsigned int)(apr_size_t)r, dconf->allowed_cookie_domain, value);
+ if (chxj_strcasenrcmp(r->pool, hostnm, dconf->allowed_cookie_domain, strlen(dconf->allowed_cookie_domain))) {
+ DBG(r, "REQ[%X] end chxj_cookie_check_host() (false/allowed_domain)", (unsigned int)(apr_size_t)r);
+ return 1;
+ }
+ else {
+ DBG(r, "REQ[%X] end chxj_cookie_check_host() (true/allowed_domain)", (unsigned int)(apr_size_t)r);
+ return 0;
+ }
}
else {
- DBG(r, "REQ[%X] end chxj_cookie_check_host() (false)", (unsigned int)(apr_size_t)r);
- return 1;
+ if (strcasecmp(hostnm, r->hostname) == 0) {
+ DBG(r, "REQ[%X] end chxj_cookie_check_host() (true)", (unsigned int)(apr_size_t)r);
+ return 0;
+ }
+ else {
+ DBG(r, "REQ[%X] end chxj_cookie_check_host() (false)", (unsigned int)(apr_size_t)r);
+ return 1;
+ }
}
}
DBG(r, "REQ[%X] end chxj_cookie_check_host() (true)", (unsigned int)(apr_size_t)r);