Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef LOG_ACCESS_HTTP_H
00027 #define LOG_ACCESS_HTTP_H
00028
00029 #include "Arena.h"
00030 #include "HTTP.h"
00031 #include "LogAccess.h"
00032
00033 class HttpSM;
00034 class URL;
00035
00036
00037
00038
00039
00040
00041
00042
00043 class LogAccessHttp:public LogAccess
00044 {
00045 public:
00046 LogAccessHttp(HttpSM * sm);
00047 virtual ~ LogAccessHttp();
00048
00049 void init();
00050 LogEntryType entry_type()
00051 {
00052 return LOG_ENTRY_HTTP;
00053 }
00054
00055
00056
00057
00058 virtual int marshal_client_host_ip(char *);
00059 virtual int marshal_client_host_port(char *);
00060 virtual int marshal_client_auth_user_name(char *);
00061 virtual int marshal_client_req_text(char *);
00062 virtual int marshal_client_req_http_method(char *);
00063 virtual int marshal_client_req_url(char *);
00064 virtual int marshal_client_req_url_canon(char *);
00065 virtual int marshal_client_req_unmapped_url_canon(char *);
00066 virtual int marshal_client_req_unmapped_url_path(char *);
00067 virtual int marshal_client_req_unmapped_url_host(char *);
00068 virtual int marshal_client_req_url_path(char *);
00069 virtual int marshal_client_req_url_scheme(char *);
00070 virtual int marshal_client_req_http_version(char *);
00071 virtual int marshal_client_req_header_len(char *);
00072 virtual int marshal_client_req_body_len(char *);
00073 virtual int marshal_client_finish_status_code(char *);
00074
00075
00076
00077
00078 virtual int marshal_proxy_resp_content_type(char *);
00079 virtual int marshal_proxy_resp_squid_len(char *);
00080 virtual int marshal_proxy_resp_content_len(char *);
00081 virtual int marshal_proxy_resp_status_code(char *);
00082 virtual int marshal_proxy_resp_header_len(char *);
00083 virtual int marshal_proxy_finish_status_code(char *);
00084 virtual int marshal_cache_result_code(char *);
00085
00086
00087
00088
00089 virtual int marshal_proxy_req_header_len(char *);
00090 virtual int marshal_proxy_req_body_len(char *);
00091 virtual int marshal_proxy_req_server_name(char *);
00092 virtual int marshal_proxy_req_server_ip(char *);
00093 virtual int marshal_proxy_hierarchy_route(char *);
00094
00095
00096
00097
00098 virtual int marshal_server_host_ip(char *);
00099 virtual int marshal_server_host_name(char *);
00100 virtual int marshal_server_resp_status_code(char *);
00101 virtual int marshal_server_resp_content_len(char *);
00102 virtual int marshal_server_resp_header_len(char *);
00103 virtual int marshal_server_resp_http_version(char *);
00104
00105
00106
00107
00108 virtual int marshal_cache_resp_status_code(char *);
00109 virtual int marshal_cache_resp_content_len(char *);
00110 virtual int marshal_cache_resp_header_len(char *);
00111 virtual int marshal_cache_resp_http_version(char *);
00112
00113
00114
00115
00116 virtual int marshal_client_retry_after_time(char *);
00117
00118
00119
00120
00121 virtual int marshal_cache_write_code(char *);
00122 virtual int marshal_cache_write_transform_code(char *);
00123
00124
00125
00126
00127 virtual int marshal_transfer_time_ms(char *);
00128 virtual int marshal_transfer_time_s(char *);
00129 virtual int marshal_file_size(char *);
00130 virtual int marshal_plugin_identity_id(char *);
00131 virtual int marshal_plugin_identity_tag(char *);
00132
00133
00134
00135
00136 virtual int marshal_http_header_field(LogField::Container container, char *field, char *buf);
00137 virtual int marshal_http_header_field_escapify(LogField::Container container, char *field, char *buf);
00138
00139 virtual void set_client_req_url(char *, int);
00140 virtual void set_client_req_url_canon(char *, int);
00141 virtual void set_client_req_unmapped_url_canon(char *, int);
00142 virtual void set_client_req_unmapped_url_path(char *, int);
00143 virtual void set_client_req_unmapped_url_host(char *, int);
00144 virtual void set_client_req_url_path(char *, int);
00145
00146 private:
00147 HttpSM * m_http_sm;
00148
00149 Arena m_arena;
00150
00151
00152 HTTPHdr *m_client_request;
00153 HTTPHdr *m_proxy_response;
00154 HTTPHdr *m_proxy_request;
00155 HTTPHdr *m_server_response;
00156 HTTPHdr *m_cache_response;
00157
00158 char *m_client_req_url_str;
00159 int m_client_req_url_len;
00160 char *m_client_req_url_canon_str;
00161 int m_client_req_url_canon_len;
00162 char *m_client_req_unmapped_url_canon_str;
00163 int m_client_req_unmapped_url_canon_len;
00164 char *m_client_req_unmapped_url_path_str;
00165 int m_client_req_unmapped_url_path_len;
00166 char *m_client_req_unmapped_url_host_str;
00167 int m_client_req_unmapped_url_host_len;
00168 char const*m_client_req_url_path_str;
00169 int m_client_req_url_path_len;
00170 char *m_proxy_resp_content_type_str;
00171 int m_proxy_resp_content_type_len;
00172
00173 void validate_unmapped_url(void);
00174 void validate_unmapped_url_path(void);
00175
00176
00177 LogAccessHttp(const LogAccessHttp & rhs);
00178 LogAccessHttp & operator=(LogAccessHttp & rhs);
00179 };
00180
00181 #endif