From 8274be066ab6c6d2faf3e9244a5a4acc25250501 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Tue, 19 Feb 2019 14:34:20 -0300 Subject: [PATCH] Refactoring: Having RuleMarker in a separated file --- headers/modsecurity/rule.h | 37 --------------- headers/modsecurity/rule_marker.h | 78 +++++++++++++++++++++++++++++++ src/Makefile.am | 1 + src/parser/driver.cc | 1 + 4 files changed, 80 insertions(+), 37 deletions(-) create mode 100644 headers/modsecurity/rule_marker.h diff --git a/headers/modsecurity/rule.h b/headers/modsecurity/rule.h index 2b43c4ae..f7595a21 100644 --- a/headers/modsecurity/rule.h +++ b/headers/modsecurity/rule.h @@ -29,7 +29,6 @@ #include "modsecurity/modsecurity.h" #include "modsecurity/variable_value.h" - #ifdef __cplusplus namespace modsecurity { @@ -103,42 +102,6 @@ class Rule { }; -class RuleMarker : public Rule { - public: - RuleMarker( - const std::string &name, - std::unique_ptr fileName, - int lineNumber) - : Rule(std::move(fileName), lineNumber), - m_name(std::make_shared(name)) { } - - - virtual bool evaluate(Transaction *transaction, - std::shared_ptr rm) override { - - if (transaction->isInsideAMarker()) { - if (*transaction->getCurrentMarker() == *m_name) { - transaction->removeMarker(); - // FIXME: Move this to .cc - // ms_dbg_a(transaction, 4, "Out of a SecMarker " + *m_name); - } - } - - return true; - }; - - - std::shared_ptr getName() const { - return m_name; - } - - bool isMarker() override { return true; } - - private: - std::shared_ptr m_name; -}; - - class RuleWithActions : public Rule { public: RuleWithActions( diff --git a/headers/modsecurity/rule_marker.h b/headers/modsecurity/rule_marker.h new file mode 100644 index 00000000..add2112a --- /dev/null +++ b/headers/modsecurity/rule_marker.h @@ -0,0 +1,78 @@ +/* + * 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 +#include +#include +#endif + +#ifndef HEADERS_MODSECURITY_RULE_MARKER_H_ +#define HEADERS_MODSECURITY_RULE_MARKER_H_ + +#include "modsecurity/transaction.h" +#include "modsecurity/modsecurity.h" +#include "modsecurity/variable_value.h" +#include "modsecurity/rule.h" + +#ifdef __cplusplus + +namespace modsecurity { + + +class RuleMarker : public Rule { + public: + RuleMarker( + const std::string &name, + std::unique_ptr fileName, + int lineNumber) + : Rule(std::move(fileName), lineNumber), + m_name(std::make_shared(name)) { } + + + virtual bool evaluate(Transaction *transaction, + std::shared_ptr rm) override { + + if (transaction->isInsideAMarker()) { + if (*transaction->getCurrentMarker() == *m_name) { + transaction->removeMarker(); + // FIXME: Move this to .cc + // ms_dbg_a(transaction, 4, "Out of a SecMarker " + *m_name); + } + } + + return true; + }; + + + std::shared_ptr getName() { + return m_name; + } + + bool isMarker() override { return true; } + + private: + std::shared_ptr m_name; +}; + + +} // namespace modsecurity + +#endif + +#endif // HEADERS_MODSECURITY_RULE_MARKER_H_ diff --git a/src/Makefile.am b/src/Makefile.am index cb0fe206..96eb09cb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -42,6 +42,7 @@ pkginclude_HEADERS = \ ../headers/modsecurity/intervention.h \ ../headers/modsecurity/modsecurity.h \ ../headers/modsecurity/rule.h \ + ../headers/modsecurity/rule_marker.h \ ../headers/modsecurity/rules.h \ ../headers/modsecurity/rule_message.h \ ../headers/modsecurity/rules_set.h \ diff --git a/src/parser/driver.cc b/src/parser/driver.cc index b13396b4..03be1311 100644 --- a/src/parser/driver.cc +++ b/src/parser/driver.cc @@ -18,6 +18,7 @@ #include "modsecurity/rules_set_properties.h" #include "src/parser/seclang-parser.hh" #include "modsecurity/audit_log.h" +#include "modsecurity/rule_marker.h" using modsecurity::audit_log::AuditLog; using modsecurity::RuleWithOperator;