diff --git a/others/Makefile.am b/others/Makefile.am
index 022ec1f0..9e8a8fa7 100644
--- a/others/Makefile.am
+++ b/others/Makefile.am
@@ -25,6 +25,7 @@ libmbedtls_la_SOURCES = \
mbedtls/md5.c \
mbedtls/aes.c \
mbedtls/aesni.c \
+ mbedtls/sha512.c \
mbedtls/platform_util.c \
mbedtls/sha1.c
diff --git a/src/parser/location.hh b/src/parser/location.hh
deleted file mode 100644
index 49c002be..00000000
--- a/src/parser/location.hh
+++ /dev/null
@@ -1,322 +0,0 @@
-// A Bison parser, made by GNU Bison 3.2.
-
-// Locations for Bison parsers in C++
-
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see .
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-/**
- ** \file location.hh
- ** Define the yy::location class.
- */
-
-#ifndef YY_YY_LOCATION_HH_INCLUDED
-# define YY_YY_LOCATION_HH_INCLUDED
-
-# include // std::max
-# include
-# include
-
-# ifndef YY_NULLPTR
-# if defined __cplusplus
-# if 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# else
-# define YY_NULLPTR ((void*)0)
-# endif
-# endif
-
-
-namespace yy {
-#line 60 "location.hh" // location.cc:339
- /// Abstract a position.
- class position
- {
- public:
- /// Construct a position.
- explicit position (std::string* f = YY_NULLPTR,
- unsigned l = 1u,
- unsigned c = 1u)
- : filename (f)
- , line (l)
- , column (c)
- {}
-
-
- /// Initialization.
- void initialize (std::string* fn = YY_NULLPTR,
- unsigned l = 1u,
- unsigned c = 1u)
- {
- filename = fn;
- line = l;
- column = c;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- /// (line related) Advance to the COUNT next lines.
- void lines (int count = 1)
- {
- if (count)
- {
- column = 1u;
- line = add_ (line, count, 1);
- }
- }
-
- /// (column related) Advance to the COUNT next columns.
- void columns (int count = 1)
- {
- column = add_ (column, count, 1);
- }
- /** \} */
-
- /// File name to which this position refers.
- std::string* filename;
- /// Current line number.
- unsigned line;
- /// Current column number.
- unsigned column;
-
- private:
- /// Compute max (min, lhs+rhs).
- static unsigned add_ (unsigned lhs, int rhs, int min)
- {
- return static_cast (std::max (min,
- static_cast (lhs) + rhs));
- }
- };
-
- /// Add \a width columns, in place.
- inline position&
- operator+= (position& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Add \a width columns.
- inline position
- operator+ (position res, int width)
- {
- return res += width;
- }
-
- /// Subtract \a width columns, in place.
- inline position&
- operator-= (position& res, int width)
- {
- return res += -width;
- }
-
- /// Subtract \a width columns.
- inline position
- operator- (position res, int width)
- {
- return res -= width;
- }
-
- /// Compare two position objects.
- inline bool
- operator== (const position& pos1, const position& pos2)
- {
- return (pos1.line == pos2.line
- && pos1.column == pos2.column
- && (pos1.filename == pos2.filename
- || (pos1.filename && pos2.filename
- && *pos1.filename == *pos2.filename)));
- }
-
- /// Compare two position objects.
- inline bool
- operator!= (const position& pos1, const position& pos2)
- {
- return !(pos1 == pos2);
- }
-
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param pos a reference to the position to redirect
- */
- template
- std::basic_ostream&
- operator<< (std::basic_ostream& ostr, const position& pos)
- {
- if (pos.filename)
- ostr << *pos.filename << ':';
- return ostr << pos.line << '.' << pos.column;
- }
-
- /// Abstract a location.
- class location
- {
- public:
-
- /// Construct a location from \a b to \a e.
- location (const position& b, const position& e)
- : begin (b)
- , end (e)
- {}
-
- /// Construct a 0-width location in \a p.
- explicit location (const position& p = position ())
- : begin (p)
- , end (p)
- {}
-
- /// Construct a 0-width location in \a f, \a l, \a c.
- explicit location (std::string* f,
- unsigned l = 1u,
- unsigned c = 1u)
- : begin (f, l, c)
- , end (f, l, c)
- {}
-
-
- /// Initialization.
- void initialize (std::string* f = YY_NULLPTR,
- unsigned l = 1u,
- unsigned c = 1u)
- {
- begin.initialize (f, l, c);
- end = begin;
- }
-
- /** \name Line and Column related manipulators
- ** \{ */
- public:
- /// Reset initial location to final location.
- void step ()
- {
- begin = end;
- }
-
- /// Extend the current location to the COUNT next columns.
- void columns (int count = 1)
- {
- end += count;
- }
-
- /// Extend the current location to the COUNT next lines.
- void lines (int count = 1)
- {
- end.lines (count);
- }
- /** \} */
-
-
- public:
- /// Beginning of the located region.
- position begin;
- /// End of the located region.
- position end;
- };
-
- /// Join two locations, in place.
- inline location& operator+= (location& res, const location& end)
- {
- res.end = end.end;
- return res;
- }
-
- /// Join two locations.
- inline location operator+ (location res, const location& end)
- {
- return res += end;
- }
-
- /// Add \a width columns to the end position, in place.
- inline location& operator+= (location& res, int width)
- {
- res.columns (width);
- return res;
- }
-
- /// Add \a width columns to the end position.
- inline location operator+ (location res, int width)
- {
- return res += width;
- }
-
- /// Subtract \a width columns to the end position, in place.
- inline location& operator-= (location& res, int width)
- {
- return res += -width;
- }
-
- /// Subtract \a width columns to the end position.
- inline location operator- (location res, int width)
- {
- return res -= width;
- }
-
- /// Compare two location objects.
- inline bool
- operator== (const location& loc1, const location& loc2)
- {
- return loc1.begin == loc2.begin && loc1.end == loc2.end;
- }
-
- /// Compare two location objects.
- inline bool
- operator!= (const location& loc1, const location& loc2)
- {
- return !(loc1 == loc2);
- }
-
- /** \brief Intercept output stream redirection.
- ** \param ostr the destination output stream
- ** \param loc a reference to the location to redirect
- **
- ** Avoid duplicate information.
- */
- template
- std::basic_ostream&
- operator<< (std::basic_ostream& ostr, const location& loc)
- {
- unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
- ostr << loc.begin;
- if (loc.end.filename
- && (!loc.begin.filename
- || *loc.begin.filename != *loc.end.filename))
- ostr << '-' << loc.end.filename << ':' << loc.end.line << '.' << end_col;
- else if (loc.begin.line < loc.end.line)
- ostr << '-' << loc.end.line << '.' << end_col;
- else if (loc.begin.column < end_col)
- ostr << '-' << end_col;
- return ostr;
- }
-
-
-} // yy
-#line 322 "location.hh" // location.cc:339
-#endif // !YY_YY_LOCATION_HH_INCLUDED
diff --git a/src/parser/position.hh b/src/parser/position.hh
deleted file mode 100644
index 8d071218..00000000
--- a/src/parser/position.hh
+++ /dev/null
@@ -1,11 +0,0 @@
-// A Bison parser, made by GNU Bison 3.2.
-
-// Starting with Bison 3.2, this file is useless: the structure it
-// used to define is now defined in "location.hh".
-//
-// To get rid of this file:
-// 1. add 'require "3.2"' (or newer) to your grammar file
-// 2. remove references to this file from your build system
-// 3. if you used to include it, include "location.hh" instead.
-
-#include "location.hh"
diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc
deleted file mode 100644
index e3d16afe..00000000
--- a/src/parser/seclang-parser.cc
+++ /dev/null
@@ -1,6855 +0,0 @@
-// A Bison parser, made by GNU Bison 3.2.
-
-// Skeleton implementation for Bison LALR(1) parsers in C++
-
-// Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see .
-
-// As a special exception, you may create a larger work that contains
-// part or all of the Bison parser skeleton and distribute that work
-// under terms of your choice, so long as that work isn't itself a
-// parser generator using the skeleton or a modified version thereof
-// as a parser skeleton. Alternatively, if you modify or redistribute
-// the parser skeleton itself, you may (at your option) remove this
-// special exception, which will cause the skeleton and the resulting
-// Bison output files to be licensed under the GNU General Public
-// License without this special exception.
-
-// This special exception was added by the Free Software Foundation in
-// version 2.2 of Bison.
-
-// Undocumented macros, especially those whose name start with YY_,
-// are private implementation details. Do not rely on them.
-
-
-
-
-
-#include "seclang-parser.hh"
-
-
-// Unqualified %code blocks.
-#line 361 "seclang-parser.yy" // lalr1.cc:437
-
-#include "src/parser/driver.h"
-
-#line 49 "seclang-parser.cc" // lalr1.cc:437
-
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-# if ENABLE_NLS
-# include // FIXME: INFRINGES ON USER NAME SPACE.
-# define YY_(msgid) dgettext ("bison-runtime", msgid)
-# endif
-# endif
-# ifndef YY_
-# define YY_(msgid) msgid
-# endif
-#endif
-
-// Whether we are compiled with exception support.
-#ifndef YY_EXCEPTIONS
-# if defined __GNUC__ && !defined __EXCEPTIONS
-# define YY_EXCEPTIONS 0
-# else
-# define YY_EXCEPTIONS 1
-# endif
-#endif
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-# ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (N) \
- { \
- (Current).begin = YYRHSLOC (Rhs, 1).begin; \
- (Current).end = YYRHSLOC (Rhs, N).end; \
- } \
- else \
- { \
- (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
- } \
- while (/*CONSTCOND*/ false)
-# endif
-
-
-// Suppress unused-variable warnings by "using" E.
-#define YYUSE(E) ((void) (E))
-
-// Enable debugging if requested.
-#if YYDEBUG
-
-// A pseudo ostream that takes yydebug_ into account.
-# define YYCDEBUG if (yydebug_) (*yycdebug_)
-
-# define YY_SYMBOL_PRINT(Title, Symbol) \
- do { \
- if (yydebug_) \
- { \
- *yycdebug_ << Title << ' '; \
- yy_print_ (*yycdebug_, Symbol); \
- *yycdebug_ << '\n'; \
- } \
- } while (false)
-
-# define YY_REDUCE_PRINT(Rule) \
- do { \
- if (yydebug_) \
- yy_reduce_print_ (Rule); \
- } while (false)
-
-# define YY_STACK_PRINT() \
- do { \
- if (yydebug_) \
- yystack_print_ (); \
- } while (false)
-
-#else // !YYDEBUG
-
-# define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol)
-# define YY_REDUCE_PRINT(Rule) static_cast (0)
-# define YY_STACK_PRINT() static_cast (0)
-
-#endif // !YYDEBUG
-
-#define yyerrok (yyerrstatus_ = 0)
-#define yyclearin (yyla.clear ())
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-#define YYRECOVERING() (!!yyerrstatus_)
-
-
-namespace yy {
-#line 144 "seclang-parser.cc" // lalr1.cc:512
-
- /* Return YYSTR after stripping away unnecessary quotes and
- backslashes, so that it's suitable for yyerror. The heuristic is
- that double-quoting is unnecessary unless the string contains an
- apostrophe, a comma, or backslash (other than backslash-backslash).
- YYSTR is taken from yytname. */
- std::string
- seclang_parser::yytnamerr_ (const char *yystr)
- {
- if (*yystr == '"')
- {
- std::string yyr = "";
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- // Fall through.
- default:
- yyr += *yyp;
- break;
-
- case '"':
- return yyr;
- }
- do_not_strip_quotes: ;
- }
-
- return yystr;
- }
-
-
- /// Build a parser object.
- seclang_parser::seclang_parser (modsecurity::Parser::Driver& driver_yyarg)
- :
-#if YYDEBUG
- yydebug_ (false),
- yycdebug_ (&std::cerr),
-#endif
- driver (driver_yyarg)
- {}
-
- seclang_parser::~seclang_parser ()
- {}
-
-
- /*---------------.
- | Symbol types. |
- `---------------*/
-
-
-
- // by_state.
- seclang_parser::by_state::by_state ()
- : state (empty_state)
- {}
-
- seclang_parser::by_state::by_state (const by_state& other)
- : state (other.state)
- {}
-
- void
- seclang_parser::by_state::clear ()
- {
- state = empty_state;
- }
-
- void
- seclang_parser::by_state::move (by_state& that)
- {
- state = that.state;
- that.clear ();
- }
-
- seclang_parser::by_state::by_state (state_type s)
- : state (s)
- {}
-
- seclang_parser::symbol_number_type
- seclang_parser::by_state::type_get () const
- {
- if (state == empty_state)
- return empty_symbol;
- else
- return yystos_[state];
- }
-
- seclang_parser::stack_symbol_type::stack_symbol_type ()
- {}
-
- seclang_parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
- : super_type (YY_MOVE (that.state), YY_MOVE (that.location))
- {
- switch (that.type_get ())
- {
- case 144: // "Accuracy"
- case 145: // "Allow"
- case 146: // "Append"
- case 147: // "AuditLog"
- case 148: // "Block"
- case 149: // "Capture"
- case 150: // "Chain"
- case 151: // "ACTION_CTL_AUDIT_ENGINE"
- case 152: // "ACTION_CTL_AUDIT_LOG_PARTS"
- case 153: // "ACTION_CTL_BDY_JSON"
- case 154: // "ACTION_CTL_BDY_XML"
- case 155: // "ACTION_CTL_BDY_URLENCODED"
- case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
- case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS"
- case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID"
- case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG"
- case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
- case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
- case 162: // "Deny"
- case 163: // "DeprecateVar"
- case 164: // "Drop"
- case 165: // "Exec"
- case 166: // "ExpireVar"
- case 167: // "Id"
- case 168: // "InitCol"
- case 169: // "Log"
- case 170: // "LogData"
- case 171: // "Maturity"
- case 172: // "Msg"
- case 173: // "MultiMatch"
- case 174: // "NoAuditLog"
- case 175: // "NoLog"
- case 176: // "Pass"
- case 177: // "Pause"
- case 178: // "Phase"
- case 179: // "Prepend"
- case 180: // "Proxy"
- case 181: // "Redirect"
- case 182: // "Rev"
- case 183: // "SanitiseArg"
- case 184: // "SanitiseMatched"
- case 185: // "SanitiseMatchedBytes"
- case 186: // "SanitiseRequestHeader"
- case 187: // "SanitiseResponseHeader"
- case 188: // "SetEnv"
- case 189: // "SetRsc"
- case 190: // "SetSid"
- case 191: // "SetUID"
- case 192: // "Severity"
- case 193: // "Skip"
- case 194: // "SkipAfter"
- case 195: // "Status"
- case 196: // "Tag"
- case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE"
- case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE"
- case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT"
- case 200: // "ACTION_TRANSFORMATION_CMD_LINE"
- case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
- case 202: // "ACTION_TRANSFORMATION_CSS_DECODE"
- case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE"
- case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE"
- case 205: // "ACTION_TRANSFORMATION_HEX_DECODE"
- case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
- case 207: // "ACTION_TRANSFORMATION_JS_DECODE"
- case 208: // "ACTION_TRANSFORMATION_LENGTH"
- case 209: // "ACTION_TRANSFORMATION_LOWERCASE"
- case 210: // "ACTION_TRANSFORMATION_MD5"
- case 211: // "ACTION_TRANSFORMATION_NONE"
- case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
- case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
- case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
- case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
- case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
- case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
- case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
- case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
- case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
- case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
- case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
- case 223: // "ACTION_TRANSFORMATION_SHA1"
- case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
- case 225: // "ACTION_TRANSFORMATION_TRIM"
- case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT"
- case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT"
- case 228: // "ACTION_TRANSFORMATION_UPPERCASE"
- case 229: // "ACTION_TRANSFORMATION_URL_ENCODE"
- case 230: // "ACTION_TRANSFORMATION_URL_DECODE"
- case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
- case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
- case 233: // "Ver"
- case 234: // "xmlns"
- case 235: // "CONFIG_COMPONENT_SIG"
- case 236: // "CONFIG_CONN_ENGINE"
- case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
- case 238: // "CONFIG_SEC_WEB_APP_ID"
- case 239: // "CONFIG_SEC_SERVER_SIG"
- case 240: // "CONFIG_DIR_AUDIT_DIR"
- case 241: // "CONFIG_DIR_AUDIT_DIR_MOD"
- case 242: // "CONFIG_DIR_AUDIT_ENG"
- case 243: // "CONFIG_DIR_AUDIT_FLE_MOD"
- case 244: // "CONFIG_DIR_AUDIT_LOG"
- case 245: // "CONFIG_DIR_AUDIT_LOG2"
- case 246: // "CONFIG_DIR_AUDIT_LOG_P"
- case 247: // "CONFIG_DIR_AUDIT_STS"
- case 248: // "CONFIG_DIR_AUDIT_TPE"
- case 249: // "CONFIG_DIR_DEBUG_LOG"
- case 250: // "CONFIG_DIR_DEBUG_LVL"
- case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
- case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS"
- case 253: // "CONFIG_SEC_HASH_ENGINE"
- case 254: // "CONFIG_SEC_HASH_KEY"
- case 255: // "CONFIG_SEC_HASH_PARAM"
- case 256: // "CONFIG_SEC_HASH_METHOD_RX"
- case 257: // "CONFIG_SEC_HASH_METHOD_PM"
- case 258: // "CONFIG_SEC_CHROOT_DIR"
- case 259: // "CONFIG_DIR_GEO_DB"
- case 260: // "CONFIG_DIR_GSB_DB"
- case 261: // "CONFIG_SEC_GUARDIAN_LOG"
- case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
- case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
- case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT"
- case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT"
- case 266: // "CONFIG_SEC_SENSOR_ID"
- case 267: // "CONFIG_DIR_REQ_BODY"
- case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
- case 269: // "CONFIG_DIR_REQ_BODY_LIMIT"
- case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
- case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
- case 272: // "CONFIG_DIR_RES_BODY"
- case 273: // "CONFIG_DIR_RES_BODY_LIMIT"
- case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
- case 275: // "CONFIG_SEC_RULE_INHERITANCE"
- case 276: // "CONFIG_SEC_RULE_PERF_TIME"
- case 277: // "CONFIG_DIR_RULE_ENG"
- case 278: // "CONFIG_DIR_SEC_ACTION"
- case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
- case 280: // "CONFIG_DIR_SEC_MARKER"
- case 281: // "CONFIG_DIR_UNICODE_MAP_FILE"
- case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE"
- case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT"
- case 284: // "CONFIG_SEC_HTTP_BLKEY"
- case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR"
- case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
- case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
- case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
- case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG"
- case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
- case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG"
- case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
- case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
- case 294: // "CONFIG_UPDLOAD_KEEP_FILES"
- case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
- case 296: // "CONFIG_UPLOAD_DIR"
- case 297: // "CONFIG_UPLOAD_FILE_LIMIT"
- case 298: // "CONFIG_UPLOAD_FILE_MODE"
- case 299: // "CONFIG_VALUE_ABORT"
- case 300: // "CONFIG_VALUE_DETC"
- case 301: // "CONFIG_VALUE_HTTPS"
- case 302: // "CONFIG_VALUE_OFF"
- case 303: // "CONFIG_VALUE_ON"
- case 304: // "CONFIG_VALUE_PARALLEL"
- case 305: // "CONFIG_VALUE_PROCESS_PARTIAL"
- case 306: // "CONFIG_VALUE_REJECT"
- case 307: // "CONFIG_VALUE_RELEVANT_ONLY"
- case 308: // "CONFIG_VALUE_SERIAL"
- case 309: // "CONFIG_VALUE_WARN"
- case 310: // "CONFIG_XML_EXTERNAL_ENTITY"
- case 311: // "CONGIG_DIR_RESPONSE_BODY_MP"
- case 312: // "CONGIG_DIR_SEC_ARG_SEP"
- case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
- case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR"
- case 315: // "CONGIG_DIR_SEC_DATA_DIR"
- case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE"
- case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION"
- case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION"
- case 319: // "CONGIG_DIR_SEC_TMP_DIR"
- case 320: // "DIRECTIVE"
- case 321: // "DIRECTIVE_SECRULESCRIPT"
- case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION"
- case 323: // "QUOTATION_MARK"
- case 324: // "RUN_TIME_VAR_BLD"
- case 325: // "RUN_TIME_VAR_DUR"
- case 326: // "RUN_TIME_VAR_HSV"
- case 327: // "RUN_TIME_VAR_REMOTE_USER"
- case 328: // "RUN_TIME_VAR_TIME"
- case 329: // "RUN_TIME_VAR_TIME_DAY"
- case 330: // "RUN_TIME_VAR_TIME_EPOCH"
- case 331: // "RUN_TIME_VAR_TIME_HOUR"
- case 332: // "RUN_TIME_VAR_TIME_MIN"
- case 333: // "RUN_TIME_VAR_TIME_MON"
- case 334: // "RUN_TIME_VAR_TIME_SEC"
- case 335: // "RUN_TIME_VAR_TIME_WDAY"
- case 336: // "RUN_TIME_VAR_TIME_YEAR"
- case 337: // "VARIABLE"
- case 338: // "Dictionary element"
- case 339: // "Dictionary element, selected by regexp"
- value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
- break;
-
- case 346: // op
- case 347: // op_before_init
- value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 355: // run_time_string
- value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 352: // var
- value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 353: // act
- case 354: // setvar_action
- value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 349: // variables
- case 350: // variables_pre_process
- case 351: // variables_may_be_quoted
- value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value));
- break;
-
- case 344: // actions
- case 345: // actions_may_quoted
- value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value));
- break;
-
- default:
- break;
- }
-
-#if defined __cplusplus && 201103L <= __cplusplus
- // that is emptied.
- that.state = empty_state;
-#endif
- }
-
- seclang_parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
- : super_type (s, YY_MOVE (that.location))
- {
- switch (that.type_get ())
- {
- case 144: // "Accuracy"
- case 145: // "Allow"
- case 146: // "Append"
- case 147: // "AuditLog"
- case 148: // "Block"
- case 149: // "Capture"
- case 150: // "Chain"
- case 151: // "ACTION_CTL_AUDIT_ENGINE"
- case 152: // "ACTION_CTL_AUDIT_LOG_PARTS"
- case 153: // "ACTION_CTL_BDY_JSON"
- case 154: // "ACTION_CTL_BDY_XML"
- case 155: // "ACTION_CTL_BDY_URLENCODED"
- case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
- case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS"
- case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID"
- case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG"
- case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
- case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
- case 162: // "Deny"
- case 163: // "DeprecateVar"
- case 164: // "Drop"
- case 165: // "Exec"
- case 166: // "ExpireVar"
- case 167: // "Id"
- case 168: // "InitCol"
- case 169: // "Log"
- case 170: // "LogData"
- case 171: // "Maturity"
- case 172: // "Msg"
- case 173: // "MultiMatch"
- case 174: // "NoAuditLog"
- case 175: // "NoLog"
- case 176: // "Pass"
- case 177: // "Pause"
- case 178: // "Phase"
- case 179: // "Prepend"
- case 180: // "Proxy"
- case 181: // "Redirect"
- case 182: // "Rev"
- case 183: // "SanitiseArg"
- case 184: // "SanitiseMatched"
- case 185: // "SanitiseMatchedBytes"
- case 186: // "SanitiseRequestHeader"
- case 187: // "SanitiseResponseHeader"
- case 188: // "SetEnv"
- case 189: // "SetRsc"
- case 190: // "SetSid"
- case 191: // "SetUID"
- case 192: // "Severity"
- case 193: // "Skip"
- case 194: // "SkipAfter"
- case 195: // "Status"
- case 196: // "Tag"
- case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE"
- case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE"
- case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT"
- case 200: // "ACTION_TRANSFORMATION_CMD_LINE"
- case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
- case 202: // "ACTION_TRANSFORMATION_CSS_DECODE"
- case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE"
- case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE"
- case 205: // "ACTION_TRANSFORMATION_HEX_DECODE"
- case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
- case 207: // "ACTION_TRANSFORMATION_JS_DECODE"
- case 208: // "ACTION_TRANSFORMATION_LENGTH"
- case 209: // "ACTION_TRANSFORMATION_LOWERCASE"
- case 210: // "ACTION_TRANSFORMATION_MD5"
- case 211: // "ACTION_TRANSFORMATION_NONE"
- case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
- case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
- case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
- case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
- case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
- case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
- case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
- case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
- case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
- case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
- case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
- case 223: // "ACTION_TRANSFORMATION_SHA1"
- case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
- case 225: // "ACTION_TRANSFORMATION_TRIM"
- case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT"
- case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT"
- case 228: // "ACTION_TRANSFORMATION_UPPERCASE"
- case 229: // "ACTION_TRANSFORMATION_URL_ENCODE"
- case 230: // "ACTION_TRANSFORMATION_URL_DECODE"
- case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
- case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
- case 233: // "Ver"
- case 234: // "xmlns"
- case 235: // "CONFIG_COMPONENT_SIG"
- case 236: // "CONFIG_CONN_ENGINE"
- case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
- case 238: // "CONFIG_SEC_WEB_APP_ID"
- case 239: // "CONFIG_SEC_SERVER_SIG"
- case 240: // "CONFIG_DIR_AUDIT_DIR"
- case 241: // "CONFIG_DIR_AUDIT_DIR_MOD"
- case 242: // "CONFIG_DIR_AUDIT_ENG"
- case 243: // "CONFIG_DIR_AUDIT_FLE_MOD"
- case 244: // "CONFIG_DIR_AUDIT_LOG"
- case 245: // "CONFIG_DIR_AUDIT_LOG2"
- case 246: // "CONFIG_DIR_AUDIT_LOG_P"
- case 247: // "CONFIG_DIR_AUDIT_STS"
- case 248: // "CONFIG_DIR_AUDIT_TPE"
- case 249: // "CONFIG_DIR_DEBUG_LOG"
- case 250: // "CONFIG_DIR_DEBUG_LVL"
- case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
- case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS"
- case 253: // "CONFIG_SEC_HASH_ENGINE"
- case 254: // "CONFIG_SEC_HASH_KEY"
- case 255: // "CONFIG_SEC_HASH_PARAM"
- case 256: // "CONFIG_SEC_HASH_METHOD_RX"
- case 257: // "CONFIG_SEC_HASH_METHOD_PM"
- case 258: // "CONFIG_SEC_CHROOT_DIR"
- case 259: // "CONFIG_DIR_GEO_DB"
- case 260: // "CONFIG_DIR_GSB_DB"
- case 261: // "CONFIG_SEC_GUARDIAN_LOG"
- case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
- case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
- case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT"
- case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT"
- case 266: // "CONFIG_SEC_SENSOR_ID"
- case 267: // "CONFIG_DIR_REQ_BODY"
- case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
- case 269: // "CONFIG_DIR_REQ_BODY_LIMIT"
- case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
- case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
- case 272: // "CONFIG_DIR_RES_BODY"
- case 273: // "CONFIG_DIR_RES_BODY_LIMIT"
- case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
- case 275: // "CONFIG_SEC_RULE_INHERITANCE"
- case 276: // "CONFIG_SEC_RULE_PERF_TIME"
- case 277: // "CONFIG_DIR_RULE_ENG"
- case 278: // "CONFIG_DIR_SEC_ACTION"
- case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
- case 280: // "CONFIG_DIR_SEC_MARKER"
- case 281: // "CONFIG_DIR_UNICODE_MAP_FILE"
- case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE"
- case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT"
- case 284: // "CONFIG_SEC_HTTP_BLKEY"
- case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR"
- case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
- case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
- case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
- case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG"
- case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
- case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG"
- case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
- case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
- case 294: // "CONFIG_UPDLOAD_KEEP_FILES"
- case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
- case 296: // "CONFIG_UPLOAD_DIR"
- case 297: // "CONFIG_UPLOAD_FILE_LIMIT"
- case 298: // "CONFIG_UPLOAD_FILE_MODE"
- case 299: // "CONFIG_VALUE_ABORT"
- case 300: // "CONFIG_VALUE_DETC"
- case 301: // "CONFIG_VALUE_HTTPS"
- case 302: // "CONFIG_VALUE_OFF"
- case 303: // "CONFIG_VALUE_ON"
- case 304: // "CONFIG_VALUE_PARALLEL"
- case 305: // "CONFIG_VALUE_PROCESS_PARTIAL"
- case 306: // "CONFIG_VALUE_REJECT"
- case 307: // "CONFIG_VALUE_RELEVANT_ONLY"
- case 308: // "CONFIG_VALUE_SERIAL"
- case 309: // "CONFIG_VALUE_WARN"
- case 310: // "CONFIG_XML_EXTERNAL_ENTITY"
- case 311: // "CONGIG_DIR_RESPONSE_BODY_MP"
- case 312: // "CONGIG_DIR_SEC_ARG_SEP"
- case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
- case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR"
- case 315: // "CONGIG_DIR_SEC_DATA_DIR"
- case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE"
- case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION"
- case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION"
- case 319: // "CONGIG_DIR_SEC_TMP_DIR"
- case 320: // "DIRECTIVE"
- case 321: // "DIRECTIVE_SECRULESCRIPT"
- case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION"
- case 323: // "QUOTATION_MARK"
- case 324: // "RUN_TIME_VAR_BLD"
- case 325: // "RUN_TIME_VAR_DUR"
- case 326: // "RUN_TIME_VAR_HSV"
- case 327: // "RUN_TIME_VAR_REMOTE_USER"
- case 328: // "RUN_TIME_VAR_TIME"
- case 329: // "RUN_TIME_VAR_TIME_DAY"
- case 330: // "RUN_TIME_VAR_TIME_EPOCH"
- case 331: // "RUN_TIME_VAR_TIME_HOUR"
- case 332: // "RUN_TIME_VAR_TIME_MIN"
- case 333: // "RUN_TIME_VAR_TIME_MON"
- case 334: // "RUN_TIME_VAR_TIME_SEC"
- case 335: // "RUN_TIME_VAR_TIME_WDAY"
- case 336: // "RUN_TIME_VAR_TIME_YEAR"
- case 337: // "VARIABLE"
- case 338: // "Dictionary element"
- case 339: // "Dictionary element, selected by regexp"
- value.move< std::string > (YY_MOVE (that.value));
- break;
-
- case 346: // op
- case 347: // op_before_init
- value.move< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 355: // run_time_string
- value.move< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 352: // var
- value.move< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 353: // act
- case 354: // setvar_action
- value.move< std::unique_ptr > (YY_MOVE (that.value));
- break;
-
- case 349: // variables
- case 350: // variables_pre_process
- case 351: // variables_may_be_quoted
- value.move< std::unique_ptr > > > (YY_MOVE (that.value));
- break;
-
- case 344: // actions
- case 345: // actions_may_quoted
- value.move< std::unique_ptr > > > (YY_MOVE (that.value));
- break;
-
- default:
- break;
- }
-
- // that is emptied.
- that.type = empty_symbol;
- }
-
-#if defined __cplusplus && __cplusplus < 201103L
- seclang_parser::stack_symbol_type&
- seclang_parser::stack_symbol_type::operator= (stack_symbol_type& that)
- {
- state = that.state;
- switch (that.type_get ())
- {
- case 144: // "Accuracy"
- case 145: // "Allow"
- case 146: // "Append"
- case 147: // "AuditLog"
- case 148: // "Block"
- case 149: // "Capture"
- case 150: // "Chain"
- case 151: // "ACTION_CTL_AUDIT_ENGINE"
- case 152: // "ACTION_CTL_AUDIT_LOG_PARTS"
- case 153: // "ACTION_CTL_BDY_JSON"
- case 154: // "ACTION_CTL_BDY_XML"
- case 155: // "ACTION_CTL_BDY_URLENCODED"
- case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
- case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS"
- case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID"
- case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG"
- case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
- case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
- case 162: // "Deny"
- case 163: // "DeprecateVar"
- case 164: // "Drop"
- case 165: // "Exec"
- case 166: // "ExpireVar"
- case 167: // "Id"
- case 168: // "InitCol"
- case 169: // "Log"
- case 170: // "LogData"
- case 171: // "Maturity"
- case 172: // "Msg"
- case 173: // "MultiMatch"
- case 174: // "NoAuditLog"
- case 175: // "NoLog"
- case 176: // "Pass"
- case 177: // "Pause"
- case 178: // "Phase"
- case 179: // "Prepend"
- case 180: // "Proxy"
- case 181: // "Redirect"
- case 182: // "Rev"
- case 183: // "SanitiseArg"
- case 184: // "SanitiseMatched"
- case 185: // "SanitiseMatchedBytes"
- case 186: // "SanitiseRequestHeader"
- case 187: // "SanitiseResponseHeader"
- case 188: // "SetEnv"
- case 189: // "SetRsc"
- case 190: // "SetSid"
- case 191: // "SetUID"
- case 192: // "Severity"
- case 193: // "Skip"
- case 194: // "SkipAfter"
- case 195: // "Status"
- case 196: // "Tag"
- case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE"
- case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE"
- case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT"
- case 200: // "ACTION_TRANSFORMATION_CMD_LINE"
- case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
- case 202: // "ACTION_TRANSFORMATION_CSS_DECODE"
- case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE"
- case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE"
- case 205: // "ACTION_TRANSFORMATION_HEX_DECODE"
- case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
- case 207: // "ACTION_TRANSFORMATION_JS_DECODE"
- case 208: // "ACTION_TRANSFORMATION_LENGTH"
- case 209: // "ACTION_TRANSFORMATION_LOWERCASE"
- case 210: // "ACTION_TRANSFORMATION_MD5"
- case 211: // "ACTION_TRANSFORMATION_NONE"
- case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
- case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
- case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
- case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
- case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
- case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
- case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
- case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
- case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
- case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
- case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
- case 223: // "ACTION_TRANSFORMATION_SHA1"
- case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
- case 225: // "ACTION_TRANSFORMATION_TRIM"
- case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT"
- case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT"
- case 228: // "ACTION_TRANSFORMATION_UPPERCASE"
- case 229: // "ACTION_TRANSFORMATION_URL_ENCODE"
- case 230: // "ACTION_TRANSFORMATION_URL_DECODE"
- case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
- case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
- case 233: // "Ver"
- case 234: // "xmlns"
- case 235: // "CONFIG_COMPONENT_SIG"
- case 236: // "CONFIG_CONN_ENGINE"
- case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
- case 238: // "CONFIG_SEC_WEB_APP_ID"
- case 239: // "CONFIG_SEC_SERVER_SIG"
- case 240: // "CONFIG_DIR_AUDIT_DIR"
- case 241: // "CONFIG_DIR_AUDIT_DIR_MOD"
- case 242: // "CONFIG_DIR_AUDIT_ENG"
- case 243: // "CONFIG_DIR_AUDIT_FLE_MOD"
- case 244: // "CONFIG_DIR_AUDIT_LOG"
- case 245: // "CONFIG_DIR_AUDIT_LOG2"
- case 246: // "CONFIG_DIR_AUDIT_LOG_P"
- case 247: // "CONFIG_DIR_AUDIT_STS"
- case 248: // "CONFIG_DIR_AUDIT_TPE"
- case 249: // "CONFIG_DIR_DEBUG_LOG"
- case 250: // "CONFIG_DIR_DEBUG_LVL"
- case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
- case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS"
- case 253: // "CONFIG_SEC_HASH_ENGINE"
- case 254: // "CONFIG_SEC_HASH_KEY"
- case 255: // "CONFIG_SEC_HASH_PARAM"
- case 256: // "CONFIG_SEC_HASH_METHOD_RX"
- case 257: // "CONFIG_SEC_HASH_METHOD_PM"
- case 258: // "CONFIG_SEC_CHROOT_DIR"
- case 259: // "CONFIG_DIR_GEO_DB"
- case 260: // "CONFIG_DIR_GSB_DB"
- case 261: // "CONFIG_SEC_GUARDIAN_LOG"
- case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
- case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
- case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT"
- case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT"
- case 266: // "CONFIG_SEC_SENSOR_ID"
- case 267: // "CONFIG_DIR_REQ_BODY"
- case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
- case 269: // "CONFIG_DIR_REQ_BODY_LIMIT"
- case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
- case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
- case 272: // "CONFIG_DIR_RES_BODY"
- case 273: // "CONFIG_DIR_RES_BODY_LIMIT"
- case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
- case 275: // "CONFIG_SEC_RULE_INHERITANCE"
- case 276: // "CONFIG_SEC_RULE_PERF_TIME"
- case 277: // "CONFIG_DIR_RULE_ENG"
- case 278: // "CONFIG_DIR_SEC_ACTION"
- case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
- case 280: // "CONFIG_DIR_SEC_MARKER"
- case 281: // "CONFIG_DIR_UNICODE_MAP_FILE"
- case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE"
- case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT"
- case 284: // "CONFIG_SEC_HTTP_BLKEY"
- case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR"
- case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
- case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
- case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
- case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG"
- case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
- case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG"
- case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
- case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
- case 294: // "CONFIG_UPDLOAD_KEEP_FILES"
- case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
- case 296: // "CONFIG_UPLOAD_DIR"
- case 297: // "CONFIG_UPLOAD_FILE_LIMIT"
- case 298: // "CONFIG_UPLOAD_FILE_MODE"
- case 299: // "CONFIG_VALUE_ABORT"
- case 300: // "CONFIG_VALUE_DETC"
- case 301: // "CONFIG_VALUE_HTTPS"
- case 302: // "CONFIG_VALUE_OFF"
- case 303: // "CONFIG_VALUE_ON"
- case 304: // "CONFIG_VALUE_PARALLEL"
- case 305: // "CONFIG_VALUE_PROCESS_PARTIAL"
- case 306: // "CONFIG_VALUE_REJECT"
- case 307: // "CONFIG_VALUE_RELEVANT_ONLY"
- case 308: // "CONFIG_VALUE_SERIAL"
- case 309: // "CONFIG_VALUE_WARN"
- case 310: // "CONFIG_XML_EXTERNAL_ENTITY"
- case 311: // "CONGIG_DIR_RESPONSE_BODY_MP"
- case 312: // "CONGIG_DIR_SEC_ARG_SEP"
- case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
- case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR"
- case 315: // "CONGIG_DIR_SEC_DATA_DIR"
- case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE"
- case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION"
- case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION"
- case 319: // "CONGIG_DIR_SEC_TMP_DIR"
- case 320: // "DIRECTIVE"
- case 321: // "DIRECTIVE_SECRULESCRIPT"
- case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION"
- case 323: // "QUOTATION_MARK"
- case 324: // "RUN_TIME_VAR_BLD"
- case 325: // "RUN_TIME_VAR_DUR"
- case 326: // "RUN_TIME_VAR_HSV"
- case 327: // "RUN_TIME_VAR_REMOTE_USER"
- case 328: // "RUN_TIME_VAR_TIME"
- case 329: // "RUN_TIME_VAR_TIME_DAY"
- case 330: // "RUN_TIME_VAR_TIME_EPOCH"
- case 331: // "RUN_TIME_VAR_TIME_HOUR"
- case 332: // "RUN_TIME_VAR_TIME_MIN"
- case 333: // "RUN_TIME_VAR_TIME_MON"
- case 334: // "RUN_TIME_VAR_TIME_SEC"
- case 335: // "RUN_TIME_VAR_TIME_WDAY"
- case 336: // "RUN_TIME_VAR_TIME_YEAR"
- case 337: // "VARIABLE"
- case 338: // "Dictionary element"
- case 339: // "Dictionary element, selected by regexp"
- value.move< std::string > (that.value);
- break;
-
- case 346: // op
- case 347: // op_before_init
- value.move< std::unique_ptr > (that.value);
- break;
-
- case 355: // run_time_string
- value.move< std::unique_ptr > (that.value);
- break;
-
- case 352: // var
- value.move< std::unique_ptr > (that.value);
- break;
-
- case 353: // act
- case 354: // setvar_action
- value.move< std::unique_ptr > (that.value);
- break;
-
- case 349: // variables
- case 350: // variables_pre_process
- case 351: // variables_may_be_quoted
- value.move< std::unique_ptr > > > (that.value);
- break;
-
- case 344: // actions
- case 345: // actions_may_quoted
- value.move< std::unique_ptr > > > (that.value);
- break;
-
- default:
- break;
- }
-
- location = that.location;
- // that is emptied.
- that.state = empty_state;
- return *this;
- }
-#endif
-
- template
- void
- seclang_parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const
- {
- if (yymsg)
- YY_SYMBOL_PRINT (yymsg, yysym);
- }
-
-#if YYDEBUG
- template
- void
- seclang_parser::yy_print_ (std::ostream& yyo,
- const basic_symbol& yysym) const
- {
- std::ostream& yyoutput = yyo;
- YYUSE (yyoutput);
- symbol_number_type yytype = yysym.type_get ();
- // Avoid a (spurious) G++ 4.8 warning about "array subscript is
- // below array bounds".
- if (yysym.empty ())
- std::abort ();
- yyo << (yytype < yyntokens_ ? "token" : "nterm")
- << ' ' << yytname_[yytype] << " ("
- << yysym.location << ": ";
- YYUSE (yytype);
- yyo << ')';
- }
-#endif
-
- void
- seclang_parser::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
- {
- if (m)
- YY_SYMBOL_PRINT (m, sym);
- yystack_.push (YY_MOVE (sym));
- }
-
- void
- seclang_parser::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
- {
-#if defined __cplusplus && 201103L <= __cplusplus
- yypush_ (m, stack_symbol_type (s, std::move (sym)));
-#else
- stack_symbol_type ss (s, sym);
- yypush_ (m, ss);
-#endif
- }
-
- void
- seclang_parser::yypop_ (int n)
- {
- yystack_.pop (n);
- }
-
-#if YYDEBUG
- std::ostream&
- seclang_parser::debug_stream () const
- {
- return *yycdebug_;
- }
-
- void
- seclang_parser::set_debug_stream (std::ostream& o)
- {
- yycdebug_ = &o;
- }
-
-
- seclang_parser::debug_level_type
- seclang_parser::debug_level () const
- {
- return yydebug_;
- }
-
- void
- seclang_parser::set_debug_level (debug_level_type l)
- {
- yydebug_ = l;
- }
-#endif // YYDEBUG
-
- seclang_parser::state_type
- seclang_parser::yy_lr_goto_state_ (state_type yystate, int yysym)
- {
- int yyr = yypgoto_[yysym - yyntokens_] + yystate;
- if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
- return yytable_[yyr];
- else
- return yydefgoto_[yysym - yyntokens_];
- }
-
- bool
- seclang_parser::yy_pact_value_is_default_ (int yyvalue)
- {
- return yyvalue == yypact_ninf_;
- }
-
- bool
- seclang_parser::yy_table_value_is_error_ (int yyvalue)
- {
- return yyvalue == yytable_ninf_;
- }
-
- int
- seclang_parser::operator() ()
- {
- return parse ();
- }
-
- int
- seclang_parser::parse ()
- {
- // State.
- int yyn;
- /// Length of the RHS of the rule being reduced.
- int yylen = 0;
-
- // Error handling.
- int yynerrs_ = 0;
- int yyerrstatus_ = 0;
-
- /// The lookahead symbol.
- symbol_type yyla;
-
- /// The locations where the error started and ended.
- stack_symbol_type yyerror_range[3];
-
- /// The return value of parse ().
- int yyresult;
-
-#if YY_EXCEPTIONS
- try
-#endif // YY_EXCEPTIONS
- {
- YYCDEBUG << "Starting parse\n";
-
-
- // User initialization code.
-#line 354 "seclang-parser.yy" // lalr1.cc:783
-{
- // Initialize the initial location.
- yyla.location.begin.filename = yyla.location.end.filename = &driver.file;
-}
-
-#line 1116 "seclang-parser.cc" // lalr1.cc:783
-
- /* Initialize the stack. The initial state will be set in
- yynewstate, since the latter expects the semantical and the
- location values to have been already stored, initialize these
- stacks with a primary value. */
- yystack_.clear ();
- yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
-
- // A new symbol was pushed on the stack.
- yynewstate:
- YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
-
- // Accept?
- if (yystack_[0].state == yyfinal_)
- goto yyacceptlab;
-
- goto yybackup;
-
- // Backup.
- yybackup:
- // Try to take a decision without lookahead.
- yyn = yypact_[yystack_[0].state];
- if (yy_pact_value_is_default_ (yyn))
- goto yydefault;
-
- // Read a lookahead token.
- if (yyla.empty ())
- {
- YYCDEBUG << "Reading a token: ";
-#if YY_EXCEPTIONS
- try
-#endif // YY_EXCEPTIONS
- {
- symbol_type yylookahead (yylex (driver));
- yyla.move (yylookahead);
- }
-#if YY_EXCEPTIONS
- catch (const syntax_error& yyexc)
- {
- error (yyexc);
- goto yyerrlab1;
- }
-#endif // YY_EXCEPTIONS
- }
- YY_SYMBOL_PRINT ("Next token is", yyla);
-
- /* If the proper action on seeing token YYLA.TYPE is to reduce or
- to detect an error, take that action. */
- yyn += yyla.type_get ();
- if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
- goto yydefault;
-
- // Reduce or error.
- yyn = yytable_[yyn];
- if (yyn <= 0)
- {
- if (yy_table_value_is_error_ (yyn))
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-
- // Count tokens shifted since error; after three, turn off error status.
- if (yyerrstatus_)
- --yyerrstatus_;
-
- // Shift the lookahead token.
- yypush_ ("Shifting", yyn, YY_MOVE (yyla));
- goto yynewstate;
-
- /*-----------------------------------------------------------.
- | yydefault -- do the default action for the current state. |
- `-----------------------------------------------------------*/
- yydefault:
- yyn = yydefact_[yystack_[0].state];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
- /*-----------------------------.
- | yyreduce -- Do a reduction. |
- `-----------------------------*/
- yyreduce:
- yylen = yyr2_[yyn];
- {
- stack_symbol_type yylhs;
- yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
- /* Variants are always initialized to an empty instance of the
- correct type. The default '$$ = $1' action is NOT applied
- when using variants. */
- switch (yyr1_[yyn])
- {
- case 144: // "Accuracy"
- case 145: // "Allow"
- case 146: // "Append"
- case 147: // "AuditLog"
- case 148: // "Block"
- case 149: // "Capture"
- case 150: // "Chain"
- case 151: // "ACTION_CTL_AUDIT_ENGINE"
- case 152: // "ACTION_CTL_AUDIT_LOG_PARTS"
- case 153: // "ACTION_CTL_BDY_JSON"
- case 154: // "ACTION_CTL_BDY_XML"
- case 155: // "ACTION_CTL_BDY_URLENCODED"
- case 156: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
- case 157: // "ACTION_CTL_REQUEST_BODY_ACCESS"
- case 158: // "ACTION_CTL_RULE_REMOVE_BY_ID"
- case 159: // "ACTION_CTL_RULE_REMOVE_BY_TAG"
- case 160: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
- case 161: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
- case 162: // "Deny"
- case 163: // "DeprecateVar"
- case 164: // "Drop"
- case 165: // "Exec"
- case 166: // "ExpireVar"
- case 167: // "Id"
- case 168: // "InitCol"
- case 169: // "Log"
- case 170: // "LogData"
- case 171: // "Maturity"
- case 172: // "Msg"
- case 173: // "MultiMatch"
- case 174: // "NoAuditLog"
- case 175: // "NoLog"
- case 176: // "Pass"
- case 177: // "Pause"
- case 178: // "Phase"
- case 179: // "Prepend"
- case 180: // "Proxy"
- case 181: // "Redirect"
- case 182: // "Rev"
- case 183: // "SanitiseArg"
- case 184: // "SanitiseMatched"
- case 185: // "SanitiseMatchedBytes"
- case 186: // "SanitiseRequestHeader"
- case 187: // "SanitiseResponseHeader"
- case 188: // "SetEnv"
- case 189: // "SetRsc"
- case 190: // "SetSid"
- case 191: // "SetUID"
- case 192: // "Severity"
- case 193: // "Skip"
- case 194: // "SkipAfter"
- case 195: // "Status"
- case 196: // "Tag"
- case 197: // "ACTION_TRANSFORMATION_BASE_64_ENCODE"
- case 198: // "ACTION_TRANSFORMATION_BASE_64_DECODE"
- case 199: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT"
- case 200: // "ACTION_TRANSFORMATION_CMD_LINE"
- case 201: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
- case 202: // "ACTION_TRANSFORMATION_CSS_DECODE"
- case 203: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE"
- case 204: // "ACTION_TRANSFORMATION_HEX_ENCODE"
- case 205: // "ACTION_TRANSFORMATION_HEX_DECODE"
- case 206: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
- case 207: // "ACTION_TRANSFORMATION_JS_DECODE"
- case 208: // "ACTION_TRANSFORMATION_LENGTH"
- case 209: // "ACTION_TRANSFORMATION_LOWERCASE"
- case 210: // "ACTION_TRANSFORMATION_MD5"
- case 211: // "ACTION_TRANSFORMATION_NONE"
- case 212: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
- case 213: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
- case 214: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
- case 215: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
- case 216: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
- case 217: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
- case 218: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
- case 219: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
- case 220: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
- case 221: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
- case 222: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
- case 223: // "ACTION_TRANSFORMATION_SHA1"
- case 224: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
- case 225: // "ACTION_TRANSFORMATION_TRIM"
- case 226: // "ACTION_TRANSFORMATION_TRIM_LEFT"
- case 227: // "ACTION_TRANSFORMATION_TRIM_RIGHT"
- case 228: // "ACTION_TRANSFORMATION_UPPERCASE"
- case 229: // "ACTION_TRANSFORMATION_URL_ENCODE"
- case 230: // "ACTION_TRANSFORMATION_URL_DECODE"
- case 231: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
- case 232: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
- case 233: // "Ver"
- case 234: // "xmlns"
- case 235: // "CONFIG_COMPONENT_SIG"
- case 236: // "CONFIG_CONN_ENGINE"
- case 237: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
- case 238: // "CONFIG_SEC_WEB_APP_ID"
- case 239: // "CONFIG_SEC_SERVER_SIG"
- case 240: // "CONFIG_DIR_AUDIT_DIR"
- case 241: // "CONFIG_DIR_AUDIT_DIR_MOD"
- case 242: // "CONFIG_DIR_AUDIT_ENG"
- case 243: // "CONFIG_DIR_AUDIT_FLE_MOD"
- case 244: // "CONFIG_DIR_AUDIT_LOG"
- case 245: // "CONFIG_DIR_AUDIT_LOG2"
- case 246: // "CONFIG_DIR_AUDIT_LOG_P"
- case 247: // "CONFIG_DIR_AUDIT_STS"
- case 248: // "CONFIG_DIR_AUDIT_TPE"
- case 249: // "CONFIG_DIR_DEBUG_LOG"
- case 250: // "CONFIG_DIR_DEBUG_LVL"
- case 251: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
- case 252: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS"
- case 253: // "CONFIG_SEC_HASH_ENGINE"
- case 254: // "CONFIG_SEC_HASH_KEY"
- case 255: // "CONFIG_SEC_HASH_PARAM"
- case 256: // "CONFIG_SEC_HASH_METHOD_RX"
- case 257: // "CONFIG_SEC_HASH_METHOD_PM"
- case 258: // "CONFIG_SEC_CHROOT_DIR"
- case 259: // "CONFIG_DIR_GEO_DB"
- case 260: // "CONFIG_DIR_GSB_DB"
- case 261: // "CONFIG_SEC_GUARDIAN_LOG"
- case 262: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
- case 263: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
- case 264: // "CONFIG_SEC_CONN_R_STATE_LIMIT"
- case 265: // "CONFIG_SEC_CONN_W_STATE_LIMIT"
- case 266: // "CONFIG_SEC_SENSOR_ID"
- case 267: // "CONFIG_DIR_REQ_BODY"
- case 268: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
- case 269: // "CONFIG_DIR_REQ_BODY_LIMIT"
- case 270: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
- case 271: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
- case 272: // "CONFIG_DIR_RES_BODY"
- case 273: // "CONFIG_DIR_RES_BODY_LIMIT"
- case 274: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
- case 275: // "CONFIG_SEC_RULE_INHERITANCE"
- case 276: // "CONFIG_SEC_RULE_PERF_TIME"
- case 277: // "CONFIG_DIR_RULE_ENG"
- case 278: // "CONFIG_DIR_SEC_ACTION"
- case 279: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
- case 280: // "CONFIG_DIR_SEC_MARKER"
- case 281: // "CONFIG_DIR_UNICODE_MAP_FILE"
- case 282: // "CONFIG_DIR_UNICODE_CODE_PAGE"
- case 283: // "CONFIG_SEC_COLLECTION_TIMEOUT"
- case 284: // "CONFIG_SEC_HTTP_BLKEY"
- case 285: // "CONFIG_SEC_INTERCEPT_ON_ERROR"
- case 286: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
- case 287: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
- case 288: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
- case 289: // "CONFIG_SEC_RULE_REMOVE_BY_TAG"
- case 290: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
- case 291: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG"
- case 292: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
- case 293: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
- case 294: // "CONFIG_UPDLOAD_KEEP_FILES"
- case 295: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
- case 296: // "CONFIG_UPLOAD_DIR"
- case 297: // "CONFIG_UPLOAD_FILE_LIMIT"
- case 298: // "CONFIG_UPLOAD_FILE_MODE"
- case 299: // "CONFIG_VALUE_ABORT"
- case 300: // "CONFIG_VALUE_DETC"
- case 301: // "CONFIG_VALUE_HTTPS"
- case 302: // "CONFIG_VALUE_OFF"
- case 303: // "CONFIG_VALUE_ON"
- case 304: // "CONFIG_VALUE_PARALLEL"
- case 305: // "CONFIG_VALUE_PROCESS_PARTIAL"
- case 306: // "CONFIG_VALUE_REJECT"
- case 307: // "CONFIG_VALUE_RELEVANT_ONLY"
- case 308: // "CONFIG_VALUE_SERIAL"
- case 309: // "CONFIG_VALUE_WARN"
- case 310: // "CONFIG_XML_EXTERNAL_ENTITY"
- case 311: // "CONGIG_DIR_RESPONSE_BODY_MP"
- case 312: // "CONGIG_DIR_SEC_ARG_SEP"
- case 313: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
- case 314: // "CONFIG_SEC_COOKIEV0_SEPARATOR"
- case 315: // "CONGIG_DIR_SEC_DATA_DIR"
- case 316: // "CONGIG_DIR_SEC_STATUS_ENGINE"
- case 317: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION"
- case 318: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION"
- case 319: // "CONGIG_DIR_SEC_TMP_DIR"
- case 320: // "DIRECTIVE"
- case 321: // "DIRECTIVE_SECRULESCRIPT"
- case 322: // "FREE_TEXT_QUOTE_MACRO_EXPANSION"
- case 323: // "QUOTATION_MARK"
- case 324: // "RUN_TIME_VAR_BLD"
- case 325: // "RUN_TIME_VAR_DUR"
- case 326: // "RUN_TIME_VAR_HSV"
- case 327: // "RUN_TIME_VAR_REMOTE_USER"
- case 328: // "RUN_TIME_VAR_TIME"
- case 329: // "RUN_TIME_VAR_TIME_DAY"
- case 330: // "RUN_TIME_VAR_TIME_EPOCH"
- case 331: // "RUN_TIME_VAR_TIME_HOUR"
- case 332: // "RUN_TIME_VAR_TIME_MIN"
- case 333: // "RUN_TIME_VAR_TIME_MON"
- case 334: // "RUN_TIME_VAR_TIME_SEC"
- case 335: // "RUN_TIME_VAR_TIME_WDAY"
- case 336: // "RUN_TIME_VAR_TIME_YEAR"
- case 337: // "VARIABLE"
- case 338: // "Dictionary element"
- case 339: // "Dictionary element, selected by regexp"
- yylhs.value.emplace< std::string > ();
- break;
-
- case 346: // op
- case 347: // op_before_init
- yylhs.value.emplace< std::unique_ptr > ();
- break;
-
- case 355: // run_time_string
- yylhs.value.emplace< std::unique_ptr > ();
- break;
-
- case 352: // var
- yylhs.value.emplace< std::unique_ptr > ();
- break;
-
- case 353: // act
- case 354: // setvar_action
- yylhs.value.emplace< std::unique_ptr > ();
- break;
-
- case 349: // variables
- case 350: // variables_pre_process
- case 351: // variables_may_be_quoted
- yylhs.value.emplace< std::unique_ptr > > > ();
- break;
-
- case 344: // actions
- case 345: // actions_may_quoted
- yylhs.value.emplace< std::unique_ptr > > > ();
- break;
-
- default:
- break;
- }
-
-
- // Default location.
- {
- slice slice (yystack_, yylen);
- YYLLOC_DEFAULT (yylhs.location, slice, yylen);
- yyerror_range[1].location = yylhs.location;
- }
-
- // Perform the reduction.
- YY_REDUCE_PRINT (yyn);
-#if YY_EXCEPTIONS
- try
-#endif // YY_EXCEPTIONS
- {
- switch (yyn)
- {
- case 2:
-#line 744 "seclang-parser.yy" // lalr1.cc:906
- {
- return 0;
- }
-#line 1462 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 6:
-#line 757 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setStorageDirMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8));
- }
-#line 1470 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 7:
-#line 763 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setStorageDir(yystack_[0].value.as< std::string > ());
- }
-#line 1478 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 8:
-#line 769 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::RelevantOnlyAuditLogStatus);
- }
-#line 1486 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 9:
-#line 773 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OffAuditLogStatus);
- }
-#line 1494 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 10:
-#line 777 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OnAuditLogStatus);
- }
-#line 1502 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 11:
-#line 783 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setFileMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8));
- }
-#line 1510 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 12:
-#line 789 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setFilePath2(yystack_[0].value.as< std::string > ());
- }
-#line 1518 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 13:
-#line 795 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setParts(yystack_[0].value.as< std::string > ());
- }
-#line 1526 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 14:
-#line 801 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setFilePath1(yystack_[0].value.as< std::string > ());
- }
-#line 1534 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 15:
-#line 806 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::JSONAuditLogFormat);
- }
-#line 1542 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 16:
-#line 811 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::NativeAuditLogFormat);
- }
-#line 1550 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 17:
-#line 817 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string relevant_status(yystack_[0].value.as< std::string > ());
- driver.m_auditLog->setRelevantStatus(relevant_status);
- }
-#line 1559 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 18:
-#line 824 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::SerialAuditLogType);
- }
-#line 1567 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 19:
-#line 828 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::ParallelAuditLogType);
- }
-#line 1575 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 20:
-#line 832 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::HttpsAuditLogType);
- }
-#line 1583 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 21:
-#line 838 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_uploadKeepFiles = modsecurity::RulesProperties::TrueConfigBoolean;
- }
-#line 1591 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 22:
-#line 842 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_uploadKeepFiles = modsecurity::RulesProperties::FalseConfigBoolean;
- }
-#line 1599 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 23:
-#line 846 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[2].location, "SecUploadKeepFiles RelevantOnly is not currently supported. Accepted values are On or Off");
- YYERROR;
- }
-#line 1608 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 24:
-#line 851 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_uploadFileLimit.m_set = true;
- driver.m_uploadFileLimit.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 10);
- }
-#line 1617 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 25:
-#line 856 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_uploadFileMode.m_set = true;
- driver.m_uploadFileMode.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8);
- }
-#line 1626 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 26:
-#line 861 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_uploadDirectory.m_set = true;
- driver.m_uploadDirectory.m_value = yystack_[0].value.as< std::string > ();
- }
-#line 1635 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 27:
-#line 866 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::TrueConfigBoolean;
- }
-#line 1643 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 28:
-#line 870 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::FalseConfigBoolean;
- }
-#line 1651 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 29:
-#line 877 "seclang-parser.yy" // lalr1.cc:906
- {
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ());
- }
-#line 1659 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 30:
-#line 881 "seclang-parser.yy" // lalr1.cc:906
- {
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ());
- }
-#line 1667 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 31:
-#line 888 "seclang-parser.yy" // lalr1.cc:906
- {
- ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[3].location)
- yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ());
- }
-#line 1677 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 32:
-#line 894 "seclang-parser.yy" // lalr1.cc:906
- {
- std::unique_ptr>> b(new std::vector>());
- ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[1].location)
- b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
- yylhs.value.as< std::unique_ptr > > > () = std::move(b);
- }
-#line 1688 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 33:
-#line 904 "seclang-parser.yy" // lalr1.cc:906
- {
- yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ());
- std::string error;
- if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
- driver.error(yystack_[1].location, error);
- YYERROR;
- }
- }
-#line 1701 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 34:
-#line 913 "seclang-parser.yy" // lalr1.cc:906
- {
- yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ());
- yylhs.value.as< std::unique_ptr > ()->m_negation = true;
- std::string error;
- if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
- driver.error(yystack_[2].location, error);
- YYERROR;
- }
- }
-#line 1715 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 35:
-#line 923 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- std::string error;
- if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
- driver.error(yystack_[1].location, error);
- YYERROR;
- }
- }
-#line 1728 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 36:
-#line 932 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- yylhs.value.as< std::unique_ptr > ()->m_negation = true;
- std::string error;
- if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
- driver.error(yystack_[2].location, error);
- YYERROR;
- }
- }
-#line 1742 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 37:
-#line 945 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::UnconditionalMatch());
- }
-#line 1750 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 38:
-#line 949 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectSQLi());
- }
-#line 1758 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 39:
-#line 953 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectXSS());
- }
-#line 1766 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 40:
-#line 957 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUrlEncoding());
- }
-#line 1774 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 41:
-#line 961 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUtf8Encoding());
- }
-#line 1782 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 42:
-#line 965 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::InspectFile(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1790 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 43:
-#line 969 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::FuzzyHash(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1798 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 44:
-#line 973 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateByteRange(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1806 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 45:
-#line 977 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateDTD(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1814 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 46:
-#line 981 "seclang-parser.yy" // lalr1.cc:906
- {
- /* $$ = new operators::ValidateHash($1); */
- OPERATOR_NOT_SUPPORTED("ValidateHash", yystack_[2].location);
- }
-#line 1823 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 47:
-#line 986 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateSchema(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1831 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 48:
-#line 990 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCC(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1839 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 49:
-#line 994 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCPF(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1847 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 50:
-#line 998 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifySSN(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1855 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 51:
-#line 1002 "seclang-parser.yy" // lalr1.cc:906
- {
- /* $$ = new operators::GsbLookup($1); */
- OPERATOR_NOT_SUPPORTED("GsbLookup", yystack_[2].location);
- }
-#line 1864 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 52:
-#line 1007 "seclang-parser.yy" // lalr1.cc:906
- {
- /* $$ = new operators::Rsub($1); */
- OPERATOR_NOT_SUPPORTED("Rsub", yystack_[2].location);
- }
-#line 1873 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 53:
-#line 1012 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Within(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1881 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 54:
-#line 1016 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ContainsWord(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1889 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 55:
-#line 1020 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Contains(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1897 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 56:
-#line 1024 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::EndsWith(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1905 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 57:
-#line 1028 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Eq(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1913 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 58:
-#line 1032 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Ge(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1921 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 59:
-#line 1036 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Gt(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1929 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 60:
-#line 1040 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatchF(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1937 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 61:
-#line 1044 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatch(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1945 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 62:
-#line 1048 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Le(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1953 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 63:
-#line 1052 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Lt(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1961 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 64:
-#line 1056 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::PmFromFile(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1969 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 65:
-#line 1060 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Pm(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1977 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 66:
-#line 1064 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rbl(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1985 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 67:
-#line 1068 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 1993 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 68:
-#line 1072 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrEq(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 2001 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 69:
-#line 1076 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrMatch(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 2009 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 70:
-#line 1080 "seclang-parser.yy" // lalr1.cc:906
- {
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::BeginsWith(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- }
-#line 2017 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 71:
-#line 1084 "seclang-parser.yy" // lalr1.cc:906
- {
-#if defined(WITH_GEOIP) or defined(WITH_MAXMIND)
- OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::GeoLookup());
-#else
- std::stringstream ss;
- ss << "This version of ModSecurity was not compiled with GeoIP or MaxMind support.";
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
-#endif // WITH_GEOIP
- }
-#line 2032 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 73:
-#line 1099 "seclang-parser.yy" // lalr1.cc:906
- {
- std::vector *a = new std::vector();
- for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
- a->push_back(i.release());
- }
- Variables::Variables *v = new Variables::Variables();
- for (auto &i : *yystack_[2].value.as< std::unique_ptr > > > ().get()) {
- v->push_back(i.release());
- }
-
- Operator *op = yystack_[1].value.as< std::unique_ptr > ().release();
- Rule *rule = new Rule(
- /* op */ op,
- /* variables */ v,
- /* actions */ a,
- /* file name */ driver.ref.back(),
- /* line number */ yystack_[3].location.end.line
- );
-
- if (driver.addSecRule(rule) == false) {
- delete rule;
- YYERROR;
- }
- }
-#line 2061 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 74:
-#line 1124 "seclang-parser.yy" // lalr1.cc:906
- {
- Variables::Variables *v = new Variables::Variables();
- for (auto &i : *yystack_[1].value.as< std::unique_ptr > > > ().get()) {
- v->push_back(i.release());
- }
-
- Rule *rule = new Rule(
- /* op */ yystack_[0].value.as< std::unique_ptr > ().release(),
- /* variables */ v,
- /* actions */ NULL,
- /* file name */ driver.ref.back(),
- /* line number */ yystack_[2].location.end.line
- );
- if (driver.addSecRule(rule) == false) {
- delete rule;
- YYERROR;
- }
- }
-#line 2084 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 75:
-#line 1143 "seclang-parser.yy" // lalr1.cc:906
- {
- std::vector *a = new std::vector();
- for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
- a->push_back(i.release());
- }
- Rule *rule = new Rule(
- /* op */ NULL,
- /* variables */ NULL,
- /* actions */ a,
- /* file name */ driver.ref.back(),
- /* line number */ yystack_[1].location.end.line
- );
- driver.addSecAction(rule);
- }
-#line 2103 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 76:
-#line 1158 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string err;
- std::vector *a = new std::vector();
- for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
- a->push_back(i.release());
- }
- RuleScript *r = new RuleScript(
- /* path to script */ yystack_[1].value.as< std::string > (),
- /* actions */ a,
- /* file name */ driver.ref.back(),
- /* line number */ yystack_[1].location.end.line
- );
-
- if (r->init(&err) == false) {
- driver.error(yystack_[2].location, "Failed to load script: " + err);
- delete r;
- YYERROR;
- }
- if (driver.addSecRuleScript(r) == false) {
- delete r;
- YYERROR;
- }
- }
-#line 2131 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 77:
-#line 1182 "seclang-parser.yy" // lalr1.cc:906
- {
- bool hasDisruptive = false;
- std::vector *actions = new std::vector();
- for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
- actions->push_back(i.release());
- }
- std::vector checkedActions;
- int definedPhase = -1;
- int secRuleDefinedPhase = -1;
- for (actions::Action *a : *actions) {
- actions::Phase *phase = dynamic_cast(a);
- if (a->isDisruptive() == true && dynamic_cast(a) == NULL) {
- hasDisruptive = true;
- }
- if (phase != NULL) {
- definedPhase = phase->m_phase;
- secRuleDefinedPhase = phase->m_secRulesPhase;
- delete phase;
- } else if (a->action_kind == actions::Action::RunTimeOnlyIfMatchKind ||
- a->action_kind == actions::Action::RunTimeBeforeMatchAttemptKind) {
- actions::transformations::None *none = dynamic_cast(a);
- if (none != NULL) {
- driver.error(yystack_[2].location, "The transformation none is not suitable to be part of the SecDefaultActions");
- YYERROR;
- }
- checkedActions.push_back(a);
- } else {
- driver.error(yystack_[2].location, "The action '" + a->m_name + "' is not suitable to be part of the SecDefaultActions");
- YYERROR;
- }
- }
- if (definedPhase == -1) {
- definedPhase = modsecurity::Phases::RequestHeadersPhase;
- }
-
- if (hasDisruptive == false) {
- driver.error(yystack_[2].location, "SecDefaultAction must specify a disruptive action.");
- YYERROR;
- }
-
- if (!driver.m_defaultActions[definedPhase].empty()) {
- std::stringstream ss;
- ss << "SecDefaultActions can only be placed once per phase and configuration context. Phase ";
- ss << secRuleDefinedPhase;
- ss << " was informed already.";
- driver.error(yystack_[2].location, ss.str());
- YYERROR;
- }
-
- for (actions::Action *a : checkedActions) {
- driver.m_defaultActions[definedPhase].push_back(a);
- }
-
- delete actions;
- }
-#line 2191 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 78:
-#line 1238 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ()));
- }
-#line 2199 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 79:
-#line 1242 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secRuleEngine = modsecurity::Rules::DisabledRuleEngine;
- }
-#line 2207 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 80:
-#line 1246 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secRuleEngine = modsecurity::Rules::EnabledRuleEngine;
- }
-#line 2215 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 81:
-#line 1250 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secRuleEngine = modsecurity::Rules::DetectionOnlyRuleEngine;
- }
-#line 2223 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 82:
-#line 1254 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secRequestBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean;
- }
-#line 2231 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 83:
-#line 1258 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secRequestBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean;
- }
-#line 2239 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 84:
-#line 1262 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secResponseBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean;
- }
-#line 2247 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 85:
-#line 1266 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secResponseBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean;
- }
-#line 2255 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 86:
-#line 1270 "seclang-parser.yy" // lalr1.cc:906
- {
- if (yystack_[0].value.as< std::string > ().length() != 1) {
- driver.error(yystack_[1].location, "Argument separator should be set to a single character.");
- YYERROR;
- }
- driver.m_secArgumentSeparator.m_value = yystack_[0].value.as< std::string > ();
- driver.m_secArgumentSeparator.m_set = true;
- }
-#line 2268 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 87:
-#line 1279 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_components.push_back(yystack_[0].value.as< std::string > ());
- }
-#line 2276 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 88:
-#line 1283 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[2].location, "SecConnEngine is not yet supported.");
- YYERROR;
- }
-#line 2285 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 89:
-#line 1288 "seclang-parser.yy" // lalr1.cc:906
- {
- }
-#line 2292 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 90:
-#line 1291 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secWebAppId.m_value = yystack_[0].value.as< std::string > ();
- driver.m_secWebAppId.m_set = true;
- }
-#line 2301 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 91:
-#line 1296 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecServerSignature is not supported.");
- YYERROR;
- }
-#line 2310 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 92:
-#line 1301 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecCacheTransformations is not supported.");
- YYERROR;
- }
-#line 2319 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 93:
-#line 1306 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[2].location, "SecDisableBackendCompression is not supported.");
- YYERROR;
- }
-#line 2328 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 94:
-#line 1311 "seclang-parser.yy" // lalr1.cc:906
- {
- }
-#line 2335 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 95:
-#line 1314 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[2].location, "SecContentInjection is not yet supported.");
- YYERROR;
- }
-#line 2344 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 96:
-#line 1319 "seclang-parser.yy" // lalr1.cc:906
- {
- }
-#line 2351 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 97:
-#line 1322 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecChrootDir is not supported.");
- YYERROR;
- }
-#line 2360 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 98:
-#line 1327 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[2].location, "SecHashEngine is not yet supported.");
- YYERROR;
- }
-#line 2369 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 99:
-#line 1332 "seclang-parser.yy" // lalr1.cc:906
- {
- }
-#line 2376 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 100:
-#line 1335 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecHashKey is not yet supported.");
- YYERROR;
- }
-#line 2385 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 101:
-#line 1340 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecHashParam is not yet supported.");
- YYERROR;
- }
-#line 2394 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 102:
-#line 1345 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecHashMethodRx is not yet supported.");
- YYERROR;
- }
-#line 2403 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 103:
-#line 1350 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecHashMethodPm is not yet supported.");
- YYERROR;
- }
-#line 2412 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 104:
-#line 1355 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecGsbLookupDb is not supported.");
- YYERROR;
- }
-#line 2421 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 105:
-#line 1360 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecGuardianLog is not supported.");
- YYERROR;
- }
-#line 2430 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 106:
-#line 1365 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[2].location, "SecInterceptOnError is not yet supported.");
- YYERROR;
- }
-#line 2439 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 107:
-#line 1370 "seclang-parser.yy" // lalr1.cc:906
- {
- }
-#line 2446 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 108:
-#line 1373 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecConnReadStateLimit is not yet supported.");
- YYERROR;
- }
-#line 2455 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 109:
-#line 1378 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecConnWriteStateLimit is not yet supported.");
- YYERROR;
- }
-#line 2464 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 110:
-#line 1383 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecSensorId is not yet supported.");
- YYERROR;
- }
-#line 2473 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 111:
-#line 1388 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[2].location, "SecRuleInheritance is not yet supported.");
- YYERROR;
- }
-#line 2482 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 112:
-#line 1393 "seclang-parser.yy" // lalr1.cc:906
- {
- }
-#line 2489 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 113:
-#line 1396 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecRulePerfTime is not yet supported.");
- YYERROR;
- }
-#line 2498 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 114:
-#line 1401 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecStreamInBodyInspection is not supported.");
- YYERROR;
- }
-#line 2507 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 115:
-#line 1406 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecStreamOutBodyInspection is not supported.");
- YYERROR;
- }
-#line 2516 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 116:
-#line 1411 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- if (driver.m_exceptions.load(yystack_[0].value.as< std::string > (), &error) == false) {
- std::stringstream ss;
- ss << "SecRuleRemoveById: failed to load:";
- ss << yystack_[0].value.as< std::string > ();
- ss << ". ";
- ss << error;
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- }
-#line 2533 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 117:
-#line 1424 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- if (driver.m_exceptions.loadRemoveRuleByTag(yystack_[0].value.as< std::string > (), &error) == false) {
- std::stringstream ss;
- ss << "SecRuleRemoveByTag: failed to load:";
- ss << yystack_[0].value.as< std::string > ();
- ss << ". ";
- ss << error;
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- }
-#line 2550 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 118:
-#line 1437 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as< std::string > (), &error) == false) {
- std::stringstream ss;
- ss << "SecRuleRemoveByMsg: failed to load:";
- ss << yystack_[0].value.as< std::string > ();
- ss << ". ";
- ss << error;
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- }
-#line 2567 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 119:
-#line 1450 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- if (driver.m_exceptions.loadUpdateTargetByTag(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
- std::stringstream ss;
- ss << "SecRuleUpdateTargetByTag: failed to load:";
- ss << yystack_[1].value.as< std::string > ();
- ss << ". ";
- ss << error;
- driver.error(yystack_[2].location, ss.str());
- YYERROR;
- }
- }
-#line 2584 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 120:
-#line 1463 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- if (driver.m_exceptions.loadUpdateTargetByMsg(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
- std::stringstream ss;
- ss << "SecRuleUpdateTargetByMsg: failed to load:";
- ss << yystack_[1].value.as< std::string > ();
- ss << ". ";
- ss << error;
- driver.error(yystack_[2].location, ss.str());
- YYERROR;
- }
- }
-#line 2601 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 121:
-#line 1476 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- double ruleId;
- try {
- ruleId = std::stod(yystack_[1].value.as< std::string > ());
- } catch (...) {
- std::stringstream ss;
- ss << "SecRuleUpdateTargetById: failed to load:";
- ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not ";
- ss << "seems to be a valid rule id.";
- ss << ". ";
- driver.error(yystack_[2].location, ss.str());
- YYERROR;
- }
-
- if (driver.m_exceptions.loadUpdateTargetById(ruleId, std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
- std::stringstream ss;
- ss << "SecRuleUpdateTargetById: failed to load:";
- ss << yystack_[1].value.as< std::string > ();
- ss << ". ";
- ss << error;
- driver.error(yystack_[2].location, ss.str());
- YYERROR;
- }
- }
-#line 2631 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 122:
-#line 1502 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- double ruleId;
- try {
- ruleId = std::stod(yystack_[1].value.as< std::string > ());
- } catch (...) {
- std::stringstream ss;
- ss << "SecRuleUpdateActionById: failed to load:";
- ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not ";
- ss << "seems to be a valid rule id.";
- ss << ". ";
- driver.error(yystack_[2].location, ss.str());
- YYERROR;
- }
-
-
- if (driver.m_exceptions.loadUpdateActionById(ruleId, std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
- std::stringstream ss;
- ss << "SecRuleUpdateActionById: failed to load:";
- ss << yystack_[1].value.as< std::string > ();
- ss << ". ";
- ss << error;
- driver.error(yystack_[2].location, ss.str());
- YYERROR;
- }
- }
-#line 2662 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 123:
-#line 1530 "seclang-parser.yy" // lalr1.cc:906
- {
- if (driver.m_debugLog != NULL) {
- driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as< std::string > ().c_str()));
- } else {
- std::stringstream ss;
- ss << "Internal error, there is no DebugLog ";
- ss << "object associated with the driver class";
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- }
-#line 2678 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 124:
-#line 1542 "seclang-parser.yy" // lalr1.cc:906
- {
- if (driver.m_debugLog != NULL) {
- std::string error;
- driver.m_debugLog->setDebugLogFile(yystack_[0].value.as< std::string > (), &error);
- if (error.size() > 0) {
- std::stringstream ss;
- ss << "Failed to start DebugLog: " << error;
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- } else {
- std::stringstream ss;
- ss << "Internal error, there is no DebugLog ";
- ss << "object associated with the driver class";
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- }
-#line 2701 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 125:
-#line 1562 "seclang-parser.yy" // lalr1.cc:906
- {
-#if defined(WITH_GEOIP) or defined(WITH_MAXMIND)
- std::string err;
- std::string file = modsecurity::utils::find_resource(yystack_[0].value.as< std::string > (),
- driver.ref.back(), &err);
- if (file.empty()) {
- std::stringstream ss;
- ss << "Failed to load locate the GeoDB file from: " << yystack_[0].value.as< std::string > () << " ";
- ss << err;
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- if (GeoLookup::getInstance().setDataBase(file, &err) == false) {
- std::stringstream ss;
- ss << "Failed to load the GeoDB from: ";
- ss << file << ". " << err;
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
-#else
- std::stringstream ss;
- ss << "This version of ModSecurity was not compiled with GeoIP or MaxMind support.";
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
-#endif // WITH_GEOIP
- }
-#line 2732 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 126:
-#line 1590 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_requestBodyLimit.m_set = true;
- driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
- }
-#line 2741 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 127:
-#line 1595 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_requestBodyNoFilesLimit.m_set = true;
- driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
- }
-#line 2750 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 128:
-#line 1600 "seclang-parser.yy" // lalr1.cc:906
- {
- std::stringstream ss;
- ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer ";
- ss << "supported. Instead, you can use your web server configurations to control ";
- ss << "those values. ModSecurity will follow the web server decision.";
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
-#line 2763 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 129:
-#line 1609 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_responseBodyLimit.m_set = true;
- driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
- }
-#line 2772 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 130:
-#line 1614 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction;
- }
-#line 2780 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 131:
-#line 1618 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction;
- }
-#line 2788 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 132:
-#line 1622 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction;
- }
-#line 2796 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 133:
-#line 1626 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction;
- }
-#line 2804 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 134:
-#line 1630 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction;
- }
-#line 2812 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 135:
-#line 1634 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction;
- }
-#line 2820 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 138:
-#line 1648 "seclang-parser.yy" // lalr1.cc:906
- {
- std::istringstream buf(yystack_[0].value.as< std::string > ());
- std::istream_iterator beg(buf), end;
- std::set tokens(beg, end);
- driver.m_responseBodyTypeToBeInspected.m_set = true;
- for (std::set::iterator it=tokens.begin();
- it!=tokens.end(); ++it)
- {
- driver.m_responseBodyTypeToBeInspected.m_value.insert(*it);
- }
- }
-#line 2836 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 139:
-#line 1660 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_responseBodyTypeToBeInspected.m_set = true;
- driver.m_responseBodyTypeToBeInspected.m_clear = true;
- driver.m_responseBodyTypeToBeInspected.m_value.clear();
- }
-#line 2846 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 140:
-#line 1666 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secXMLExternalEntity = modsecurity::RulesProperties::FalseConfigBoolean;
- }
-#line 2854 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 141:
-#line 1670 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_secXMLExternalEntity = modsecurity::RulesProperties::TrueConfigBoolean;
- }
-#line 2862 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 142:
-#line 1674 "seclang-parser.yy" // lalr1.cc:906
- {
-/* Parser error disabled to avoid breaking default installations with modsecurity.conf-recommended
- std::stringstream ss;
- ss << "As of ModSecurity version 3.0, SecTmpDir is no longer supported.";
- ss << " Instead, you can use your web server configurations to control when";
- ss << "and where to swap. ModSecurity will follow the web server decision.";
- driver.error(@0, ss.str());
- YYERROR;
-*/
- }
-#line 2877 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 145:
-#line 1695 "seclang-parser.yy" // lalr1.cc:906
- {
- if (atoi(yystack_[0].value.as< std::string > ().c_str()) == 1) {
- driver.error(yystack_[1].location, "SecCookieFormat 1 is not yet supported.");
- YYERROR;
- }
- }
-#line 2888 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 146:
-#line 1702 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.error(yystack_[1].location, "SecCookieV0Separator is not yet supported.");
- YYERROR;
- }
-#line 2897 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 148:
-#line 1712 "seclang-parser.yy" // lalr1.cc:906
- {
- std::string error;
- std::vector param;
- double num = 0;
- std::string f;
- std::string file;
- std::string err;
- param = utils::string::ssplit(yystack_[0].value.as< std::string > (), ' ');
- if (param.size() <= 1) {
- std::stringstream ss;
- ss << "Failed to process unicode map, missing ";
- ss << "parameter: " << yystack_[0].value.as< std::string > () << " ";
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
-
- try {
- num = std::stod(param.back());
- } catch (...) {
- std::stringstream ss;
- ss << "Failed to process unicode map, last parameter is ";
- ss << "expected to be a number: " << param.back() << " ";
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
- param.pop_back();
-
- while (param.size() > 0) {
- if (f.empty()) {
- f = param.back();
- } else {
- f = param.back() + " " + f;
- }
- param.pop_back();
- }
-
- file = modsecurity::utils::find_resource(f, driver.ref.back(), &err);
- if (file.empty()) {
- std::stringstream ss;
- ss << "Failed to locate the unicode map file from: " << f << " ";
- ss << err;
- driver.error(yystack_[1].location, ss.str());
- YYERROR;
- }
-
- ConfigUnicodeMap::loadConfig(file, num, &driver, &error);
-
- if (!error.empty()) {
- driver.error(yystack_[1].location, error);
- YYERROR;
- }
-
- }
-#line 2955 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 149:
-#line 1766 "seclang-parser.yy" // lalr1.cc:906
- {
-/* Parser error disabled to avoid breaking default CRS installations with crs-setup.conf-recommended
- driver.error(@0, "SecCollectionTimeout is not yet supported.");
- YYERROR;
-*/
- }
-#line 2966 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 150:
-#line 1773 "seclang-parser.yy" // lalr1.cc:906
- {
- driver.m_httpblKey.m_set = true;
- driver.m_httpblKey.m_value = yystack_[0].value.as< std::string > ();
- }
-#line 2975 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 151:
-#line 1781 "seclang-parser.yy" // lalr1.cc:906
- {
- std::unique_ptr > > originalList = std::move(yystack_[0].value.as< std::unique_ptr > > > ());
- std::unique_ptr>> newList(new std::vector>());
- std::unique_ptr>> newNewList(new std::vector>());
- std::unique_ptr>> exclusionVars(new std::vector>());
- while (!originalList->empty()) {
- std::unique_ptr var = std::move(originalList->back());
- originalList->pop_back();
- if (dynamic_cast(var.get())) {
- exclusionVars->push_back(std::move(var));
- } else {
- newList->push_back(std::move(var));
- }
- }
-
- while (!newList->empty()) {
- bool doNotAdd = false;
- std::unique_ptr var = std::move(newList->back());
- newList->pop_back();
- for (auto &i : *exclusionVars) {
- if (*var == *i) {
- doNotAdd = true;
- }
- if (i->belongsToCollection(var.get())) {
- var->addsKeyExclusion(i.get());
- }
- }
- if (!doNotAdd) {
- newNewList->push_back(std::move(var));
- }
- }
- yylhs.value.as< std::unique_ptr > > > () = std::move(newNewList);
- }
-#line 3013 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 152:
-#line 1818 "seclang-parser.yy" // lalr1.cc:906
- {
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ());
- }
-#line 3021 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 153:
-#line 1822 "seclang-parser.yy" // lalr1.cc:906
- {
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ());
- }
-#line 3029 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 154:
-#line 1829 "seclang-parser.yy" // lalr1.cc:906
- {
- yystack_[2].value.as< std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[2].value.as< std::unique_ptr > > > ());
- }
-#line 3038 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 155:
-#line 1834 "seclang-parser.yy" // lalr1.cc:906
- {
- std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c));
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ());
- }
-#line 3048 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 156:
-#line 1840 "seclang-parser.yy" // lalr1.cc:906
- {
- std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- yystack_[3].value.as< std::unique_ptr > > > ()->push_back(std::move(c));
- yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[3].value.as< std::unique_ptr > > > ());
- }
-#line 3058 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 157:
-#line 1846 "seclang-parser.yy" // lalr1.cc:906
- {
- std::unique_ptr>> b(new std::vector>());
- b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
- yylhs.value.as< std::unique_ptr > > > () = std::move(b);
- }
-#line 3068 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 158:
-#line 1852 "seclang-parser.yy" // lalr1.cc:906
- {
- std::unique_ptr>> b(new std::vector>());
- std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- b->push_back(std::move(c));
- yylhs.value.as< std::unique_ptr > > > () = std::move(b);
- }
-#line 3079 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 159:
-#line 1859 "seclang-parser.yy" // lalr1.cc:906
- {
- std::unique_ptr>> b(new std::vector>());
- std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as< std::unique_ptr > ())));
- b->push_back(std::move(c));
- yylhs.value.as< std::unique_ptr > > > () = std::move(b);
- }
-#line 3090 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 160:
-#line 1869 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3098 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 161:
-#line 1873 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3106 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 162:
-#line 1877 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_NoDictElement());
- }
-#line 3114 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 163:
-#line 1881 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3122 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 164:
-#line 1885 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3130 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 165:
-#line 1889 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_NoDictElement());
- }
-#line 3138 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 166:
-#line 1893 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3146 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 167:
-#line 1897 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3154 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 168:
-#line 1901 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_NoDictElement());
- }
-#line 3162 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 169:
-#line 1905 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3170 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 170:
-#line 1909 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3178 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 171:
-#line 1913 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_NoDictElement());
- }
-#line 3186 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 172:
-#line 1917 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3194 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 173:
-#line 1921 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3202 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 174:
-#line 1925 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_NoDictElement());
- }
-#line 3210 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 175:
-#line 1929 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3218 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 176:
-#line 1933 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3226 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 177:
-#line 1937 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_NoDictElement());
- }
-#line 3234 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 178:
-#line 1941 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3242 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 179:
-#line 1945 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3250 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 180:
-#line 1949 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_NoDictElement());
- }
-#line 3258 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 181:
-#line 1953 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3266 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 182:
-#line 1957 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3274 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 183:
-#line 1961 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_NoDictElement());
- }
-#line 3282 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 184:
-#line 1965 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3290 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 185:
-#line 1969 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3298 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 186:
-#line 1973 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_NoDictElement());
- }
-#line 3306 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 187:
-#line 1977 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3314 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 188:
-#line 1981 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3322 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 189:
-#line 1985 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_NoDictElement());
- }
-#line 3330 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 190:
-#line 1989 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3338 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 191:
-#line 1993 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3346 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 192:
-#line 1997 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_NoDictElement());
- }
-#line 3354 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 193:
-#line 2001 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3362 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 194:
-#line 2005 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3370 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 195:
-#line 2009 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_NoDictElement());
- }
-#line 3378 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 196:
-#line 2013 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3386 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 197:
-#line 2017 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3394 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 198:
-#line 2021 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_NoDictElement());
- }
-#line 3402 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 199:
-#line 2025 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3410 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 200:
-#line 2029 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3418 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 201:
-#line 2033 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_NoDictElement());
- }
-#line 3426 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 202:
-#line 2037 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3434 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 203:
-#line 2041 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3442 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 204:
-#line 2045 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_NoDictElement());
- }
-#line 3450 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 205:
-#line 2049 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3458 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 206:
-#line 2053 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3466 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 207:
-#line 2057 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_NoDictElement());
- }
-#line 3474 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 208:
-#line 2061 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElement(yystack_[0].value.as< std::string > ()));
- }
-#line 3482 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 209:
-#line 2065 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElementRegexp(yystack_[0].value.as< std::string > ()));
- }
-#line 3490 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 210:
-#line 2069 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_NoDictElement());
- }
-#line 3498 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 211:
-#line 2073 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ()));
- }
-#line 3506 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 212:
-#line 2077 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ()));
- }
-#line 3514 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 213:
-#line 2081 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV"));
- }
-#line 3522 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 214:
-#line 2085 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ()));
- }
-#line 3530 "seclang-parser.cc" // lalr1.cc:906
- break;
-
- case 215:
-#line 2089 "seclang-parser.yy" // lalr1.cc:906
- {
- VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr