Expands log_cb to share ruleMessage structure instead text

Text version still available and it is the default options
This commit is contained in:
Felipe Zimmerle
2017-02-26 01:34:52 -03:00
parent 9ea5b475b2
commit e2af60e765
70 changed files with 634 additions and 181 deletions

View File

@@ -17,6 +17,7 @@
#include <iostream>
#include <string>
#include <memory>
#include "modsecurity/transaction.h"
#include "modsecurity/rule.h"
@@ -29,7 +30,8 @@ namespace actions {
namespace disruptive {
bool Block::evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) {
bool Block::evaluate(Rule *rule, Transaction *transaction,
std::shared_ptr<RuleMessage> rm) {
transaction->debug(8, "Marking request as disruptive.");
for (Action *a : transaction->m_rules->m_defaultActions[rule->m_phase]) {

View File

@@ -14,6 +14,7 @@
*/
#include <string>
#include <memory>
#include "modsecurity/actions/action.h"
#include "modsecurity/rule_message.h"
@@ -36,7 +37,7 @@ class Block : public Action {
explicit Block(std::string action) : Action(action) { }
bool evaluate(Rule *rule, Transaction *transaction,
RuleMessage *rm) override;
std::shared_ptr<RuleMessage> rm) override;
bool isDisruptive() override { return true; }
};

View File

@@ -19,6 +19,7 @@
#include <iostream>
#include <string>
#include <cstring>
#include <memory>
#include "modsecurity/transaction.h"
@@ -27,7 +28,8 @@ namespace actions {
namespace disruptive {
bool Deny::evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) {
bool Deny::evaluate(Rule *rule, Transaction *transaction,
std::shared_ptr<RuleMessage> rm) {
#ifndef NO_LOGS
transaction->debug(8, "Running action deny");
#endif
@@ -41,11 +43,13 @@ bool Deny::evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) {
log.append(" (phase ");
log.append(std::to_string(rm->m_rule->m_phase - 1) + "). ");
rm->m_disruptiveMessage.assign(log);
transaction->m_it.disruptive = true;
intervention::freeLog(&transaction->m_it);
transaction->m_it.log = strdup(
rm->disruptiveErrorLog(transaction, log).c_str());
rm->disruptiveErrorLog().c_str());
rm->m_isDisruptive = true;
return true;
}

View File

@@ -14,6 +14,7 @@
*/
#include <string>
#include <memory>
#include "modsecurity/actions/action.h"
#include "modsecurity/transaction.h"
@@ -32,7 +33,7 @@ class Deny : public Action {
explicit Deny(std::string action) : Action(action) { }
bool evaluate(Rule *rule, Transaction *transaction,
RuleMessage *rm) override;
std::shared_ptr<RuleMessage> rm) override;
bool isDisruptive() override { return true; }
};

View File

@@ -17,6 +17,7 @@
#include <iostream>
#include <string>
#include <memory>
#include "modsecurity/transaction.h"
#include "modsecurity/rule.h"
@@ -27,7 +28,8 @@ namespace actions {
namespace disruptive {
bool Pass::evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm) {
bool Pass::evaluate(Rule *rule, Transaction *transaction,
std::shared_ptr<RuleMessage> rm) {
intervention::free(&transaction->m_it);
intervention::reset(&transaction->m_it);

View File

@@ -14,6 +14,7 @@
*/
#include <string>
#include <memory>
#include "modsecurity/actions/action.h"
#include "modsecurity/transaction.h"
@@ -30,8 +31,8 @@ class Pass : public Action {
public:
explicit Pass(std::string action) : Action(action) { }
bool evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm)
override;
bool evaluate(Rule *rule, Transaction *transaction,
std::shared_ptr<RuleMessage> rm) override;
bool isDisruptive() override { return true; }
};

View File

@@ -18,7 +18,7 @@
#include <string.h>
#include <iostream>
#include <string>
#include <memory>
#include "modsecurity/transaction.h"
#include "src/macro_expansion.h"
@@ -36,7 +36,7 @@ bool Redirect::init(std::string *error) {
bool Redirect::evaluate(Rule *rule, Transaction *transaction,
RuleMessage *rm) {
std::shared_ptr<RuleMessage> rm) {
m_urlExpanded = MacroExpansion::expand(m_url, transaction);
std::string log;
@@ -48,13 +48,15 @@ bool Redirect::evaluate(Rule *rule, Transaction *transaction,
log.append(" (phase ");
log.append(std::to_string(rm->m_rule->m_phase - 1) + "). ");
rm->m_disruptiveMessage.assign(log);
intervention::freeUrl(&transaction->m_it);
transaction->m_it.url = strdup(m_urlExpanded.c_str());
transaction->m_it.disruptive = true;
intervention::freeLog(&transaction->m_it);
transaction->m_it.log = strdup(
rm->disruptiveErrorLog(transaction, log).c_str());
rm->disruptiveErrorLog().c_str());
rm->m_isDisruptive = true;
return true;
}

View File

@@ -14,6 +14,7 @@
*/
#include <string>
#include <memory>
#include "modsecurity/actions/action.h"
#include "modsecurity/rule_message.h"
@@ -39,8 +40,8 @@ class Redirect : public Action {
m_urlExpanded(""),
m_url("") { }
bool evaluate(Rule *rule, Transaction *transaction, RuleMessage *rm)
override;
bool evaluate(Rule *rule, Transaction *transaction,
std::shared_ptr<RuleMessage> rm) override;
bool init(std::string *error) override;
bool isDisruptive() override { return true; }