Provide a function to set 'hostname' field in log

This commit is contained in:
Ervin Hegedus
2024-07-29 22:07:26 +02:00
parent adba86e2bd
commit 937fc5ae59
8 changed files with 116 additions and 2 deletions

View File

@@ -309,6 +309,10 @@ void perform_unit_test(ModSecurityTest<RegressionTest> *test,
modsec_transaction->processConnection(t->clientIp.c_str(),
t->clientPort, t->serverIp.c_str(), t->serverPort);
if (t->hostname != "") {
modsec_transaction->setRequestHostName(t->hostname);
}
actions(&r, modsec_transaction, &serverLog);
#if 0
if (r.status != 200) {

View File

@@ -134,6 +134,9 @@ RegressionTest *RegressionTest::from_yajl_node(const yajl_val &node) {
if (strcmp(key2, "port") == 0) {
u->serverPort = YAJL_GET_INTEGER(val2);
}
if (strcmp(key2, "hostname") == 0) {
u->hostname = YAJL_GET_STRING(val2);
}
}
}
if (strcmp(key, "request") == 0) {

View File

@@ -61,6 +61,7 @@ class RegressionTest {
std::string serverIp;
int clientPort;
int serverPort;
std::string hostname;
std::string method;
std::string httpVersion;

View File

@@ -0,0 +1,41 @@
[
{
"enabled":1,
"version_min":300000,
"title":"Testing function :: setRequestHostName",
"client": {
"ip":"200.249.12.31"
},
"server":{
"ip":"200.249.12.31",
"port":80,
"hostname":"modsecurity.org"
},
"request": {
"headers": {
"Host":"www.modsecurity.org"
},
"uri":"/foo?q=attack",
"http_version": 1.1
},
"response":{
"headers":{
"Date":"Mon, 13 Jul 2015 20:02:41 GMT",
"Last-Modified":"Sun, 26 Oct 2014 22:33:37 GMT",
"Content-Type":"text/plain"
},
"body":[
"denystring"
]
},
"expected":{
"http_code": 200,
"debug_log": "[hostname: \"modsecurity.org\"]"
},
"rules":[
"SecRuleEngine On",
"SecResponseBodyAccess On",
"SecRule ARGS_GET \"@contains attack\" \"id:1,phase:2,deny\""
]
}
]