Adds support to action CtlRuleRemoteTargetByTag

This commit is contained in:
Felipe Zimmerle
2016-10-25 15:41:36 -03:00
parent 730d7dbd28
commit 9245369a54
11 changed files with 223 additions and 2 deletions

View File

@@ -26,6 +26,7 @@ class Driver;
#include "actions/ctl_audit_log_parts.h"
#include "actions/ctl_request_body_processor_json.h"
#include "actions/ctl_request_body_processor_xml.h"
#include "actions/ctl_rule_remove_target_by_tag.h"
#include "actions/init_col.h"
#include "actions/set_sid.h"
#include "actions/set_uid.h"
@@ -298,6 +299,7 @@ using modsecurity::Variables::XML;
%token <std::string> ACTION_CTL_RULE_ENGINE
%token <std::string> ACTION_CTL_FORCE_REQ_BODY_VAR
%token <std::string> CONFIG_SEC_COLLECTION_TIMEOUT
%token <std::string> ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG
%type <std::vector<Action *> *> actions
%type <std::vector<Variable *> *> variables
@@ -316,7 +318,7 @@ using modsecurity::Variables::XML;
input:
END
{
return NULL;
return 0;
}
| input line
| line
@@ -1210,6 +1212,15 @@ act:
{
$$ = new modsecurity::actions::CtlRequestBodyProcessorJSON($1);
}
| ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG
{
std::string error;
$$ = new modsecurity::actions::CtlRuleRemoveTargetByTag($1);
if ($$->init(&error) == false) {
driver.error(@0, error);
YYERROR;
}
}
| ACTION_CTL_AUDIT_LOG_PARTS
{
std::string error;

View File

@@ -77,6 +77,8 @@ CONFIG_DIR_RES_BODY_LIMIT (?i:SecResponseBodyLimit)
CONFIG_DIR_REQ_BODY_LIMIT_ACTION (?i:SecRequestBodyLimitAction)
CONFIG_DIR_RES_BODY_LIMIT_ACTION (?i:SecResponseBodyLimitAction)
ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG (?i:ctl:ruleRemoveTargetByTag)
CONFIG_DIR_GEO_DB (?i:SecGeoLookupDb)
CONFIG_DIR_RULE_ENG (?i:SecRuleEngine)
@@ -170,6 +172,7 @@ CONFIG_VALUE_ABORT (?i:Abort)
CONFIG_VALUE_WARN (?i:Warn)
CONFIG_VALUE_PATH [0-9A-Za-z_\/\.\-\*\:]+
CONFIG_VALUE_PATH2 [0-9A-Za-z_\/\.\-\*\:\;]+
AUDIT_PARTS [ABCDEFHJKIZ]+
CONFIG_VALUE_NUMBER [0-9]+
@@ -233,6 +236,7 @@ CONFIG_DIR_UNICODE_MAP_FILE (?i:SecUnicodeMapFile)
%{ /* Remove Rules */ %}
{CONFIG_SEC_REMOVE_RULES_BY_ID}[ ]{FREE_TEXT_NEW_LINE} { return yy::seclang_parser::make_CONFIG_SEC_RULE_REMOVE_BY_ID(strchr(yytext, ' ') + 1, *driver.loc.back()); }
{ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG}[=]{CONFIG_VALUE_PATH2} { return yy::seclang_parser::make_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG(yytext, *driver.loc.back()); }
%{ /* Upload */ %}
{CONFIG_UPLOAD_FILE_LIMIT}[ ]{CONFIG_VALUE_NUMBER} { return yy::seclang_parser::make_CONFIG_UPLOAD_FILE_LIMIT(strchr(yytext, ' ') + 1, *driver.loc.back()); }