From 768cc74f0e6c2e2ade3fd3083c459b2d2725ddf8 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Fri, 4 Nov 2016 11:57:15 -0300 Subject: [PATCH] Moves RuleMessage to its own file --- headers/modsecurity/rule.h | 81 ------------------------- headers/modsecurity/rule_message.h | 94 ++++++++++++++++++++++++++++++ src/Makefile.am | 1 + src/actions/log.cc | 2 +- src/actions/log_data.cc | 2 + src/actions/no_log.cc | 1 + src/actions/severity.cc | 1 + src/actions/tag.cc | 1 + src/rule.cc | 1 + src/rule_message.cc | 54 +++++++++++++++++ src/transaction.cc | 1 + 11 files changed, 157 insertions(+), 82 deletions(-) create mode 100644 headers/modsecurity/rule_message.h create mode 100644 src/rule_message.cc diff --git a/headers/modsecurity/rule.h b/headers/modsecurity/rule.h index b8689df0..9354fe5b 100644 --- a/headers/modsecurity/rule.h +++ b/headers/modsecurity/rule.h @@ -97,87 +97,6 @@ class Rule { int m_referenceCount; }; -class RuleMessage { - public: - explicit RuleMessage(Rule *rule) : - m_ruleFile(rule->m_fileName), - m_ruleLine(rule->m_lineNumber), - m_ruleId(rule->rule_id), - m_rev(rule->m_rev), - m_accuracy(rule->m_accuracy), - m_message(std::string("")), - m_data(std::string("")), - m_severity(0), - m_ver(rule->m_ver), - m_maturity(rule->m_maturity), - m_rule(rule), - m_saveMessage(false), - m_match(std::string("")) - { } - - RuleMessage(Rule *rule, std::string message) : - m_ruleFile(rule->m_fileName), - m_ruleLine(rule->m_lineNumber), - m_ruleId(rule->rule_id), - m_rev(rule->m_rev), - m_accuracy(rule->m_accuracy), - m_message(message), - m_data(std::string("")), - m_severity(0), - m_ver(rule->m_ver), - m_maturity(rule->m_maturity), - m_rule(rule), - m_saveMessage(false), - m_match(std::string("")) - { } - - - std::string errorLog(Transaction *trans) { - std::string msg; - - msg.append("[client " + std::string(trans->m_clientIpAddress) + "]"); - msg.append(" ModSecurity: Warning. "); - msg.append(m_match); - msg.append(" [file \"" + std::string(m_ruleFile) + "\"]"); - msg.append(" [line \"" + std::to_string(m_ruleLine) + "\"]"); - msg.append(" [id \"" + std::to_string(m_ruleId) + "\"]"); - msg.append(" [rev \"" + m_rev + "\"]"); - msg.append(" [msg \"" + m_message + "\"]"); - msg.append(" [data \"" + m_data + "\"]"); - msg.append(" [severity \"" + - std::to_string(m_severity) + "\"]"); - msg.append(" [ver \"" + m_ver + "\"]"); - msg.append(" [maturity \"" + std::to_string(m_maturity) + "\"]"); - msg.append(" [accuracy \"" + std::to_string(m_accuracy) + "\"]"); - for (auto &a : m_tags) { - msg.append(" [tag \"" + a + "\"]"); - } - msg.append(" [hostname \"" + std::string(trans->m_serverIpAddress) \ - + "\"]"); - msg.append(" [uri \"" + std::string(trans->m_uri) + "\"]"); - msg.append(" [unique_id \"" + trans->m_id + "\"]"); - - return msg; - } - - std::string m_match; - std::string m_ruleFile; - int m_ruleLine; - int m_ruleId; - std::string m_message; - std::string m_data; - int m_severity; - std::string m_ver; - std::string m_rev; - int m_maturity; - int m_accuracy; - - std::list m_tags; - - Rule *m_rule; - bool m_saveMessage; -}; - } // namespace modsecurity #endif diff --git a/headers/modsecurity/rule_message.h b/headers/modsecurity/rule_message.h new file mode 100644 index 00000000..62e2b986 --- /dev/null +++ b/headers/modsecurity/rule_message.h @@ -0,0 +1,94 @@ +/* + * ModSecurity, http://www.modsecurity.org/ + * Copyright (c) 2015 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. + * + */ + +#ifdef __cplusplus +#include +#include +#include +#include +#endif + +#ifndef HEADERS_MODSECURITY_RULE_MESSAGE_H_ +#define HEADERS_MODSECURITY_RULE_MESSAGE_H_ + +#include "modsecurity/transaction.h" +#include "modsecurity/rule.h" + + +#ifdef __cplusplus + +namespace modsecurity { + +class RuleMessage { + public: + explicit RuleMessage(Rule *rule) : + m_ruleFile(rule->m_fileName), + m_ruleLine(rule->m_lineNumber), + m_ruleId(rule->rule_id), + m_rev(rule->m_rev), + m_accuracy(rule->m_accuracy), + m_message(std::string("")), + m_data(std::string("")), + m_severity(0), + m_ver(rule->m_ver), + m_maturity(rule->m_maturity), + m_rule(rule), + m_saveMessage(false), + m_match(std::string("")) + { } + + RuleMessage(Rule *rule, std::string message) : + m_ruleFile(rule->m_fileName), + m_ruleLine(rule->m_lineNumber), + m_ruleId(rule->rule_id), + m_rev(rule->m_rev), + m_accuracy(rule->m_accuracy), + m_message(message), + m_data(std::string("")), + m_severity(0), + m_ver(rule->m_ver), + m_maturity(rule->m_maturity), + m_rule(rule), + m_saveMessage(false), + m_match(std::string("")) + { } + + std::string errorLog(Transaction *trans); + + + std::string m_match; + std::string m_ruleFile; + int m_ruleLine; + int m_ruleId; + std::string m_message; + std::string m_data; + int m_severity; + std::string m_ver; + std::string m_rev; + int m_maturity; + int m_accuracy; + + std::list m_tags; + + Rule *m_rule; + bool m_saveMessage; +}; + + +} // namespace modsecurity +#endif + + +#endif // HEADERS_MODSECURITY_RULE_MESSAGE_H_ diff --git a/src/Makefile.am b/src/Makefile.am index c5b88f11..1188fdf9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -253,6 +253,7 @@ libmodsecurity_la_SOURCES = \ debug_log_writer.cc \ macro_expansion.cc \ rule.cc \ + rule_message.cc \ unique_id.cc \ rules_exceptions.cc \ ${BODY_PROCESSORS} \ diff --git a/src/actions/log.cc b/src/actions/log.cc index 788a4932..e066d4f4 100644 --- a/src/actions/log.cc +++ b/src/actions/log.cc @@ -21,7 +21,7 @@ #include "actions/action.h" #include "modsecurity/transaction.h" #include "operators/operator.h" - +#include "modsecurity/rule_message.h" namespace modsecurity { namespace actions { diff --git a/src/actions/log_data.cc b/src/actions/log_data.cc index c7f83837..0edc9b59 100644 --- a/src/actions/log_data.cc +++ b/src/actions/log_data.cc @@ -22,6 +22,8 @@ #include "modsecurity/transaction.h" #include "src/macro_expansion.h" #include "modsecurity/rule.h" +#include "modsecurity/rule_message.h" + namespace modsecurity { namespace actions { diff --git a/src/actions/no_log.cc b/src/actions/no_log.cc index 1adcc2aa..b68f25e5 100644 --- a/src/actions/no_log.cc +++ b/src/actions/no_log.cc @@ -21,6 +21,7 @@ #include "actions/action.h" #include "modsecurity/transaction.h" #include "operators/operator.h" +#include "modsecurity/rule_message.h" namespace modsecurity { diff --git a/src/actions/severity.cc b/src/actions/severity.cc index b6ece755..34cb4a1f 100644 --- a/src/actions/severity.cc +++ b/src/actions/severity.cc @@ -22,6 +22,7 @@ #include "modsecurity/transaction.h" #include "modsecurity/rule.h" #include "utils/msc_string.h" +#include "modsecurity/rule_message.h" using modsecurity::utils::String; diff --git a/src/actions/tag.cc b/src/actions/tag.cc index f6343be6..e557b6e3 100644 --- a/src/actions/tag.cc +++ b/src/actions/tag.cc @@ -22,6 +22,7 @@ #include "modsecurity/transaction.h" #include "src/macro_expansion.h" #include "modsecurity/rule.h" +#include "modsecurity/rule_message.h" /** * Description: Assigns a tag (category) to a rule or a chain. diff --git a/src/rule.cc b/src/rule.cc index 74b27a8e..f97eaa24 100644 --- a/src/rule.cc +++ b/src/rule.cc @@ -32,6 +32,7 @@ #include "variables/variations/exclusion.h" #include "utils/msc_string.h" #include "modsecurity/rules.h" +#include "modsecurity/rule_message.h" #include "src/macro_expansion.h" diff --git a/src/rule_message.cc b/src/rule_message.cc new file mode 100644 index 00000000..8e8e1c30 --- /dev/null +++ b/src/rule_message.cc @@ -0,0 +1,54 @@ +/* + * ModSecurity, http://www.modsecurity.org/ + * Copyright (c) 2015 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. + * + */ + +#include "modsecurity/rules.h" + +#include "modsecurity/rule_message.h" + +#include "modsecurity/modsecurity.h" +#include "modsecurity/transaction.h" +#include "src/utils/msc_string.h" + +namespace modsecurity { + +std::string RuleMessage::errorLog(Transaction *trans) { + std::string msg; + + msg.append("[client " + std::string(trans->m_clientIpAddress) + "]"); + msg.append(" ModSecurity: Warning. "); + msg.append(m_match); + msg.append(" [file \"" + std::string(m_ruleFile) + "\"]"); + msg.append(" [line \"" + std::to_string(m_ruleLine) + "\"]"); + msg.append(" [id \"" + std::to_string(m_ruleId) + "\"]"); + msg.append(" [rev \"" + m_rev + "\"]"); + msg.append(" [msg \"" + m_message + "\"]"); + msg.append(" [data \"" + m_data + "\"]"); + msg.append(" [severity \"" + + std::to_string(m_severity) + "\"]"); + msg.append(" [ver \"" + m_ver + "\"]"); + msg.append(" [maturity \"" + std::to_string(m_maturity) + "\"]"); + msg.append(" [accuracy \"" + std::to_string(m_accuracy) + "\"]"); + for (auto &a : m_tags) { + msg.append(" [tag \"" + a + "\"]"); + } + msg.append(" [hostname \"" + std::string(trans->m_serverIpAddress) \ + + "\"]"); + msg.append(" [uri \"" + std::string(trans->m_uri) + "\"]"); + msg.append(" [unique_id \"" + trans->m_id + "\"]"); + + return modsecurity::utils::String::toHexIfNeeded(msg); +} + +} // namespace modsecurity diff --git a/src/transaction.cc b/src/transaction.cc index 6c1ed314..370cc006 100644 --- a/src/transaction.cc +++ b/src/transaction.cc @@ -46,6 +46,7 @@ #include "utils/decode.h" #include "utils/random.h" #include "modsecurity/rule.h" +#include "modsecurity/rule_message.h" #include "modsecurity/rules_properties.h" #include "src/actions/allow.h"