File: api.h

package info (click to toggle)
modsecurity-apache 2.9.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 10,436 kB
  • sloc: ansic: 53,590; sh: 5,249; perl: 2,340; cpp: 1,930; makefile: 618; xml: 6
file content (129 lines) | stat: -rw-r--r-- 3,758 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
* ModSecurity for Apache 2.x, http://www.modsecurity.org/
* Copyright (c) 2004-2013 Trustwave Holdings, Inc. (http://www.trustwave.com/)
*
* You may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* If any of the files related to licensing are missing or if you have any
* other questions related to licensing please contact Trustwave Holdings, Inc.
* directly using the email address security@modsecurity.org.
*/


#pragma once

#include <limits.h>

#include "http_core.h"
#include "http_request.h"

#include "modsecurity.h"
#include "apache2.h"
#include "http_main.h"
#include "http_connection.h"

#include "apr_optional.h"
#include "mod_log_config.h"

#include "msc_logging.h"
#include "msc_util.h"

#include "ap_mpm.h"
#include "scoreboard.h"

#include "apr_version.h"

#include "apr_lib.h"
#include "ap_config.h"
#include "http_config.h"


#ifdef	__cplusplus
extern "C"
{
#endif

server_rec *modsecInit();
void modsecTerminate();

void modsecStartConfig();
directory_config *modsecGetDefaultConfig();
const char *modsecProcessConfig(directory_config *config, const char *file, const char *dir);
void modsecFinalizeConfig();

void modsecInitProcess();

conn_rec *modsecNewConnection();
void modsecProcessConnection(conn_rec *c);
int modsecFinishConnection(conn_rec *c);

request_rec *modsecNewRequest(conn_rec *connection, directory_config *config);

int modsecProcessRequestBody(request_rec *r);
int modsecProcessRequestHeaders(request_rec *r);

static inline int modsecProcessRequest(request_rec *r)    {
    int status;
    status = modsecProcessRequestHeaders(r);
    if (status != DECLINED) {
        return status;
    }

    return modsecProcessRequestBody(r);
}


int modsecProcessResponse(request_rec *r);
int modsecFinishRequest(request_rec *r);

void modsecSetLogHook(void *obj, void (*hook)(void *obj, int level, char *str));

#define NOTE_MSR_BRIGADE_REQUEST  "modsecurity-brigade-request"
#define NOTE_MSR_BRIGADE_RESPONSE "modsecurity-brigade-response"

static inline void 
modsecSetBodyBrigade(request_rec *r, apr_bucket_brigade *b) {
    apr_table_setn(r->notes, NOTE_MSR_BRIGADE_REQUEST, (char *)b);
};

static inline apr_bucket_brigade * 
modsecGetBodyBrigade(request_rec *r) {
    return (apr_bucket_brigade *)apr_table_get(r->notes, NOTE_MSR_BRIGADE_REQUEST);
};

static inline void 
modsecSetResponseBrigade(request_rec *r, apr_bucket_brigade *b) {
    apr_table_setn(r->notes, NOTE_MSR_BRIGADE_RESPONSE, (char *)b);
};

static inline apr_bucket_brigade * 
modsecGetResponseBrigade(request_rec *r) {
    return (apr_bucket_brigade *)apr_table_get(r->notes, NOTE_MSR_BRIGADE_RESPONSE);
};

void modsecSetReadBody(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos));
void modsecSetReadResponse(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length, unsigned int *readcnt, int *is_eos));
void modsecSetWriteBody(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length));
void modsecSetWriteResponse(apr_status_t (*func)(request_rec *r, char *buf, unsigned int length));
void modsecSetDropAction(int (*func)(request_rec *r));

int modsecIsResponseBodyAccessEnabled(request_rec *r);
int modsecIsRequestBodyAccessEnabled(request_rec *r);

int modsecContextState(request_rec *r);

void modsecSetConfigForIISRequestBody(request_rec *r);

const char *modsecIsServerSignatureAvailale(void);

#ifdef VERSION_IIS
void modsecStatusEngineCall(void);
void modsecReportRemoteLoadedRules(void);
#endif

#ifdef __cplusplus
}
#endif