Skip to content

Commit 21084ce

Browse files
authored
Merge pull request #3 from SpiderLabs/Experimental
Load Rules from File Path Working
2 parents de076b3 + 64f6af2 commit 21084ce

File tree

4 files changed

+72
-31
lines changed

4 files changed

+72
-31
lines changed

apache_http_modsecurity.c

Lines changed: 59 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,35 @@ const char *apache_http_modsecurity_set_remote_server(cmd_parms *cmd,
1919
return NULL;
2020
}
2121

22+
23+
const char *apache_http_modsecurity_set_file_path(cmd_parms *cmd,
24+
void *cfg,
25+
const char *p)
26+
{
27+
apache_http_modsecurity_loc_conf_t *cf = (apache_http_modsecurity_loc_conf_t *) cfg;
28+
if (cf == NULL)
29+
{
30+
return "ModSecurity's remote_server processing directive didn't get an instance.";
31+
}
32+
33+
cf->rules_set = msc_create_rules_set();
34+
cf->rules_file = NULL;
35+
cf->rules_remote_server = NULL;
36+
cf->rules_remote_key = NULL;
37+
cf->enable = 1;
38+
cf->id = 0;
39+
fprintf(stderr, "ModSecurity creating a location configurationn\n");
40+
char uri[100] ;
41+
strcpy(uri,p);
42+
const char *err = NULL;
43+
int ret = msc_rules_add_file(cf->rules_set, uri, &err);
44+
fprintf(stderr, "Total Rules '%d' \n",ret);
45+
msc_rules_dump(cf->rules_set);
46+
47+
return NULL;
48+
}
49+
50+
2251
static void *apache_http_modsecurity_merge_loc_conf(apr_pool_t *pool,
2352
void *parent,
2453
void *child)
@@ -28,7 +57,7 @@ static void *apache_http_modsecurity_merge_loc_conf(apr_pool_t *pool,
2857
apache_http_modsecurity_loc_conf_t *c = NULL;
2958
apache_http_modsecurity_loc_conf_t *conf = apr_palloc(pool,
3059
sizeof(apache_http_modsecurity_loc_conf_t));
31-
60+
3261
p = parent;
3362
c = child;
3463
conf = p;
@@ -121,18 +150,18 @@ void *apache_http_modsecurity_create_loc_conf(apr_pool_t *mp, char *path)
121150
return NULL;
122151
}
123152

124-
cf->rules_set = msc_create_rules_set();
125-
cf->rules_file = NULL;
126-
cf->rules_remote_server = NULL;
127-
cf->rules_remote_key = NULL;
128-
cf->enable = 1;
129-
cf->id = 0;
130-
fprintf(stderr, "ModSecurity creating a location configurationn\n");
131-
char uri[] = "/opt/ModSecurity/examples/multiprocess_c/basic_rules.conf";
132-
const char *err = NULL;
133-
int ret = msc_rules_add_file(cf->rules_set, uri, &err);
134-
fprintf(stderr, "Total Rules '%d' \n",ret);
135-
msc_rules_dump(cf->rules_set);
153+
/* cf->rules_set = msc_create_rules_set();
154+
cf->rules_file = NULL;
155+
cf->rules_remote_server = NULL;
156+
cf->rules_remote_key = NULL;
157+
cf->enable = 1;
158+
cf->id = 0;
159+
fprintf(stderr, "ModSecurity creating a location configurationn\n");
160+
char uri[] = "/opt/ModSecurity/examples/multiprocess_c/basic_rules.conf";
161+
const char *err = NULL;
162+
int ret = msc_rules_add_file(cf->rules_set, uri, &err);
163+
fprintf(stderr, "Total Rules '%d' \n",ret);
164+
msc_rules_dump(cf->rules_set);*/
136165

137166
return cf;
138167
}
@@ -148,25 +177,25 @@ static void register_hooks(apr_pool_t *pool)
148177

