Annotation of parser3/src/targets/apache13/pa_httpd.h, revision 1.2
1.2 ! paf 1: /** @file
! 2: Parser: http wrapper.
! 3:
! 4: Copyright (c) 2003 ArtLebedev Group (http://www.artlebedev.com)
! 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
! 6: */
! 7:
! 8: #ifndef PA_HTTPD_H
! 9: #define PA_HTTPD_H
! 10:
! 11: static const char* IDENT_HTTPD_H="$Date: 2003/07/23 13:57:32 $";
! 12:
! 13: #ifdef __cplusplus
! 14: extern "C" {
! 15: #endif
! 16:
! 17: // import from c to c++
! 18:
! 19: typedef void pa_pool;
! 20: typedef void pa_server_rec;
! 21: typedef void pa_table;
! 22:
! 23: typedef struct pa_request_rec_tag {
! 24: void* real_request_rec;
! 25:
! 26: pa_pool* pool;
! 27: int header_only; /* HEAD request, as opposed to GET */
! 28: int status;
! 29: const char *method; /* GET, HEAD, POST, etc. */
! 30:
! 31: pa_table *headers_out;
! 32: void* subprocess_env;
! 33: const char *content_type;
! 34:
! 35: char *uri; /* the path portion of the URI */
! 36: char *filename; /* filename if found, otherwise NULL */
! 37: char *path_info;
! 38: char *args; /* QUERY_ARGS, if any */
! 39: struct stat* finfo; /* ST_MODE set to zero if no such file */
! 40: } pa_request_rec;
! 41:
! 42: /// apache parser module configuration [httpd.conf + .htaccess-es]
! 43: typedef struct Parser_module_config_tag {
! 44: const char* parser_config_filespec; ///< filespec of site's config file
! 45: int parser_status_allowed;
! 46: } Parser_module_config;
! 47:
! 48: const char* pa_version();
! 49: void pa_setup_module_cells();
! 50: int pa_parser_handler(pa_request_rec*, Parser_module_config*);
! 51:
! 52: // export from c to c++
! 53:
! 54:
! 55: // http_log.h
! 56:
! 57: #define PA_APLOG_EMERG 0 /* system is unusable */
! 58: #define PA_APLOG_ALERT 1 /* action must be taken immediately */
! 59: #define PA_APLOG_CRIT 2 /* critical conditions */
! 60: #define PA_APLOG_ERR 3 /* error conditions */
! 61: #define PA_APLOG_WARNING 4 /* warning conditions */
! 62: #define PA_APLOG_NOTICE 5 /* normal but significant condition */
! 63: #define PA_APLOG_INFO 6 /* informational */
! 64: #define PA_APLOG_DEBUG 7 /* debug-level messages */
! 65:
! 66: #define PA_APLOG_LEVELMASK 7 /* mask off the level value */
! 67:
! 68: #define PA_APLOG_NOERRNO (PA_APLOG_LEVELMASK + 1)
! 69:
! 70: #define PA_APLOG_MARK __FILE__,__LINE__
! 71:
! 72: void pa_ap_log_rerror(const char *file, int line, int level,
! 73: const pa_request_rec *s, const char *fmt, ...);
! 74:
! 75:
! 76: void pa_ap_log_error(const char *file, int line, int level,
! 77: const pa_server_rec *s, const char *fmt, ...);
! 78:
! 79: // ap_alloc.h
! 80:
! 81: const char * pa_ap_table_get(const pa_table *, const char *);
! 82: void pa_ap_table_addn(pa_table *, const char *name, const char *val);
! 83:
! 84: int pa_ap_table_size(const pa_table *);
! 85:
! 86: void pa_ap_table_do(int (*comp) (void *, const char *, const char *),
! 87: void *rec, const pa_table *t,...);
! 88:
! 89: char * pa_ap_pstrdup(pa_pool *, const char *s);
! 90:
! 91: // http_protocol.h
! 92:
! 93: /* Possible values for request_rec.read_body (set by handling module):
! 94: * REQUEST_NO_BODY Send 413 error if message has any body
! 95: * REQUEST_CHUNKED_ERROR Send 411 error if body without Content-Length
! 96: * REQUEST_CHUNKED_DECHUNK If chunked, remove the chunks for me.
! 97: * REQUEST_CHUNKED_PASS Pass the chunks to me without removal.
! 98: */
! 99: #define PA_REQUEST_NO_BODY 0
! 100: #define PA_REQUEST_CHUNKED_ERROR 1
! 101: #define PA_REQUEST_CHUNKED_DECHUNK 2
! 102: #define PA_REQUEST_CHUNKED_PASS 3
! 103:
! 104: int pa_ap_setup_client_block(pa_request_rec *r, int read_policy);
! 105: int pa_ap_should_client_block(pa_request_rec *r);
! 106: long pa_ap_get_client_block(pa_request_rec *r, char *buffer, int bufsiz);
! 107: void pa_ap_send_http_header(pa_request_rec *l);
! 108: int pa_ap_rwrite(const void *buf, int nbyte, pa_request_rec *r);
! 109:
! 110:
! 111: // http_main.h
! 112:
! 113: void pa_ap_hard_timeout(char *, pa_request_rec *);
! 114: void pa_ap_reset_timeout(pa_request_rec *);
! 115: void pa_ap_kill_timeout(pa_request_rec *);
! 116:
! 117:
! 118: // util_script.h
! 119:
! 120: void pa_ap_add_cgi_vars(pa_request_rec *r);
! 121: void pa_ap_add_common_vars(pa_request_rec *r);
! 122:
! 123: // httpd.h
! 124:
! 125: #define PA_HTTP_NOT_FOUND 404
! 126: #define PA_OK 0 /* Module has handled this stage. */
! 127:
! 128: // signal.h
! 129:
! 130: #define PA_SIGPIPE 1 /* must translate to real one */
! 131: #define PA_SIG_IGN (void (*)(int))1 /* must translate to real one */
! 132:
! 133: void (*pa_signal (int sig, void (*disp)(int)))(int);
! 134:
! 135: // ap_md5.h
! 136:
! 137: #define PA_MD5_DIGESTSIZE 16
! 138: typedef void PA_MD5_CTX;
! 139:
! 140: void pa_MD5Init(PA_MD5_CTX *context);
! 141: void pa_MD5Update(PA_MD5_CTX *context, const unsigned char *input,
! 142: unsigned int inputLen);
! 143: void pa_MD5Final(unsigned char digest[PA_MD5_DIGESTSIZE],
! 144: PA_MD5_CTX *context);
! 145: void pa_MD5Encode(const unsigned char *password,
! 146: const unsigned char *salt,
! 147: char *result, size_t nbytes);
! 148: void pa_to64(char *s, unsigned long v, int n);
! 149:
! 150:
! 151: #ifdef __cplusplus
! 152: }
! 153: #endif
! 154:
! 155: #endif
E-mail: