diff --git a/src/Makefile.am b/src/Makefile.am index e810da35..84caf5eb 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,7 +28,12 @@ pkginclude_HEADERS = \ ../headers/modsecurity/debug_log.h \ ../headers/modsecurity/intervention.h + VARIABLES = \ + variables/duration.cc \ + variables/env.cc \ + variables/highest_severity.cc \ + variables/modsec_build.cc \ variables/time.cc \ variables/time_day.cc \ variables/time_epoch.cc \ @@ -37,7 +42,10 @@ VARIABLES = \ variables/time_mon.cc \ variables/time_sec.cc \ variables/time_wday.cc \ - variables/time_year.cc + variables/time_year.cc \ + variables/variable.cc + + ACTIONS = \ actions/action.cc \ @@ -108,11 +116,6 @@ libmodsecurity_la_SOURCES = \ request_body_processor/multipart_blob.cc \ rule.cc \ unique_id.cc \ - variable.cc \ - variable_duration.cc \ - variable_env.cc \ - variable_modsec_build.cc \ - variable_highest_severity.cc \ operators/operator.cc \ operators/detect_sqli.cc \ operators/detect_xss.cc \ diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index 4bd66b2c..0468be9a 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -15,14 +15,15 @@ class Driver; #include "actions/transformations/transformation.h" #include "operators/operator.h" #include "rule.h" -#include "variable_duration.h" -#include "variable_env.h" -#include "variable_modsec_build.h" -#include "variable_highest_severity.h" #include "utils/geo_lookup.h" -#include "variables/time.h" + +#include "variables/duration.h" +#include "variables/env.h" +#include "variables/highest_severity.h" +#include "variables/modsec_build.h" #include "variables/time_day.h" #include "variables/time_epoch.h" +#include "variables/time.h" #include "variables/time_hour.h" #include "variables/time_min.h" #include "variables/time_mon.h" @@ -33,13 +34,13 @@ class Driver; using ModSecurity::actions::Action; using ModSecurity::actions::transformations::Transformation; using ModSecurity::operators::Operator; -using ModSecurity::Variable; -using ModSecurity::VariableDuration; -using ModSecurity::VariableEnv; -using ModSecurity::VariableModsecBuild; -using ModSecurity::VariableHighestSeverity; using ModSecurity::Rule; using ModSecurity::Utils::GeoLookup; + +using ModSecurity::Variables::Duration; +using ModSecurity::Variables::Env; +using ModSecurity::Variables::HighestSeverity; +using ModSecurity::Variables::ModsecBuild; using ModSecurity::Variables::Time; using ModSecurity::Variables::TimeDay; using ModSecurity::Variables::TimeEpoch; @@ -49,6 +50,7 @@ using ModSecurity::Variables::TimeMon; using ModSecurity::Variables::TimeSec; using ModSecurity::Variables::TimeWDay; using ModSecurity::Variables::TimeYear; +using ModSecurity::Variables::Variable; } // The parsing context. @@ -326,61 +328,61 @@ variables: | variables PIPE RUN_TIME_VAR_DUR { std::vector *v = $1; - v->push_back(new VariableDuration($3)); + v->push_back(new Duration($3)); $$ = $1; } | RUN_TIME_VAR_DUR { std::vector *variables = new std::vector; - variables->push_back(new VariableDuration($1)); + variables->push_back(new Duration($1)); $$ = variables; } | variables PIPE RUN_TIME_VAR_ENV { std::vector *v = $1; - v->push_back(new VariableEnv($3)); + v->push_back(new Env($3)); $$ = $1; } | RUN_TIME_VAR_ENV { std::vector *variables = new std::vector; - variables->push_back(new VariableEnv($1)); + variables->push_back(new Env($1)); $$ = variables; } | variables PIPE RUN_TIME_VAR_BLD { std::vector *v = $1; - v->push_back(new VariableModsecBuild($3)); + v->push_back(new ModsecBuild($3)); $$ = $1; } | RUN_TIME_VAR_BLD { std::vector *variables = new std::vector; - variables->push_back(new VariableModsecBuild($1)); + variables->push_back(new ModsecBuild($1)); $$ = variables; } | variables PIPE RUN_TIME_VAR_HSV { std::vector *v = $1; - v->push_back(new VariableHighestSeverity($3)); + v->push_back(new HighestSeverity($3)); $$ = $1; } | RUN_TIME_VAR_HSV { std::vector *variables = new std::vector; - variables->push_back(new VariableHighestSeverity($1)); + variables->push_back(new HighestSeverity($1)); $$ = variables; } | RUN_TIME_VAR_TIME { std::vector *variables = new std::vector; - variables->push_back(new ModSecurity::Variables::Time($1)); + variables->push_back(new Time($1)); $$ = variables; } | RUN_TIME_VAR_TIME_DAY { std::vector *variables = new std::vector; - variables->push_back(new ModSecurity::Variables::TimeDay($1)); + variables->push_back(new TimeDay($1)); $$ = variables; } | RUN_TIME_VAR_TIME_EPOCH diff --git a/src/rule.cc b/src/rule.cc index 1301e312..c4dcc7ff 100644 --- a/src/rule.cc +++ b/src/rule.cc @@ -32,6 +32,7 @@ namespace ModSecurity { using operators::Operator; using actions::Action; +using Variables::Variable; Rule::Rule(Operator *_op, std::vector *_variables, diff --git a/src/rule.h b/src/rule.h index 9b689ab3..64cc4d90 100644 --- a/src/rule.h +++ b/src/rule.h @@ -22,7 +22,7 @@ #define SRC_RULE_H_ #include "modsecurity/modsecurity.h" -#include "src/variable.h" +#include "variables/variable.h" #ifdef __cplusplus @@ -31,7 +31,7 @@ namespace ModSecurity { class Rule { public: Rule(operators::Operator *_op, - std::vector *_variables, + std::vector *_variables, std::vector *_actions); bool evaluate(Assay *assay); @@ -41,7 +41,7 @@ class Rule { std::vector actions_runtime_pre; std::vector actions_runtime_pos; - std::vector *variables; + std::vector *variables; int phase; double rule_id; diff --git a/src/variable_duration.cc b/src/variables/duration.cc similarity index 90% rename from src/variable_duration.cc rename to src/variables/duration.cc index ba0ae224..12c4e0bd 100644 --- a/src/variable_duration.cc +++ b/src/variables/duration.cc @@ -13,7 +13,7 @@ * */ -#include "src/variable_duration.h" +#include "variables/duration.h" #include #include @@ -25,9 +25,10 @@ #include "modsecurity/assay.h" namespace ModSecurity { +namespace Variables { std::list> - VariableDuration::evaluate(Assay *assay) { + Duration::evaluate(Assay *assay) { std::list> resl; std::string res; std::pair pair; @@ -44,4 +45,5 @@ std::list> } +} // namespace Variables } // namespace ModSecurity diff --git a/src/variable_highest_severity.h b/src/variables/duration.h similarity index 75% rename from src/variable_highest_severity.h rename to src/variables/duration.h index aa1dbfeb..05481bbb 100644 --- a/src/variable_highest_severity.h +++ b/src/variables/duration.h @@ -18,24 +18,27 @@ #include #include -#ifndef SRC_VARIABLE_HIGHEST_SEVERITY_H_ -#define SRC_VARIABLE_HIGHEST_SEVERITY_H_ +#ifndef SRC_VARIABLES_DURATION_H_ +#define SRC_VARIABLES_DURATION_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { class Assay; +namespace Variables { -class VariableHighestSeverity : public Variable { +class Duration : public Variable { public: - explicit VariableHighestSeverity(std::string _name) + explicit Duration(std::string _name) : Variable(_name) { } std::list> evaluate(Assay *assay) override; }; + +} // namespace Variables } // namespace ModSecurity -#endif // SRC_VARIABLE_HIGHEST_SEVERITY_H_ +#endif // SRC_VARIABLES_DURATION_H_ diff --git a/src/variable_env.cc b/src/variables/env.cc similarity index 94% rename from src/variable_env.cc rename to src/variables/env.cc index 06261419..24fcf4a3 100644 --- a/src/variable_env.cc +++ b/src/variables/env.cc @@ -13,7 +13,7 @@ * */ -#include "src/variable_env.h" +#include "variables/env.h" #include #include @@ -31,9 +31,10 @@ extern char **environ; namespace ModSecurity { +namespace Variables { std::list> - VariableEnv::evaluate(Assay *assay) { + Env::evaluate(Assay *assay) { std::list> resl; std::map envs; @@ -64,4 +65,5 @@ std::list> } +} // namespace Variables } // namespace ModSecurity diff --git a/src/variable_duration.h b/src/variables/env.h similarity index 77% rename from src/variable_duration.h rename to src/variables/env.h index 1a793b4d..c9c08940 100644 --- a/src/variable_duration.h +++ b/src/variables/env.h @@ -18,24 +18,27 @@ #include #include -#ifndef SRC_VARIABLE_DURATION_H_ -#define SRC_VARIABLE_DURATION_H_ +#ifndef SRC_VARIABLES_ENV_H_ +#define SRC_VARIABLES_ENV_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { class Assay; +namespace Variables { -class VariableDuration : public Variable { +class Env : public Variable { public: - explicit VariableDuration(std::string _name) + explicit Env(std::string _name) : Variable(_name) { } std::list> evaluate(Assay *assay) override; }; + +} // namespace Variables } // namespace ModSecurity -#endif // SRC_VARIABLE_DURATION_H_ +#endif // SRC_VARIABLES_ENV_H_ diff --git a/src/variable_highest_severity.cc b/src/variables/highest_severity.cc similarity index 88% rename from src/variable_highest_severity.cc rename to src/variables/highest_severity.cc index 5c7be1be..61aa5fbf 100644 --- a/src/variable_highest_severity.cc +++ b/src/variables/highest_severity.cc @@ -13,7 +13,7 @@ * */ -#include "src/variable_highest_severity.h" +#include "variables/highest_severity.h" #include #include @@ -24,9 +24,10 @@ #include "modsecurity/assay.h" namespace ModSecurity { +namespace Variables { std::list> - VariableHighestSeverity::evaluate(Assay *assay) { + HighestSeverity::evaluate(Assay *assay) { std::list> resl; std::pair pair; @@ -38,4 +39,5 @@ std::list> } +} // namespace Variables } // namespace ModSecurity diff --git a/src/variable_env.h b/src/variables/highest_severity.h similarity index 72% rename from src/variable_env.h rename to src/variables/highest_severity.h index 1be999b3..1182d854 100644 --- a/src/variable_env.h +++ b/src/variables/highest_severity.h @@ -18,24 +18,27 @@ #include #include -#ifndef SRC_VARIABLE_ENV_H_ -#define SRC_VARIABLE_ENV_H_ +#ifndef SRC_VARIABLES_HIGHEST_SEVERITY_H_ +#define SRC_VARIABLES_HIGHEST_SEVERITY_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { class Assay; +namespace Variables { -class VariableEnv : public Variable { +class HighestSeverity : public Variable { public: - explicit VariableEnv(std::string _name) + explicit HighestSeverity(std::string _name) : Variable(_name) { } std::list> evaluate(Assay *assay) override; }; + +} // namespace Variables } // namespace ModSecurity -#endif // SRC_VARIABLE_ENV_H_ +#endif // SRC_VARIABLES_HIGHEST_SEVERITY_H_ diff --git a/src/variable_modsec_build.cc b/src/variables/modsec_build.cc similarity index 91% rename from src/variable_modsec_build.cc rename to src/variables/modsec_build.cc index d6fd0141..def97956 100644 --- a/src/variable_modsec_build.cc +++ b/src/variables/modsec_build.cc @@ -13,7 +13,7 @@ * */ -#include "src/variable_modsec_build.h" +#include "variables/modsec_build.h" #include #include @@ -25,9 +25,10 @@ #include "modsecurity/modsecurity.h" namespace ModSecurity { +namespace Variables { std::list> - VariableModsecBuild::evaluate(Assay *assay) { + ModsecBuild::evaluate(Assay *assay) { std::list> resl; std::pair pair; @@ -44,4 +45,5 @@ std::list> } +} // namespace Variables } // namespace ModSecurity diff --git a/src/variable_modsec_build.h b/src/variables/modsec_build.h similarity index 74% rename from src/variable_modsec_build.h rename to src/variables/modsec_build.h index acfc23ca..b6e204d3 100644 --- a/src/variable_modsec_build.h +++ b/src/variables/modsec_build.h @@ -18,24 +18,27 @@ #include #include -#ifndef SRC_VARIABLE_MODSEC_BUILD_H_ -#define SRC_VARIABLE_MODSEC_BUILD_H_ +#ifndef SRC_VARIABLES_MODSEC_BUILD_H_ +#define SRC_VARIABLES_MODSEC_BUILD_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { class Assay; +namespace Variables { -class VariableModsecBuild : public Variable { +class ModsecBuild : public Variable { public: - explicit VariableModsecBuild(std::string _name) + explicit ModsecBuild(std::string _name) : Variable(_name) { } std::list> evaluate(Assay *assay) override; }; + +} // namespace Variables } // namespace ModSecurity -#endif // SRC_VARIABLE_MODSEC_BUILD_H_ +#endif // SRC_VARIABLES_MODSEC_BUILD_H_ diff --git a/src/variables/time.h b/src/variables/time.h index 32e439d8..2efd6f0a 100644 --- a/src/variables/time.h +++ b/src/variables/time.h @@ -22,7 +22,7 @@ #ifndef SRC_VARIABLES_TIME_H_ #define SRC_VARIABLES_TIME_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_day.h b/src/variables/time_day.h index 6b5981a3..fafd2eaa 100644 --- a/src/variables/time_day.h +++ b/src/variables/time_day.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_DAY_H_ #define SRC_VARIABLES_TIME_DAY_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_epoch.h b/src/variables/time_epoch.h index 3dc5b06d..e5708863 100644 --- a/src/variables/time_epoch.h +++ b/src/variables/time_epoch.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_EPOCH_H_ #define SRC_VARIABLES_TIME_EPOCH_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_hour.h b/src/variables/time_hour.h index bfc6c9c5..90accda3 100644 --- a/src/variables/time_hour.h +++ b/src/variables/time_hour.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_HOUR_H_ #define SRC_VARIABLES_TIME_HOUR_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_min.h b/src/variables/time_min.h index 20255472..21121f58 100644 --- a/src/variables/time_min.h +++ b/src/variables/time_min.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_MIN_H_ #define SRC_VARIABLES_TIME_MIN_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_mon.h b/src/variables/time_mon.h index e5ac6e6b..e06ea907 100644 --- a/src/variables/time_mon.h +++ b/src/variables/time_mon.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_MON_H_ #define SRC_VARIABLES_TIME_MON_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_sec.h b/src/variables/time_sec.h index db918268..9a5ee244 100644 --- a/src/variables/time_sec.h +++ b/src/variables/time_sec.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_SEC_H_ #define SRC_VARIABLES_TIME_SEC_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_wday.h b/src/variables/time_wday.h index 3abb6936..9d537f74 100644 --- a/src/variables/time_wday.h +++ b/src/variables/time_wday.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_WDAY_H_ #define SRC_VARIABLES_TIME_WDAY_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variables/time_year.h b/src/variables/time_year.h index 4fc21dc9..febf8cc8 100644 --- a/src/variables/time_year.h +++ b/src/variables/time_year.h @@ -21,7 +21,7 @@ #ifndef SRC_VARIABLES_TIME_YEAR_H_ #define SRC_VARIABLES_TIME_YEAR_H_ -#include "src/variable.h" +#include "variables/variable.h" namespace ModSecurity { diff --git a/src/variable.cc b/src/variables/variable.cc similarity index 93% rename from src/variable.cc rename to src/variables/variable.cc index 09e079b6..e1211fbc 100644 --- a/src/variable.cc +++ b/src/variables/variable.cc @@ -13,7 +13,7 @@ * */ -#include "src/variable.h" +#include "variables/variable.h" #include #include @@ -23,6 +23,7 @@ #include "modsecurity/assay.h" namespace ModSecurity { +namespace Variables { std::list> Variable::evaluate(Assay *assay) { @@ -45,4 +46,6 @@ std::string Variable::to_s( return ret; } + +} // namespace Variables } // namespace ModSecurity diff --git a/src/variable.h b/src/variables/variable.h similarity index 85% rename from src/variable.h rename to src/variables/variable.h index a6340e6e..fdef2c12 100644 --- a/src/variable.h +++ b/src/variables/variable.h @@ -18,12 +18,13 @@ #include #include -#ifndef SRC_VARIABLE_H_ -#define SRC_VARIABLE_H_ +#ifndef SRC_VARIABLES_VARIABLE_H_ +#define SRC_VARIABLES_VARIABLE_H_ namespace ModSecurity { class Assay; +namespace Variables { class Variable { public: @@ -36,6 +37,8 @@ class Variable { std::string name; }; + +} // namespace Variables } // namespace ModSecurity -#endif // SRC_VARIABLE_H_ +#endif // SRC_VARIABLES_VARIABLE_H_