Fix rules `messages' on the auditlog

This commit is contained in:
Felipe Zimmerle
2016-02-10 12:03:52 -03:00
parent 9474373264
commit 77900ed4e2
12 changed files with 43 additions and 33 deletions

View File

@@ -17,6 +17,7 @@
#include <iostream>
#include "modsecurity/intervention.h"
#include "modsecurity/rule.h"
#ifndef SRC_ACTIONS_ACTION_H_
#define SRC_ACTIONS_ACTION_H_
@@ -89,6 +90,10 @@ class Action {
virtual std::string evaluate(std::string exp,
Transaction *transaction);
virtual bool evaluate(Rule *rule, Transaction *transaction);
virtual bool evaluate(Rule *rule, Transaction *transaction,
RuleMessage *ruleMessage) {
return evaluate(rule, transaction);
}
virtual bool init(std::string *error) { return true; }
virtual bool isDisruptive() { return false; }

View File

@@ -35,10 +35,12 @@ LogData::LogData(std::string action)
}
bool LogData::evaluate(Rule *rule, Transaction *transaction) {
bool LogData::evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) {
std::string data = MacroExpansion::expand(m_data, transaction);
rule->m_log_data = data;
rm->m_data = data;
return true;
}

View File

@@ -31,7 +31,7 @@ class LogData : public Action {
public:
explicit LogData(std::string action);
bool evaluate(Rule *rule, Transaction *transaction) override;
bool evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) override;
private:
std::string m_data;

View File

@@ -38,7 +38,7 @@ Rev::Rev(std::string action)
bool Rev::evaluate(Rule *rule, Transaction *transaction) {
rule->rev = m_rev;
rule->m_rev = m_rev;
return true;
}

View File

@@ -20,6 +20,7 @@
#include "actions/action.h"
#include "modsecurity/transaction.h"
#include "modsecurity/rule.h"
#include "src/utils.h"
namespace modsecurity {
@@ -50,13 +51,16 @@ Severity::Severity(std::string action)
}
bool Severity::evaluate(Rule *rule, Transaction *transaction) {
bool Severity::evaluate(Rule *rule, Transaction *transaction,
RuleMessage *rm) {
#ifndef NO_LOGS
transaction->debug(9, "This rule severity is: " + \
std::to_string(this->m_severity) + " current transaction is: " + \
std::to_string(transaction->m_highestSeverityAction));
#endif
rm->m_severity = m_severity;
if (transaction->m_highestSeverityAction > this->m_severity) {
transaction->m_highestSeverityAction = this->m_severity;
}

View File

@@ -33,7 +33,8 @@ class Severity : public Action {
public:
explicit Severity(std::string action);
bool evaluate(Rule *rule, Transaction *transaction) override;
bool evaluate(Rule *rule, Transaction *transaction,
RuleMessage *rm) override;
private:
int m_severity;

View File

@@ -57,12 +57,15 @@ Tag::Tag(std::string action)
}
bool Tag::evaluate(Rule *rule, Transaction *transaction) {
bool Tag::evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) {
std::string tag = MacroExpansion::expand(m_tag, transaction);
#ifndef NO_LOGS
transaction->debug(9, "Rule tag: " + tag);
#endif
rule->m_tags.push_back(tag);
rm->m_tags.push_back(tag);
return true;
}

View File

@@ -31,7 +31,7 @@ class Tag : public Action {
public:
explicit Tag(std::string action);
bool evaluate(Rule *rule, Transaction *transaction) override;
bool evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) override;
private:
std::string m_tag;