2 * Copyright (C) 2005-2009 Atsushi Konno All rights reserved.
3 * Copyright (C) 2005 QSDN,Inc. All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #ifndef __CHXJ_COOKIE_H__
18 #define __CHXJ_COOKIE_H__
21 #include "apr_file_io.h"
22 #include "apr_tables.h"
25 #define CHXJ_COOKIE_PARAM "_chxj_cc"
26 #define CHXJ_COOKIE_NOUPDATE_PARAM "_chxj_nc"
28 #define DEFAULT_COOKIE_DB_DIR "/tmp"
29 #define COOKIE_DB_NAME "cookie.db"
30 #define COOKIE_DB_LOCK_NAME "cookie.db.lock"
32 #define COOKIE_EXPIRE_DB_NAME "cookie.expire.db"
33 #define COOKIE_EXPIRE_DB_LOCK_NAME "cookie.expire.db.lock"
35 #define REFERER_COOKIE_KEY "CHXJ_REFER"
36 #define CHXJ_COOKIE_PROC_MUTEX_FILE "/tmp/chxj_cookie_mutex.lock"
39 * default cookie timeout is 30 minute
41 #define DEFAULT_COOKIE_TIMEOUT (1800)
43 extern apr_proc_mutex_t *global_cookie_mutex;
46 typedef struct cookie_t cookie_t;
51 apr_array_header_t* cookie_headers;
54 typedef struct cookie_lock_t cookie_lock_t;
56 struct cookie_lock_t {
62 extern cookie_t* chxj_save_cookie(
65 extern char* chxj_add_cookie_parameter(
70 extern int chxj_cookie_check_host(
74 extern cookie_t* chxj_load_cookie(
78 extern apr_file_t* chxj_cookie_db_lock(
81 extern void chxj_cookie_db_unlock(
85 extern void chxj_delete_cookie(request_rec *r, const char *cookie_id);
87 extern char* chxj_cookie_db_name_create(
91 extern char* chxj_cookie_db_lock_name_create(
95 extern char* chxj_cookie_expire_db_lock_name_create(
99 extern char* chxj_cookie_expire_db_name_create(
103 extern apr_file_t* chxj_cookie_expire_db_lock(
106 extern void chxj_cookie_expire_db_unlock(
110 extern void chxj_save_cookie_expire(
114 extern void chxj_delete_cookie_expire(
118 extern void chxj_cookie_expire_gc(
121 extern cookie_t* chxj_update_cookie(
123 cookie_t* old_cookie);
125 extern apr_time_t chxj_parse_cookie_expires(const char *s);
127 extern cookie_lock_t *__chxj_cookie_lock(request_rec *r, const char *filename, int line);
128 extern int __chxj_cookie_unlock(request_rec *r, cookie_lock_t *lock, const char *filename, int line);
130 extern char *chxj_add_cookie_no_update_parameter(request_rec *r, char *value);
131 extern char *chxj_cookie_only_mode(request_rec *r, const char *src, apr_size_t *len, cookie_t *cookie);
133 #define chxj_cookie_lock(X) __chxj_cookie_lock((X),__FILE__,__LINE__)
134 #define chxj_cookie_unlock(X,L) __chxj_cookie_unlock((X),(L),__FILE__,__LINE__)