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
00027
00028
00029
00030
00031
00032
00033
00039 #ifndef HTP_CORE_H
00040 #define HTP_CORE_H
00041
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045
00046 typedef int htp_status_t;
00047
00048 typedef struct htp_cfg_t htp_cfg_t;
00049 typedef struct htp_conn_t htp_conn_t;
00050 typedef struct htp_connp_t htp_connp_t;
00051 typedef struct htp_file_t htp_file_t;
00052 typedef struct htp_file_data_t htp_file_data_t;
00053 typedef struct htp_header_t htp_header_t;
00054 typedef struct htp_header_line_t htp_header_line_t;
00055 typedef struct htp_log_t htp_log_t;
00056 typedef struct htp_param_t htp_param_t;
00057 typedef struct htp_tx_data_t htp_tx_data_t;
00058 typedef struct htp_tx_t htp_tx_t;
00059 typedef struct htp_uri_t htp_uri_t;
00060 typedef struct timeval htp_time_t;
00061
00062
00063
00064
00068 #define HTP_ERROR_RESERVED -1000
00069
00071 #define HTP_ERROR -1
00072
00078 #define HTP_DECLINED 0
00079
00081 #define HTP_OK 1
00082
00087 #define HTP_DATA 2
00088
00099 #define HTP_DATA_OTHER 3
00100
00106 #define HTP_STOP 4
00107
00112 #define HTP_DATA_BUFFER 5
00113
00117 #define HTP_STATUS_RESERVED 1000
00118
00122 enum htp_auth_type_t {
00128 HTP_AUTH_UNKNOWN = 0,
00129
00131 HTP_AUTH_NONE = 1,
00132
00134 HTP_AUTH_BASIC = 2,
00135
00137 HTP_AUTH_DIGEST = 3,
00138
00140 HTP_AUTH_UNRECOGNIZED = 9
00141 };
00142
00143 enum htp_content_encoding_t {
00149 HTP_COMPRESSION_UNKNOWN = 0,
00150
00152 HTP_COMPRESSION_NONE = 1,
00153
00155 HTP_COMPRESSION_GZIP = 2,
00156
00158 HTP_COMPRESSION_DEFLATE = 3
00159 };
00160
00164 enum htp_transfer_coding_t {
00166 HTP_CODING_UNKNOWN = 0,
00167
00169 HTP_CODING_NO_BODY = 1,
00170
00172 HTP_CODING_IDENTITY = 2,
00173
00175 HTP_CODING_CHUNKED = 3,
00176
00178 HTP_CODING_INVALID = 4
00179 };
00180
00181 enum htp_file_source_t {
00182
00183 HTP_FILE_MULTIPART = 1,
00184
00185 HTP_FILE_PUT = 2
00186 };
00187
00188
00189
00190
00191
00192
00193
00194
00195 #define HTP_CONN_PIPELINED 0x000000001ULL
00196 #define HTP_CONN_HTTP_0_9_EXTRA 0x000000002ULL
00197
00198
00199 #define HTP_FIELD_UNPARSEABLE 0x000000004ULL
00200 #define HTP_FIELD_INVALID 0x000000008ULL
00201 #define HTP_FIELD_FOLDED 0x000000010ULL
00202 #define HTP_FIELD_REPEATED 0x000000020ULL
00203 #define HTP_FIELD_LONG 0x000000040ULL
00204 #define HTP_FIELD_RAW_NUL 0x000000080ULL
00205 #define HTP_REQUEST_SMUGGLING 0x000000100ULL
00206 #define HTP_INVALID_FOLDING 0x000000200ULL
00207 #define HTP_REQUEST_INVALID_T_E 0x000000400ULL
00208 #define HTP_MULTI_PACKET_HEAD 0x000000800ULL
00209 #define HTP_HOST_MISSING 0x000001000ULL
00210 #define HTP_HOST_AMBIGUOUS 0x000002000ULL
00211 #define HTP_PATH_ENCODED_NUL 0x000004000ULL
00212 #define HTP_PATH_RAW_NUL 0x000008000ULL
00213 #define HTP_PATH_INVALID_ENCODING 0x000010000ULL
00214 #define HTP_PATH_INVALID 0x000020000ULL
00215 #define HTP_PATH_OVERLONG_U 0x000040000ULL
00216 #define HTP_PATH_ENCODED_SEPARATOR 0x000080000ULL
00217 #define HTP_PATH_UTF8_VALID 0x000100000ULL
00218 #define HTP_PATH_UTF8_INVALID 0x000200000ULL
00219 #define HTP_PATH_UTF8_OVERLONG 0x000400000ULL
00220 #define HTP_PATH_HALF_FULL_RANGE 0x000800000ULL
00221 #define HTP_STATUS_LINE_INVALID 0x001000000ULL
00222 #define HTP_HOSTU_INVALID 0x002000000ULL
00223 #define HTP_HOSTH_INVALID 0x004000000ULL
00224 #define HTP_URLEN_ENCODED_NUL 0x008000000ULL
00225 #define HTP_URLEN_INVALID_ENCODING 0x010000000ULL
00226 #define HTP_URLEN_OVERLONG_U 0x020000000ULL
00227 #define HTP_URLEN_HALF_FULL_RANGE 0x040000000ULL
00228 #define HTP_URLEN_RAW_NUL 0x080000000ULL
00229 #define HTP_REQUEST_INVALID 0x100000000ULL
00230 #define HTP_REQUEST_INVALID_C_L 0x200000000ULL
00231 #define HTP_AUTH_INVALID 0x400000000ULL
00232
00233 #define HTP_HOST_INVALID ( HTP_HOSTU_INVALID | HTP_HOSTH_INVALID )
00234
00235
00236 #define HTP_LOG_MARK __FILE__,__LINE__
00237
00241 enum htp_log_level_t {
00242 HTP_LOG_NONE = 0,
00243 HTP_LOG_ERROR = 1,
00244 HTP_LOG_WARNING = 2,
00245 HTP_LOG_NOTICE = 3,
00246 HTP_LOG_INFO = 4,
00247 HTP_LOG_DEBUG = 5,
00248 HTP_LOG_DEBUG2 = 6
00249 };
00250
00254 enum htp_method_t {
00259 HTP_M_UNKNOWN = 0,
00260 HTP_M_HEAD = 1,
00261 HTP_M_GET = 2,
00262 HTP_M_PUT = 3,
00263 HTP_M_POST = 4,
00264 HTP_M_DELETE = 5,
00265 HTP_M_CONNECT = 6,
00266 HTP_M_OPTIONS = 7,
00267 HTP_M_TRACE = 8,
00268 HTP_M_PATCH = 9,
00269 HTP_M_PROPFIND = 10,
00270 HTP_M_PROPPATCH = 11,
00271 HTP_M_MKCOL = 12,
00272 HTP_M_COPY = 13,
00273 HTP_M_MOVE = 14,
00274 HTP_M_LOCK = 15,
00275 HTP_M_UNLOCK = 16,
00276 HTP_M_VERSION_CONTROL = 17,
00277 HTP_M_CHECKOUT = 18,
00278 HTP_M_UNCHECKOUT = 19,
00279 HTP_M_CHECKIN = 20,
00280 HTP_M_UPDATE = 21,
00281 HTP_M_LABEL = 22,
00282 HTP_M_REPORT = 23,
00283 HTP_M_MKWORKSPACE = 24,
00284 HTP_M_MKACTIVITY = 25,
00285 HTP_M_BASELINE_CONTROL = 26,
00286 HTP_M_MERGE = 27,
00287 HTP_M_INVALID = 28
00288 };
00289
00290
00291 enum htp_parser_id_t {
00293 HTP_PARSER_URLENCODED = 0,
00294
00296 HTP_PARSER_MULTIPART = 1
00297 };
00298
00299
00300
00301
00302 #define HTP_PROTOCOL_INVALID -2
00303 #define HTP_PROTOCOL_UNKNOWN -1
00304 #define HTP_PROTOCOL_0_9 9
00305 #define HTP_PROTOCOL_1_0 100
00306 #define HTP_PROTOCOL_1_1 101
00307
00308
00309 enum htp_data_source_t {
00311 HTP_SOURCE_URL = 0,
00312
00314 HTP_SOURCE_QUERY_STRING = 1,
00315
00317 HTP_SOURCE_COOKIE = 2,
00318
00320 HTP_SOURCE_BODY = 3
00321 };
00322
00323 #define HTP_STATUS_INVALID -1
00324 #define HTP_STATUS_UNKNOWN 0
00325
00330 enum htp_stream_state_t {
00331 HTP_STREAM_NEW = 0,
00332 HTP_STREAM_OPEN = 1,
00333 HTP_STREAM_CLOSED = 2,
00334 HTP_STREAM_ERROR = 3,
00335 HTP_STREAM_TUNNEL = 4,
00336 HTP_STREAM_DATA_OTHER = 5,
00337 HTP_STREAM_STOP = 6,
00338 HTP_STREAM_DATA = 9
00339 };
00340
00341 #ifdef __cplusplus
00342 }
00343 #endif
00344
00345 #endif