149178
static void OutputFilter(request_rec *r)
150179
{
151-
FilterConfig *pConfig = ap_get_module_config(r->server->module_config,
152-
&security3_module);
180+
FilterConfig *pConfig = ap_get_module_config(r->server->module_config,
181+
&security3_module);
153182

154183
if (!pConfig->oEnabled)
155-
{
156-
return;
157-
}
184+
{
185+
return;
186+
}
158187

159188
ap_add_output_filter("OUT", NULL, r, r->connection);
160189
}
161190

162191
static void InputFilter(request_rec *r)
163192
{
164-
FilterConfig *pConfig = ap_get_module_config(r->server->module_config,
165-
&security3_module);
193+
FilterConfig *pConfig = ap_get_module_config(r->server->module_config,
194+
&security3_module);
166195
if (!pConfig->iEnabled)
167-
{
168-
return;
169-
}
196+
{
197+
return;
198+
}
170199

171200
ap_add_input_filter("IN", NULL, r, r->connection);
172201
}
@@ -175,11 +204,11 @@ static int modsec_handler(request_rec *r)
175204
{
176205

177206

178-
if (!r->handler || strcmp(r->handler, "security3_module"))
207+
if (!r->handler || strcmp(r->handler, "security3_module"))
179208
{
180-
return (DECLINED);
181-
}
182-
209+
return (DECLINED);
210+
}
211+
183212
ap_rputs("Welcome to ModSec!<br/>", r);
184213
fprintf(stderr, "Welcome to ModSec!\n");
185214
return OK;
@@ -253,9 +282,9 @@ static int input_filter(ap_filter_t *f, apr_bucket_brigade *pbbOut,
253282

254283
ret=apr_bucket_read(pbktIn, &data, &len, eBlock);
255284
if (ret != APR_SUCCESS)
256-
{
257-
return ret;
258-
}
285+
{
286+
return ret;
287+
}
259288

260289
buf = ap_malloc(len);
261290
for (n=0 ; n < len ; ++n)

apache_http_modsecurity.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ void *apache_http_modsecurity_create_loc_conf(apr_pool_t *mp, char *path);
3131
void *apache_http_modsecurity_create_main_conf(apr_pool_t* pool, server_rec* svr);
3232
static void* apache_http_modsecurity_merge_loc_conf(apr_pool_t* pool, void* parent, void* child);
3333
const char *apache_http_modsecurity_set_remote_server(cmd_parms *cmd, void *cfg, const char *p1,
34-
const char *p2);
34+
const char *p2);
35+
const char *apache_http_modsecurity_set_file_path(cmd_parms *cmd, void *cfg, const char *p);
3536

3637
static void *FilterInCreateServerConfig(apr_pool_t *p, server_rec *s);
3738
static void *FilterOutCreateServerConfig(apr_pool_t *p, server_rec *s);

config.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ const command_rec module_directives[] =
2121
OR_OPTIONS,
2222
"Load ModSecurity rules from a remote server"),
2323

24+
AP_INIT_TAKE1("modsecurity_rules_path",
25+
apache_http_modsecurity_set_file_path,
26+
NULL,
27+
OR_OPTIONS,
28+
"Load ModSecurity rules from a path"),
29+
2430
AP_INIT_TAKE1("modsecurity_rules",
2531
ap_set_string_slot,
2632
(void *) APR_OFFSETOF(apache_http_modsecurity_loc_conf_t, rules),

security3.conf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
<IfModule security3_module>
22

3+
sethandler security3_module
4+
35
#The argument must be either 'On' or 'Off
46
modsecurity On
57

8+
#Load ModSecurity rules from a path
9+
modsecurity_rules_path /opt/ModSecurity/examples/multiprocess_c/basic_rules.conf
10+
611
#Load ModSecurity rules from a file
712
modsecurity_rules_file path
813

0 commit comments

Comments
 (0)