mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-29 19:24:29 +03:00
Actions refactoring: now there is a clear definiation on the action name
This commit is contained in:
@@ -481,7 +481,7 @@ expression:
|
||||
for (Action *a : *actions) {
|
||||
Phase *phase = dynamic_cast<Phase *>(a);
|
||||
if (phase != NULL) {
|
||||
definedPhase = phase->phase;
|
||||
definedPhase = phase->m_phase;
|
||||
secRuleDefinedPhase = phase->m_secRulesPhase;
|
||||
delete phase;
|
||||
} else if (a->action_kind == Action::RunTimeOnlyIfMatchKind ||
|
||||
@@ -493,7 +493,7 @@ expression:
|
||||
}
|
||||
checkedActions.push_back(a);
|
||||
} else {
|
||||
driver.error(@0, "The action '" + a->action + "' is not suitable to be part of the SecDefaultActions");
|
||||
driver.error(@0, "The action '" + a->m_name + "' is not suitable to be part of the SecDefaultActions");
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
@@ -863,11 +863,21 @@ act:
|
||||
}
|
||||
| TRANSFORMATION
|
||||
{
|
||||
std::string error;
|
||||
$$ = Transformation::instantiate($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_ACCURACY
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Accuracy($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_EXEC
|
||||
{
|
||||
@@ -907,15 +917,30 @@ act:
|
||||
}
|
||||
| ACTION_REDIRECT
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Redirect($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_SEVERITY
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Severity($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_EXPIREVAR
|
||||
{
|
||||
std::string error;
|
||||
$$ = Action::instantiate($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_SETENV
|
||||
{
|
||||
@@ -973,6 +998,7 @@ act:
|
||||
}
|
||||
| ACTION_SKIP
|
||||
{
|
||||
std::string error;
|
||||
/*
|
||||
|
||||
TODO: skip is not implemented yet.
|
||||
@@ -980,38 +1006,82 @@ act:
|
||||
$$ = new modsecurity::actions::SkipAfter($1);
|
||||
*/
|
||||
$$ = Action::instantiate($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_SKIP_AFTER
|
||||
{
|
||||
std::string error;
|
||||
$$ = new modsecurity::actions::SkipAfter($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_AUDIT_LOG
|
||||
{
|
||||
std::string error;
|
||||
$$ = new modsecurity::actions::AuditLog($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| LOG_DATA
|
||||
{
|
||||
std::string error;
|
||||
$$ = new LogData($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_MSG
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Msg($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_TAG
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Tag($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_REV
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Rev($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_VER
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Ver($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_MATURITY
|
||||
{
|
||||
std::string error;
|
||||
$$ = new Maturity($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_XMLNS
|
||||
{
|
||||
@@ -1034,7 +1104,12 @@ act:
|
||||
}
|
||||
| ACTION_CTL_AUDIT_LOG_PARTS
|
||||
{
|
||||
std::string error;
|
||||
$$ = new CtlAuditLogParts($1);
|
||||
if ($$->init(&error) == false) {
|
||||
driver.error(@0, error);
|
||||
YYERROR;
|
||||
}
|
||||
}
|
||||
| ACTION_CTL_FORCE_REQ_BODY_VAR CONFIG_VALUE_ON
|
||||
{
|
||||
|
@@ -320,89 +320,89 @@ CONFIG_DIR_UNICODE_MAP_FILE (?i:SecUnicodeMapFile)
|
||||
|
||||
{ACTION} { return yy::seclang_parser::make_ACTION(yytext, *driver.loc.back()); }
|
||||
{ACTION_PHASE} { return yy::seclang_parser::make_ACTION_PHASE(yytext, *driver.loc.back()); }
|
||||
{ACTION_SKIP}:{CONFIG_VALUE_NUMBER} { return yy::seclang_parser::make_ACTION_SKIP(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_SKIP_AFTER}:{FREE_TEXT_SPACE_COMMA_QUOTE} { return yy::seclang_parser::make_ACTION_SKIP_AFTER(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_SKIP}:{CONFIG_VALUE_NUMBER} { return yy::seclang_parser::make_ACTION_SKIP(yytext, *driver.loc.back()); }
|
||||
{ACTION_SKIP_AFTER}:{FREE_TEXT_SPACE_COMMA_QUOTE} { return yy::seclang_parser::make_ACTION_SKIP_AFTER(yytext, *driver.loc.back()); }
|
||||
{ACTION_AUDIT_LOG} { return yy::seclang_parser::make_ACTION_AUDIT_LOG(yytext, *driver.loc.back()); }
|
||||
|
||||
{ACTION_SEVERITY}:{ACTION_SEVERITY_VALUE} { return yy::seclang_parser::make_ACTION_SEVERITY(yytext + 9, *driver.loc.back()); }
|
||||
{ACTION_SEVERITY}:'{ACTION_SEVERITY_VALUE}' { return yy::seclang_parser::make_ACTION_SEVERITY(std::string(yytext, 10, yyleng - 11), *driver.loc.back()); }
|
||||
{ACTION_SEVERITY}:{ACTION_SEVERITY_VALUE} { return yy::seclang_parser::make_ACTION_SEVERITY(yytext, *driver.loc.back()); }
|
||||
{ACTION_SEVERITY}:'{ACTION_SEVERITY_VALUE}' { return yy::seclang_parser::make_ACTION_SEVERITY(yytext, *driver.loc.back()); }
|
||||
|
||||
{ACTION_EXEC}:'{VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_EXEC(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_EXEC(yytext, *driver.loc.back());
|
||||
}
|
||||
|
||||
{ACTION_EXEC}:{VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_EXEC(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_EXEC(yytext, *driver.loc.back());
|
||||
}
|
||||
|
||||
{ACTION_EXPIREVAR}:'{VAR_FREE_TEXT_QUOTE}={VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_EXPIREVAR}:'{VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_EXPIREVAR}:{VAR_FREE_TEXT_SPACE}={VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_EXPIREVAR}:{VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_EXPIREVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
|
||||
{ACTION_SETENV}:'{VAR_FREE_TEXT_QUOTE}={VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_SETENV(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETENV(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETENV}:'{VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_SETENV(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETENV(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETENV}:{VAR_FREE_TEXT_SPACE}={VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_SETENV(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETENV(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETENV}:{VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_SETENV(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETENV(yytext, *driver.loc.back());
|
||||
}
|
||||
|
||||
{ACTION_SETSID}:{VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_SETSID(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETSID(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETSID}:'{VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_SETSID(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETSID(yytext, *driver.loc.back());
|
||||
}
|
||||
|
||||
{ACTION_SETUID}:{VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_SETUID(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETUID(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETUID}:'{VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_SETUID(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETUID(yytext, *driver.loc.back());
|
||||
}
|
||||
|
||||
{ACTION_SETVAR}:'{VAR_FREE_TEXT_QUOTE}={VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETVAR}:'{VAR_FREE_TEXT_QUOTE}' {
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETVAR}:{VAR_FREE_TEXT_SPACE}={VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_SETVAR}:{VAR_FREE_TEXT_SPACE_COMMA} {
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(strchr(yytext, ':') + 1, *driver.loc.back());
|
||||
return yy::seclang_parser::make_ACTION_SETVAR(yytext, *driver.loc.back());
|
||||
}
|
||||
{ACTION_XMLNS}:{FREE_TEXT_SPACE_COMMA_QUOTE} { return yy::seclang_parser::make_ACTION_XMLNS(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_XMLNS}:{FREE_TEXT_SPACE_COMMA_QUOTE} { return yy::seclang_parser::make_ACTION_XMLNS(yytext, *driver.loc.back()); }
|
||||
|
||||
{LOG_DATA}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_LOG_DATA(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_MSG}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_MSG(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_ALLOW}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_ALLOW(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_ALLOW}:{FREE_TEXT_QUOTE_COMMA} { return yy::seclang_parser::make_ACTION_ALLOW(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{LOG_DATA}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_LOG_DATA(yytext, *driver.loc.back()); }
|
||||
{ACTION_MSG}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_MSG(yytext, *driver.loc.back()); }
|
||||
{ACTION_ALLOW}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_ALLOW(yytext, *driver.loc.back()); }
|
||||
{ACTION_ALLOW}:{FREE_TEXT_QUOTE_COMMA} { return yy::seclang_parser::make_ACTION_ALLOW(yytext, *driver.loc.back()); }
|
||||
{ACTION_ALLOW} { return yy::seclang_parser::make_ACTION_ALLOW("", *driver.loc.back()); }
|
||||
{ACTION_REDIRECT}:{FREE_TEXT} { return yy::seclang_parser::make_ACTION_REDIRECT(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_TAG}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_TAG(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_REV}:'{FREE_TEXT_QUOTE_COMMA}' { return yy::seclang_parser::make_ACTION_REV(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_REV}:{FREE_TEXT_QUOTE_COMMA} { return yy::seclang_parser::make_ACTION_REV(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_VER}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_VER(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_MATURITY}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_MATURITY(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_MATURITY}:{FREE_TEXT_QUOTE} { return yy::seclang_parser::make_ACTION_MATURITY(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_ACCURACY}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_ACCURACY(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_ACCURACY}:{FREE_TEXT_QUOTE} { return yy::seclang_parser::make_ACTION_ACCURACY(strchr(yytext, ':') + 1, *driver.loc.back()); }
|
||||
{ACTION_REDIRECT}:{FREE_TEXT} { return yy::seclang_parser::make_ACTION_REDIRECT(yytext, *driver.loc.back()); }
|
||||
{ACTION_TAG}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_TAG(yytext, *driver.loc.back()); }
|
||||
{ACTION_REV}:'{FREE_TEXT_QUOTE_COMMA}' { return yy::seclang_parser::make_ACTION_REV(yytext, *driver.loc.back()); }
|
||||
{ACTION_REV}:{FREE_TEXT_QUOTE_COMMA} { return yy::seclang_parser::make_ACTION_REV(yytext, *driver.loc.back()); }
|
||||
{ACTION_VER}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_VER(yytext, *driver.loc.back()); }
|
||||
{ACTION_MATURITY}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_MATURITY(yytext, *driver.loc.back()); }
|
||||
{ACTION_MATURITY}:{FREE_TEXT_QUOTE} { return yy::seclang_parser::make_ACTION_MATURITY(yytext, *driver.loc.back()); }
|
||||
{ACTION_ACCURACY}:'{FREE_TEXT_QUOTE}' { return yy::seclang_parser::make_ACTION_ACCURACY(yytext, *driver.loc.back()); }
|
||||
{ACTION_ACCURACY}:{FREE_TEXT_QUOTE} { return yy::seclang_parser::make_ACTION_ACCURACY(yytext, *driver.loc.back()); }
|
||||
{ACTION_CTL_BDY_XML} { return yy::seclang_parser::make_ACTION_CTL_BDY_XML(yytext, *driver.loc.back()); }
|
||||
{ACTION_CTL_BDY_JSON} { return yy::seclang_parser::make_ACTION_CTL_BDY_JSON(yytext, *driver.loc.back()); }
|
||||
{ACTION_INITCOL}:{COL_NAME}={COL_FREE_TEXT_SPACE_COMMA} { return yy::seclang_parser::make_ACTION_INITCOL(yytext, *driver.loc.back()); }
|
||||
|
Reference in New Issue
Block a user