From e95555132ef3664cf491eee0727672ab5804b6b7 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Tue, 17 Jan 2017 10:30:50 -0300 Subject: [PATCH] Contionuation of 1 time variable patch Now we have almost 100% of the transaction variables hosted on the new schema. Variable modifcators (count and exclusion) are not yet supported on the new schema. Notice that setvar is now using the parser. --- headers/modsecurity/transaction.h | 129 +- src/Makefile.am | 1 - .../ctl/request_body_processor_json.cc | 3 +- src/actions/ctl/request_body_processor_xml.cc | 3 +- src/actions/set_sid.cc | 2 +- src/actions/set_uid.cc | 2 +- src/actions/set_var.cc | 14 + src/actions/set_var.h | 36 +- src/macro_expansion.cc | 6 +- src/parser/seclang-parser.cc | 3951 ++++++++++------- src/parser/seclang-parser.hh | 2788 +++++++----- src/parser/seclang-parser.yy | 434 +- src/parser/seclang-scanner.ll | 214 +- src/request_body_processor/multipart.cc | 39 +- src/rule.cc | 5 +- src/transaction.cc | 212 +- src/variables/xml.h | 2 +- 17 files changed, 4873 insertions(+), 2968 deletions(-) diff --git a/headers/modsecurity/transaction.h b/headers/modsecurity/transaction.h index cb613c22..262a8f71 100644 --- a/headers/modsecurity/transaction.h +++ b/headers/modsecurity/transaction.h @@ -117,15 +117,133 @@ class AnchoredVariable { l->push_back(new collection::Variable(&m_name, &m_value)); } + + std::string *evaluate() { + if (m_value.empty() == true) { + return NULL; + } + return &m_value; + } }; class TransactionAnchoredVariables { public: TransactionAnchoredVariables(Transaction *t) - : m_variableArgsNames(t, "ARG_NAMES") { } + : m_variableArgsNames(t, "ARGS_NAMES"), + m_variableArgGetNames(t, "ARGS_GET_NAMES"), + m_variableArgPostNames(t, "ARGS_POST_NAMES"), + m_variableRequestHeadersNames(t, "REQUEST_HEADERS_NAMES"), + m_variableResponseContentType(t, "RESPONSE_CONTENT_TYPE"), + m_variableResponseHeadersNames(t, "RESPONSE_HEADERS_NAMES"), + m_variableARGScombinedSize(t, "ARGS_COMBINED_SIZE"), + m_variableAuthType(t, "AUTH_TYPE"), + m_variableFilesCombinedSize(t, "FILES_COMBINED_SIZE"), + m_variableFilesTmpNames(t, "FILES_TMPNAMES"), + m_variableFullRequest(t, "FULL_REQUEST"), + m_variableFullRequestLength(t, "FULL_REQUEST_LENGTH"), + m_variableInboundDataError(t, "INBOUND_DATA_ERROR"), + m_variableMatchedVar(t, "MATCHED_VAR"), + m_variableMatchedVarName(t, "MATCHED_VAR_NAME"), + m_variableMultipartCrlfLFLines(t, "MULTIPART_CRLF_LF_LINES"), + m_variableMultipartDataAfter(t, "MULTIPART_DATA_AFTER"), + m_variableMultipartFileLimitExceeded(t, "MULTIPART_FILE_LIMIT_EXCEEDED"), + m_variableMultipartStrictError(t, "MULTIPART_STRICT_ERROR"), + m_variableMultipartHeaderFolding(t, "MULTIPART_HEADER_FOLDING"), + m_variableMultipartInvalidQuoting(t, "MULTIPART_INVALID_QUOTING"), + m_variableMultipartInvalidHeaderFolding(t, "MULTIPART_INVALID_HEADER_FOLDING"), + m_variableMultipartUnmatchedBoundary(t, "MULTIPART_UNMATCHED_BOUNDARY"), + m_variableOutboundDataError(t, "OUTBOUND_DATA_ERROR"), + m_variablePathInfo(t, "PATH_INFO"), + m_variableQueryString(t, "QUERY_STRING"), + m_variableRemoteAddr(t, "REMOTE_ADDR"), + m_variableRemoteHost(t, "REMOTE_HOST"), + m_variableRemotePort(t, "REMOTE_PORT"), + m_variableReqbodyError(t, "REQBODY_ERROR"), + m_variableReqbodyErrorMsg(t, "REQBODY_ERROR_MSG"), + m_variableReqbodyProcessorErrorMsg(t, "REQBODY_PROCESSOR_ERROR_MSG"), + m_variableReqbodyProcessorError(t, "REQBODY_PROCESSOR_ERROR"), + m_variableReqbodyProcessor(t, "REQBODY_PROCESSOR"), + m_variableRequestBasename(t, "REQUEST_BASENAME"), + m_variableRequestBody(t, "REQUEST_BODY"), + m_variableRequestBodyLength(t, "REQUEST_BODY_LENGTH"), + m_variableRequestFilename(t, "REQUEST_FILENAME"), + m_variableRequestLine(t, "REQUEST_LINE"), + m_variableRequestMethod(t, "REQUEST_METHOD"), + m_variableRequestProtocol(t, "REQUEST_PROTOCOL"), + m_variableRequestURI(t, "REQUEST_URI"), + m_variableRequestURIRaw(t, "REQUEST_URI_RAW"), + m_variableResource(t, "RESOURCE"), + m_variableResponseBody(t, "RESPONSE_BODY"), + m_variableResponseContentLength(t, "RESPONSE_CONTENT_LENGTH"), + m_variableResponseProtocol(t, "RESPONSE_PROTOCOL"), + m_variableResponseStatus(t, "RESPONSE_STATUS"), + m_variableServerAddr(t, "SERVER_ADDR"), + m_variableServerName(t, "SERVER_NAME"), + m_variableServerPort(t, "SERVER_PORT"), + m_variableSessionID(t, "SESSIONID"), + m_variableUniqueID(t, "UNIQUE_ID"), + m_variableUrlEncodedError(t, "URLENCODED_ERROR"), + m_variableUserID(t, "USERID") + { } AnchoredVariable m_variableArgsNames; + AnchoredVariable m_variableArgGetNames; + AnchoredVariable m_variableArgPostNames; + AnchoredVariable m_variableRequestHeadersNames; + AnchoredVariable m_variableResponseContentType; + AnchoredVariable m_variableResponseHeadersNames; + AnchoredVariable m_variableARGScombinedSize; + AnchoredVariable m_variableAuthType; + AnchoredVariable m_variableFilesCombinedSize; + AnchoredVariable m_variableFilesTmpNames; + AnchoredVariable m_variableFullRequest; + AnchoredVariable m_variableFullRequestLength; + AnchoredVariable m_variableInboundDataError; + AnchoredVariable m_variableMatchedVar; + AnchoredVariable m_variableMatchedVarName; + AnchoredVariable m_variableMultipartCrlfLFLines; + AnchoredVariable m_variableMultipartDataAfter; + AnchoredVariable m_variableMultipartFileLimitExceeded; + AnchoredVariable m_variableMultipartStrictError; + AnchoredVariable m_variableMultipartHeaderFolding; + AnchoredVariable m_variableMultipartInvalidQuoting; + AnchoredVariable m_variableMultipartInvalidHeaderFolding; + AnchoredVariable m_variableMultipartUnmatchedBoundary; + AnchoredVariable m_variableOutboundDataError; + AnchoredVariable m_variablePathInfo; + AnchoredVariable m_variableQueryString; + AnchoredVariable m_variableRemoteAddr; + AnchoredVariable m_variableRemoteHost; + AnchoredVariable m_variableRemotePort; + AnchoredVariable m_variableReqbodyError; + AnchoredVariable m_variableReqbodyErrorMsg; + AnchoredVariable m_variableReqbodyProcessorError; + AnchoredVariable m_variableReqbodyProcessorErrorMsg; + AnchoredVariable m_variableReqbodyProcessor; + AnchoredVariable m_variableRequestBasename; + AnchoredVariable m_variableRequestBody; + AnchoredVariable m_variableRequestBodyLength; + AnchoredVariable m_variableRequestFilename; + AnchoredVariable m_variableRequestLine; + AnchoredVariable m_variableRequestMethod; + AnchoredVariable m_variableRequestProtocol; + AnchoredVariable m_variableRequestURI; + AnchoredVariable m_variableRequestURIRaw; + AnchoredVariable m_variableResource; + AnchoredVariable m_variableResponseBody; + AnchoredVariable m_variableResponseContentLength; + AnchoredVariable m_variableResponseProtocol; + AnchoredVariable m_variableResponseStatus; + AnchoredVariable m_variableServerAddr; + AnchoredVariable m_variableServerName; + AnchoredVariable m_variableServerPort; + AnchoredVariable m_variableSessionID; + AnchoredVariable m_variableUniqueID; + AnchoredVariable m_variableUrlEncodedError; + AnchoredVariable m_variableUserID; + + int m_variableOffset; }; @@ -254,7 +372,7 @@ class Transaction : public TransactionAnchoredVariables { * Holds the combined size of all arguments, later used to fill the * variable ARGS_COMBINED_SIZE. */ - double m_ARGScombinedSize; + double m_ARGScombinedSizeDouble; /** * Client tcp port. @@ -418,13 +536,6 @@ class Transaction : public TransactionAnchoredVariables { std::string m_variableTimeYear; private: - std::string *m_ARGScombinedSizeStr; - std::string *m_namesArgsGet; - std::string *m_namesArgsPost; - std::string *m_requestHeadersNames; - std::string *m_responseContentType; - std::string *m_responseHeadersNames; - /** * Pointer to the callback function that will be called to fill * the web server (connector) log. diff --git a/src/Makefile.am b/src/Makefile.am index 89bdb973..361740b8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -66,7 +66,6 @@ noinst_HEADERS = \ VARIABLES = \ - variables/args_names.cc \ variables/duration.cc \ variables/env.cc \ variables/highest_severity.cc \ diff --git a/src/actions/ctl/request_body_processor_json.cc b/src/actions/ctl/request_body_processor_json.cc index f17b5a26..38f9a6e1 100644 --- a/src/actions/ctl/request_body_processor_json.cc +++ b/src/actions/ctl/request_body_processor_json.cc @@ -28,7 +28,8 @@ namespace ctl { bool RequestBodyProcessorJSON::evaluate(Rule *rule, Transaction *transaction) { transaction->m_requestBodyProcessor = Transaction::JSONRequestBody; - transaction->m_collections.store("REQBODY_PROCESSOR", "JSON"); + transaction->m_variableReqbodyProcessor.set("JSON", + transaction->m_variableOffset); return true; } diff --git a/src/actions/ctl/request_body_processor_xml.cc b/src/actions/ctl/request_body_processor_xml.cc index 94cdd6eb..77288b40 100644 --- a/src/actions/ctl/request_body_processor_xml.cc +++ b/src/actions/ctl/request_body_processor_xml.cc @@ -28,7 +28,8 @@ namespace ctl { bool RequestBodyProcessorXML::evaluate(Rule *rule, Transaction *transaction) { transaction->m_requestBodyProcessor = Transaction::XMLRequestBody; - transaction->m_collections.store("REQBODY_PROCESSOR", "XML"); + transaction->m_variableReqbodyProcessor.set("XML", + transaction->m_variableOffset); return true; } diff --git a/src/actions/set_sid.cc b/src/actions/set_sid.cc index ae4d8d72..8282d313 100644 --- a/src/actions/set_sid.cc +++ b/src/actions/set_sid.cc @@ -49,7 +49,7 @@ bool SetSID::evaluate(Rule *rule, Transaction *t) { #endif t->m_collections.m_session_collection_key = colNameExpanded; - t->m_collections.storeOrUpdateFirst("SESSIONID", colNameExpanded); + t->m_variableSessionID.set(colNameExpanded, t->m_variableOffset); return true; } diff --git a/src/actions/set_uid.cc b/src/actions/set_uid.cc index 24bd89d9..3dd4e18a 100644 --- a/src/actions/set_uid.cc +++ b/src/actions/set_uid.cc @@ -49,7 +49,7 @@ bool SetUID::evaluate(Rule *rule, Transaction *t) { #endif t->m_collections.m_user_collection_key = colNameExpanded; - t->m_collections.storeOrUpdateFirst("USERID", colNameExpanded); + t->m_variableUserID.set(colNameExpanded, t->m_variableOffset); return true; } diff --git a/src/actions/set_var.cc b/src/actions/set_var.cc index 4aa02bc5..d5b110fa 100644 --- a/src/actions/set_var.cc +++ b/src/actions/set_var.cc @@ -31,6 +31,20 @@ namespace actions { bool SetVar::init(std::string *error) { size_t pos; + if (m_variableName.empty() == false) { + pos = m_variableName.find("."); + if (pos != std::string::npos) { + m_collectionName = std::string(m_variableName, 0, pos); + m_collectionName = utils::string::toupper(m_collectionName); + m_variableName = std::string(m_variableName, pos + 1, + m_variableName.size() - (pos + 1)); + } else { + error->assign("Missing the collection and/or variable name"); + return false; + } + return true; + } + // Resolv operation m_operation = setToOne; pos = m_parser_payload.find("="); diff --git a/src/actions/set_var.h b/src/actions/set_var.h index 21e7bf16..b3bf1ee4 100644 --- a/src/actions/set_var.h +++ b/src/actions/set_var.h @@ -26,6 +26,16 @@ class Rule; namespace actions { +enum SetVarOperation { + /* Set variable to something */ + setOperation, + /* read variable, sum predicate and set */ + sumAndSetOperation, + /* read variable, substract predicate and set */ + substractAndSetOperation, + /* set variable to 1 */ + setToOne +}; class SetVar : public Action { public: @@ -35,20 +45,24 @@ class SetVar : public Action { m_variableName(""), m_predicate("") { } + SetVar(SetVarOperation operation, + std::string variableName, + std::string predicate) : Action("setvar"), + m_operation(operation), + m_predicate(predicate), + m_collectionName(""), + m_variableName(variableName) { } + + SetVar(SetVarOperation operation, + std::string variableName) : Action("setvar"), + m_operation(operation), + m_predicate(""), + m_collectionName(""), + m_variableName(variableName) { } + bool evaluate(Rule *rule, Transaction *transaction) override; bool init(std::string *error) override; - enum SetVarOperation { - /* Set variable to something */ - setOperation, - /* read variable, sum predicate and set */ - sumAndSetOperation, - /* read variable, substract predicate and set */ - substractAndSetOperation, - /* set variable to 1 */ - setToOne - }; - private: SetVarOperation m_operation; std::string m_collectionName; diff --git a/src/macro_expansion.cc b/src/macro_expansion.cc index dcc41bca..f02a0cd9 100644 --- a/src/macro_expansion.cc +++ b/src/macro_expansion.cc @@ -66,7 +66,11 @@ std::string MacroExpansion::expand(const std::string& input, std::string *variableValue = NULL; size_t collection = variable.find("."); if (collection == std::string::npos) { - variableValue = transaction->m_collections.resolveFirst(variable); + if (utils::string::toupper(variable) == "MATCHED_VAR") { + variableValue = transaction->m_variableMatchedVar.evaluate(); + } else { + variableValue = transaction->m_collections.resolveFirst(variable); + } } else { std::string col = std::string(variable, 0, collection); std::string var = std::string(variable, collection + 1, diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc index 77b78fdb..0cfcb385 100644 --- a/src/parser/seclang-parser.cc +++ b/src/parser/seclang-parser.cc @@ -49,7 +49,7 @@ #line 51 "seclang-parser.cc" // lalr1.cc:412 // Unqualified %code blocks. -#line 252 "seclang-parser.yy" // lalr1.cc:413 +#line 309 "seclang-parser.yy" // lalr1.cc:413 #include "src/parser/driver.h" @@ -251,227 +251,226 @@ namespace yy { { switch (that.type_get ()) { - case 7: // "Accuracy" - case 8: // "Allow" - case 9: // "Append" - case 10: // "AuditLog" - case 11: // "Block" - case 12: // "Capture" - case 13: // "Chain" - case 14: // "ACTION_CTL_AUDIT_ENGINE" - case 15: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 16: // "ACTION_CTL_BDY_JSON" - case 17: // "ACTION_CTL_BDY_XML" - case 18: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 19: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 20: // "ACTION_CTL_RULE_ENGINE" - case 21: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 22: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 23: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 24: // "Deny" - case 25: // "DeprecateVar" - case 26: // "Drop" - case 27: // "Exec" - case 28: // "ExpireVar" - case 29: // "Id" - case 30: // "InitCol" - case 31: // "Log" - case 32: // "LogData" - case 33: // "Maturity" - case 34: // "Msg" - case 35: // "MultiMatch" - case 36: // "NoAuditLog" - case 37: // "NoLog" - case 38: // "Pass" - case 39: // "Pause" - case 40: // "Phase" - case 41: // "Prepend" - case 42: // "Proxy" - case 43: // "Redirect" - case 44: // "Rev" - case 45: // "SanatiseArg" - case 46: // "SanatiseMatched" - case 47: // "SanatiseMatchedBytes" - case 48: // "SanatiseRequestHeader" - case 49: // "SanatiseResponseHeader" - case 50: // "SetEnv" - case 51: // "SetSrc" - case 52: // "SetSid" - case 53: // "SetUID" - case 54: // "SetVar" - case 55: // "Severity" - case 56: // "Skip" - case 57: // "SkipAfter" - case 58: // "Status" - case 59: // "Tag" - case 60: // "ACTION_TRANSFORMATION_CMD_LINE" - case 61: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 62: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 63: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 64: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 65: // "ACTION_TRANSFORMATION_JS_DECODE" - case 66: // "ACTION_TRANSFORMATION_LENGTH" - case 67: // "ACTION_TRANSFORMATION_LOWERCASE" - case 68: // "ACTION_TRANSFORMATION_MD5" - case 69: // "ACTION_TRANSFORMATION_NONE" - case 70: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 71: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 72: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 73: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 74: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 75: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 76: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 77: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 78: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 79: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 80: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 81: // "ACTION_TRANSFORMATION_SHA1" - case 82: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 83: // "ACTION_TRANSFORMATION_TRIM" - case 84: // "ACTION_TRANSFORMATION_URL_DECODE" - case 85: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 86: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 87: // "Ver" - case 88: // "xmlns" - case 89: // "CONFIG_COMPONENT_SIG" - case 90: // "CONFIG_DIR_AUDIT_DIR" - case 91: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 92: // "CONFIG_DIR_AUDIT_ENG" - case 93: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 94: // "CONFIG_DIR_AUDIT_LOG" - case 95: // "CONFIG_DIR_AUDIT_LOG2" - case 96: // "CONFIG_DIR_AUDIT_LOG_P" - case 97: // "CONFIG_DIR_AUDIT_STS" - case 98: // "CONFIG_DIR_AUDIT_TPE" - case 99: // "CONFIG_DIR_DEBUG_LOG" - case 100: // "CONFIG_DIR_DEBUG_LVL" - case 101: // "CONFIG_DIR_GEO_DB" - case 102: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 103: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 104: // "CONFIG_DIR_REQ_BODY" - case 105: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 106: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 107: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 108: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 109: // "CONFIG_DIR_RES_BODY" - case 110: // "CONFIG_DIR_RES_BODY_LIMIT" - case 111: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 112: // "CONFIG_DIR_RULE_ENG" - case 113: // "CONFIG_DIR_SEC_ACTION" - case 114: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 115: // "CONFIG_DIR_SEC_MARKER" - case 116: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 117: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 118: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 119: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 120: // "CONFIG_UPDLOAD_KEEP_FILES" - case 121: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 122: // "CONFIG_UPLOAD_DIR" - case 123: // "CONFIG_UPLOAD_FILE_LIMIT" - case 124: // "CONFIG_UPLOAD_FILE_MODE" - case 125: // "CONFIG_VALUE_ABORT" - case 126: // "CONFIG_VALUE_DETC" - case 127: // "CONFIG_VALUE_HTTPS" - case 128: // "CONFIG_VALUE_OFF" - case 129: // "CONFIG_VALUE_ON" - case 130: // "CONFIG_VALUE_PARALLEL" - case 131: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 132: // "CONFIG_VALUE_REJECT" - case 133: // "CONFIG_VALUE_RELEVANT_ONLY" - case 134: // "CONFIG_VALUE_SERIAL" - case 135: // "CONFIG_VALUE_WARN" - case 136: // "CONFIG_XML_EXTERNAL_ENTITY" - case 137: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 138: // "CONGIG_DIR_SEC_ARG_SEP" - case 139: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 140: // "CONGIG_DIR_SEC_DATA_DIR" - case 141: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 142: // "CONGIG_DIR_SEC_TMP_DIR" - case 143: // "DIRECTIVE" - case 144: // "DIRECTIVE_SECRULESCRIPT" - case 145: // "FREE_TEXT" - case 146: // "NOT" - case 147: // "OPERATOR" - case 148: // "OPERATOR_BEGINS_WITH" - case 149: // "OPERATOR_CONTAINS" - case 150: // "OPERATOR_CONTAINS_WORD" - case 151: // "OPERATOR_DETECT_SQLI" - case 152: // "OPERATOR_DETECT_XSS" - case 153: // "OPERATOR_ENDS_WITH" - case 154: // "OPERATOR_EQ" - case 155: // "OPERATOR_FUZZY_HASH" - case 156: // "OPERATOR_GE" - case 157: // "OPERATOR_GEOLOOKUP" - case 158: // "OPERATOR_GSB_LOOKUP" - case 159: // "OPERATOR_GT" - case 160: // "OPERATOR_INSPECT_FILE" - case 161: // "OPERATOR_IP_MATCH" - case 162: // "OPERATOR_IP_MATCH_FROM_FILE" - case 163: // "OPERATOR_LE" - case 164: // "OPERATOR_LT" - case 165: // "OPERATOR_PM" - case 166: // "OPERATOR_PM_FROM_FILE" - case 167: // "OPERATOR_RBL" - case 168: // "OPERATOR_RSUB" - case 169: // "OPERATOR_RX" - case 170: // "Operator Rx" - case 171: // "OPERATOR_STR_EQ" - case 172: // "OPERATOR_STR_MATCH" - case 173: // "OPERATOR_UNCONDITIONAL_MATCH" - case 174: // "OPERATOR_VALIDATE_BYTE_RANGE" - case 175: // "OPERATOR_VALIDATE_DTD" - case 176: // "OPERATOR_VALIDATE_HASH" - case 177: // "OPERATOR_VALIDATE_SCHEMA" - case 178: // "OPERATOR_VALIDATE_URL_ENCODING" - case 179: // "OPERATOR_VALIDATE_UTF8_ENCODING" - case 180: // "OPERATOR_VERIFY_CC" - case 181: // "OPERATOR_VERIFY_CPF" - case 182: // "OPERATOR_VERIFY_SSN" - case 183: // "OPERATOR_WITHIN" - case 184: // "OP_QUOTE" - case 185: // "QUOTATION_MARK" - case 186: // "RUN_TIME_VAR_BLD" - case 187: // "RUN_TIME_VAR_DUR" - case 188: // "RUN_TIME_VAR_ENV" - case 189: // "RUN_TIME_VAR_HSV" - case 190: // "RUN_TIME_VAR_REMOTE_USER" - case 191: // "RUN_TIME_VAR_RULE" - case 192: // "RUN_TIME_VAR_TIME" - case 193: // "RUN_TIME_VAR_TIME_DAY" - case 194: // "RUN_TIME_VAR_TIME_EPOCH" - case 195: // "RUN_TIME_VAR_TIME_HOUR" - case 196: // "RUN_TIME_VAR_TIME_MIN" - case 197: // "RUN_TIME_VAR_TIME_MON" - case 198: // "RUN_TIME_VAR_TIME_SEC" - case 199: // "RUN_TIME_VAR_TIME_WDAY" - case 200: // "RUN_TIME_VAR_TIME_YEAR" - case 201: // "RUN_TIME_VAR_XML" - case 202: // "VARIABLE" - case 203: // "VARIABLE_COL" - case 204: // "VARIABLE_STATUS" - case 205: // "VARIABLE_TX" + case 65: // "Accuracy" + case 66: // "Allow" + case 67: // "Append" + case 68: // "AuditLog" + case 69: // "Block" + case 70: // "Capture" + case 71: // "Chain" + case 72: // "ACTION_CTL_AUDIT_ENGINE" + case 73: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 74: // "ACTION_CTL_BDY_JSON" + case 75: // "ACTION_CTL_BDY_XML" + case 76: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 77: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 78: // "ACTION_CTL_RULE_ENGINE" + case 79: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 80: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 81: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 82: // "Deny" + case 83: // "DeprecateVar" + case 84: // "Drop" + case 85: // "Exec" + case 86: // "ExpireVar" + case 87: // "Id" + case 88: // "InitCol" + case 89: // "Log" + case 90: // "LogData" + case 91: // "Maturity" + case 92: // "Msg" + case 93: // "MultiMatch" + case 94: // "NoAuditLog" + case 95: // "NoLog" + case 96: // "Pass" + case 97: // "Pause" + case 98: // "Phase" + case 99: // "Prepend" + case 100: // "Proxy" + case 101: // "Redirect" + case 102: // "Rev" + case 103: // "SanatiseArg" + case 104: // "SanatiseMatched" + case 105: // "SanatiseMatchedBytes" + case 106: // "SanatiseRequestHeader" + case 107: // "SanatiseResponseHeader" + case 108: // "SetEnv" + case 109: // "SetSrc" + case 110: // "SetSid" + case 111: // "SetUID" + case 112: // "Severity" + case 113: // "Skip" + case 114: // "SkipAfter" + case 115: // "Status" + case 116: // "Tag" + case 117: // "ACTION_TRANSFORMATION_CMD_LINE" + case 118: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 119: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 120: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 121: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 122: // "ACTION_TRANSFORMATION_JS_DECODE" + case 123: // "ACTION_TRANSFORMATION_LENGTH" + case 124: // "ACTION_TRANSFORMATION_LOWERCASE" + case 125: // "ACTION_TRANSFORMATION_MD5" + case 126: // "ACTION_TRANSFORMATION_NONE" + case 127: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 128: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 129: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 130: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 131: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 132: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 133: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 134: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 135: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 136: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 137: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 138: // "ACTION_TRANSFORMATION_SHA1" + case 139: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 140: // "ACTION_TRANSFORMATION_TRIM" + case 141: // "ACTION_TRANSFORMATION_URL_DECODE" + case 142: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 143: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 144: // "Ver" + case 145: // "xmlns" + case 146: // "CONFIG_COMPONENT_SIG" + case 147: // "CONFIG_DIR_AUDIT_DIR" + case 148: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 149: // "CONFIG_DIR_AUDIT_ENG" + case 150: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 151: // "CONFIG_DIR_AUDIT_LOG" + case 152: // "CONFIG_DIR_AUDIT_LOG2" + case 153: // "CONFIG_DIR_AUDIT_LOG_P" + case 154: // "CONFIG_DIR_AUDIT_STS" + case 155: // "CONFIG_DIR_AUDIT_TPE" + case 156: // "CONFIG_DIR_DEBUG_LOG" + case 157: // "CONFIG_DIR_DEBUG_LVL" + case 158: // "CONFIG_DIR_GEO_DB" + case 159: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 160: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 161: // "CONFIG_DIR_REQ_BODY" + case 162: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 163: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 164: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 165: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 166: // "CONFIG_DIR_RES_BODY" + case 167: // "CONFIG_DIR_RES_BODY_LIMIT" + case 168: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 169: // "CONFIG_DIR_RULE_ENG" + case 170: // "CONFIG_DIR_SEC_ACTION" + case 171: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 172: // "CONFIG_DIR_SEC_MARKER" + case 173: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 174: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 175: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 176: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 177: // "CONFIG_UPDLOAD_KEEP_FILES" + case 178: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 179: // "CONFIG_UPLOAD_DIR" + case 180: // "CONFIG_UPLOAD_FILE_LIMIT" + case 181: // "CONFIG_UPLOAD_FILE_MODE" + case 182: // "CONFIG_VALUE_ABORT" + case 183: // "CONFIG_VALUE_DETC" + case 184: // "CONFIG_VALUE_HTTPS" + case 185: // "CONFIG_VALUE_OFF" + case 186: // "CONFIG_VALUE_ON" + case 187: // "CONFIG_VALUE_PARALLEL" + case 188: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 189: // "CONFIG_VALUE_REJECT" + case 190: // "CONFIG_VALUE_RELEVANT_ONLY" + case 191: // "CONFIG_VALUE_SERIAL" + case 192: // "CONFIG_VALUE_WARN" + case 193: // "CONFIG_XML_EXTERNAL_ENTITY" + case 194: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 195: // "CONGIG_DIR_SEC_ARG_SEP" + case 196: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 197: // "CONGIG_DIR_SEC_DATA_DIR" + case 198: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 199: // "CONGIG_DIR_SEC_TMP_DIR" + case 200: // "DIRECTIVE" + case 201: // "DIRECTIVE_SECRULESCRIPT" + case 202: // "FREE_TEXT" + case 203: // "NOT" + case 204: // "OPERATOR" + case 205: // "OPERATOR_BEGINS_WITH" + case 206: // "OPERATOR_CONTAINS" + case 207: // "OPERATOR_CONTAINS_WORD" + case 208: // "OPERATOR_DETECT_SQLI" + case 209: // "OPERATOR_DETECT_XSS" + case 210: // "OPERATOR_ENDS_WITH" + case 211: // "OPERATOR_EQ" + case 212: // "OPERATOR_FUZZY_HASH" + case 213: // "OPERATOR_GE" + case 214: // "OPERATOR_GEOLOOKUP" + case 215: // "OPERATOR_GSB_LOOKUP" + case 216: // "OPERATOR_GT" + case 217: // "OPERATOR_INSPECT_FILE" + case 218: // "OPERATOR_IP_MATCH" + case 219: // "OPERATOR_IP_MATCH_FROM_FILE" + case 220: // "OPERATOR_LE" + case 221: // "OPERATOR_LT" + case 222: // "OPERATOR_PM" + case 223: // "OPERATOR_PM_FROM_FILE" + case 224: // "OPERATOR_RBL" + case 225: // "OPERATOR_RSUB" + case 226: // "OPERATOR_RX" + case 227: // "Operator Rx" + case 228: // "OPERATOR_STR_EQ" + case 229: // "OPERATOR_STR_MATCH" + case 230: // "OPERATOR_UNCONDITIONAL_MATCH" + case 231: // "OPERATOR_VALIDATE_BYTE_RANGE" + case 232: // "OPERATOR_VALIDATE_DTD" + case 233: // "OPERATOR_VALIDATE_HASH" + case 234: // "OPERATOR_VALIDATE_SCHEMA" + case 235: // "OPERATOR_VALIDATE_URL_ENCODING" + case 236: // "OPERATOR_VALIDATE_UTF8_ENCODING" + case 237: // "OPERATOR_VERIFY_CC" + case 238: // "OPERATOR_VERIFY_CPF" + case 239: // "OPERATOR_VERIFY_SSN" + case 240: // "OPERATOR_WITHIN" + case 241: // "OP_QUOTE" + case 242: // "QUOTATION_MARK" + case 243: // "RUN_TIME_VAR_BLD" + case 244: // "RUN_TIME_VAR_DUR" + case 245: // "RUN_TIME_VAR_ENV" + case 246: // "RUN_TIME_VAR_HSV" + case 247: // "RUN_TIME_VAR_REMOTE_USER" + case 248: // "RUN_TIME_VAR_RULE" + case 249: // "RUN_TIME_VAR_TIME" + case 250: // "RUN_TIME_VAR_TIME_DAY" + case 251: // "RUN_TIME_VAR_TIME_EPOCH" + case 252: // "RUN_TIME_VAR_TIME_HOUR" + case 253: // "RUN_TIME_VAR_TIME_MIN" + case 254: // "RUN_TIME_VAR_TIME_MON" + case 255: // "RUN_TIME_VAR_TIME_SEC" + case 256: // "RUN_TIME_VAR_TIME_WDAY" + case 257: // "RUN_TIME_VAR_TIME_YEAR" + case 258: // "RUN_TIME_VAR_XML" + case 259: // "VARIABLE" + case 260: // "VARIABLE_COL" + case 261: // "VARIABLE_STATUS" + case 262: // "VARIABLE_TX" value.move< std::string > (that.value); break; - case 212: // op - case 213: // op_before_init + case 269: // op + case 270: // op_before_init value.move< std::unique_ptr > (that.value); break; - case 216: // var + case 273: // var value.move< std::unique_ptr > (that.value); break; - case 217: // act + case 274: // act value.move< std::unique_ptr > (that.value); break; - case 215: // variables + case 272: // variables value.move< std::unique_ptr > > > (that.value); break; - case 210: // actions - case 211: // actions_may_quoted + case 267: // actions + case 268: // actions_may_quoted value.move< std::unique_ptr > > > (that.value); break; @@ -490,227 +489,226 @@ namespace yy { state = that.state; switch (that.type_get ()) { - case 7: // "Accuracy" - case 8: // "Allow" - case 9: // "Append" - case 10: // "AuditLog" - case 11: // "Block" - case 12: // "Capture" - case 13: // "Chain" - case 14: // "ACTION_CTL_AUDIT_ENGINE" - case 15: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 16: // "ACTION_CTL_BDY_JSON" - case 17: // "ACTION_CTL_BDY_XML" - case 18: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 19: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 20: // "ACTION_CTL_RULE_ENGINE" - case 21: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 22: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 23: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 24: // "Deny" - case 25: // "DeprecateVar" - case 26: // "Drop" - case 27: // "Exec" - case 28: // "ExpireVar" - case 29: // "Id" - case 30: // "InitCol" - case 31: // "Log" - case 32: // "LogData" - case 33: // "Maturity" - case 34: // "Msg" - case 35: // "MultiMatch" - case 36: // "NoAuditLog" - case 37: // "NoLog" - case 38: // "Pass" - case 39: // "Pause" - case 40: // "Phase" - case 41: // "Prepend" - case 42: // "Proxy" - case 43: // "Redirect" - case 44: // "Rev" - case 45: // "SanatiseArg" - case 46: // "SanatiseMatched" - case 47: // "SanatiseMatchedBytes" - case 48: // "SanatiseRequestHeader" - case 49: // "SanatiseResponseHeader" - case 50: // "SetEnv" - case 51: // "SetSrc" - case 52: // "SetSid" - case 53: // "SetUID" - case 54: // "SetVar" - case 55: // "Severity" - case 56: // "Skip" - case 57: // "SkipAfter" - case 58: // "Status" - case 59: // "Tag" - case 60: // "ACTION_TRANSFORMATION_CMD_LINE" - case 61: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 62: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 63: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 64: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 65: // "ACTION_TRANSFORMATION_JS_DECODE" - case 66: // "ACTION_TRANSFORMATION_LENGTH" - case 67: // "ACTION_TRANSFORMATION_LOWERCASE" - case 68: // "ACTION_TRANSFORMATION_MD5" - case 69: // "ACTION_TRANSFORMATION_NONE" - case 70: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 71: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 72: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 73: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 74: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 75: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 76: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 77: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 78: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 79: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 80: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 81: // "ACTION_TRANSFORMATION_SHA1" - case 82: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 83: // "ACTION_TRANSFORMATION_TRIM" - case 84: // "ACTION_TRANSFORMATION_URL_DECODE" - case 85: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 86: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 87: // "Ver" - case 88: // "xmlns" - case 89: // "CONFIG_COMPONENT_SIG" - case 90: // "CONFIG_DIR_AUDIT_DIR" - case 91: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 92: // "CONFIG_DIR_AUDIT_ENG" - case 93: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 94: // "CONFIG_DIR_AUDIT_LOG" - case 95: // "CONFIG_DIR_AUDIT_LOG2" - case 96: // "CONFIG_DIR_AUDIT_LOG_P" - case 97: // "CONFIG_DIR_AUDIT_STS" - case 98: // "CONFIG_DIR_AUDIT_TPE" - case 99: // "CONFIG_DIR_DEBUG_LOG" - case 100: // "CONFIG_DIR_DEBUG_LVL" - case 101: // "CONFIG_DIR_GEO_DB" - case 102: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 103: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 104: // "CONFIG_DIR_REQ_BODY" - case 105: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 106: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 107: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 108: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 109: // "CONFIG_DIR_RES_BODY" - case 110: // "CONFIG_DIR_RES_BODY_LIMIT" - case 111: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 112: // "CONFIG_DIR_RULE_ENG" - case 113: // "CONFIG_DIR_SEC_ACTION" - case 114: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 115: // "CONFIG_DIR_SEC_MARKER" - case 116: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 117: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 118: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 119: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 120: // "CONFIG_UPDLOAD_KEEP_FILES" - case 121: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 122: // "CONFIG_UPLOAD_DIR" - case 123: // "CONFIG_UPLOAD_FILE_LIMIT" - case 124: // "CONFIG_UPLOAD_FILE_MODE" - case 125: // "CONFIG_VALUE_ABORT" - case 126: // "CONFIG_VALUE_DETC" - case 127: // "CONFIG_VALUE_HTTPS" - case 128: // "CONFIG_VALUE_OFF" - case 129: // "CONFIG_VALUE_ON" - case 130: // "CONFIG_VALUE_PARALLEL" - case 131: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 132: // "CONFIG_VALUE_REJECT" - case 133: // "CONFIG_VALUE_RELEVANT_ONLY" - case 134: // "CONFIG_VALUE_SERIAL" - case 135: // "CONFIG_VALUE_WARN" - case 136: // "CONFIG_XML_EXTERNAL_ENTITY" - case 137: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 138: // "CONGIG_DIR_SEC_ARG_SEP" - case 139: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 140: // "CONGIG_DIR_SEC_DATA_DIR" - case 141: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 142: // "CONGIG_DIR_SEC_TMP_DIR" - case 143: // "DIRECTIVE" - case 144: // "DIRECTIVE_SECRULESCRIPT" - case 145: // "FREE_TEXT" - case 146: // "NOT" - case 147: // "OPERATOR" - case 148: // "OPERATOR_BEGINS_WITH" - case 149: // "OPERATOR_CONTAINS" - case 150: // "OPERATOR_CONTAINS_WORD" - case 151: // "OPERATOR_DETECT_SQLI" - case 152: // "OPERATOR_DETECT_XSS" - case 153: // "OPERATOR_ENDS_WITH" - case 154: // "OPERATOR_EQ" - case 155: // "OPERATOR_FUZZY_HASH" - case 156: // "OPERATOR_GE" - case 157: // "OPERATOR_GEOLOOKUP" - case 158: // "OPERATOR_GSB_LOOKUP" - case 159: // "OPERATOR_GT" - case 160: // "OPERATOR_INSPECT_FILE" - case 161: // "OPERATOR_IP_MATCH" - case 162: // "OPERATOR_IP_MATCH_FROM_FILE" - case 163: // "OPERATOR_LE" - case 164: // "OPERATOR_LT" - case 165: // "OPERATOR_PM" - case 166: // "OPERATOR_PM_FROM_FILE" - case 167: // "OPERATOR_RBL" - case 168: // "OPERATOR_RSUB" - case 169: // "OPERATOR_RX" - case 170: // "Operator Rx" - case 171: // "OPERATOR_STR_EQ" - case 172: // "OPERATOR_STR_MATCH" - case 173: // "OPERATOR_UNCONDITIONAL_MATCH" - case 174: // "OPERATOR_VALIDATE_BYTE_RANGE" - case 175: // "OPERATOR_VALIDATE_DTD" - case 176: // "OPERATOR_VALIDATE_HASH" - case 177: // "OPERATOR_VALIDATE_SCHEMA" - case 178: // "OPERATOR_VALIDATE_URL_ENCODING" - case 179: // "OPERATOR_VALIDATE_UTF8_ENCODING" - case 180: // "OPERATOR_VERIFY_CC" - case 181: // "OPERATOR_VERIFY_CPF" - case 182: // "OPERATOR_VERIFY_SSN" - case 183: // "OPERATOR_WITHIN" - case 184: // "OP_QUOTE" - case 185: // "QUOTATION_MARK" - case 186: // "RUN_TIME_VAR_BLD" - case 187: // "RUN_TIME_VAR_DUR" - case 188: // "RUN_TIME_VAR_ENV" - case 189: // "RUN_TIME_VAR_HSV" - case 190: // "RUN_TIME_VAR_REMOTE_USER" - case 191: // "RUN_TIME_VAR_RULE" - case 192: // "RUN_TIME_VAR_TIME" - case 193: // "RUN_TIME_VAR_TIME_DAY" - case 194: // "RUN_TIME_VAR_TIME_EPOCH" - case 195: // "RUN_TIME_VAR_TIME_HOUR" - case 196: // "RUN_TIME_VAR_TIME_MIN" - case 197: // "RUN_TIME_VAR_TIME_MON" - case 198: // "RUN_TIME_VAR_TIME_SEC" - case 199: // "RUN_TIME_VAR_TIME_WDAY" - case 200: // "RUN_TIME_VAR_TIME_YEAR" - case 201: // "RUN_TIME_VAR_XML" - case 202: // "VARIABLE" - case 203: // "VARIABLE_COL" - case 204: // "VARIABLE_STATUS" - case 205: // "VARIABLE_TX" + case 65: // "Accuracy" + case 66: // "Allow" + case 67: // "Append" + case 68: // "AuditLog" + case 69: // "Block" + case 70: // "Capture" + case 71: // "Chain" + case 72: // "ACTION_CTL_AUDIT_ENGINE" + case 73: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 74: // "ACTION_CTL_BDY_JSON" + case 75: // "ACTION_CTL_BDY_XML" + case 76: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 77: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 78: // "ACTION_CTL_RULE_ENGINE" + case 79: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 80: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 81: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 82: // "Deny" + case 83: // "DeprecateVar" + case 84: // "Drop" + case 85: // "Exec" + case 86: // "ExpireVar" + case 87: // "Id" + case 88: // "InitCol" + case 89: // "Log" + case 90: // "LogData" + case 91: // "Maturity" + case 92: // "Msg" + case 93: // "MultiMatch" + case 94: // "NoAuditLog" + case 95: // "NoLog" + case 96: // "Pass" + case 97: // "Pause" + case 98: // "Phase" + case 99: // "Prepend" + case 100: // "Proxy" + case 101: // "Redirect" + case 102: // "Rev" + case 103: // "SanatiseArg" + case 104: // "SanatiseMatched" + case 105: // "SanatiseMatchedBytes" + case 106: // "SanatiseRequestHeader" + case 107: // "SanatiseResponseHeader" + case 108: // "SetEnv" + case 109: // "SetSrc" + case 110: // "SetSid" + case 111: // "SetUID" + case 112: // "Severity" + case 113: // "Skip" + case 114: // "SkipAfter" + case 115: // "Status" + case 116: // "Tag" + case 117: // "ACTION_TRANSFORMATION_CMD_LINE" + case 118: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 119: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 120: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 121: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 122: // "ACTION_TRANSFORMATION_JS_DECODE" + case 123: // "ACTION_TRANSFORMATION_LENGTH" + case 124: // "ACTION_TRANSFORMATION_LOWERCASE" + case 125: // "ACTION_TRANSFORMATION_MD5" + case 126: // "ACTION_TRANSFORMATION_NONE" + case 127: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 128: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 129: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 130: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 131: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 132: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 133: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 134: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 135: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 136: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 137: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 138: // "ACTION_TRANSFORMATION_SHA1" + case 139: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 140: // "ACTION_TRANSFORMATION_TRIM" + case 141: // "ACTION_TRANSFORMATION_URL_DECODE" + case 142: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 143: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 144: // "Ver" + case 145: // "xmlns" + case 146: // "CONFIG_COMPONENT_SIG" + case 147: // "CONFIG_DIR_AUDIT_DIR" + case 148: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 149: // "CONFIG_DIR_AUDIT_ENG" + case 150: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 151: // "CONFIG_DIR_AUDIT_LOG" + case 152: // "CONFIG_DIR_AUDIT_LOG2" + case 153: // "CONFIG_DIR_AUDIT_LOG_P" + case 154: // "CONFIG_DIR_AUDIT_STS" + case 155: // "CONFIG_DIR_AUDIT_TPE" + case 156: // "CONFIG_DIR_DEBUG_LOG" + case 157: // "CONFIG_DIR_DEBUG_LVL" + case 158: // "CONFIG_DIR_GEO_DB" + case 159: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 160: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 161: // "CONFIG_DIR_REQ_BODY" + case 162: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 163: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 164: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 165: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 166: // "CONFIG_DIR_RES_BODY" + case 167: // "CONFIG_DIR_RES_BODY_LIMIT" + case 168: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 169: // "CONFIG_DIR_RULE_ENG" + case 170: // "CONFIG_DIR_SEC_ACTION" + case 171: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 172: // "CONFIG_DIR_SEC_MARKER" + case 173: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 174: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 175: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 176: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 177: // "CONFIG_UPDLOAD_KEEP_FILES" + case 178: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 179: // "CONFIG_UPLOAD_DIR" + case 180: // "CONFIG_UPLOAD_FILE_LIMIT" + case 181: // "CONFIG_UPLOAD_FILE_MODE" + case 182: // "CONFIG_VALUE_ABORT" + case 183: // "CONFIG_VALUE_DETC" + case 184: // "CONFIG_VALUE_HTTPS" + case 185: // "CONFIG_VALUE_OFF" + case 186: // "CONFIG_VALUE_ON" + case 187: // "CONFIG_VALUE_PARALLEL" + case 188: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 189: // "CONFIG_VALUE_REJECT" + case 190: // "CONFIG_VALUE_RELEVANT_ONLY" + case 191: // "CONFIG_VALUE_SERIAL" + case 192: // "CONFIG_VALUE_WARN" + case 193: // "CONFIG_XML_EXTERNAL_ENTITY" + case 194: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 195: // "CONGIG_DIR_SEC_ARG_SEP" + case 196: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 197: // "CONGIG_DIR_SEC_DATA_DIR" + case 198: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 199: // "CONGIG_DIR_SEC_TMP_DIR" + case 200: // "DIRECTIVE" + case 201: // "DIRECTIVE_SECRULESCRIPT" + case 202: // "FREE_TEXT" + case 203: // "NOT" + case 204: // "OPERATOR" + case 205: // "OPERATOR_BEGINS_WITH" + case 206: // "OPERATOR_CONTAINS" + case 207: // "OPERATOR_CONTAINS_WORD" + case 208: // "OPERATOR_DETECT_SQLI" + case 209: // "OPERATOR_DETECT_XSS" + case 210: // "OPERATOR_ENDS_WITH" + case 211: // "OPERATOR_EQ" + case 212: // "OPERATOR_FUZZY_HASH" + case 213: // "OPERATOR_GE" + case 214: // "OPERATOR_GEOLOOKUP" + case 215: // "OPERATOR_GSB_LOOKUP" + case 216: // "OPERATOR_GT" + case 217: // "OPERATOR_INSPECT_FILE" + case 218: // "OPERATOR_IP_MATCH" + case 219: // "OPERATOR_IP_MATCH_FROM_FILE" + case 220: // "OPERATOR_LE" + case 221: // "OPERATOR_LT" + case 222: // "OPERATOR_PM" + case 223: // "OPERATOR_PM_FROM_FILE" + case 224: // "OPERATOR_RBL" + case 225: // "OPERATOR_RSUB" + case 226: // "OPERATOR_RX" + case 227: // "Operator Rx" + case 228: // "OPERATOR_STR_EQ" + case 229: // "OPERATOR_STR_MATCH" + case 230: // "OPERATOR_UNCONDITIONAL_MATCH" + case 231: // "OPERATOR_VALIDATE_BYTE_RANGE" + case 232: // "OPERATOR_VALIDATE_DTD" + case 233: // "OPERATOR_VALIDATE_HASH" + case 234: // "OPERATOR_VALIDATE_SCHEMA" + case 235: // "OPERATOR_VALIDATE_URL_ENCODING" + case 236: // "OPERATOR_VALIDATE_UTF8_ENCODING" + case 237: // "OPERATOR_VERIFY_CC" + case 238: // "OPERATOR_VERIFY_CPF" + case 239: // "OPERATOR_VERIFY_SSN" + case 240: // "OPERATOR_WITHIN" + case 241: // "OP_QUOTE" + case 242: // "QUOTATION_MARK" + case 243: // "RUN_TIME_VAR_BLD" + case 244: // "RUN_TIME_VAR_DUR" + case 245: // "RUN_TIME_VAR_ENV" + case 246: // "RUN_TIME_VAR_HSV" + case 247: // "RUN_TIME_VAR_REMOTE_USER" + case 248: // "RUN_TIME_VAR_RULE" + case 249: // "RUN_TIME_VAR_TIME" + case 250: // "RUN_TIME_VAR_TIME_DAY" + case 251: // "RUN_TIME_VAR_TIME_EPOCH" + case 252: // "RUN_TIME_VAR_TIME_HOUR" + case 253: // "RUN_TIME_VAR_TIME_MIN" + case 254: // "RUN_TIME_VAR_TIME_MON" + case 255: // "RUN_TIME_VAR_TIME_SEC" + case 256: // "RUN_TIME_VAR_TIME_WDAY" + case 257: // "RUN_TIME_VAR_TIME_YEAR" + case 258: // "RUN_TIME_VAR_XML" + case 259: // "VARIABLE" + case 260: // "VARIABLE_COL" + case 261: // "VARIABLE_STATUS" + case 262: // "VARIABLE_TX" value.copy< std::string > (that.value); break; - case 212: // op - case 213: // op_before_init + case 269: // op + case 270: // op_before_init value.copy< std::unique_ptr > (that.value); break; - case 216: // var + case 273: // var value.copy< std::unique_ptr > (that.value); break; - case 217: // act + case 274: // act value.copy< std::unique_ptr > (that.value); break; - case 215: // variables + case 272: // variables value.copy< std::unique_ptr > > > (that.value); break; - case 210: // actions - case 211: // actions_may_quoted + case 267: // actions + case 268: // actions_may_quoted value.copy< std::unique_ptr > > > (that.value); break; @@ -855,13 +853,13 @@ namespace yy { // User initialization code. - #line 245 "/home/zimmerle/core/ModSecurity/src/parser/seclang-parser.yy" // lalr1.cc:741 + #line 302 "/home/zimmerle/core/ModSecurity/src/parser/seclang-parser.yy" // lalr1.cc:741 { // Initialize the initial location. yyla.location.begin.filename = yyla.location.end.filename = &driver.file; } -#line 865 "seclang-parser.cc" // lalr1.cc:741 +#line 863 "seclang-parser.cc" // lalr1.cc:741 /* Initialize the stack. The initial state will be set in yynewstate, since the latter expects the semantical and the @@ -951,227 +949,226 @@ namespace yy { when using variants. */ switch (yyr1_[yyn]) { - case 7: // "Accuracy" - case 8: // "Allow" - case 9: // "Append" - case 10: // "AuditLog" - case 11: // "Block" - case 12: // "Capture" - case 13: // "Chain" - case 14: // "ACTION_CTL_AUDIT_ENGINE" - case 15: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 16: // "ACTION_CTL_BDY_JSON" - case 17: // "ACTION_CTL_BDY_XML" - case 18: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 19: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 20: // "ACTION_CTL_RULE_ENGINE" - case 21: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 22: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 23: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 24: // "Deny" - case 25: // "DeprecateVar" - case 26: // "Drop" - case 27: // "Exec" - case 28: // "ExpireVar" - case 29: // "Id" - case 30: // "InitCol" - case 31: // "Log" - case 32: // "LogData" - case 33: // "Maturity" - case 34: // "Msg" - case 35: // "MultiMatch" - case 36: // "NoAuditLog" - case 37: // "NoLog" - case 38: // "Pass" - case 39: // "Pause" - case 40: // "Phase" - case 41: // "Prepend" - case 42: // "Proxy" - case 43: // "Redirect" - case 44: // "Rev" - case 45: // "SanatiseArg" - case 46: // "SanatiseMatched" - case 47: // "SanatiseMatchedBytes" - case 48: // "SanatiseRequestHeader" - case 49: // "SanatiseResponseHeader" - case 50: // "SetEnv" - case 51: // "SetSrc" - case 52: // "SetSid" - case 53: // "SetUID" - case 54: // "SetVar" - case 55: // "Severity" - case 56: // "Skip" - case 57: // "SkipAfter" - case 58: // "Status" - case 59: // "Tag" - case 60: // "ACTION_TRANSFORMATION_CMD_LINE" - case 61: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 62: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 63: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 64: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 65: // "ACTION_TRANSFORMATION_JS_DECODE" - case 66: // "ACTION_TRANSFORMATION_LENGTH" - case 67: // "ACTION_TRANSFORMATION_LOWERCASE" - case 68: // "ACTION_TRANSFORMATION_MD5" - case 69: // "ACTION_TRANSFORMATION_NONE" - case 70: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 71: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 72: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 73: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 74: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 75: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 76: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 77: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 78: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 79: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 80: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 81: // "ACTION_TRANSFORMATION_SHA1" - case 82: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 83: // "ACTION_TRANSFORMATION_TRIM" - case 84: // "ACTION_TRANSFORMATION_URL_DECODE" - case 85: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 86: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 87: // "Ver" - case 88: // "xmlns" - case 89: // "CONFIG_COMPONENT_SIG" - case 90: // "CONFIG_DIR_AUDIT_DIR" - case 91: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 92: // "CONFIG_DIR_AUDIT_ENG" - case 93: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 94: // "CONFIG_DIR_AUDIT_LOG" - case 95: // "CONFIG_DIR_AUDIT_LOG2" - case 96: // "CONFIG_DIR_AUDIT_LOG_P" - case 97: // "CONFIG_DIR_AUDIT_STS" - case 98: // "CONFIG_DIR_AUDIT_TPE" - case 99: // "CONFIG_DIR_DEBUG_LOG" - case 100: // "CONFIG_DIR_DEBUG_LVL" - case 101: // "CONFIG_DIR_GEO_DB" - case 102: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 103: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 104: // "CONFIG_DIR_REQ_BODY" - case 105: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 106: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 107: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 108: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 109: // "CONFIG_DIR_RES_BODY" - case 110: // "CONFIG_DIR_RES_BODY_LIMIT" - case 111: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 112: // "CONFIG_DIR_RULE_ENG" - case 113: // "CONFIG_DIR_SEC_ACTION" - case 114: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 115: // "CONFIG_DIR_SEC_MARKER" - case 116: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 117: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 118: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 119: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 120: // "CONFIG_UPDLOAD_KEEP_FILES" - case 121: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 122: // "CONFIG_UPLOAD_DIR" - case 123: // "CONFIG_UPLOAD_FILE_LIMIT" - case 124: // "CONFIG_UPLOAD_FILE_MODE" - case 125: // "CONFIG_VALUE_ABORT" - case 126: // "CONFIG_VALUE_DETC" - case 127: // "CONFIG_VALUE_HTTPS" - case 128: // "CONFIG_VALUE_OFF" - case 129: // "CONFIG_VALUE_ON" - case 130: // "CONFIG_VALUE_PARALLEL" - case 131: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 132: // "CONFIG_VALUE_REJECT" - case 133: // "CONFIG_VALUE_RELEVANT_ONLY" - case 134: // "CONFIG_VALUE_SERIAL" - case 135: // "CONFIG_VALUE_WARN" - case 136: // "CONFIG_XML_EXTERNAL_ENTITY" - case 137: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 138: // "CONGIG_DIR_SEC_ARG_SEP" - case 139: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 140: // "CONGIG_DIR_SEC_DATA_DIR" - case 141: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 142: // "CONGIG_DIR_SEC_TMP_DIR" - case 143: // "DIRECTIVE" - case 144: // "DIRECTIVE_SECRULESCRIPT" - case 145: // "FREE_TEXT" - case 146: // "NOT" - case 147: // "OPERATOR" - case 148: // "OPERATOR_BEGINS_WITH" - case 149: // "OPERATOR_CONTAINS" - case 150: // "OPERATOR_CONTAINS_WORD" - case 151: // "OPERATOR_DETECT_SQLI" - case 152: // "OPERATOR_DETECT_XSS" - case 153: // "OPERATOR_ENDS_WITH" - case 154: // "OPERATOR_EQ" - case 155: // "OPERATOR_FUZZY_HASH" - case 156: // "OPERATOR_GE" - case 157: // "OPERATOR_GEOLOOKUP" - case 158: // "OPERATOR_GSB_LOOKUP" - case 159: // "OPERATOR_GT" - case 160: // "OPERATOR_INSPECT_FILE" - case 161: // "OPERATOR_IP_MATCH" - case 162: // "OPERATOR_IP_MATCH_FROM_FILE" - case 163: // "OPERATOR_LE" - case 164: // "OPERATOR_LT" - case 165: // "OPERATOR_PM" - case 166: // "OPERATOR_PM_FROM_FILE" - case 167: // "OPERATOR_RBL" - case 168: // "OPERATOR_RSUB" - case 169: // "OPERATOR_RX" - case 170: // "Operator Rx" - case 171: // "OPERATOR_STR_EQ" - case 172: // "OPERATOR_STR_MATCH" - case 173: // "OPERATOR_UNCONDITIONAL_MATCH" - case 174: // "OPERATOR_VALIDATE_BYTE_RANGE" - case 175: // "OPERATOR_VALIDATE_DTD" - case 176: // "OPERATOR_VALIDATE_HASH" - case 177: // "OPERATOR_VALIDATE_SCHEMA" - case 178: // "OPERATOR_VALIDATE_URL_ENCODING" - case 179: // "OPERATOR_VALIDATE_UTF8_ENCODING" - case 180: // "OPERATOR_VERIFY_CC" - case 181: // "OPERATOR_VERIFY_CPF" - case 182: // "OPERATOR_VERIFY_SSN" - case 183: // "OPERATOR_WITHIN" - case 184: // "OP_QUOTE" - case 185: // "QUOTATION_MARK" - case 186: // "RUN_TIME_VAR_BLD" - case 187: // "RUN_TIME_VAR_DUR" - case 188: // "RUN_TIME_VAR_ENV" - case 189: // "RUN_TIME_VAR_HSV" - case 190: // "RUN_TIME_VAR_REMOTE_USER" - case 191: // "RUN_TIME_VAR_RULE" - case 192: // "RUN_TIME_VAR_TIME" - case 193: // "RUN_TIME_VAR_TIME_DAY" - case 194: // "RUN_TIME_VAR_TIME_EPOCH" - case 195: // "RUN_TIME_VAR_TIME_HOUR" - case 196: // "RUN_TIME_VAR_TIME_MIN" - case 197: // "RUN_TIME_VAR_TIME_MON" - case 198: // "RUN_TIME_VAR_TIME_SEC" - case 199: // "RUN_TIME_VAR_TIME_WDAY" - case 200: // "RUN_TIME_VAR_TIME_YEAR" - case 201: // "RUN_TIME_VAR_XML" - case 202: // "VARIABLE" - case 203: // "VARIABLE_COL" - case 204: // "VARIABLE_STATUS" - case 205: // "VARIABLE_TX" + case 65: // "Accuracy" + case 66: // "Allow" + case 67: // "Append" + case 68: // "AuditLog" + case 69: // "Block" + case 70: // "Capture" + case 71: // "Chain" + case 72: // "ACTION_CTL_AUDIT_ENGINE" + case 73: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 74: // "ACTION_CTL_BDY_JSON" + case 75: // "ACTION_CTL_BDY_XML" + case 76: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 77: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 78: // "ACTION_CTL_RULE_ENGINE" + case 79: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 80: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 81: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 82: // "Deny" + case 83: // "DeprecateVar" + case 84: // "Drop" + case 85: // "Exec" + case 86: // "ExpireVar" + case 87: // "Id" + case 88: // "InitCol" + case 89: // "Log" + case 90: // "LogData" + case 91: // "Maturity" + case 92: // "Msg" + case 93: // "MultiMatch" + case 94: // "NoAuditLog" + case 95: // "NoLog" + case 96: // "Pass" + case 97: // "Pause" + case 98: // "Phase" + case 99: // "Prepend" + case 100: // "Proxy" + case 101: // "Redirect" + case 102: // "Rev" + case 103: // "SanatiseArg" + case 104: // "SanatiseMatched" + case 105: // "SanatiseMatchedBytes" + case 106: // "SanatiseRequestHeader" + case 107: // "SanatiseResponseHeader" + case 108: // "SetEnv" + case 109: // "SetSrc" + case 110: // "SetSid" + case 111: // "SetUID" + case 112: // "Severity" + case 113: // "Skip" + case 114: // "SkipAfter" + case 115: // "Status" + case 116: // "Tag" + case 117: // "ACTION_TRANSFORMATION_CMD_LINE" + case 118: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 119: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 120: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 121: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 122: // "ACTION_TRANSFORMATION_JS_DECODE" + case 123: // "ACTION_TRANSFORMATION_LENGTH" + case 124: // "ACTION_TRANSFORMATION_LOWERCASE" + case 125: // "ACTION_TRANSFORMATION_MD5" + case 126: // "ACTION_TRANSFORMATION_NONE" + case 127: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 128: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 129: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 130: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 131: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 132: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 133: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 134: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 135: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 136: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 137: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 138: // "ACTION_TRANSFORMATION_SHA1" + case 139: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 140: // "ACTION_TRANSFORMATION_TRIM" + case 141: // "ACTION_TRANSFORMATION_URL_DECODE" + case 142: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 143: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 144: // "Ver" + case 145: // "xmlns" + case 146: // "CONFIG_COMPONENT_SIG" + case 147: // "CONFIG_DIR_AUDIT_DIR" + case 148: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 149: // "CONFIG_DIR_AUDIT_ENG" + case 150: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 151: // "CONFIG_DIR_AUDIT_LOG" + case 152: // "CONFIG_DIR_AUDIT_LOG2" + case 153: // "CONFIG_DIR_AUDIT_LOG_P" + case 154: // "CONFIG_DIR_AUDIT_STS" + case 155: // "CONFIG_DIR_AUDIT_TPE" + case 156: // "CONFIG_DIR_DEBUG_LOG" + case 157: // "CONFIG_DIR_DEBUG_LVL" + case 158: // "CONFIG_DIR_GEO_DB" + case 159: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 160: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 161: // "CONFIG_DIR_REQ_BODY" + case 162: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 163: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 164: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 165: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 166: // "CONFIG_DIR_RES_BODY" + case 167: // "CONFIG_DIR_RES_BODY_LIMIT" + case 168: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 169: // "CONFIG_DIR_RULE_ENG" + case 170: // "CONFIG_DIR_SEC_ACTION" + case 171: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 172: // "CONFIG_DIR_SEC_MARKER" + case 173: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 174: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 175: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 176: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 177: // "CONFIG_UPDLOAD_KEEP_FILES" + case 178: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 179: // "CONFIG_UPLOAD_DIR" + case 180: // "CONFIG_UPLOAD_FILE_LIMIT" + case 181: // "CONFIG_UPLOAD_FILE_MODE" + case 182: // "CONFIG_VALUE_ABORT" + case 183: // "CONFIG_VALUE_DETC" + case 184: // "CONFIG_VALUE_HTTPS" + case 185: // "CONFIG_VALUE_OFF" + case 186: // "CONFIG_VALUE_ON" + case 187: // "CONFIG_VALUE_PARALLEL" + case 188: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 189: // "CONFIG_VALUE_REJECT" + case 190: // "CONFIG_VALUE_RELEVANT_ONLY" + case 191: // "CONFIG_VALUE_SERIAL" + case 192: // "CONFIG_VALUE_WARN" + case 193: // "CONFIG_XML_EXTERNAL_ENTITY" + case 194: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 195: // "CONGIG_DIR_SEC_ARG_SEP" + case 196: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 197: // "CONGIG_DIR_SEC_DATA_DIR" + case 198: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 199: // "CONGIG_DIR_SEC_TMP_DIR" + case 200: // "DIRECTIVE" + case 201: // "DIRECTIVE_SECRULESCRIPT" + case 202: // "FREE_TEXT" + case 203: // "NOT" + case 204: // "OPERATOR" + case 205: // "OPERATOR_BEGINS_WITH" + case 206: // "OPERATOR_CONTAINS" + case 207: // "OPERATOR_CONTAINS_WORD" + case 208: // "OPERATOR_DETECT_SQLI" + case 209: // "OPERATOR_DETECT_XSS" + case 210: // "OPERATOR_ENDS_WITH" + case 211: // "OPERATOR_EQ" + case 212: // "OPERATOR_FUZZY_HASH" + case 213: // "OPERATOR_GE" + case 214: // "OPERATOR_GEOLOOKUP" + case 215: // "OPERATOR_GSB_LOOKUP" + case 216: // "OPERATOR_GT" + case 217: // "OPERATOR_INSPECT_FILE" + case 218: // "OPERATOR_IP_MATCH" + case 219: // "OPERATOR_IP_MATCH_FROM_FILE" + case 220: // "OPERATOR_LE" + case 221: // "OPERATOR_LT" + case 222: // "OPERATOR_PM" + case 223: // "OPERATOR_PM_FROM_FILE" + case 224: // "OPERATOR_RBL" + case 225: // "OPERATOR_RSUB" + case 226: // "OPERATOR_RX" + case 227: // "Operator Rx" + case 228: // "OPERATOR_STR_EQ" + case 229: // "OPERATOR_STR_MATCH" + case 230: // "OPERATOR_UNCONDITIONAL_MATCH" + case 231: // "OPERATOR_VALIDATE_BYTE_RANGE" + case 232: // "OPERATOR_VALIDATE_DTD" + case 233: // "OPERATOR_VALIDATE_HASH" + case 234: // "OPERATOR_VALIDATE_SCHEMA" + case 235: // "OPERATOR_VALIDATE_URL_ENCODING" + case 236: // "OPERATOR_VALIDATE_UTF8_ENCODING" + case 237: // "OPERATOR_VERIFY_CC" + case 238: // "OPERATOR_VERIFY_CPF" + case 239: // "OPERATOR_VERIFY_SSN" + case 240: // "OPERATOR_WITHIN" + case 241: // "OP_QUOTE" + case 242: // "QUOTATION_MARK" + case 243: // "RUN_TIME_VAR_BLD" + case 244: // "RUN_TIME_VAR_DUR" + case 245: // "RUN_TIME_VAR_ENV" + case 246: // "RUN_TIME_VAR_HSV" + case 247: // "RUN_TIME_VAR_REMOTE_USER" + case 248: // "RUN_TIME_VAR_RULE" + case 249: // "RUN_TIME_VAR_TIME" + case 250: // "RUN_TIME_VAR_TIME_DAY" + case 251: // "RUN_TIME_VAR_TIME_EPOCH" + case 252: // "RUN_TIME_VAR_TIME_HOUR" + case 253: // "RUN_TIME_VAR_TIME_MIN" + case 254: // "RUN_TIME_VAR_TIME_MON" + case 255: // "RUN_TIME_VAR_TIME_SEC" + case 256: // "RUN_TIME_VAR_TIME_WDAY" + case 257: // "RUN_TIME_VAR_TIME_YEAR" + case 258: // "RUN_TIME_VAR_XML" + case 259: // "VARIABLE" + case 260: // "VARIABLE_COL" + case 261: // "VARIABLE_STATUS" + case 262: // "VARIABLE_TX" yylhs.value.build< std::string > (); break; - case 212: // op - case 213: // op_before_init + case 269: // op + case 270: // op_before_init yylhs.value.build< std::unique_ptr > (); break; - case 216: // var + case 273: // var yylhs.value.build< std::unique_ptr > (); break; - case 217: // act + case 274: // act yylhs.value.build< std::unique_ptr > (); break; - case 215: // variables + case 272: // variables yylhs.value.build< std::unique_ptr > > > (); break; - case 210: // actions - case 211: // actions_may_quoted + case 267: // actions + case 268: // actions_may_quoted yylhs.value.build< std::unique_ptr > > > (); break; @@ -1193,218 +1190,218 @@ namespace yy { switch (yyn) { case 2: -#line 490 "seclang-parser.yy" // lalr1.cc:859 +#line 604 "seclang-parser.yy" // lalr1.cc:859 { return 0; } -#line 1201 "seclang-parser.cc" // lalr1.cc:859 +#line 1198 "seclang-parser.cc" // lalr1.cc:859 break; case 6: -#line 503 "seclang-parser.yy" // lalr1.cc:859 +#line 617 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setStorageDirMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8)); } -#line 1209 "seclang-parser.cc" // lalr1.cc:859 +#line 1206 "seclang-parser.cc" // lalr1.cc:859 break; case 7: -#line 509 "seclang-parser.yy" // lalr1.cc:859 +#line 623 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setStorageDir(yystack_[0].value.as< std::string > ()); } -#line 1217 "seclang-parser.cc" // lalr1.cc:859 +#line 1214 "seclang-parser.cc" // lalr1.cc:859 break; case 8: -#line 515 "seclang-parser.yy" // lalr1.cc:859 +#line 629 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::RelevantOnlyAuditLogStatus); } -#line 1225 "seclang-parser.cc" // lalr1.cc:859 +#line 1222 "seclang-parser.cc" // lalr1.cc:859 break; case 9: -#line 519 "seclang-parser.yy" // lalr1.cc:859 +#line 633 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OffAuditLogStatus); } -#line 1233 "seclang-parser.cc" // lalr1.cc:859 +#line 1230 "seclang-parser.cc" // lalr1.cc:859 break; case 10: -#line 523 "seclang-parser.yy" // lalr1.cc:859 +#line 637 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OnAuditLogStatus); } -#line 1241 "seclang-parser.cc" // lalr1.cc:859 +#line 1238 "seclang-parser.cc" // lalr1.cc:859 break; case 11: -#line 529 "seclang-parser.yy" // lalr1.cc:859 +#line 643 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setFileMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8)); } -#line 1249 "seclang-parser.cc" // lalr1.cc:859 +#line 1246 "seclang-parser.cc" // lalr1.cc:859 break; case 12: -#line 535 "seclang-parser.yy" // lalr1.cc:859 +#line 649 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setFilePath2(yystack_[0].value.as< std::string > ()); } -#line 1257 "seclang-parser.cc" // lalr1.cc:859 +#line 1254 "seclang-parser.cc" // lalr1.cc:859 break; case 13: -#line 541 "seclang-parser.yy" // lalr1.cc:859 +#line 655 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setParts(yystack_[0].value.as< std::string > ()); } -#line 1265 "seclang-parser.cc" // lalr1.cc:859 +#line 1262 "seclang-parser.cc" // lalr1.cc:859 break; case 14: -#line 547 "seclang-parser.yy" // lalr1.cc:859 +#line 661 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setFilePath1(yystack_[0].value.as< std::string > ()); } -#line 1273 "seclang-parser.cc" // lalr1.cc:859 +#line 1270 "seclang-parser.cc" // lalr1.cc:859 break; case 15: -#line 553 "seclang-parser.yy" // lalr1.cc:859 +#line 667 "seclang-parser.yy" // lalr1.cc:859 { std::string relevant_status(yystack_[0].value.as< std::string > ()); relevant_status.pop_back(); relevant_status.erase(0, 1); driver.m_auditLog->setRelevantStatus(relevant_status); } -#line 1284 "seclang-parser.cc" // lalr1.cc:859 +#line 1281 "seclang-parser.cc" // lalr1.cc:859 break; case 16: -#line 562 "seclang-parser.yy" // lalr1.cc:859 +#line 676 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::SerialAuditLogType); } -#line 1292 "seclang-parser.cc" // lalr1.cc:859 +#line 1289 "seclang-parser.cc" // lalr1.cc:859 break; case 17: -#line 566 "seclang-parser.yy" // lalr1.cc:859 +#line 680 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::ParallelAuditLogType); } -#line 1300 "seclang-parser.cc" // lalr1.cc:859 +#line 1297 "seclang-parser.cc" // lalr1.cc:859 break; case 18: -#line 570 "seclang-parser.yy" // lalr1.cc:859 +#line 684 "seclang-parser.yy" // lalr1.cc:859 { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::HttpsAuditLogType); } -#line 1308 "seclang-parser.cc" // lalr1.cc:859 +#line 1305 "seclang-parser.cc" // lalr1.cc:859 break; case 19: -#line 576 "seclang-parser.yy" // lalr1.cc:859 +#line 690 "seclang-parser.yy" // lalr1.cc:859 { driver.m_uploadKeepFiles = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 1316 "seclang-parser.cc" // lalr1.cc:859 +#line 1313 "seclang-parser.cc" // lalr1.cc:859 break; case 20: -#line 580 "seclang-parser.yy" // lalr1.cc:859 +#line 694 "seclang-parser.yy" // lalr1.cc:859 { driver.m_uploadKeepFiles = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 1324 "seclang-parser.cc" // lalr1.cc:859 +#line 1321 "seclang-parser.cc" // lalr1.cc:859 break; case 21: -#line 584 "seclang-parser.yy" // lalr1.cc:859 +#line 698 "seclang-parser.yy" // lalr1.cc:859 { driver.m_uploadFileLimit.m_set = true; driver.m_uploadFileLimit.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 10); } -#line 1333 "seclang-parser.cc" // lalr1.cc:859 +#line 1330 "seclang-parser.cc" // lalr1.cc:859 break; case 22: -#line 589 "seclang-parser.yy" // lalr1.cc:859 +#line 703 "seclang-parser.yy" // lalr1.cc:859 { driver.m_uploadFileMode.m_set = true; driver.m_uploadFileMode.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8); } -#line 1342 "seclang-parser.cc" // lalr1.cc:859 +#line 1339 "seclang-parser.cc" // lalr1.cc:859 break; case 23: -#line 594 "seclang-parser.yy" // lalr1.cc:859 +#line 708 "seclang-parser.yy" // lalr1.cc:859 { driver.m_uploadDirectory.m_set = true; driver.m_uploadDirectory.m_value = yystack_[0].value.as< std::string > (); } -#line 1351 "seclang-parser.cc" // lalr1.cc:859 +#line 1348 "seclang-parser.cc" // lalr1.cc:859 break; case 24: -#line 599 "seclang-parser.yy" // lalr1.cc:859 +#line 713 "seclang-parser.yy" // lalr1.cc:859 { driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 1359 "seclang-parser.cc" // lalr1.cc:859 +#line 1356 "seclang-parser.cc" // lalr1.cc:859 break; case 25: -#line 603 "seclang-parser.yy" // lalr1.cc:859 +#line 717 "seclang-parser.yy" // lalr1.cc:859 { driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 1367 "seclang-parser.cc" // lalr1.cc:859 +#line 1364 "seclang-parser.cc" // lalr1.cc:859 break; case 26: -#line 610 "seclang-parser.yy" // lalr1.cc:859 +#line 724 "seclang-parser.yy" // lalr1.cc:859 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ()); } -#line 1375 "seclang-parser.cc" // lalr1.cc:859 +#line 1372 "seclang-parser.cc" // lalr1.cc:859 break; case 27: -#line 614 "seclang-parser.yy" // lalr1.cc:859 +#line 728 "seclang-parser.yy" // lalr1.cc:859 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); } -#line 1383 "seclang-parser.cc" // lalr1.cc:859 +#line 1380 "seclang-parser.cc" // lalr1.cc:859 break; case 28: -#line 621 "seclang-parser.yy" // lalr1.cc:859 +#line 735 "seclang-parser.yy" // lalr1.cc:859 { 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 1393 "seclang-parser.cc" // lalr1.cc:859 +#line 1390 "seclang-parser.cc" // lalr1.cc:859 break; case 29: -#line 627 "seclang-parser.yy" // lalr1.cc:859 +#line 741 "seclang-parser.yy" // lalr1.cc:859 { 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 1404 "seclang-parser.cc" // lalr1.cc:859 +#line 1401 "seclang-parser.cc" // lalr1.cc:859 break; case 30: -#line 637 "seclang-parser.yy" // lalr1.cc:859 +#line 751 "seclang-parser.yy" // lalr1.cc:859 { yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); std::string error; @@ -1413,11 +1410,11 @@ namespace yy { YYERROR; } } -#line 1417 "seclang-parser.cc" // lalr1.cc:859 +#line 1414 "seclang-parser.cc" // lalr1.cc:859 break; case 31: -#line 646 "seclang-parser.yy" // lalr1.cc:859 +#line 760 "seclang-parser.yy" // lalr1.cc:859 { yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); yylhs.value.as< std::unique_ptr > ()->m_negation = true; @@ -1427,11 +1424,11 @@ namespace yy { YYERROR; } } -#line 1431 "seclang-parser.cc" // lalr1.cc:859 +#line 1428 "seclang-parser.cc" // lalr1.cc:859 break; case 32: -#line 656 "seclang-parser.yy" // lalr1.cc:859 +#line 770 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ()))); std::string error; @@ -1440,11 +1437,11 @@ namespace yy { YYERROR; } } -#line 1444 "seclang-parser.cc" // lalr1.cc:859 +#line 1441 "seclang-parser.cc" // lalr1.cc:859 break; case 33: -#line 665 "seclang-parser.yy" // lalr1.cc:859 +#line 779 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx("!" + utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ()))); std::string error; @@ -1453,290 +1450,290 @@ namespace yy { YYERROR; } } -#line 1457 "seclang-parser.cc" // lalr1.cc:859 +#line 1454 "seclang-parser.cc" // lalr1.cc:859 break; case 34: -#line 677 "seclang-parser.yy" // lalr1.cc:859 +#line 791 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::UnconditionalMatch()); } -#line 1465 "seclang-parser.cc" // lalr1.cc:859 +#line 1462 "seclang-parser.cc" // lalr1.cc:859 break; case 35: -#line 681 "seclang-parser.yy" // lalr1.cc:859 +#line 795 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectSQLi()); } -#line 1473 "seclang-parser.cc" // lalr1.cc:859 +#line 1470 "seclang-parser.cc" // lalr1.cc:859 break; case 36: -#line 685 "seclang-parser.yy" // lalr1.cc:859 +#line 799 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectXSS()); } -#line 1481 "seclang-parser.cc" // lalr1.cc:859 +#line 1478 "seclang-parser.cc" // lalr1.cc:859 break; case 37: -#line 689 "seclang-parser.yy" // lalr1.cc:859 +#line 803 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUrlEncoding()); } -#line 1489 "seclang-parser.cc" // lalr1.cc:859 +#line 1486 "seclang-parser.cc" // lalr1.cc:859 break; case 38: -#line 693 "seclang-parser.yy" // lalr1.cc:859 +#line 807 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUtf8Encoding()); } -#line 1497 "seclang-parser.cc" // lalr1.cc:859 +#line 1494 "seclang-parser.cc" // lalr1.cc:859 break; case 39: -#line 697 "seclang-parser.yy" // lalr1.cc:859 +#line 811 "seclang-parser.yy" // lalr1.cc:859 { /* $$ = new operators::InspectFile($1); */ OPERATOR_NOT_SUPPORTED("InspectFile", yystack_[2].location); } -#line 1506 "seclang-parser.cc" // lalr1.cc:859 +#line 1503 "seclang-parser.cc" // lalr1.cc:859 break; case 40: -#line 702 "seclang-parser.yy" // lalr1.cc:859 +#line 816 "seclang-parser.yy" // lalr1.cc:859 { /* $$ = new operators::FuzzyHash(); */ OPERATOR_NOT_SUPPORTED("FuzzyHash", yystack_[2].location); } -#line 1515 "seclang-parser.cc" // lalr1.cc:859 +#line 1512 "seclang-parser.cc" // lalr1.cc:859 break; case 41: -#line 707 "seclang-parser.yy" // lalr1.cc:859 +#line 821 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateByteRange(yystack_[0].value.as< std::string > ())); } -#line 1523 "seclang-parser.cc" // lalr1.cc:859 +#line 1520 "seclang-parser.cc" // lalr1.cc:859 break; case 42: -#line 711 "seclang-parser.yy" // lalr1.cc:859 +#line 825 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateDTD(yystack_[0].value.as< std::string > ())); } -#line 1531 "seclang-parser.cc" // lalr1.cc:859 +#line 1528 "seclang-parser.cc" // lalr1.cc:859 break; case 43: -#line 715 "seclang-parser.yy" // lalr1.cc:859 +#line 829 "seclang-parser.yy" // lalr1.cc:859 { /* $$ = new operators::ValidateHash($1); */ OPERATOR_NOT_SUPPORTED("ValidateHash", yystack_[2].location); } -#line 1540 "seclang-parser.cc" // lalr1.cc:859 +#line 1537 "seclang-parser.cc" // lalr1.cc:859 break; case 44: -#line 720 "seclang-parser.yy" // lalr1.cc:859 +#line 834 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateSchema(yystack_[0].value.as< std::string > ())); } -#line 1548 "seclang-parser.cc" // lalr1.cc:859 +#line 1545 "seclang-parser.cc" // lalr1.cc:859 break; case 45: -#line 724 "seclang-parser.yy" // lalr1.cc:859 +#line 838 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCC(yystack_[0].value.as< std::string > ())); } -#line 1556 "seclang-parser.cc" // lalr1.cc:859 +#line 1553 "seclang-parser.cc" // lalr1.cc:859 break; case 46: -#line 728 "seclang-parser.yy" // lalr1.cc:859 +#line 842 "seclang-parser.yy" // lalr1.cc:859 { /* $$ = new operators::VerifyCPF($1); */ OPERATOR_NOT_SUPPORTED("VerifyCPF", yystack_[2].location); } -#line 1565 "seclang-parser.cc" // lalr1.cc:859 +#line 1562 "seclang-parser.cc" // lalr1.cc:859 break; case 47: -#line 733 "seclang-parser.yy" // lalr1.cc:859 +#line 847 "seclang-parser.yy" // lalr1.cc:859 { /* $$ = new operators::VerifySSN($1); */ OPERATOR_NOT_SUPPORTED("VerifySSN", yystack_[2].location); } -#line 1574 "seclang-parser.cc" // lalr1.cc:859 +#line 1571 "seclang-parser.cc" // lalr1.cc:859 break; case 48: -#line 738 "seclang-parser.yy" // lalr1.cc:859 +#line 852 "seclang-parser.yy" // lalr1.cc:859 { /* $$ = new operators::GsbLookup($1); */ OPERATOR_NOT_SUPPORTED("GsbLookup", yystack_[2].location); } -#line 1583 "seclang-parser.cc" // lalr1.cc:859 +#line 1580 "seclang-parser.cc" // lalr1.cc:859 break; case 49: -#line 743 "seclang-parser.yy" // lalr1.cc:859 +#line 857 "seclang-parser.yy" // lalr1.cc:859 { /* $$ = new operators::Rsub($1); */ OPERATOR_NOT_SUPPORTED("Rsub", yystack_[2].location); } -#line 1592 "seclang-parser.cc" // lalr1.cc:859 +#line 1589 "seclang-parser.cc" // lalr1.cc:859 break; case 50: -#line 748 "seclang-parser.yy" // lalr1.cc:859 +#line 862 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Within(yystack_[0].value.as< std::string > ())); } -#line 1600 "seclang-parser.cc" // lalr1.cc:859 +#line 1597 "seclang-parser.cc" // lalr1.cc:859 break; case 51: -#line 752 "seclang-parser.yy" // lalr1.cc:859 +#line 866 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ContainsWord(yystack_[0].value.as< std::string > ())); } -#line 1608 "seclang-parser.cc" // lalr1.cc:859 +#line 1605 "seclang-parser.cc" // lalr1.cc:859 break; case 52: -#line 756 "seclang-parser.yy" // lalr1.cc:859 +#line 870 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Contains(yystack_[0].value.as< std::string > ())); } -#line 1616 "seclang-parser.cc" // lalr1.cc:859 +#line 1613 "seclang-parser.cc" // lalr1.cc:859 break; case 53: -#line 760 "seclang-parser.yy" // lalr1.cc:859 +#line 874 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::EndsWith(yystack_[0].value.as< std::string > ())); } -#line 1624 "seclang-parser.cc" // lalr1.cc:859 +#line 1621 "seclang-parser.cc" // lalr1.cc:859 break; case 54: -#line 764 "seclang-parser.yy" // lalr1.cc:859 +#line 878 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Eq(yystack_[0].value.as< std::string > ())); } -#line 1632 "seclang-parser.cc" // lalr1.cc:859 +#line 1629 "seclang-parser.cc" // lalr1.cc:859 break; case 55: -#line 768 "seclang-parser.yy" // lalr1.cc:859 +#line 882 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Ge(yystack_[0].value.as< std::string > ())); } -#line 1640 "seclang-parser.cc" // lalr1.cc:859 +#line 1637 "seclang-parser.cc" // lalr1.cc:859 break; case 56: -#line 772 "seclang-parser.yy" // lalr1.cc:859 +#line 886 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Gt(yystack_[0].value.as< std::string > ())); } -#line 1648 "seclang-parser.cc" // lalr1.cc:859 +#line 1645 "seclang-parser.cc" // lalr1.cc:859 break; case 57: -#line 776 "seclang-parser.yy" // lalr1.cc:859 +#line 890 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatchF(yystack_[0].value.as< std::string > ())); } -#line 1656 "seclang-parser.cc" // lalr1.cc:859 +#line 1653 "seclang-parser.cc" // lalr1.cc:859 break; case 58: -#line 780 "seclang-parser.yy" // lalr1.cc:859 +#line 894 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatch(yystack_[0].value.as< std::string > ())); } -#line 1664 "seclang-parser.cc" // lalr1.cc:859 +#line 1661 "seclang-parser.cc" // lalr1.cc:859 break; case 59: -#line 784 "seclang-parser.yy" // lalr1.cc:859 +#line 898 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Le(yystack_[0].value.as< std::string > ())); } -#line 1672 "seclang-parser.cc" // lalr1.cc:859 +#line 1669 "seclang-parser.cc" // lalr1.cc:859 break; case 60: -#line 788 "seclang-parser.yy" // lalr1.cc:859 +#line 902 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Lt(yystack_[0].value.as< std::string > ())); } -#line 1680 "seclang-parser.cc" // lalr1.cc:859 +#line 1677 "seclang-parser.cc" // lalr1.cc:859 break; case 61: -#line 792 "seclang-parser.yy" // lalr1.cc:859 +#line 906 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::PmFromFile(yystack_[0].value.as< std::string > ())); } -#line 1688 "seclang-parser.cc" // lalr1.cc:859 +#line 1685 "seclang-parser.cc" // lalr1.cc:859 break; case 62: -#line 796 "seclang-parser.yy" // lalr1.cc:859 +#line 910 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Pm(yystack_[0].value.as< std::string > ())); } -#line 1696 "seclang-parser.cc" // lalr1.cc:859 +#line 1693 "seclang-parser.cc" // lalr1.cc:859 break; case 63: -#line 800 "seclang-parser.yy" // lalr1.cc:859 +#line 914 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rbl(yystack_[0].value.as< std::string > ())); } -#line 1704 "seclang-parser.cc" // lalr1.cc:859 +#line 1701 "seclang-parser.cc" // lalr1.cc:859 break; case 64: -#line 804 "seclang-parser.yy" // lalr1.cc:859 +#line 918 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(yystack_[0].value.as< std::string > ())); } -#line 1712 "seclang-parser.cc" // lalr1.cc:859 +#line 1709 "seclang-parser.cc" // lalr1.cc:859 break; case 65: -#line 808 "seclang-parser.yy" // lalr1.cc:859 +#line 922 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrEq(yystack_[0].value.as< std::string > ())); } -#line 1720 "seclang-parser.cc" // lalr1.cc:859 +#line 1717 "seclang-parser.cc" // lalr1.cc:859 break; case 66: -#line 812 "seclang-parser.yy" // lalr1.cc:859 +#line 926 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrMatch(yystack_[0].value.as< std::string > ())); } -#line 1728 "seclang-parser.cc" // lalr1.cc:859 +#line 1725 "seclang-parser.cc" // lalr1.cc:859 break; case 67: -#line 816 "seclang-parser.yy" // lalr1.cc:859 +#line 930 "seclang-parser.yy" // lalr1.cc:859 { OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::BeginsWith(yystack_[0].value.as< std::string > ())); } -#line 1736 "seclang-parser.cc" // lalr1.cc:859 +#line 1733 "seclang-parser.cc" // lalr1.cc:859 break; case 68: -#line 820 "seclang-parser.yy" // lalr1.cc:859 +#line 934 "seclang-parser.yy" // lalr1.cc:859 { #ifdef WITH_GEOIP OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::GeoLookup()); @@ -1747,11 +1744,11 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 1751 "seclang-parser.cc" // lalr1.cc:859 +#line 1748 "seclang-parser.cc" // lalr1.cc:859 break; case 70: -#line 835 "seclang-parser.yy" // lalr1.cc:859 +#line 949 "seclang-parser.yy" // lalr1.cc:859 { std::vector *a = new std::vector(); for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { @@ -1775,11 +1772,11 @@ namespace yy { YYERROR; } } -#line 1779 "seclang-parser.cc" // lalr1.cc:859 +#line 1776 "seclang-parser.cc" // lalr1.cc:859 break; case 71: -#line 859 "seclang-parser.yy" // lalr1.cc:859 +#line 973 "seclang-parser.yy" // lalr1.cc:859 { std::vector *v = new std::vector(); for (auto &i : *yystack_[1].value.as< std::unique_ptr > > > ().get()) { @@ -1798,11 +1795,11 @@ namespace yy { YYERROR; } } -#line 1802 "seclang-parser.cc" // lalr1.cc:859 +#line 1799 "seclang-parser.cc" // lalr1.cc:859 break; case 72: -#line 878 "seclang-parser.yy" // lalr1.cc:859 +#line 992 "seclang-parser.yy" // lalr1.cc:859 { std::vector *a = new std::vector(); for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { @@ -1817,11 +1814,11 @@ namespace yy { ); driver.addSecAction(rule); } -#line 1821 "seclang-parser.cc" // lalr1.cc:859 +#line 1818 "seclang-parser.cc" // lalr1.cc:859 break; case 73: -#line 893 "seclang-parser.yy" // lalr1.cc:859 +#line 1007 "seclang-parser.yy" // lalr1.cc:859 { /* @@ -1829,11 +1826,11 @@ namespace yy { */ } -#line 1833 "seclang-parser.cc" // lalr1.cc:859 +#line 1830 "seclang-parser.cc" // lalr1.cc:859 break; case 74: -#line 901 "seclang-parser.yy" // lalr1.cc:859 +#line 1015 "seclang-parser.yy" // lalr1.cc:859 { std::vector *actions = new std::vector(); for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { @@ -1880,83 +1877,83 @@ namespace yy { delete actions; } -#line 1884 "seclang-parser.cc" // lalr1.cc:859 +#line 1881 "seclang-parser.cc" // lalr1.cc:859 break; case 75: -#line 948 "seclang-parser.yy" // lalr1.cc:859 +#line 1062 "seclang-parser.yy" // lalr1.cc:859 { driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ())); } -#line 1892 "seclang-parser.cc" // lalr1.cc:859 +#line 1889 "seclang-parser.cc" // lalr1.cc:859 break; case 76: -#line 952 "seclang-parser.yy" // lalr1.cc:859 +#line 1066 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secRuleEngine = modsecurity::Rules::DisabledRuleEngine; } -#line 1900 "seclang-parser.cc" // lalr1.cc:859 +#line 1897 "seclang-parser.cc" // lalr1.cc:859 break; case 77: -#line 956 "seclang-parser.yy" // lalr1.cc:859 +#line 1070 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secRuleEngine = modsecurity::Rules::EnabledRuleEngine; } -#line 1908 "seclang-parser.cc" // lalr1.cc:859 +#line 1905 "seclang-parser.cc" // lalr1.cc:859 break; case 78: -#line 960 "seclang-parser.yy" // lalr1.cc:859 +#line 1074 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secRuleEngine = modsecurity::Rules::DetectionOnlyRuleEngine; } -#line 1916 "seclang-parser.cc" // lalr1.cc:859 +#line 1913 "seclang-parser.cc" // lalr1.cc:859 break; case 79: -#line 964 "seclang-parser.yy" // lalr1.cc:859 +#line 1078 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secRequestBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 1924 "seclang-parser.cc" // lalr1.cc:859 +#line 1921 "seclang-parser.cc" // lalr1.cc:859 break; case 80: -#line 968 "seclang-parser.yy" // lalr1.cc:859 +#line 1082 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secRequestBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 1932 "seclang-parser.cc" // lalr1.cc:859 +#line 1929 "seclang-parser.cc" // lalr1.cc:859 break; case 81: -#line 972 "seclang-parser.yy" // lalr1.cc:859 +#line 1086 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secResponseBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 1940 "seclang-parser.cc" // lalr1.cc:859 +#line 1937 "seclang-parser.cc" // lalr1.cc:859 break; case 82: -#line 976 "seclang-parser.yy" // lalr1.cc:859 +#line 1090 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secResponseBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 1948 "seclang-parser.cc" // lalr1.cc:859 +#line 1945 "seclang-parser.cc" // lalr1.cc:859 break; case 83: -#line 980 "seclang-parser.yy" // lalr1.cc:859 +#line 1094 "seclang-parser.yy" // lalr1.cc:859 { driver.m_components.push_back(yystack_[0].value.as< std::string > ()); } -#line 1956 "seclang-parser.cc" // lalr1.cc:859 +#line 1953 "seclang-parser.cc" // lalr1.cc:859 break; case 84: -#line 984 "seclang-parser.yy" // lalr1.cc:859 +#line 1098 "seclang-parser.yy" // lalr1.cc:859 { std::string error; if (driver.m_exceptions.load(yystack_[0].value.as< std::string > (), &error) == false) { @@ -1969,11 +1966,11 @@ namespace yy { YYERROR; } } -#line 1973 "seclang-parser.cc" // lalr1.cc:859 +#line 1970 "seclang-parser.cc" // lalr1.cc:859 break; case 85: -#line 998 "seclang-parser.yy" // lalr1.cc:859 +#line 1112 "seclang-parser.yy" // lalr1.cc:859 { if (driver.m_debugLog != NULL) { driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as< std::string > ().c_str())); @@ -1985,11 +1982,11 @@ namespace yy { YYERROR; } } -#line 1989 "seclang-parser.cc" // lalr1.cc:859 +#line 1986 "seclang-parser.cc" // lalr1.cc:859 break; case 86: -#line 1010 "seclang-parser.yy" // lalr1.cc:859 +#line 1124 "seclang-parser.yy" // lalr1.cc:859 { if (driver.m_debugLog != NULL) { std::string error; @@ -2008,11 +2005,11 @@ namespace yy { YYERROR; } } -#line 2012 "seclang-parser.cc" // lalr1.cc:859 +#line 2009 "seclang-parser.cc" // lalr1.cc:859 break; case 87: -#line 1030 "seclang-parser.yy" // lalr1.cc:859 +#line 1144 "seclang-parser.yy" // lalr1.cc:859 { #ifdef WITH_GEOIP std::string file = modsecurity::utils::find_resource(yystack_[0].value.as< std::string > (), @@ -2031,95 +2028,95 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 2035 "seclang-parser.cc" // lalr1.cc:859 +#line 2032 "seclang-parser.cc" // lalr1.cc:859 break; case 88: -#line 1050 "seclang-parser.yy" // lalr1.cc:859 +#line 1164 "seclang-parser.yy" // lalr1.cc:859 { driver.m_requestBodyLimit.m_set = true; driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2044 "seclang-parser.cc" // lalr1.cc:859 +#line 2041 "seclang-parser.cc" // lalr1.cc:859 break; case 89: -#line 1055 "seclang-parser.yy" // lalr1.cc:859 +#line 1169 "seclang-parser.yy" // lalr1.cc:859 { driver.m_requestBodyNoFilesLimit.m_set = true; driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2053 "seclang-parser.cc" // lalr1.cc:859 +#line 2050 "seclang-parser.cc" // lalr1.cc:859 break; case 90: -#line 1060 "seclang-parser.yy" // lalr1.cc:859 +#line 1174 "seclang-parser.yy" // lalr1.cc:859 { driver.m_requestBodyInMemoryLimit.m_set = true; driver.m_requestBodyInMemoryLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2062 "seclang-parser.cc" // lalr1.cc:859 +#line 2059 "seclang-parser.cc" // lalr1.cc:859 break; case 91: -#line 1065 "seclang-parser.yy" // lalr1.cc:859 +#line 1179 "seclang-parser.yy" // lalr1.cc:859 { driver.m_responseBodyLimit.m_set = true; driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2071 "seclang-parser.cc" // lalr1.cc:859 +#line 2068 "seclang-parser.cc" // lalr1.cc:859 break; case 92: -#line 1070 "seclang-parser.yy" // lalr1.cc:859 +#line 1184 "seclang-parser.yy" // lalr1.cc:859 { driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 2079 "seclang-parser.cc" // lalr1.cc:859 +#line 2076 "seclang-parser.cc" // lalr1.cc:859 break; case 93: -#line 1074 "seclang-parser.yy" // lalr1.cc:859 +#line 1188 "seclang-parser.yy" // lalr1.cc:859 { driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; } -#line 2087 "seclang-parser.cc" // lalr1.cc:859 +#line 2084 "seclang-parser.cc" // lalr1.cc:859 break; case 94: -#line 1078 "seclang-parser.yy" // lalr1.cc:859 +#line 1192 "seclang-parser.yy" // lalr1.cc:859 { driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 2095 "seclang-parser.cc" // lalr1.cc:859 +#line 2092 "seclang-parser.cc" // lalr1.cc:859 break; case 95: -#line 1082 "seclang-parser.yy" // lalr1.cc:859 +#line 1196 "seclang-parser.yy" // lalr1.cc:859 { driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; } -#line 2103 "seclang-parser.cc" // lalr1.cc:859 +#line 2100 "seclang-parser.cc" // lalr1.cc:859 break; case 96: -#line 1086 "seclang-parser.yy" // lalr1.cc:859 +#line 1200 "seclang-parser.yy" // lalr1.cc:859 { driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction; } -#line 2111 "seclang-parser.cc" // lalr1.cc:859 +#line 2108 "seclang-parser.cc" // lalr1.cc:859 break; case 97: -#line 1090 "seclang-parser.yy" // lalr1.cc:859 +#line 1204 "seclang-parser.yy" // lalr1.cc:859 { driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction; } -#line 2119 "seclang-parser.cc" // lalr1.cc:859 +#line 2116 "seclang-parser.cc" // lalr1.cc:859 break; case 100: -#line 1096 "seclang-parser.yy" // lalr1.cc:859 +#line 1210 "seclang-parser.yy" // lalr1.cc:859 { std::istringstream buf(yystack_[0].value.as< std::string > ()); std::istream_iterator beg(buf), end; @@ -2130,104 +2127,569 @@ namespace yy { driver.m_responseBodyTypeToBeInspected.insert(*it); } } -#line 2134 "seclang-parser.cc" // lalr1.cc:859 +#line 2131 "seclang-parser.cc" // lalr1.cc:859 break; case 101: -#line 1107 "seclang-parser.yy" // lalr1.cc:859 +#line 1221 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secXMLExternalEntity = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 2142 "seclang-parser.cc" // lalr1.cc:859 +#line 2139 "seclang-parser.cc" // lalr1.cc:859 break; case 102: -#line 1111 "seclang-parser.yy" // lalr1.cc:859 +#line 1225 "seclang-parser.yy" // lalr1.cc:859 { driver.m_secXMLExternalEntity = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 2150 "seclang-parser.cc" // lalr1.cc:859 +#line 2147 "seclang-parser.cc" // lalr1.cc:859 break; case 109: -#line 1121 "seclang-parser.yy" // lalr1.cc:859 +#line 1235 "seclang-parser.yy" // lalr1.cc:859 { } -#line 2157 "seclang-parser.cc" // lalr1.cc:859 +#line 2154 "seclang-parser.cc" // lalr1.cc:859 break; case 110: -#line 1127 "seclang-parser.yy" // lalr1.cc:859 +#line 1241 "seclang-parser.yy" // lalr1.cc:859 { 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 2166 "seclang-parser.cc" // lalr1.cc:859 +#line 2163 "seclang-parser.cc" // lalr1.cc:859 break; case 111: -#line 1132 "seclang-parser.yy" // lalr1.cc:859 +#line 1246 "seclang-parser.yy" // lalr1.cc:859 { 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 2176 "seclang-parser.cc" // lalr1.cc:859 +#line 2173 "seclang-parser.cc" // lalr1.cc:859 break; case 112: -#line 1141 "seclang-parser.yy" // lalr1.cc:859 +#line 1255 "seclang-parser.yy" // lalr1.cc:859 { std::unique_ptr c(new Variables::ArgsNames()); yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 2185 "seclang-parser.cc" // lalr1.cc:859 +#line 2182 "seclang-parser.cc" // lalr1.cc:859 break; case 113: -#line 1146 "seclang-parser.yy" // lalr1.cc:859 +#line 1260 "seclang-parser.yy" // lalr1.cc:859 { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - if (z == '&') { - name.erase(0, 1); - std::unique_ptr c(new Count(new Variable(name, Variable::VariableKind::DirectVariable))); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } else if (z == '!') { - name.erase(0, 1); - std::unique_ptr c(new Exclusion(new Variable(name, Variable::VariableKind::DirectVariable))); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } else { - std::unique_ptr c(new Variable(name, Variable::VariableKind::DirectVariable)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } + std::unique_ptr c(new Variables::ArgsGetNames()); + yylhs.value.as< std::unique_ptr > () = std::move(c); } -#line 2206 "seclang-parser.cc" // lalr1.cc:859 +#line 2191 "seclang-parser.cc" // lalr1.cc:859 break; case 114: -#line 1163 "seclang-parser.yy" // lalr1.cc:859 +#line 1265 "seclang-parser.yy" // lalr1.cc:859 { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - if (z == '&') { - name.erase(0, 1); - std::unique_ptr c(new Count(new Variable(name, Variable::VariableKind::DirectVariable))); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } else if (z == '!') { - name.erase(0, 1); - std::unique_ptr c(new Exclusion(new Variable(name, Variable::VariableKind::DirectVariable))); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } else { - std::unique_ptr c(new Variable(name, Variable::VariableKind::DirectVariable)); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } + std::unique_ptr c(new Variables::ArgsPostNames()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2200 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 115: +#line 1270 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestHeadersNames()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2209 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 116: +#line 1275 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ResponseContentType()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2218 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 117: +#line 1280 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ResponseHeadersNames()); + yylhs.value.as< std::unique_ptr > () = std::move(c); } #line 2227 "seclang-parser.cc" // lalr1.cc:859 break; - case 115: -#line 1180 "seclang-parser.yy" // lalr1.cc:859 + case 118: +#line 1285 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ArgsCombinedSize()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2236 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 119: +#line 1290 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::AuthType()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2245 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 120: +#line 1295 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::FilesCombinedSize()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2254 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 121: +#line 1300 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::FilesTmpNames()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2263 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 122: +#line 1305 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::FullRequest()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2272 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 123: +#line 1310 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::FullRequestLength()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2281 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 124: +#line 1315 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::InboundDataError()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2290 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 125: +#line 1320 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MatchedVar()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2299 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 126: +#line 1325 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MatchedVarName()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2308 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 127: +#line 1330 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartCrlfLFLines()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2317 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 128: +#line 1335 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartDateAfter()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2326 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 129: +#line 1340 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartFileLimitExceeded()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2335 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 130: +#line 1345 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartHeaderFolding()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2344 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 131: +#line 1350 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartInvalidHeaderFolding()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2353 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 132: +#line 1355 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartInvalidQuoting()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2362 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 133: +#line 1360 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartStrictError()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2371 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 134: +#line 1365 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::MultipartUnmatchedBoundary()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2380 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 135: +#line 1370 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::OutboundDataError()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2389 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 136: +#line 1375 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::PathInfo()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2398 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 137: +#line 1380 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::QueryString()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2407 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 138: +#line 1385 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RemoteAddr()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2416 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 139: +#line 1390 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RemoteHost()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2425 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 140: +#line 1395 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RemotePort()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2434 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 141: +#line 1400 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ReqbodyError()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2443 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 142: +#line 1405 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ReqbodyErrorMsg()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2452 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 143: +#line 1410 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ReqbodyProcessor()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2461 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 144: +#line 1415 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ReqbodyProcessorError()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2470 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 145: +#line 1420 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ReqbodyProcessorErrorMsg()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2479 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 146: +#line 1425 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestBasename()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2488 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 147: +#line 1430 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestBody()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2497 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 148: +#line 1435 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestBodyLength()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2506 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 149: +#line 1440 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestFilename()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2515 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 150: +#line 1445 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestLine()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2524 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 151: +#line 1450 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestMethod()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2533 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 152: +#line 1455 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestProtocol()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2542 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 153: +#line 1460 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestURI()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2551 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 154: +#line 1465 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::RequestURIRaw()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2560 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 155: +#line 1470 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::Resource()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2569 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 156: +#line 1475 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ResponseBody()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2578 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 157: +#line 1480 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ResponseContentLength()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2587 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 158: +#line 1485 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ResponseProtocol()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2596 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 159: +#line 1490 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ResponseStatus()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2605 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 160: +#line 1495 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ServerAddr()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2614 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 161: +#line 1500 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ServerName()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2623 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 162: +#line 1505 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::ServerPort()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2632 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 163: +#line 1510 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::SessionID()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2641 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 164: +#line 1515 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::UniqueID()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2650 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 165: +#line 1520 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::UrlEncodedError()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2659 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 166: +#line 1525 "seclang-parser.yy" // lalr1.cc:859 + { + std::unique_ptr c(new Variables::UserID()); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } +#line 2668 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 167: +#line 1530 "seclang-parser.yy" // lalr1.cc:859 + { + std::string name(yystack_[0].value.as< std::string > ()); + char z = name.at(0); + if (z == '&') { + name.erase(0, 1); + std::unique_ptr c(new Count(new Variable(name, Variable::VariableKind::DirectVariable))); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } else if (z == '!') { + name.erase(0, 1); + std::unique_ptr c(new Exclusion(new Variable(name, Variable::VariableKind::DirectVariable))); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } else { + std::unique_ptr c(new Variable(name, Variable::VariableKind::DirectVariable)); + yylhs.value.as< std::unique_ptr > () = std::move(c); + } + } +#line 2689 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 168: +#line 1547 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2244,11 +2706,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2248 "seclang-parser.cc" // lalr1.cc:859 +#line 2710 "seclang-parser.cc" // lalr1.cc:859 break; - case 116: -#line 1197 "seclang-parser.yy" // lalr1.cc:859 + case 169: +#line 1564 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2265,11 +2727,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2269 "seclang-parser.cc" // lalr1.cc:859 +#line 2731 "seclang-parser.cc" // lalr1.cc:859 break; - case 117: -#line 1214 "seclang-parser.yy" // lalr1.cc:859 + case 170: +#line 1581 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2286,11 +2748,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2290 "seclang-parser.cc" // lalr1.cc:859 +#line 2752 "seclang-parser.cc" // lalr1.cc:859 break; - case 118: -#line 1231 "seclang-parser.yy" // lalr1.cc:859 + case 171: +#line 1598 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2307,11 +2769,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2311 "seclang-parser.cc" // lalr1.cc:859 +#line 2773 "seclang-parser.cc" // lalr1.cc:859 break; - case 119: -#line 1248 "seclang-parser.yy" // lalr1.cc:859 + case 172: +#line 1615 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2328,11 +2790,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2332 "seclang-parser.cc" // lalr1.cc:859 +#line 2794 "seclang-parser.cc" // lalr1.cc:859 break; - case 120: -#line 1265 "seclang-parser.yy" // lalr1.cc:859 + case 173: +#line 1632 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2349,11 +2811,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2353 "seclang-parser.cc" // lalr1.cc:859 +#line 2815 "seclang-parser.cc" // lalr1.cc:859 break; - case 121: -#line 1282 "seclang-parser.yy" // lalr1.cc:859 + case 174: +#line 1649 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2370,11 +2832,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2374 "seclang-parser.cc" // lalr1.cc:859 +#line 2836 "seclang-parser.cc" // lalr1.cc:859 break; - case 122: -#line 1299 "seclang-parser.yy" // lalr1.cc:859 + case 175: +#line 1666 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2391,11 +2853,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2395 "seclang-parser.cc" // lalr1.cc:859 +#line 2857 "seclang-parser.cc" // lalr1.cc:859 break; - case 123: -#line 1316 "seclang-parser.yy" // lalr1.cc:859 + case 176: +#line 1683 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2412,11 +2874,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2416 "seclang-parser.cc" // lalr1.cc:859 +#line 2878 "seclang-parser.cc" // lalr1.cc:859 break; - case 124: -#line 1333 "seclang-parser.yy" // lalr1.cc:859 + case 177: +#line 1700 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2433,11 +2895,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2437 "seclang-parser.cc" // lalr1.cc:859 +#line 2899 "seclang-parser.cc" // lalr1.cc:859 break; - case 125: -#line 1350 "seclang-parser.yy" // lalr1.cc:859 + case 178: +#line 1717 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2454,11 +2916,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2458 "seclang-parser.cc" // lalr1.cc:859 +#line 2920 "seclang-parser.cc" // lalr1.cc:859 break; - case 126: -#line 1367 "seclang-parser.yy" // lalr1.cc:859 + case 179: +#line 1734 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2475,11 +2937,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2479 "seclang-parser.cc" // lalr1.cc:859 +#line 2941 "seclang-parser.cc" // lalr1.cc:859 break; - case 127: -#line 1384 "seclang-parser.yy" // lalr1.cc:859 + case 180: +#line 1751 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2496,11 +2958,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2500 "seclang-parser.cc" // lalr1.cc:859 +#line 2962 "seclang-parser.cc" // lalr1.cc:859 break; - case 128: -#line 1401 "seclang-parser.yy" // lalr1.cc:859 + case 181: +#line 1768 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2517,11 +2979,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2521 "seclang-parser.cc" // lalr1.cc:859 +#line 2983 "seclang-parser.cc" // lalr1.cc:859 break; - case 129: -#line 1418 "seclang-parser.yy" // lalr1.cc:859 + case 182: +#line 1785 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2538,11 +3000,11 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2542 "seclang-parser.cc" // lalr1.cc:859 +#line 3004 "seclang-parser.cc" // lalr1.cc:859 break; - case 130: -#line 1435 "seclang-parser.yy" // lalr1.cc:859 + case 183: +#line 1802 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2559,32 +3021,21 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2563 "seclang-parser.cc" // lalr1.cc:859 +#line 3025 "seclang-parser.cc" // lalr1.cc:859 break; - case 131: -#line 1452 "seclang-parser.yy" // lalr1.cc:859 + case 184: +#line 1819 "seclang-parser.yy" // lalr1.cc:859 { - std::string name(yystack_[0].value.as< std::string > ()); - char z = name.at(0); - if (z == '&') { - name.erase(0, 1); - std::unique_ptr c(new Count(new XML(name))); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } else if (z == '!') { - name.erase(0, 1); - std::unique_ptr c(new Exclusion(new XML(name))); - yylhs.value.as< std::unique_ptr > () = std::move(c); - } else { + std::string name(yystack_[0].value.as< std::string > ()); std::unique_ptr c(new XML(name)); yylhs.value.as< std::unique_ptr > () = std::move(c); - } } -#line 2584 "seclang-parser.cc" // lalr1.cc:859 +#line 3035 "seclang-parser.cc" // lalr1.cc:859 break; - case 132: -#line 1469 "seclang-parser.yy" // lalr1.cc:859 + case 185: +#line 1825 "seclang-parser.yy" // lalr1.cc:859 { std::string name(yystack_[0].value.as< std::string > ()); char z = name.at(0); @@ -2601,725 +3052,749 @@ namespace yy { yylhs.value.as< std::unique_ptr > () = std::move(c); } } -#line 2605 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 133: -#line 1489 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as< std::string > ())); - } -#line 2613 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 134: -#line 1493 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as< std::string > ())); - } -#line 2621 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 135: -#line 1497 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("Append", yystack_[1].location); - } -#line 2629 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 136: -#line 1501 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::AuditLog(yystack_[0].value.as< std::string > ())); - } -#line 2637 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 137: -#line 1505 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Block(yystack_[0].value.as< std::string > ())); - } -#line 2645 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 138: -#line 1509 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Capture(yystack_[0].value.as< std::string > ())); - } -#line 2653 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 139: -#line 1513 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Chain(yystack_[0].value.as< std::string > ())); - } -#line 2661 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 140: -#line 1517 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2670 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 141: -#line 1522 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2679 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 142: -#line 1527 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2688 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 143: -#line 1532 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as< std::string > ())); - } -#line 2696 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 144: -#line 1536 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as< std::string > ())); - } -#line 2704 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 145: -#line 1540 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as< std::string > ())); - } -#line 2712 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 146: -#line 1544 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2721 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 147: -#line 1549 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2730 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 148: -#line 1554 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "true")); - } -#line 2738 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 149: -#line 1558 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "false")); - } -#line 2746 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 150: -#line 1562 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlRuleEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2755 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 151: -#line 1567 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlRuleEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2764 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 152: -#line 1572 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("CtlRuleEngine", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); - } -#line 2773 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 153: -#line 1577 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as< std::string > ())); - } -#line 2781 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 154: -#line 1581 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as< std::string > ())); - } -#line 2789 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 155: -#line 1585 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as< std::string > ())); - } -#line 2797 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 156: -#line 1589 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Deny(yystack_[0].value.as< std::string > ())); - } -#line 2805 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 157: -#line 1593 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); - } -#line 2813 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 158: -#line 1597 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("Drop", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); - } -#line 2822 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 159: -#line 1602 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("Exec", yystack_[1].location); - } -#line 2830 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 160: -#line 1606 "seclang-parser.yy" // lalr1.cc:859 - { - //ACTION_NOT_SUPPORTED("ExpireVar", @0); - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); - } -#line 2839 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 161: -#line 1611 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as< std::string > ())); - } -#line 2847 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 162: -#line 1615 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::InitCol(yystack_[0].value.as< std::string > ())); - } -#line 2855 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 163: -#line 1619 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::LogData(yystack_[0].value.as< std::string > ())); - } -#line 2863 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 164: -#line 1623 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Log(yystack_[0].value.as< std::string > ())); - } -#line 2871 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 165: -#line 1627 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as< std::string > ())); - } -#line 2879 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 166: -#line 1631 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Msg(yystack_[0].value.as< std::string > ())); - } -#line 2887 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 167: -#line 1635 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::MultiMatch(yystack_[0].value.as< std::string > ())); - } -#line 2895 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 168: -#line 1639 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoAuditLog(yystack_[0].value.as< std::string > ())); - } -#line 2903 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 169: -#line 1643 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoLog(yystack_[0].value.as< std::string > ())); - } -#line 2911 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 170: -#line 1647 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Pass(yystack_[0].value.as< std::string > ())); - } -#line 2919 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 171: -#line 1651 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); - } -#line 2927 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 172: -#line 1655 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Phase(yystack_[0].value.as< std::string > ())); - } -#line 2935 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 173: -#line 1659 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); - } -#line 2943 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 174: -#line 1663 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); - } -#line 2951 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 175: -#line 1667 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Redirect(yystack_[0].value.as< std::string > ())); - } -#line 2959 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 176: -#line 1671 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Rev(yystack_[0].value.as< std::string > ())); - } -#line 2967 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 177: -#line 1675 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("SanatiseArg", yystack_[1].location); - } -#line 2975 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 178: -#line 1679 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("SanatiseMatched", yystack_[1].location); - } -#line 2983 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 179: -#line 1683 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("SanatiseMatchedBytes", yystack_[1].location); - } -#line 2991 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 180: -#line 1687 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("SanatiseRequestHeader", yystack_[1].location); - } -#line 2999 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 181: -#line 1691 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("SanatiseResponseHeader", yystack_[1].location); - } -#line 3007 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 182: -#line 1695 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("SetEnv", yystack_[1].location); - } -#line 3015 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 183: -#line 1699 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_NOT_SUPPORTED("SetRSC", yystack_[1].location); - } -#line 3023 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 184: -#line 1703 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetSID(yystack_[0].value.as< std::string > ())); - } -#line 3031 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 185: -#line 1707 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetUID(yystack_[0].value.as< std::string > ())); - } -#line 3039 "seclang-parser.cc" // lalr1.cc:859 +#line 3056 "seclang-parser.cc" // lalr1.cc:859 break; case 186: -#line 1711 "seclang-parser.yy" // lalr1.cc:859 +#line 1845 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as< std::string > ())); } -#line 3047 "seclang-parser.cc" // lalr1.cc:859 +#line 3064 "seclang-parser.cc" // lalr1.cc:859 break; case 187: -#line 1715 "seclang-parser.yy" // lalr1.cc:859 +#line 1849 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Severity(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as< std::string > ())); } -#line 3055 "seclang-parser.cc" // lalr1.cc:859 +#line 3072 "seclang-parser.cc" // lalr1.cc:859 break; case 188: -#line 1719 "seclang-parser.yy" // lalr1.cc:859 +#line 1853 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Skip(yystack_[0].value.as< std::string > ())); + ACTION_NOT_SUPPORTED("Append", yystack_[1].location); } -#line 3063 "seclang-parser.cc" // lalr1.cc:859 +#line 3080 "seclang-parser.cc" // lalr1.cc:859 break; case 189: -#line 1723 "seclang-parser.yy" // lalr1.cc:859 +#line 1857 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::AuditLog(yystack_[0].value.as< std::string > ())); } -#line 3071 "seclang-parser.cc" // lalr1.cc:859 +#line 3088 "seclang-parser.cc" // lalr1.cc:859 break; case 190: -#line 1727 "seclang-parser.yy" // lalr1.cc:859 +#line 1861 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Block(yystack_[0].value.as< std::string > ())); } -#line 3079 "seclang-parser.cc" // lalr1.cc:859 +#line 3096 "seclang-parser.cc" // lalr1.cc:859 break; case 191: -#line 1731 "seclang-parser.yy" // lalr1.cc:859 +#line 1865 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Tag(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Capture(yystack_[0].value.as< std::string > ())); } -#line 3087 "seclang-parser.cc" // lalr1.cc:859 +#line 3104 "seclang-parser.cc" // lalr1.cc:859 break; case 192: -#line 1735 "seclang-parser.yy" // lalr1.cc:859 +#line 1869 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Ver(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Chain(yystack_[0].value.as< std::string > ())); } -#line 3095 "seclang-parser.cc" // lalr1.cc:859 +#line 3112 "seclang-parser.cc" // lalr1.cc:859 break; case 193: -#line 1739 "seclang-parser.yy" // lalr1.cc:859 +#line 1873 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 3103 "seclang-parser.cc" // lalr1.cc:859 +#line 3121 "seclang-parser.cc" // lalr1.cc:859 break; case 194: -#line 1743 "seclang-parser.yy" // lalr1.cc:859 +#line 1878 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityZero7bit(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 3111 "seclang-parser.cc" // lalr1.cc:859 +#line 3130 "seclang-parser.cc" // lalr1.cc:859 break; case 195: -#line 1747 "seclang-parser.yy" // lalr1.cc:859 +#line 1883 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityOdd7bit(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 3119 "seclang-parser.cc" // lalr1.cc:859 +#line 3139 "seclang-parser.cc" // lalr1.cc:859 break; case 196: -#line 1751 "seclang-parser.yy" // lalr1.cc:859 +#line 1888 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityEven7bit(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as< std::string > ())); } -#line 3127 "seclang-parser.cc" // lalr1.cc:859 +#line 3147 "seclang-parser.cc" // lalr1.cc:859 break; case 197: -#line 1755 "seclang-parser.yy" // lalr1.cc:859 +#line 1892 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::SqlHexDecode(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as< std::string > ())); } -#line 3135 "seclang-parser.cc" // lalr1.cc:859 +#line 3155 "seclang-parser.cc" // lalr1.cc:859 break; case 198: -#line 1759 "seclang-parser.yy" // lalr1.cc:859 +#line 1896 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CmdLine(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as< std::string > ())); } -#line 3143 "seclang-parser.cc" // lalr1.cc:859 +#line 3163 "seclang-parser.cc" // lalr1.cc:859 break; case 199: -#line 1763 "seclang-parser.yy" // lalr1.cc:859 +#line 1900 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Sha1(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 3151 "seclang-parser.cc" // lalr1.cc:859 +#line 3172 "seclang-parser.cc" // lalr1.cc:859 break; case 200: -#line 1767 "seclang-parser.yy" // lalr1.cc:859 +#line 1905 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Md5(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 3159 "seclang-parser.cc" // lalr1.cc:859 +#line 3181 "seclang-parser.cc" // lalr1.cc:859 break; case 201: -#line 1771 "seclang-parser.yy" // lalr1.cc:859 +#line 1910 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexEncode(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "true")); } -#line 3167 "seclang-parser.cc" // lalr1.cc:859 +#line 3189 "seclang-parser.cc" // lalr1.cc:859 break; case 202: -#line 1775 "seclang-parser.yy" // lalr1.cc:859 +#line 1914 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::LowerCase(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "false")); } -#line 3175 "seclang-parser.cc" // lalr1.cc:859 +#line 3197 "seclang-parser.cc" // lalr1.cc:859 break; case 203: -#line 1779 "seclang-parser.yy" // lalr1.cc:859 +#line 1918 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecodeUni(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlRuleEngine", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 3183 "seclang-parser.cc" // lalr1.cc:859 +#line 3206 "seclang-parser.cc" // lalr1.cc:859 break; case 204: -#line 1783 "seclang-parser.yy" // lalr1.cc:859 +#line 1923 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecode(yystack_[0].value.as< std::string > ())); - } -#line 3191 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 205: -#line 1787 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::None(yystack_[0].value.as< std::string > ())); - } -#line 3199 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 206: -#line 1791 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CompressWhitespace(yystack_[0].value.as< std::string > ())); - } -#line 3207 "seclang-parser.cc" // lalr1.cc:859 - break; - - case 207: -#line 1795 "seclang-parser.yy" // lalr1.cc:859 - { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveWhitespace(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlRuleEngine", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } #line 3215 "seclang-parser.cc" // lalr1.cc:859 break; - case 208: -#line 1799 "seclang-parser.yy" // lalr1.cc:859 + case 205: +#line 1928 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceNulls(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("CtlRuleEngine", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 3223 "seclang-parser.cc" // lalr1.cc:859 +#line 3224 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 206: +#line 1933 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as< std::string > ())); + } +#line 3232 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 207: +#line 1937 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as< std::string > ())); + } +#line 3240 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 208: +#line 1941 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as< std::string > ())); + } +#line 3248 "seclang-parser.cc" // lalr1.cc:859 break; case 209: -#line 1803 "seclang-parser.yy" // lalr1.cc:859 +#line 1945 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveNulls(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Deny(yystack_[0].value.as< std::string > ())); } -#line 3231 "seclang-parser.cc" // lalr1.cc:859 +#line 3256 "seclang-parser.cc" // lalr1.cc:859 break; case 210: -#line 1807 "seclang-parser.yy" // lalr1.cc:859 +#line 1949 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HtmlEntityDecode(yystack_[0].value.as< std::string > ())); + ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); } -#line 3239 "seclang-parser.cc" // lalr1.cc:859 +#line 3264 "seclang-parser.cc" // lalr1.cc:859 break; case 211: -#line 1811 "seclang-parser.yy" // lalr1.cc:859 +#line 1953 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::JsDecode(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("Drop", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); } -#line 3247 "seclang-parser.cc" // lalr1.cc:859 +#line 3273 "seclang-parser.cc" // lalr1.cc:859 break; case 212: -#line 1815 "seclang-parser.yy" // lalr1.cc:859 +#line 1958 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CssDecode(yystack_[0].value.as< std::string > ())); + ACTION_NOT_SUPPORTED("Exec", yystack_[1].location); } -#line 3255 "seclang-parser.cc" // lalr1.cc:859 +#line 3281 "seclang-parser.cc" // lalr1.cc:859 break; case 213: -#line 1819 "seclang-parser.yy" // lalr1.cc:859 +#line 1962 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Trim(yystack_[0].value.as< std::string > ())); + //ACTION_NOT_SUPPORTED("ExpireVar", @0); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); } -#line 3263 "seclang-parser.cc" // lalr1.cc:859 +#line 3290 "seclang-parser.cc" // lalr1.cc:859 break; case 214: -#line 1823 "seclang-parser.yy" // lalr1.cc:859 +#line 1967 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePathWin(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as< std::string > ())); } -#line 3271 "seclang-parser.cc" // lalr1.cc:859 +#line 3298 "seclang-parser.cc" // lalr1.cc:859 break; case 215: -#line 1827 "seclang-parser.yy" // lalr1.cc:859 +#line 1971 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePath(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::InitCol(yystack_[0].value.as< std::string > ())); } -#line 3279 "seclang-parser.cc" // lalr1.cc:859 +#line 3306 "seclang-parser.cc" // lalr1.cc:859 break; case 216: -#line 1831 "seclang-parser.yy" // lalr1.cc:859 +#line 1975 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Length(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::LogData(yystack_[0].value.as< std::string > ())); } -#line 3287 "seclang-parser.cc" // lalr1.cc:859 +#line 3314 "seclang-parser.cc" // lalr1.cc:859 break; case 217: -#line 1835 "seclang-parser.yy" // lalr1.cc:859 +#line 1979 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Utf8ToUnicode(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Log(yystack_[0].value.as< std::string > ())); } -#line 3295 "seclang-parser.cc" // lalr1.cc:859 +#line 3322 "seclang-parser.cc" // lalr1.cc:859 break; case 218: -#line 1839 "seclang-parser.yy" // lalr1.cc:859 +#line 1983 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveCommentsChar(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as< std::string > ())); } -#line 3303 "seclang-parser.cc" // lalr1.cc:859 +#line 3330 "seclang-parser.cc" // lalr1.cc:859 break; case 219: -#line 1843 "seclang-parser.yy" // lalr1.cc:859 +#line 1987 "seclang-parser.yy" // lalr1.cc:859 { - ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveComments(yystack_[0].value.as< std::string > ())); + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Msg(yystack_[0].value.as< std::string > ())); } -#line 3311 "seclang-parser.cc" // lalr1.cc:859 +#line 3338 "seclang-parser.cc" // lalr1.cc:859 break; case 220: -#line 1847 "seclang-parser.yy" // lalr1.cc:859 +#line 1991 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::MultiMatch(yystack_[0].value.as< std::string > ())); + } +#line 3346 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 221: +#line 1995 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoAuditLog(yystack_[0].value.as< std::string > ())); + } +#line 3354 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 222: +#line 1999 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoLog(yystack_[0].value.as< std::string > ())); + } +#line 3362 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 223: +#line 2003 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Pass(yystack_[0].value.as< std::string > ())); + } +#line 3370 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 224: +#line 2007 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); + } +#line 3378 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 225: +#line 2011 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Phase(yystack_[0].value.as< std::string > ())); + } +#line 3386 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 226: +#line 2015 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); + } +#line 3394 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 227: +#line 2019 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); + } +#line 3402 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 228: +#line 2023 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Redirect(yystack_[0].value.as< std::string > ())); + } +#line 3410 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 229: +#line 2027 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Rev(yystack_[0].value.as< std::string > ())); + } +#line 3418 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 230: +#line 2031 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("SanatiseArg", yystack_[1].location); + } +#line 3426 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 231: +#line 2035 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("SanatiseMatched", yystack_[1].location); + } +#line 3434 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 232: +#line 2039 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("SanatiseMatchedBytes", yystack_[1].location); + } +#line 3442 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 233: +#line 2043 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("SanatiseRequestHeader", yystack_[1].location); + } +#line 3450 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 234: +#line 2047 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("SanatiseResponseHeader", yystack_[1].location); + } +#line 3458 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 235: +#line 2051 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("SetEnv", yystack_[1].location); + } +#line 3466 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 236: +#line 2055 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_NOT_SUPPORTED("SetRSC", yystack_[1].location); + } +#line 3474 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 237: +#line 2059 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetSID(yystack_[0].value.as< std::string > ())); + } +#line 3482 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 238: +#line 2063 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetUID(yystack_[0].value.as< std::string > ())); + } +#line 3490 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 239: +#line 2067 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setToOne, yystack_[0].value.as< std::string > ())); + } +#line 3498 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 240: +#line 2071 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setOperation, yystack_[2].value.as< std::string > (), yystack_[0].value.as< std::string > ())); + } +#line 3506 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 241: +#line 2075 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::sumAndSetOperation, yystack_[2].value.as< std::string > (), yystack_[0].value.as< std::string > ())); + } +#line 3514 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 242: +#line 2079 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::substractAndSetOperation, yystack_[2].value.as< std::string > (), yystack_[0].value.as< std::string > ())); + } +#line 3522 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 243: +#line 2083 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Severity(yystack_[0].value.as< std::string > ())); + } +#line 3530 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 244: +#line 2087 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Skip(yystack_[0].value.as< std::string > ())); + } +#line 3538 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 245: +#line 2091 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as< std::string > ())); + } +#line 3546 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 246: +#line 2095 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as< std::string > ())); + } +#line 3554 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 247: +#line 2099 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Tag(yystack_[0].value.as< std::string > ())); + } +#line 3562 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 248: +#line 2103 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Ver(yystack_[0].value.as< std::string > ())); + } +#line 3570 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 249: +#line 2107 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as< std::string > ())); + } +#line 3578 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 250: +#line 2111 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityZero7bit(yystack_[0].value.as< std::string > ())); + } +#line 3586 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 251: +#line 2115 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityOdd7bit(yystack_[0].value.as< std::string > ())); + } +#line 3594 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 252: +#line 2119 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityEven7bit(yystack_[0].value.as< std::string > ())); + } +#line 3602 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 253: +#line 2123 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::SqlHexDecode(yystack_[0].value.as< std::string > ())); + } +#line 3610 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 254: +#line 2127 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CmdLine(yystack_[0].value.as< std::string > ())); + } +#line 3618 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 255: +#line 2131 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Sha1(yystack_[0].value.as< std::string > ())); + } +#line 3626 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 256: +#line 2135 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Md5(yystack_[0].value.as< std::string > ())); + } +#line 3634 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 257: +#line 2139 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexEncode(yystack_[0].value.as< std::string > ())); + } +#line 3642 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 258: +#line 2143 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::LowerCase(yystack_[0].value.as< std::string > ())); + } +#line 3650 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 259: +#line 2147 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecodeUni(yystack_[0].value.as< std::string > ())); + } +#line 3658 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 260: +#line 2151 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecode(yystack_[0].value.as< std::string > ())); + } +#line 3666 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 261: +#line 2155 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::None(yystack_[0].value.as< std::string > ())); + } +#line 3674 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 262: +#line 2159 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CompressWhitespace(yystack_[0].value.as< std::string > ())); + } +#line 3682 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 263: +#line 2163 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveWhitespace(yystack_[0].value.as< std::string > ())); + } +#line 3690 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 264: +#line 2167 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceNulls(yystack_[0].value.as< std::string > ())); + } +#line 3698 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 265: +#line 2171 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveNulls(yystack_[0].value.as< std::string > ())); + } +#line 3706 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 266: +#line 2175 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HtmlEntityDecode(yystack_[0].value.as< std::string > ())); + } +#line 3714 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 267: +#line 2179 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::JsDecode(yystack_[0].value.as< std::string > ())); + } +#line 3722 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 268: +#line 2183 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CssDecode(yystack_[0].value.as< std::string > ())); + } +#line 3730 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 269: +#line 2187 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Trim(yystack_[0].value.as< std::string > ())); + } +#line 3738 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 270: +#line 2191 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePathWin(yystack_[0].value.as< std::string > ())); + } +#line 3746 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 271: +#line 2195 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePath(yystack_[0].value.as< std::string > ())); + } +#line 3754 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 272: +#line 2199 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Length(yystack_[0].value.as< std::string > ())); + } +#line 3762 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 273: +#line 2203 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Utf8ToUnicode(yystack_[0].value.as< std::string > ())); + } +#line 3770 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 274: +#line 2207 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveCommentsChar(yystack_[0].value.as< std::string > ())); + } +#line 3778 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 275: +#line 2211 "seclang-parser.yy" // lalr1.cc:859 + { + ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveComments(yystack_[0].value.as< std::string > ())); + } +#line 3786 "seclang-parser.cc" // lalr1.cc:859 + break; + + case 276: +#line 2215 "seclang-parser.yy" // lalr1.cc:859 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceComments(yystack_[0].value.as< std::string > ())); } -#line 3319 "seclang-parser.cc" // lalr1.cc:859 +#line 3794 "seclang-parser.cc" // lalr1.cc:859 break; -#line 3323 "seclang-parser.cc" // lalr1.cc:859 +#line 3798 "seclang-parser.cc" // lalr1.cc:859 default: break; } @@ -3574,44 +4049,50 @@ namespace yy { } - const short int seclang_parser::yypact_ninf_ = -141; + const short int seclang_parser::yypact_ninf_ = -253; const signed char seclang_parser::yytable_ninf_ = -1; const short int seclang_parser::yypact_[] = { - 161, -141, -141, -141, -141, -120, -141, -141, -141, -141, - -141, -124, -141, -141, -141, -141, -141, -69, -141, -141, - -66, -141, -61, -141, 22, -112, 64, 64, -141, -141, - -141, -123, -141, 27, 29, -141, -141, -141, 31, -141, - -141, -141, -141, -141, -141, -5, 64, 286, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -71, -141, -141, -141, 34, - 36, -65, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - 424, -141, 1, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, 65, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, 17, - 424, -5, -127, -140, -138, -134, -141, -141, -130, -75, - 21, 23, -141, 24, 25, 26, 28, 30, 32, 33, - 35, 56, 58, 59, 60, -141, 61, 62, -141, 63, - 142, 143, 144, -141, -141, 145, 146, 147, 148, 64, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141 + 141, -253, -253, -253, -253, -175, -253, -253, -253, -253, + -253, -178, -253, -253, -253, -253, -253, -181, -253, -253, + -160, -253, -61, -253, -62, -163, 338, 338, -253, -253, + -253, -180, -253, -57, -55, -253, -253, -253, -53, -253, + -253, -253, -253, -253, -253, 24, 338, 197, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -252, -253, + -253, -253, -253, -253, -253, -253, -169, -253, -253, -253, + -51, -49, -159, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + 423, -253, 5, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -1, -253, -253, + -253, -253, 59, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -2, 423, 24, -120, -188, -184, -177, + -253, -253, -64, -63, -60, -59, -253, -58, -56, -54, + -52, -50, -48, -47, -46, -45, -44, -43, -42, -253, + -41, -40, -253, -39, -38, -37, -36, -253, -253, -35, + -34, -33, -32, 338, -253, -31, -30, -29, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253 }; - const unsigned char + const unsigned short int seclang_parser::yydefact_[] = { 0, 2, 83, 7, 6, 0, 11, 14, 12, 13, @@ -3620,217 +4101,248 @@ namespace yy { 109, 0, 84, 0, 0, 23, 21, 22, 0, 100, 105, 106, 104, 107, 103, 0, 0, 0, 4, 69, 5, 9, 10, 8, 18, 17, 16, 80, 79, 92, - 93, 82, 81, 94, 95, 78, 76, 77, 133, 134, - 135, 136, 137, 138, 139, 0, 143, 144, 145, 0, - 0, 0, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 164, 163, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 198, 206, 212, 201, 210, 211, 216, 202, 200, - 205, 215, 214, 196, 195, 194, 219, 218, 209, 207, - 220, 208, 199, 197, 213, 204, 203, 217, 192, 193, + 93, 82, 81, 94, 95, 78, 76, 77, 0, 186, + 187, 188, 189, 190, 191, 192, 0, 196, 197, 198, + 0, 0, 0, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 217, 216, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 243, 244, 245, 246, + 247, 254, 262, 268, 257, 266, 267, 272, 258, 256, + 261, 271, 270, 252, 251, 250, 275, 274, 265, 263, + 276, 264, 255, 253, 269, 260, 259, 273, 248, 249, 0, 72, 27, 29, 74, 96, 97, 20, 19, 25, - 24, 101, 102, 112, 119, 117, 118, 120, 121, 132, + 24, 101, 102, 118, 113, 112, 114, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 113, 115, 114, 116, 0, 111, 73, 1, 3, 141, - 140, 142, 147, 146, 149, 148, 152, 151, 150, 0, - 0, 0, 0, 0, 0, 0, 35, 36, 0, 0, - 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 34, 0, - 0, 0, 0, 37, 38, 0, 0, 0, 0, 71, - 30, 26, 28, 110, 33, 31, 67, 52, 51, 53, - 54, 40, 55, 48, 56, 39, 58, 57, 59, 60, - 62, 61, 63, 49, 64, 65, 66, 41, 42, 43, - 44, 45, 46, 47, 50, 70 + 132, 133, 134, 135, 136, 137, 138, 139, 140, 142, + 141, 145, 144, 143, 146, 148, 147, 149, 115, 150, + 151, 152, 154, 153, 155, 156, 157, 116, 117, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 172, 170, + 171, 173, 174, 185, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 168, 167, 169, 0, 111, 73, + 1, 3, 239, 194, 193, 195, 200, 199, 202, 201, + 205, 204, 203, 0, 0, 0, 0, 0, 0, 0, + 35, 36, 0, 0, 0, 0, 68, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, + 0, 0, 34, 0, 0, 0, 0, 37, 38, 0, + 0, 0, 0, 71, 30, 0, 0, 0, 26, 28, + 110, 33, 31, 67, 52, 51, 53, 54, 40, 55, + 48, 56, 39, 58, 57, 59, 60, 62, 61, 63, + 49, 64, 65, 66, 41, 42, 43, 44, 45, 46, + 47, 50, 70, 240, 241, 242 }; const short int seclang_parser::yypgoto_[] = { - -141, -141, -29, -141, -27, 156, -141, -35, -141, -141, - -25, -28 + -253, -253, 93, -253, -27, -5, -253, -109, -253, -253, + -106, -103 }; const short int seclang_parser::yydefgoto_[] = { - -1, 47, 48, 49, 151, 152, 239, 240, 50, 184, - 185, 153 + -1, 47, 48, 49, 151, 152, 293, 294, 50, 237, + 238, 153 }; const unsigned short int seclang_parser::yytable_[] = { - 154, 163, 155, 54, 200, 246, 55, 247, 51, 52, - 56, 248, 156, 53, 65, 249, 66, 67, 188, 186, - 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 244, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 189, 190, 57, - 58, 196, 191, 197, 198, 59, 60, 61, 62, 201, - 250, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 63, 64, 157, 158, 159, 160, 161, - 162, 1, 192, 193, 194, 195, 251, 245, 252, 253, - 254, 255, 242, 256, 0, 257, 243, 258, 259, 0, - 260, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 154, 254, 155, 255, 57, 58, 54, 242, 254, 55, + 51, 52, 156, 56, 303, 53, 243, 244, 304, 239, + 65, 245, 66, 67, 250, 305, 251, 252, 59, 60, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 261, 241, 262, 263, 264, 265, 266, 267, 0, - 0, 202, 275, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 150, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 187, 268, 269, 270, - 271, 272, 273, 274, 0, 0, 0, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 199, 0, 0, 0, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 301, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 295, 296, 297, 61, 62, 63, 64, 157, 158, + 159, 160, 161, 162, 246, 247, 248, 249, 306, 307, + 241, 1, 308, 309, 310, 253, 311, 302, 312, 300, + 313, 299, 314, 0, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 333, 334, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, + 0, 0, 256, 0, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 0, 234, 235, 236, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 68, + 0, 0, 0, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 68, 0, 0, 0, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149 + 150 }; const short int seclang_parser::yycheck_[] = { - 27, 6, 125, 127, 3, 145, 130, 145, 128, 129, - 134, 145, 135, 133, 126, 145, 128, 129, 47, 46, - 3, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 128, 129, 128, - 129, 126, 133, 128, 129, 131, 132, 128, 129, 4, - 145, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 27, 3, 182, 4, 185, 186, 184, 259, 3, 187, + 185, 186, 192, 191, 202, 190, 185, 186, 202, 46, + 183, 190, 185, 186, 183, 202, 185, 186, 188, 189, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 131, 132, 128, 129, 128, 129, 128, - 129, 0, 128, 129, 128, 129, 145, 202, 145, 145, - 145, 145, 200, 145, -1, 145, 201, 145, 145, -1, - 145, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 145, 185, 145, 145, 145, 145, 145, 145, -1, - -1, 146, 239, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 185, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 0, 145, 145, 145, - 145, 145, 145, 145, -1, -1, -1, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 150, -1, -1, -1, + 56, 57, 58, 59, 60, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 62, 63, 64, 185, 186, 188, 189, 185, 186, + 185, 186, 185, 186, 185, 186, 185, 186, 202, 202, + 47, 0, 202, 202, 202, 150, 202, 256, 202, 255, + 202, 254, 202, -1, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, 203, -1, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 293, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, -1, 260, 261, 262, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88 - }; - - const unsigned char - seclang_parser::yystos_[] = - { - 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 61, + -1, -1, -1, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 61, -1, -1, -1, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 207, 208, 209, - 214, 128, 129, 133, 127, 130, 134, 128, 129, 131, - 132, 128, 129, 131, 132, 126, 128, 129, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 185, 210, 211, 217, 210, 125, 135, 128, 129, 128, - 129, 128, 129, 6, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 215, 216, 210, 0, 208, 128, - 129, 133, 128, 129, 128, 129, 126, 128, 129, 211, - 3, 4, 146, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 212, - 213, 185, 217, 216, 170, 213, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 210 + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 242 }; - const unsigned char + const unsigned short int + seclang_parser::yystos_[] = + { + 0, 0, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 264, 265, 266, + 271, 185, 186, 190, 184, 187, 191, 185, 186, 188, + 189, 185, 186, 188, 189, 183, 185, 186, 61, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 242, 267, 268, 274, 267, 182, 192, 185, 186, 185, + 186, 185, 186, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 260, 261, 262, 272, 273, 267, + 0, 265, 259, 185, 186, 190, 185, 186, 185, 186, + 183, 185, 186, 268, 3, 4, 203, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 269, 270, 62, 63, 64, 242, 274, + 273, 227, 270, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 267, 202, 202, 202 + }; + + const unsigned short int seclang_parser::yyr1_[] = { - 0, 206, 207, 207, 207, 208, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 210, 210, 211, 211, - 212, 212, 212, 212, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 215, 215, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, - 217 + 0, 263, 264, 264, 264, 265, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 267, 267, 268, 268, + 269, 269, 269, 269, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 270, 270, 270, 270, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 272, 272, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274 }; const unsigned char @@ -3850,15 +4362,20 @@ namespace yy { 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1 }; @@ -3869,8 +4386,31 @@ namespace yy { const seclang_parser::yytname_[] = { "\"end of file\"", "error", "$undefined", "\",\"", "PIPE", "NEW_LINE", - "\"Variable ARGS_NAMES\"", "\"Accuracy\"", "\"Allow\"", "\"Append\"", - "\"AuditLog\"", "\"Block\"", "\"Capture\"", "\"Chain\"", + "VARIABLE_ARGS_COMBINED_SIZE", "VARIABLE_ARGS_GET_NAMES", + "\"Variable ARGS_NAMES\"", "VARIABLE_ARGS_POST_NAMES", "\"AUTH_TYPE\"", + "\"FILES_COMBINED_SIZE\"", "\"FILES_TMPNAMES\"", "\"FULL_REQUEST\"", + "\"FULL_REQUEST_LENGTH\"", "\"INBOUND_DATA_ERROR\"", "\"MATCHED_VAR\"", + "\"MATCHED_VAR_NAME\"", "\"MULTIPART_CRLF_LF_LINES\"", + "\"MULTIPART_DATA_AFTER\"", "\"MULTIPART_FILE_LIMIT_EXCEEDED\"", + "\"MULTIPART_HEADER_FOLDING\"", "\"MULTIPART_INVALID_HEADER_FOLDING\"", + "\"MULTIPART_INVALID_QUOTING\"", "\"MULTIPART_STRICT_ERROR\"", + "\"MULTIPART_UNMATCHED_BOUNDARY\"", "\"OUTBOUND_DATA_ERROR\"", + "\"PATH_INFO\"", "\"QUERY_STRING\"", "\"REMOTE_ADDR\"", + "\"REMOTE_HOST\"", "\"REMOTE_PORT\"", "\"REQBODY_ERROR_MSG\"", + "\"REQBODY_ERROR\"", "\"REQBODY_PROCESSOR_ERROR_MSG\"", + "\"REQBODY_PROCESSOR_ERROR\"", "\"REQBODY_PROCESSOR\"", + "\"REQUEST_BASENAME\"", "\"REQUEST_BODY_LENGTH\"", "\"REQUEST_BODY\"", + "\"REQUEST_FILENAME\"", "VARIABLE_REQUEST_HEADERS_NAMES", + "\"REQUEST_LINE\"", "\"REQUEST_METHOD\"", "\"REQUEST_PROTOCOL\"", + "\"REQUEST_URI_RAW\"", "\"REQUEST_URI\"", "\"RESOURCE\"", + "\"RESPONSE_BODY\"", "\"RESPONSE_CONTENT_LENGTH\"", + "VARIABLE_RESPONSE_CONTENT_TYPE", "VARIABLE_RESPONSE_HEADERS_NAMES", + "\"RESPONSE_PROTOCOL\"", "\"RESPONSE_STATUS\"", "\"SERVER_ADDR\"", + "\"SERVER_NAME\"", "\"SERVER_PORT\"", "\"SESSIONID\"", "\"UNIQUE_ID\"", + "\"URLENCODED_ERROR\"", "\"USERID\"", "\"SetVar\"", + "SETVAR_OPERATION_EQUALS", "SETVAR_OPERATION_EQUALS_PLUS", + "SETVAR_OPERATION_EQUALS_MINUS", "\"Accuracy\"", "\"Allow\"", + "\"Append\"", "\"AuditLog\"", "\"Block\"", "\"Capture\"", "\"Chain\"", "\"ACTION_CTL_AUDIT_ENGINE\"", "\"ACTION_CTL_AUDIT_LOG_PARTS\"", "\"ACTION_CTL_BDY_JSON\"", "\"ACTION_CTL_BDY_XML\"", "\"ACTION_CTL_FORCE_REQ_BODY_VAR\"", @@ -3884,8 +4424,8 @@ namespace yy { "\"Phase\"", "\"Prepend\"", "\"Proxy\"", "\"Redirect\"", "\"Rev\"", "\"SanatiseArg\"", "\"SanatiseMatched\"", "\"SanatiseMatchedBytes\"", "\"SanatiseRequestHeader\"", "\"SanatiseResponseHeader\"", "\"SetEnv\"", - "\"SetSrc\"", "\"SetSid\"", "\"SetUID\"", "\"SetVar\"", "\"Severity\"", - "\"Skip\"", "\"SkipAfter\"", "\"Status\"", "\"Tag\"", + "\"SetSrc\"", "\"SetSid\"", "\"SetUID\"", "\"Severity\"", "\"Skip\"", + "\"SkipAfter\"", "\"Status\"", "\"Tag\"", "\"ACTION_TRANSFORMATION_CMD_LINE\"", "\"ACTION_TRANSFORMATION_COMPRESS_WHITESPACE\"", "\"ACTION_TRANSFORMATION_CSS_DECODE\"", @@ -3973,29 +4513,34 @@ namespace yy { const unsigned short int seclang_parser::yyrline_[] = { - 0, 489, 489, 493, 494, 497, 502, 508, 514, 518, - 522, 528, 534, 540, 546, 552, 561, 565, 569, 575, - 579, 583, 588, 593, 598, 602, 609, 613, 620, 626, - 636, 645, 655, 664, 676, 680, 684, 688, 692, 696, - 701, 706, 710, 714, 719, 723, 727, 732, 737, 742, - 747, 751, 755, 759, 763, 767, 771, 775, 779, 783, - 787, 791, 795, 799, 803, 807, 811, 815, 819, 833, - 834, 858, 877, 892, 900, 947, 951, 955, 959, 963, - 967, 971, 975, 979, 983, 997, 1009, 1029, 1049, 1054, - 1059, 1064, 1069, 1073, 1077, 1081, 1085, 1089, 1093, 1094, - 1095, 1106, 1110, 1114, 1115, 1116, 1117, 1118, 1119, 1120, - 1126, 1131, 1140, 1145, 1162, 1179, 1196, 1213, 1230, 1247, - 1264, 1281, 1298, 1315, 1332, 1349, 1366, 1383, 1400, 1417, - 1434, 1451, 1468, 1488, 1492, 1496, 1500, 1504, 1508, 1512, - 1516, 1521, 1526, 1531, 1535, 1539, 1543, 1548, 1553, 1557, - 1561, 1566, 1571, 1576, 1580, 1584, 1588, 1592, 1596, 1601, - 1605, 1610, 1614, 1618, 1622, 1626, 1630, 1634, 1638, 1642, - 1646, 1650, 1654, 1658, 1662, 1666, 1670, 1674, 1678, 1682, - 1686, 1690, 1694, 1698, 1702, 1706, 1710, 1714, 1718, 1722, - 1726, 1730, 1734, 1738, 1742, 1746, 1750, 1754, 1758, 1762, - 1766, 1770, 1774, 1778, 1782, 1786, 1790, 1794, 1798, 1802, - 1806, 1810, 1814, 1818, 1822, 1826, 1830, 1834, 1838, 1842, - 1846 + 0, 603, 603, 607, 608, 611, 616, 622, 628, 632, + 636, 642, 648, 654, 660, 666, 675, 679, 683, 689, + 693, 697, 702, 707, 712, 716, 723, 727, 734, 740, + 750, 759, 769, 778, 790, 794, 798, 802, 806, 810, + 815, 820, 824, 828, 833, 837, 841, 846, 851, 856, + 861, 865, 869, 873, 877, 881, 885, 889, 893, 897, + 901, 905, 909, 913, 917, 921, 925, 929, 933, 947, + 948, 972, 991, 1006, 1014, 1061, 1065, 1069, 1073, 1077, + 1081, 1085, 1089, 1093, 1097, 1111, 1123, 1143, 1163, 1168, + 1173, 1178, 1183, 1187, 1191, 1195, 1199, 1203, 1207, 1208, + 1209, 1220, 1224, 1228, 1229, 1230, 1231, 1232, 1233, 1234, + 1240, 1245, 1254, 1259, 1264, 1269, 1274, 1279, 1284, 1289, + 1294, 1299, 1304, 1309, 1314, 1319, 1324, 1329, 1334, 1339, + 1344, 1349, 1354, 1359, 1364, 1369, 1374, 1379, 1384, 1389, + 1394, 1399, 1404, 1409, 1414, 1419, 1424, 1429, 1434, 1439, + 1444, 1449, 1454, 1459, 1464, 1469, 1474, 1479, 1484, 1489, + 1494, 1499, 1504, 1509, 1514, 1519, 1524, 1529, 1546, 1563, + 1580, 1597, 1614, 1631, 1648, 1665, 1682, 1699, 1716, 1733, + 1750, 1767, 1784, 1801, 1818, 1824, 1844, 1848, 1852, 1856, + 1860, 1864, 1868, 1872, 1877, 1882, 1887, 1891, 1895, 1899, + 1904, 1909, 1913, 1917, 1922, 1927, 1932, 1936, 1940, 1944, + 1948, 1952, 1957, 1961, 1966, 1970, 1974, 1978, 1982, 1986, + 1990, 1994, 1998, 2002, 2006, 2010, 2014, 2018, 2022, 2026, + 2030, 2034, 2038, 2042, 2046, 2050, 2054, 2058, 2062, 2066, + 2070, 2074, 2078, 2082, 2086, 2090, 2094, 2098, 2102, 2106, + 2110, 2114, 2118, 2122, 2126, 2130, 2134, 2138, 2142, 2146, + 2150, 2154, 2158, 2162, 2166, 2170, 2174, 2178, 2182, 2186, + 2190, 2194, 2198, 2202, 2206, 2210, 2214 }; // Print the state stack on the debug stream. @@ -4030,8 +4575,8 @@ namespace yy { } // yy -#line 4034 "seclang-parser.cc" // lalr1.cc:1167 -#line 1852 "seclang-parser.yy" // lalr1.cc:1168 +#line 4579 "seclang-parser.cc" // lalr1.cc:1167 +#line 2220 "seclang-parser.yy" // lalr1.cc:1168 void yy::seclang_parser::error (const location_type& l, const std::string& m) { diff --git a/src/parser/seclang-parser.hh b/src/parser/seclang-parser.hh index 55dcb01e..38442bae 100644 --- a/src/parser/seclang-parser.hh +++ b/src/parser/seclang-parser.hh @@ -180,15 +180,67 @@ class Driver; #include "src/utils/system.h" #include "src/variables/args_names.h" #include "src/variables/xml.h" +#include "src/variables/args_combined_size.h" +#include "src/variables/args_get_names.h" +#include "src/variables/args_names.h" +#include "src/variables/args_post_names.h" +#include "src/variables/auth_type.h" #include "src/variables/duration.h" #include "src/variables/env.h" +#include "src/variables/files_combined_size.h" +#include "src/variables/files_tmp_names.h" +#include "src/variables/full_request.h" +#include "src/variables/full_request_length.h" #include "src/variables/highest_severity.h" +#include "src/variables/inbound_data_error.h" +#include "src/variables/matched_var.h" +#include "src/variables/matched_var_name.h" #include "src/variables/modsec_build.h" +#include "src/variables/multipart_crlf_lf_line.h" +#include "src/variables/multipart_data_after.h" +#include "src/variables/multipart_file_limit_exceeded.h" +#include "src/variables/multipart_header_folding.h" +#include "src/variables/multipart_invalid_header_folding.h" +#include "src/variables/multipart_invalid_quoting.h" +#include "src/variables/multipart_strict_error.h" +#include "src/variables/multipart_unmatched_boundary.h" +#include "src/variables/outbound_data_error.h" +#include "src/variables/path_info.h" +#include "src/variables/query_string.h" +#include "src/variables/remote_addr.h" +#include "src/variables/remote_host.h" +#include "src/variables/remote_port.h" #include "src/variables/remote_user.h" +#include "src/variables/reqbody_error.h" +#include "src/variables/reqbody_error_msg.h" +#include "src/variables/reqbody_processor_error.h" +#include "src/variables/reqbody_processor_error_msg.h" +#include "src/variables/reqbody_processor.h" +#include "src/variables/request_base_name.h" +#include "src/variables/request_body.h" +#include "src/variables/request_body_length.h" +#include "src/variables/request_file_name.h" +#include "src/variables/request_headers_names.h" +#include "src/variables/request_line.h" +#include "src/variables/request_method.h" +#include "src/variables/request_protocol.h" +#include "src/variables/request_uri.h" +#include "src/variables/request_uri_raw.h" +#include "src/variables/resources.h" +#include "src/variables/response_body.h" +#include "src/variables/response_content_length.h" +#include "src/variables/response_content_type.h" +#include "src/variables/response_headers_names.h" +#include "src/variables/response_protocol.h" +#include "src/variables/response_status.h" #include "src/variables/rule.h" -#include "src/variables/time.h" +#include "src/variables/server_addr.h" +#include "src/variables/server_name.h" +#include "src/variables/server_port.h" +#include "src/variables/session_id.h" #include "src/variables/time_day.h" #include "src/variables/time_epoch.h" +#include "src/variables/time.h" #include "src/variables/time_hour.h" #include "src/variables/time_min.h" #include "src/variables/time_mon.h" @@ -196,6 +248,11 @@ class Driver; #include "src/variables/time_wday.h" #include "src/variables/time_year.h" #include "src/variables/tx.h" +#include "src/variables/unique_id.h" +#include "src/variables/url_encoded_error.h" +#include "src/variables/user_id.h" +#include "src/variables/variable.h" +#include "src/variables/xml.h" #include "src/variables/variations/count.h" #include "src/variables/variations/exclusion.h" @@ -272,7 +329,7 @@ using modsecurity::operators::Operator; -#line 276 "seclang-parser.hh" // lalr1.cc:377 +#line 333 "seclang-parser.hh" // lalr1.cc:377 # include # include // std::abort @@ -349,7 +406,7 @@ using modsecurity::operators::Operator; namespace yy { -#line 353 "seclang-parser.hh" // lalr1.cc:377 +#line 410 "seclang-parser.hh" // lalr1.cc:377 @@ -563,7 +620,6 @@ namespace yy { // "SetSrc" // "SetSid" // "SetUID" - // "SetVar" // "Severity" // "Skip" // "SkipAfter" @@ -759,206 +815,263 @@ namespace yy { TOK_COMMA = 258, TOK_PIPE = 259, TOK_NEW_LINE = 260, - TOK_VARIABLE_ARGS_NAMES = 261, - TOK_ACTION_ACCURACY = 262, - TOK_ACTION_ALLOW = 263, - TOK_ACTION_APPEND = 264, - TOK_ACTION_AUDIT_LOG = 265, - TOK_ACTION_BLOCK = 266, - TOK_ACTION_CAPTURE = 267, - TOK_ACTION_CHAIN = 268, - TOK_ACTION_CTL_AUDIT_ENGINE = 269, - TOK_ACTION_CTL_AUDIT_LOG_PARTS = 270, - TOK_ACTION_CTL_BDY_JSON = 271, - TOK_ACTION_CTL_BDY_XML = 272, - TOK_ACTION_CTL_FORCE_REQ_BODY_VAR = 273, - TOK_ACTION_CTL_REQUEST_BODY_ACCESS = 274, - TOK_ACTION_CTL_RULE_ENGINE = 275, - TOK_ACTION_CTL_RULE_REMOVE_BY_ID = 276, - TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID = 277, - TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG = 278, - TOK_ACTION_DENY = 279, - TOK_ACTION_DEPRECATE_VAR = 280, - TOK_ACTION_DROP = 281, - TOK_ACTION_EXEC = 282, - TOK_ACTION_EXPIRE_VAR = 283, - TOK_ACTION_ID = 284, - TOK_ACTION_INITCOL = 285, - TOK_ACTION_LOG = 286, - TOK_ACTION_LOG_DATA = 287, - TOK_ACTION_MATURITY = 288, - TOK_ACTION_MSG = 289, - TOK_ACTION_MULTI_MATCH = 290, - TOK_ACTION_NO_AUDIT_LOG = 291, - TOK_ACTION_NO_LOG = 292, - TOK_ACTION_PASS = 293, - TOK_ACTION_PAUSE = 294, - TOK_ACTION_PHASE = 295, - TOK_ACTION_PREPEND = 296, - TOK_ACTION_PROXY = 297, - TOK_ACTION_REDIRECT = 298, - TOK_ACTION_REV = 299, - TOK_ACTION_SANATISE_ARG = 300, - TOK_ACTION_SANATISE_MATCHED = 301, - TOK_ACTION_SANATISE_MATCHED_BYTES = 302, - TOK_ACTION_SANATISE_REQUEST_HEADER = 303, - TOK_ACTION_SANATISE_RESPONSE_HEADER = 304, - TOK_ACTION_SETENV = 305, - TOK_ACTION_SETRSC = 306, - TOK_ACTION_SETSID = 307, - TOK_ACTION_SETUID = 308, - TOK_ACTION_SETVAR = 309, - TOK_ACTION_SEVERITY = 310, - TOK_ACTION_SKIP = 311, - TOK_ACTION_SKIP_AFTER = 312, - TOK_ACTION_STATUS = 313, - TOK_ACTION_TAG = 314, - TOK_ACTION_TRANSFORMATION_CMD_LINE = 315, - TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE = 316, - TOK_ACTION_TRANSFORMATION_CSS_DECODE = 317, - TOK_ACTION_TRANSFORMATION_HEX_ENCODE = 318, - TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE = 319, - TOK_ACTION_TRANSFORMATION_JS_DECODE = 320, - TOK_ACTION_TRANSFORMATION_LENGTH = 321, - TOK_ACTION_TRANSFORMATION_LOWERCASE = 322, - TOK_ACTION_TRANSFORMATION_MD5 = 323, - TOK_ACTION_TRANSFORMATION_NONE = 324, - TOK_ACTION_TRANSFORMATION_NORMALISE_PATH = 325, - TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN = 326, - TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT = 327, - TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT = 328, - TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT = 329, - TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS = 330, - TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR = 331, - TOK_ACTION_TRANSFORMATION_REMOVE_NULLS = 332, - TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE = 333, - TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS = 334, - TOK_ACTION_TRANSFORMATION_REPLACE_NULLS = 335, - TOK_ACTION_TRANSFORMATION_SHA1 = 336, - TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE = 337, - TOK_ACTION_TRANSFORMATION_TRIM = 338, - TOK_ACTION_TRANSFORMATION_URL_DECODE = 339, - TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI = 340, - TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE = 341, - TOK_ACTION_VER = 342, - TOK_ACTION_XMLNS = 343, - TOK_CONFIG_COMPONENT_SIG = 344, - TOK_CONFIG_DIR_AUDIT_DIR = 345, - TOK_CONFIG_DIR_AUDIT_DIR_MOD = 346, - TOK_CONFIG_DIR_AUDIT_ENG = 347, - TOK_CONFIG_DIR_AUDIT_FLE_MOD = 348, - TOK_CONFIG_DIR_AUDIT_LOG = 349, - TOK_CONFIG_DIR_AUDIT_LOG2 = 350, - TOK_CONFIG_DIR_AUDIT_LOG_P = 351, - TOK_CONFIG_DIR_AUDIT_STS = 352, - TOK_CONFIG_DIR_AUDIT_TPE = 353, - TOK_CONFIG_DIR_DEBUG_LOG = 354, - TOK_CONFIG_DIR_DEBUG_LVL = 355, - TOK_CONFIG_DIR_GEO_DB = 356, - TOK_CONFIG_DIR_PCRE_MATCH_LIMIT = 357, - TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION = 358, - TOK_CONFIG_DIR_REQ_BODY = 359, - TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT = 360, - TOK_CONFIG_DIR_REQ_BODY_LIMIT = 361, - TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION = 362, - TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT = 363, - TOK_CONFIG_DIR_RES_BODY = 364, - TOK_CONFIG_DIR_RES_BODY_LIMIT = 365, - TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION = 366, - TOK_CONFIG_DIR_RULE_ENG = 367, - TOK_CONFIG_DIR_SEC_ACTION = 368, - TOK_CONFIG_DIR_SEC_DEFAULT_ACTION = 369, - TOK_CONFIG_DIR_SEC_MARKER = 370, - TOK_CONFIG_DIR_UNICODE_MAP_FILE = 371, - TOK_CONFIG_SEC_COLLECTION_TIMEOUT = 372, - TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION = 373, - TOK_CONFIG_SEC_RULE_REMOVE_BY_ID = 374, - TOK_CONFIG_UPDLOAD_KEEP_FILES = 375, - TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES = 376, - TOK_CONFIG_UPLOAD_DIR = 377, - TOK_CONFIG_UPLOAD_FILE_LIMIT = 378, - TOK_CONFIG_UPLOAD_FILE_MODE = 379, - TOK_CONFIG_VALUE_ABORT = 380, - TOK_CONFIG_VALUE_DETC = 381, - TOK_CONFIG_VALUE_HTTPS = 382, - TOK_CONFIG_VALUE_OFF = 383, - TOK_CONFIG_VALUE_ON = 384, - TOK_CONFIG_VALUE_PARALLEL = 385, - TOK_CONFIG_VALUE_PROCESS_PARTIAL = 386, - TOK_CONFIG_VALUE_REJECT = 387, - TOK_CONFIG_VALUE_RELEVANT_ONLY = 388, - TOK_CONFIG_VALUE_SERIAL = 389, - TOK_CONFIG_VALUE_WARN = 390, - TOK_CONFIG_XML_EXTERNAL_ENTITY = 391, - TOK_CONGIG_DIR_RESPONSE_BODY_MP = 392, - TOK_CONGIG_DIR_SEC_ARG_SEP = 393, - TOK_CONGIG_DIR_SEC_COOKIE_FORMAT = 394, - TOK_CONGIG_DIR_SEC_DATA_DIR = 395, - TOK_CONGIG_DIR_SEC_STATUS_ENGINE = 396, - TOK_CONGIG_DIR_SEC_TMP_DIR = 397, - TOK_DIRECTIVE = 398, - TOK_DIRECTIVE_SECRULESCRIPT = 399, - TOK_FREE_TEXT = 400, - TOK_NOT = 401, - TOK_OPERATOR = 402, - TOK_OPERATOR_BEGINS_WITH = 403, - TOK_OPERATOR_CONTAINS = 404, - TOK_OPERATOR_CONTAINS_WORD = 405, - TOK_OPERATOR_DETECT_SQLI = 406, - TOK_OPERATOR_DETECT_XSS = 407, - TOK_OPERATOR_ENDS_WITH = 408, - TOK_OPERATOR_EQ = 409, - TOK_OPERATOR_FUZZY_HASH = 410, - TOK_OPERATOR_GE = 411, - TOK_OPERATOR_GEOLOOKUP = 412, - TOK_OPERATOR_GSB_LOOKUP = 413, - TOK_OPERATOR_GT = 414, - TOK_OPERATOR_INSPECT_FILE = 415, - TOK_OPERATOR_IP_MATCH = 416, - TOK_OPERATOR_IP_MATCH_FROM_FILE = 417, - TOK_OPERATOR_LE = 418, - TOK_OPERATOR_LT = 419, - TOK_OPERATOR_PM = 420, - TOK_OPERATOR_PM_FROM_FILE = 421, - TOK_OPERATOR_RBL = 422, - TOK_OPERATOR_RSUB = 423, - TOK_OPERATOR_RX = 424, - TOK_OPERATOR_RX_CONTENT_ONLY = 425, - TOK_OPERATOR_STR_EQ = 426, - TOK_OPERATOR_STR_MATCH = 427, - TOK_OPERATOR_UNCONDITIONAL_MATCH = 428, - TOK_OPERATOR_VALIDATE_BYTE_RANGE = 429, - TOK_OPERATOR_VALIDATE_DTD = 430, - TOK_OPERATOR_VALIDATE_HASH = 431, - TOK_OPERATOR_VALIDATE_SCHEMA = 432, - TOK_OPERATOR_VALIDATE_URL_ENCODING = 433, - TOK_OPERATOR_VALIDATE_UTF8_ENCODING = 434, - TOK_OPERATOR_VERIFY_CC = 435, - TOK_OPERATOR_VERIFY_CPF = 436, - TOK_OPERATOR_VERIFY_SSN = 437, - TOK_OPERATOR_WITHIN = 438, - TOK_OP_QUOTE = 439, - TOK_QUOTATION_MARK = 440, - TOK_RUN_TIME_VAR_BLD = 441, - TOK_RUN_TIME_VAR_DUR = 442, - TOK_RUN_TIME_VAR_ENV = 443, - TOK_RUN_TIME_VAR_HSV = 444, - TOK_RUN_TIME_VAR_REMOTE_USER = 445, - TOK_RUN_TIME_VAR_RULE = 446, - TOK_RUN_TIME_VAR_TIME = 447, - TOK_RUN_TIME_VAR_TIME_DAY = 448, - TOK_RUN_TIME_VAR_TIME_EPOCH = 449, - TOK_RUN_TIME_VAR_TIME_HOUR = 450, - TOK_RUN_TIME_VAR_TIME_MIN = 451, - TOK_RUN_TIME_VAR_TIME_MON = 452, - TOK_RUN_TIME_VAR_TIME_SEC = 453, - TOK_RUN_TIME_VAR_TIME_WDAY = 454, - TOK_RUN_TIME_VAR_TIME_YEAR = 455, - TOK_RUN_TIME_VAR_XML = 456, - TOK_VARIABLE = 457, - TOK_VARIABLE_COL = 458, - TOK_VARIABLE_STATUS = 459, - TOK_VARIABLE_TX = 460 + TOK_VARIABLE_ARGS_COMBINED_SIZE = 261, + TOK_VARIABLE_ARGS_GET_NAMES = 262, + TOK_VARIABLE_ARGS_NAMES = 263, + TOK_VARIABLE_ARGS_POST_NAMES = 264, + TOK_VARIABLE_AUTH_TYPE = 265, + TOK_VARIABLE_FILES_COMBINED_SIZE = 266, + TOK_VARIABLE_FILES_TMP_NAMES = 267, + TOK_VARIABLE_FULL_REQUEST = 268, + TOK_VARIABLE_FULL_REQUEST_LENGTH = 269, + TOK_VARIABLE_INBOUND_DATA_ERROR = 270, + TOK_VARIABLE_MATCHED_VAR = 271, + TOK_VARIABLE_MATCHED_VAR_NAME = 272, + TOK_VARIABLE_MULTIPART_CRLF_LF_LINES = 273, + TOK_VARIABLE_MULTIPART_DATA_AFTER = 274, + TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 275, + TOK_VARIABLE_MULTIPART_HEADER_FOLDING = 276, + TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 277, + TOK_VARIABLE_MULTIPART_INVALID_QUOTING = 278, + TOK_VARIABLE_MULTIPART_STRICT_ERROR = 279, + TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 280, + TOK_VARIABLE_OUTBOUND_DATA_ERROR = 281, + TOK_VARIABLE_PATH_INFO = 282, + TOK_VARIABLE_QUERY_STRING = 283, + TOK_VARIABLE_REMOTE_ADDR = 284, + TOK_VARIABLE_REMOTE_HOST = 285, + TOK_VARIABLE_REMOTE_PORT = 286, + TOK_VARIABLE_REQBODY_ERROR_MSG = 287, + TOK_VARIABLE_REQBODY_ERROR = 288, + TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 289, + TOK_VARIABLE_REQBODY_PROCESSOR_ERROR = 290, + TOK_VARIABLE_REQBODY_PROCESSOR = 291, + TOK_VARIABLE_REQUEST_BASENAME = 292, + TOK_VARIABLE_REQUEST_BODY_LENGTH = 293, + TOK_VARIABLE_REQUEST_BODY = 294, + TOK_VARIABLE_REQUEST_FILE_NAME = 295, + TOK_VARIABLE_REQUEST_HEADERS_NAMES = 296, + TOK_VARIABLE_REQUEST_LINE = 297, + TOK_VARIABLE_REQUEST_METHOD = 298, + TOK_VARIABLE_REQUEST_PROTOCOL = 299, + TOK_VARIABLE_REQUEST_URI_RAW = 300, + TOK_VARIABLE_REQUEST_URI = 301, + TOK_VARIABLE_RESOURCE = 302, + TOK_VARIABLE_RESPONSE_BODY = 303, + TOK_VARIABLE_RESPONSE_CONTENT_LENGTH = 304, + TOK_VARIABLE_RESPONSE_CONTENT_TYPE = 305, + TOK_VARIABLE_RESPONSE_HEADERS_NAMES = 306, + TOK_VARIABLE_RESPONSE_PROTOCOL = 307, + TOK_VARIABLE_RESPONSE_STATUS = 308, + TOK_VARIABLE_SERVER_ADDR = 309, + TOK_VARIABLE_SERVER_NAME = 310, + TOK_VARIABLE_SERVER_PORT = 311, + TOK_VARIABLE_SESSION_ID = 312, + TOK_VARIABLE_UNIQUE_ID = 313, + TOK_VARIABLE_URL_ENCODED_ERROR = 314, + TOK_VARIABLE_USER_ID = 315, + TOK_ACTION_SETVAR = 316, + TOK_SETVAR_OPERATION_EQUALS = 317, + TOK_SETVAR_OPERATION_EQUALS_PLUS = 318, + TOK_SETVAR_OPERATION_EQUALS_MINUS = 319, + TOK_ACTION_ACCURACY = 320, + TOK_ACTION_ALLOW = 321, + TOK_ACTION_APPEND = 322, + TOK_ACTION_AUDIT_LOG = 323, + TOK_ACTION_BLOCK = 324, + TOK_ACTION_CAPTURE = 325, + TOK_ACTION_CHAIN = 326, + TOK_ACTION_CTL_AUDIT_ENGINE = 327, + TOK_ACTION_CTL_AUDIT_LOG_PARTS = 328, + TOK_ACTION_CTL_BDY_JSON = 329, + TOK_ACTION_CTL_BDY_XML = 330, + TOK_ACTION_CTL_FORCE_REQ_BODY_VAR = 331, + TOK_ACTION_CTL_REQUEST_BODY_ACCESS = 332, + TOK_ACTION_CTL_RULE_ENGINE = 333, + TOK_ACTION_CTL_RULE_REMOVE_BY_ID = 334, + TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID = 335, + TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG = 336, + TOK_ACTION_DENY = 337, + TOK_ACTION_DEPRECATE_VAR = 338, + TOK_ACTION_DROP = 339, + TOK_ACTION_EXEC = 340, + TOK_ACTION_EXPIRE_VAR = 341, + TOK_ACTION_ID = 342, + TOK_ACTION_INITCOL = 343, + TOK_ACTION_LOG = 344, + TOK_ACTION_LOG_DATA = 345, + TOK_ACTION_MATURITY = 346, + TOK_ACTION_MSG = 347, + TOK_ACTION_MULTI_MATCH = 348, + TOK_ACTION_NO_AUDIT_LOG = 349, + TOK_ACTION_NO_LOG = 350, + TOK_ACTION_PASS = 351, + TOK_ACTION_PAUSE = 352, + TOK_ACTION_PHASE = 353, + TOK_ACTION_PREPEND = 354, + TOK_ACTION_PROXY = 355, + TOK_ACTION_REDIRECT = 356, + TOK_ACTION_REV = 357, + TOK_ACTION_SANATISE_ARG = 358, + TOK_ACTION_SANATISE_MATCHED = 359, + TOK_ACTION_SANATISE_MATCHED_BYTES = 360, + TOK_ACTION_SANATISE_REQUEST_HEADER = 361, + TOK_ACTION_SANATISE_RESPONSE_HEADER = 362, + TOK_ACTION_SETENV = 363, + TOK_ACTION_SETRSC = 364, + TOK_ACTION_SETSID = 365, + TOK_ACTION_SETUID = 366, + TOK_ACTION_SEVERITY = 367, + TOK_ACTION_SKIP = 368, + TOK_ACTION_SKIP_AFTER = 369, + TOK_ACTION_STATUS = 370, + TOK_ACTION_TAG = 371, + TOK_ACTION_TRANSFORMATION_CMD_LINE = 372, + TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE = 373, + TOK_ACTION_TRANSFORMATION_CSS_DECODE = 374, + TOK_ACTION_TRANSFORMATION_HEX_ENCODE = 375, + TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE = 376, + TOK_ACTION_TRANSFORMATION_JS_DECODE = 377, + TOK_ACTION_TRANSFORMATION_LENGTH = 378, + TOK_ACTION_TRANSFORMATION_LOWERCASE = 379, + TOK_ACTION_TRANSFORMATION_MD5 = 380, + TOK_ACTION_TRANSFORMATION_NONE = 381, + TOK_ACTION_TRANSFORMATION_NORMALISE_PATH = 382, + TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN = 383, + TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT = 384, + TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT = 385, + TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT = 386, + TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS = 387, + TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR = 388, + TOK_ACTION_TRANSFORMATION_REMOVE_NULLS = 389, + TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE = 390, + TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS = 391, + TOK_ACTION_TRANSFORMATION_REPLACE_NULLS = 392, + TOK_ACTION_TRANSFORMATION_SHA1 = 393, + TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE = 394, + TOK_ACTION_TRANSFORMATION_TRIM = 395, + TOK_ACTION_TRANSFORMATION_URL_DECODE = 396, + TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI = 397, + TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE = 398, + TOK_ACTION_VER = 399, + TOK_ACTION_XMLNS = 400, + TOK_CONFIG_COMPONENT_SIG = 401, + TOK_CONFIG_DIR_AUDIT_DIR = 402, + TOK_CONFIG_DIR_AUDIT_DIR_MOD = 403, + TOK_CONFIG_DIR_AUDIT_ENG = 404, + TOK_CONFIG_DIR_AUDIT_FLE_MOD = 405, + TOK_CONFIG_DIR_AUDIT_LOG = 406, + TOK_CONFIG_DIR_AUDIT_LOG2 = 407, + TOK_CONFIG_DIR_AUDIT_LOG_P = 408, + TOK_CONFIG_DIR_AUDIT_STS = 409, + TOK_CONFIG_DIR_AUDIT_TPE = 410, + TOK_CONFIG_DIR_DEBUG_LOG = 411, + TOK_CONFIG_DIR_DEBUG_LVL = 412, + TOK_CONFIG_DIR_GEO_DB = 413, + TOK_CONFIG_DIR_PCRE_MATCH_LIMIT = 414, + TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION = 415, + TOK_CONFIG_DIR_REQ_BODY = 416, + TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT = 417, + TOK_CONFIG_DIR_REQ_BODY_LIMIT = 418, + TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION = 419, + TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT = 420, + TOK_CONFIG_DIR_RES_BODY = 421, + TOK_CONFIG_DIR_RES_BODY_LIMIT = 422, + TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION = 423, + TOK_CONFIG_DIR_RULE_ENG = 424, + TOK_CONFIG_DIR_SEC_ACTION = 425, + TOK_CONFIG_DIR_SEC_DEFAULT_ACTION = 426, + TOK_CONFIG_DIR_SEC_MARKER = 427, + TOK_CONFIG_DIR_UNICODE_MAP_FILE = 428, + TOK_CONFIG_SEC_COLLECTION_TIMEOUT = 429, + TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION = 430, + TOK_CONFIG_SEC_RULE_REMOVE_BY_ID = 431, + TOK_CONFIG_UPDLOAD_KEEP_FILES = 432, + TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES = 433, + TOK_CONFIG_UPLOAD_DIR = 434, + TOK_CONFIG_UPLOAD_FILE_LIMIT = 435, + TOK_CONFIG_UPLOAD_FILE_MODE = 436, + TOK_CONFIG_VALUE_ABORT = 437, + TOK_CONFIG_VALUE_DETC = 438, + TOK_CONFIG_VALUE_HTTPS = 439, + TOK_CONFIG_VALUE_OFF = 440, + TOK_CONFIG_VALUE_ON = 441, + TOK_CONFIG_VALUE_PARALLEL = 442, + TOK_CONFIG_VALUE_PROCESS_PARTIAL = 443, + TOK_CONFIG_VALUE_REJECT = 444, + TOK_CONFIG_VALUE_RELEVANT_ONLY = 445, + TOK_CONFIG_VALUE_SERIAL = 446, + TOK_CONFIG_VALUE_WARN = 447, + TOK_CONFIG_XML_EXTERNAL_ENTITY = 448, + TOK_CONGIG_DIR_RESPONSE_BODY_MP = 449, + TOK_CONGIG_DIR_SEC_ARG_SEP = 450, + TOK_CONGIG_DIR_SEC_COOKIE_FORMAT = 451, + TOK_CONGIG_DIR_SEC_DATA_DIR = 452, + TOK_CONGIG_DIR_SEC_STATUS_ENGINE = 453, + TOK_CONGIG_DIR_SEC_TMP_DIR = 454, + TOK_DIRECTIVE = 455, + TOK_DIRECTIVE_SECRULESCRIPT = 456, + TOK_FREE_TEXT = 457, + TOK_NOT = 458, + TOK_OPERATOR = 459, + TOK_OPERATOR_BEGINS_WITH = 460, + TOK_OPERATOR_CONTAINS = 461, + TOK_OPERATOR_CONTAINS_WORD = 462, + TOK_OPERATOR_DETECT_SQLI = 463, + TOK_OPERATOR_DETECT_XSS = 464, + TOK_OPERATOR_ENDS_WITH = 465, + TOK_OPERATOR_EQ = 466, + TOK_OPERATOR_FUZZY_HASH = 467, + TOK_OPERATOR_GE = 468, + TOK_OPERATOR_GEOLOOKUP = 469, + TOK_OPERATOR_GSB_LOOKUP = 470, + TOK_OPERATOR_GT = 471, + TOK_OPERATOR_INSPECT_FILE = 472, + TOK_OPERATOR_IP_MATCH = 473, + TOK_OPERATOR_IP_MATCH_FROM_FILE = 474, + TOK_OPERATOR_LE = 475, + TOK_OPERATOR_LT = 476, + TOK_OPERATOR_PM = 477, + TOK_OPERATOR_PM_FROM_FILE = 478, + TOK_OPERATOR_RBL = 479, + TOK_OPERATOR_RSUB = 480, + TOK_OPERATOR_RX = 481, + TOK_OPERATOR_RX_CONTENT_ONLY = 482, + TOK_OPERATOR_STR_EQ = 483, + TOK_OPERATOR_STR_MATCH = 484, + TOK_OPERATOR_UNCONDITIONAL_MATCH = 485, + TOK_OPERATOR_VALIDATE_BYTE_RANGE = 486, + TOK_OPERATOR_VALIDATE_DTD = 487, + TOK_OPERATOR_VALIDATE_HASH = 488, + TOK_OPERATOR_VALIDATE_SCHEMA = 489, + TOK_OPERATOR_VALIDATE_URL_ENCODING = 490, + TOK_OPERATOR_VALIDATE_UTF8_ENCODING = 491, + TOK_OPERATOR_VERIFY_CC = 492, + TOK_OPERATOR_VERIFY_CPF = 493, + TOK_OPERATOR_VERIFY_SSN = 494, + TOK_OPERATOR_WITHIN = 495, + TOK_OP_QUOTE = 496, + TOK_QUOTATION_MARK = 497, + TOK_RUN_TIME_VAR_BLD = 498, + TOK_RUN_TIME_VAR_DUR = 499, + TOK_RUN_TIME_VAR_ENV = 500, + TOK_RUN_TIME_VAR_HSV = 501, + TOK_RUN_TIME_VAR_REMOTE_USER = 502, + TOK_RUN_TIME_VAR_RULE = 503, + TOK_RUN_TIME_VAR_TIME = 504, + TOK_RUN_TIME_VAR_TIME_DAY = 505, + TOK_RUN_TIME_VAR_TIME_EPOCH = 506, + TOK_RUN_TIME_VAR_TIME_HOUR = 507, + TOK_RUN_TIME_VAR_TIME_MIN = 508, + TOK_RUN_TIME_VAR_TIME_MON = 509, + TOK_RUN_TIME_VAR_TIME_SEC = 510, + TOK_RUN_TIME_VAR_TIME_WDAY = 511, + TOK_RUN_TIME_VAR_TIME_YEAR = 512, + TOK_RUN_TIME_VAR_XML = 513, + TOK_VARIABLE = 514, + TOK_VARIABLE_COL = 515, + TOK_VARIABLE_STATUS = 516, + TOK_VARIABLE_TX = 517 }; }; @@ -972,7 +1085,7 @@ namespace yy { enum { empty_symbol = -2 }; /// Internal symbol number for tokens (subsumed by symbol_number_type). - typedef unsigned char token_number_type; + typedef unsigned short int token_number_type; /// A complete symbol. /// @@ -1091,10 +1204,242 @@ namespace yy { symbol_type make_NEW_LINE (const location_type& l); + static inline + symbol_type + make_VARIABLE_ARGS_COMBINED_SIZE (const location_type& l); + + static inline + symbol_type + make_VARIABLE_ARGS_GET_NAMES (const location_type& l); + static inline symbol_type make_VARIABLE_ARGS_NAMES (const location_type& l); + static inline + symbol_type + make_VARIABLE_ARGS_POST_NAMES (const location_type& l); + + static inline + symbol_type + make_VARIABLE_AUTH_TYPE (const location_type& l); + + static inline + symbol_type + make_VARIABLE_FILES_COMBINED_SIZE (const location_type& l); + + static inline + symbol_type + make_VARIABLE_FILES_TMP_NAMES (const location_type& l); + + static inline + symbol_type + make_VARIABLE_FULL_REQUEST (const location_type& l); + + static inline + symbol_type + make_VARIABLE_FULL_REQUEST_LENGTH (const location_type& l); + + static inline + symbol_type + make_VARIABLE_INBOUND_DATA_ERROR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MATCHED_VAR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MATCHED_VAR_NAME (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_CRLF_LF_LINES (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_DATA_AFTER (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_HEADER_FOLDING (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_INVALID_QUOTING (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_STRICT_ERROR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (const location_type& l); + + static inline + symbol_type + make_VARIABLE_OUTBOUND_DATA_ERROR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_PATH_INFO (const location_type& l); + + static inline + symbol_type + make_VARIABLE_QUERY_STRING (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REMOTE_ADDR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REMOTE_HOST (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REMOTE_PORT (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQBODY_ERROR_MSG (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQBODY_ERROR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQBODY_PROCESSOR_ERROR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQBODY_PROCESSOR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_BASENAME (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_BODY_LENGTH (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_BODY (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_FILE_NAME (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_HEADERS_NAMES (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_LINE (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_METHOD (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_PROTOCOL (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_URI_RAW (const location_type& l); + + static inline + symbol_type + make_VARIABLE_REQUEST_URI (const location_type& l); + + static inline + symbol_type + make_VARIABLE_RESOURCE (const location_type& l); + + static inline + symbol_type + make_VARIABLE_RESPONSE_BODY (const location_type& l); + + static inline + symbol_type + make_VARIABLE_RESPONSE_CONTENT_LENGTH (const location_type& l); + + static inline + symbol_type + make_VARIABLE_RESPONSE_CONTENT_TYPE (const location_type& l); + + static inline + symbol_type + make_VARIABLE_RESPONSE_HEADERS_NAMES (const location_type& l); + + static inline + symbol_type + make_VARIABLE_RESPONSE_PROTOCOL (const location_type& l); + + static inline + symbol_type + make_VARIABLE_RESPONSE_STATUS (const location_type& l); + + static inline + symbol_type + make_VARIABLE_SERVER_ADDR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_SERVER_NAME (const location_type& l); + + static inline + symbol_type + make_VARIABLE_SERVER_PORT (const location_type& l); + + static inline + symbol_type + make_VARIABLE_SESSION_ID (const location_type& l); + + static inline + symbol_type + make_VARIABLE_UNIQUE_ID (const location_type& l); + + static inline + symbol_type + make_VARIABLE_URL_ENCODED_ERROR (const location_type& l); + + static inline + symbol_type + make_VARIABLE_USER_ID (const location_type& l); + + static inline + symbol_type + make_ACTION_SETVAR (const location_type& l); + + static inline + symbol_type + make_SETVAR_OPERATION_EQUALS (const location_type& l); + + static inline + symbol_type + make_SETVAR_OPERATION_EQUALS_PLUS (const location_type& l); + + static inline + symbol_type + make_SETVAR_OPERATION_EQUALS_MINUS (const location_type& l); + static inline symbol_type make_ACTION_ACCURACY (const std::string& v, const location_type& l); @@ -1283,10 +1628,6 @@ namespace yy { symbol_type make_ACTION_SETUID (const std::string& v, const location_type& l); - static inline - symbol_type - make_ACTION_SETVAR (const std::string& v, const location_type& l); - static inline symbol_type make_ACTION_SEVERITY (const std::string& v, const location_type& l); @@ -1963,7 +2304,7 @@ namespace yy { // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. // Performed when YYTABLE does not specify something else to do. Zero // means the default is an error. - static const unsigned char yydefact_[]; + static const unsigned short int yydefact_[]; // YYPGOTO[NTERM-NUM]. static const short int yypgoto_[]; @@ -1980,10 +2321,10 @@ namespace yy { // YYSTOS[STATE-NUM] -- The (internal number of the) accessing // symbol of state STATE-NUM. - static const unsigned char yystos_[]; + static const unsigned short int yystos_[]; // YYR1[YYN] -- Symbol number of symbol that rule YYN derives. - static const unsigned char yyr1_[]; + static const unsigned short int yyr1_[]; // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. static const unsigned char yyr2_[]; @@ -2096,12 +2437,12 @@ namespace yy { enum { yyeof_ = 0, - yylast_ = 512, ///< Last index in yytable_. + yylast_ = 580, ///< Last index in yytable_. yynnts_ = 12, ///< Number of nonterminal symbols. - yyfinal_ = 187, ///< Termination state number. + yyfinal_ = 240, ///< Termination state number. yyterror_ = 1, yyerrcode_ = 256, - yyntokens_ = 206 ///< Number of tokens. + yyntokens_ = 263 ///< Number of tokens. }; @@ -2164,9 +2505,14 @@ namespace yy { 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205 + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262 }; - const unsigned int user_token_number_max_ = 460; + const unsigned int user_token_number_max_ = 517; const token_number_type undef_token_ = 2; if (static_cast(t) <= yyeof_) @@ -2199,227 +2545,226 @@ namespace yy { { switch (other.type_get ()) { - case 7: // "Accuracy" - case 8: // "Allow" - case 9: // "Append" - case 10: // "AuditLog" - case 11: // "Block" - case 12: // "Capture" - case 13: // "Chain" - case 14: // "ACTION_CTL_AUDIT_ENGINE" - case 15: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 16: // "ACTION_CTL_BDY_JSON" - case 17: // "ACTION_CTL_BDY_XML" - case 18: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 19: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 20: // "ACTION_CTL_RULE_ENGINE" - case 21: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 22: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 23: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 24: // "Deny" - case 25: // "DeprecateVar" - case 26: // "Drop" - case 27: // "Exec" - case 28: // "ExpireVar" - case 29: // "Id" - case 30: // "InitCol" - case 31: // "Log" - case 32: // "LogData" - case 33: // "Maturity" - case 34: // "Msg" - case 35: // "MultiMatch" - case 36: // "NoAuditLog" - case 37: // "NoLog" - case 38: // "Pass" - case 39: // "Pause" - case 40: // "Phase" - case 41: // "Prepend" - case 42: // "Proxy" - case 43: // "Redirect" - case 44: // "Rev" - case 45: // "SanatiseArg" - case 46: // "SanatiseMatched" - case 47: // "SanatiseMatchedBytes" - case 48: // "SanatiseRequestHeader" - case 49: // "SanatiseResponseHeader" - case 50: // "SetEnv" - case 51: // "SetSrc" - case 52: // "SetSid" - case 53: // "SetUID" - case 54: // "SetVar" - case 55: // "Severity" - case 56: // "Skip" - case 57: // "SkipAfter" - case 58: // "Status" - case 59: // "Tag" - case 60: // "ACTION_TRANSFORMATION_CMD_LINE" - case 61: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 62: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 63: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 64: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 65: // "ACTION_TRANSFORMATION_JS_DECODE" - case 66: // "ACTION_TRANSFORMATION_LENGTH" - case 67: // "ACTION_TRANSFORMATION_LOWERCASE" - case 68: // "ACTION_TRANSFORMATION_MD5" - case 69: // "ACTION_TRANSFORMATION_NONE" - case 70: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 71: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 72: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 73: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 74: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 75: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 76: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 77: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 78: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 79: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 80: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 81: // "ACTION_TRANSFORMATION_SHA1" - case 82: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 83: // "ACTION_TRANSFORMATION_TRIM" - case 84: // "ACTION_TRANSFORMATION_URL_DECODE" - case 85: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 86: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 87: // "Ver" - case 88: // "xmlns" - case 89: // "CONFIG_COMPONENT_SIG" - case 90: // "CONFIG_DIR_AUDIT_DIR" - case 91: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 92: // "CONFIG_DIR_AUDIT_ENG" - case 93: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 94: // "CONFIG_DIR_AUDIT_LOG" - case 95: // "CONFIG_DIR_AUDIT_LOG2" - case 96: // "CONFIG_DIR_AUDIT_LOG_P" - case 97: // "CONFIG_DIR_AUDIT_STS" - case 98: // "CONFIG_DIR_AUDIT_TPE" - case 99: // "CONFIG_DIR_DEBUG_LOG" - case 100: // "CONFIG_DIR_DEBUG_LVL" - case 101: // "CONFIG_DIR_GEO_DB" - case 102: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 103: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 104: // "CONFIG_DIR_REQ_BODY" - case 105: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 106: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 107: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 108: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 109: // "CONFIG_DIR_RES_BODY" - case 110: // "CONFIG_DIR_RES_BODY_LIMIT" - case 111: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 112: // "CONFIG_DIR_RULE_ENG" - case 113: // "CONFIG_DIR_SEC_ACTION" - case 114: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 115: // "CONFIG_DIR_SEC_MARKER" - case 116: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 117: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 118: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 119: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 120: // "CONFIG_UPDLOAD_KEEP_FILES" - case 121: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 122: // "CONFIG_UPLOAD_DIR" - case 123: // "CONFIG_UPLOAD_FILE_LIMIT" - case 124: // "CONFIG_UPLOAD_FILE_MODE" - case 125: // "CONFIG_VALUE_ABORT" - case 126: // "CONFIG_VALUE_DETC" - case 127: // "CONFIG_VALUE_HTTPS" - case 128: // "CONFIG_VALUE_OFF" - case 129: // "CONFIG_VALUE_ON" - case 130: // "CONFIG_VALUE_PARALLEL" - case 131: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 132: // "CONFIG_VALUE_REJECT" - case 133: // "CONFIG_VALUE_RELEVANT_ONLY" - case 134: // "CONFIG_VALUE_SERIAL" - case 135: // "CONFIG_VALUE_WARN" - case 136: // "CONFIG_XML_EXTERNAL_ENTITY" - case 137: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 138: // "CONGIG_DIR_SEC_ARG_SEP" - case 139: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 140: // "CONGIG_DIR_SEC_DATA_DIR" - case 141: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 142: // "CONGIG_DIR_SEC_TMP_DIR" - case 143: // "DIRECTIVE" - case 144: // "DIRECTIVE_SECRULESCRIPT" - case 145: // "FREE_TEXT" - case 146: // "NOT" - case 147: // "OPERATOR" - case 148: // "OPERATOR_BEGINS_WITH" - case 149: // "OPERATOR_CONTAINS" - case 150: // "OPERATOR_CONTAINS_WORD" - case 151: // "OPERATOR_DETECT_SQLI" - case 152: // "OPERATOR_DETECT_XSS" - case 153: // "OPERATOR_ENDS_WITH" - case 154: // "OPERATOR_EQ" - case 155: // "OPERATOR_FUZZY_HASH" - case 156: // "OPERATOR_GE" - case 157: // "OPERATOR_GEOLOOKUP" - case 158: // "OPERATOR_GSB_LOOKUP" - case 159: // "OPERATOR_GT" - case 160: // "OPERATOR_INSPECT_FILE" - case 161: // "OPERATOR_IP_MATCH" - case 162: // "OPERATOR_IP_MATCH_FROM_FILE" - case 163: // "OPERATOR_LE" - case 164: // "OPERATOR_LT" - case 165: // "OPERATOR_PM" - case 166: // "OPERATOR_PM_FROM_FILE" - case 167: // "OPERATOR_RBL" - case 168: // "OPERATOR_RSUB" - case 169: // "OPERATOR_RX" - case 170: // "Operator Rx" - case 171: // "OPERATOR_STR_EQ" - case 172: // "OPERATOR_STR_MATCH" - case 173: // "OPERATOR_UNCONDITIONAL_MATCH" - case 174: // "OPERATOR_VALIDATE_BYTE_RANGE" - case 175: // "OPERATOR_VALIDATE_DTD" - case 176: // "OPERATOR_VALIDATE_HASH" - case 177: // "OPERATOR_VALIDATE_SCHEMA" - case 178: // "OPERATOR_VALIDATE_URL_ENCODING" - case 179: // "OPERATOR_VALIDATE_UTF8_ENCODING" - case 180: // "OPERATOR_VERIFY_CC" - case 181: // "OPERATOR_VERIFY_CPF" - case 182: // "OPERATOR_VERIFY_SSN" - case 183: // "OPERATOR_WITHIN" - case 184: // "OP_QUOTE" - case 185: // "QUOTATION_MARK" - case 186: // "RUN_TIME_VAR_BLD" - case 187: // "RUN_TIME_VAR_DUR" - case 188: // "RUN_TIME_VAR_ENV" - case 189: // "RUN_TIME_VAR_HSV" - case 190: // "RUN_TIME_VAR_REMOTE_USER" - case 191: // "RUN_TIME_VAR_RULE" - case 192: // "RUN_TIME_VAR_TIME" - case 193: // "RUN_TIME_VAR_TIME_DAY" - case 194: // "RUN_TIME_VAR_TIME_EPOCH" - case 195: // "RUN_TIME_VAR_TIME_HOUR" - case 196: // "RUN_TIME_VAR_TIME_MIN" - case 197: // "RUN_TIME_VAR_TIME_MON" - case 198: // "RUN_TIME_VAR_TIME_SEC" - case 199: // "RUN_TIME_VAR_TIME_WDAY" - case 200: // "RUN_TIME_VAR_TIME_YEAR" - case 201: // "RUN_TIME_VAR_XML" - case 202: // "VARIABLE" - case 203: // "VARIABLE_COL" - case 204: // "VARIABLE_STATUS" - case 205: // "VARIABLE_TX" + case 65: // "Accuracy" + case 66: // "Allow" + case 67: // "Append" + case 68: // "AuditLog" + case 69: // "Block" + case 70: // "Capture" + case 71: // "Chain" + case 72: // "ACTION_CTL_AUDIT_ENGINE" + case 73: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 74: // "ACTION_CTL_BDY_JSON" + case 75: // "ACTION_CTL_BDY_XML" + case 76: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 77: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 78: // "ACTION_CTL_RULE_ENGINE" + case 79: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 80: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 81: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 82: // "Deny" + case 83: // "DeprecateVar" + case 84: // "Drop" + case 85: // "Exec" + case 86: // "ExpireVar" + case 87: // "Id" + case 88: // "InitCol" + case 89: // "Log" + case 90: // "LogData" + case 91: // "Maturity" + case 92: // "Msg" + case 93: // "MultiMatch" + case 94: // "NoAuditLog" + case 95: // "NoLog" + case 96: // "Pass" + case 97: // "Pause" + case 98: // "Phase" + case 99: // "Prepend" + case 100: // "Proxy" + case 101: // "Redirect" + case 102: // "Rev" + case 103: // "SanatiseArg" + case 104: // "SanatiseMatched" + case 105: // "SanatiseMatchedBytes" + case 106: // "SanatiseRequestHeader" + case 107: // "SanatiseResponseHeader" + case 108: // "SetEnv" + case 109: // "SetSrc" + case 110: // "SetSid" + case 111: // "SetUID" + case 112: // "Severity" + case 113: // "Skip" + case 114: // "SkipAfter" + case 115: // "Status" + case 116: // "Tag" + case 117: // "ACTION_TRANSFORMATION_CMD_LINE" + case 118: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 119: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 120: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 121: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 122: // "ACTION_TRANSFORMATION_JS_DECODE" + case 123: // "ACTION_TRANSFORMATION_LENGTH" + case 124: // "ACTION_TRANSFORMATION_LOWERCASE" + case 125: // "ACTION_TRANSFORMATION_MD5" + case 126: // "ACTION_TRANSFORMATION_NONE" + case 127: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 128: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 129: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 130: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 131: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 132: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 133: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 134: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 135: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 136: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 137: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 138: // "ACTION_TRANSFORMATION_SHA1" + case 139: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 140: // "ACTION_TRANSFORMATION_TRIM" + case 141: // "ACTION_TRANSFORMATION_URL_DECODE" + case 142: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 143: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 144: // "Ver" + case 145: // "xmlns" + case 146: // "CONFIG_COMPONENT_SIG" + case 147: // "CONFIG_DIR_AUDIT_DIR" + case 148: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 149: // "CONFIG_DIR_AUDIT_ENG" + case 150: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 151: // "CONFIG_DIR_AUDIT_LOG" + case 152: // "CONFIG_DIR_AUDIT_LOG2" + case 153: // "CONFIG_DIR_AUDIT_LOG_P" + case 154: // "CONFIG_DIR_AUDIT_STS" + case 155: // "CONFIG_DIR_AUDIT_TPE" + case 156: // "CONFIG_DIR_DEBUG_LOG" + case 157: // "CONFIG_DIR_DEBUG_LVL" + case 158: // "CONFIG_DIR_GEO_DB" + case 159: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 160: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 161: // "CONFIG_DIR_REQ_BODY" + case 162: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 163: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 164: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 165: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 166: // "CONFIG_DIR_RES_BODY" + case 167: // "CONFIG_DIR_RES_BODY_LIMIT" + case 168: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 169: // "CONFIG_DIR_RULE_ENG" + case 170: // "CONFIG_DIR_SEC_ACTION" + case 171: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 172: // "CONFIG_DIR_SEC_MARKER" + case 173: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 174: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 175: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 176: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 177: // "CONFIG_UPDLOAD_KEEP_FILES" + case 178: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 179: // "CONFIG_UPLOAD_DIR" + case 180: // "CONFIG_UPLOAD_FILE_LIMIT" + case 181: // "CONFIG_UPLOAD_FILE_MODE" + case 182: // "CONFIG_VALUE_ABORT" + case 183: // "CONFIG_VALUE_DETC" + case 184: // "CONFIG_VALUE_HTTPS" + case 185: // "CONFIG_VALUE_OFF" + case 186: // "CONFIG_VALUE_ON" + case 187: // "CONFIG_VALUE_PARALLEL" + case 188: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 189: // "CONFIG_VALUE_REJECT" + case 190: // "CONFIG_VALUE_RELEVANT_ONLY" + case 191: // "CONFIG_VALUE_SERIAL" + case 192: // "CONFIG_VALUE_WARN" + case 193: // "CONFIG_XML_EXTERNAL_ENTITY" + case 194: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 195: // "CONGIG_DIR_SEC_ARG_SEP" + case 196: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 197: // "CONGIG_DIR_SEC_DATA_DIR" + case 198: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 199: // "CONGIG_DIR_SEC_TMP_DIR" + case 200: // "DIRECTIVE" + case 201: // "DIRECTIVE_SECRULESCRIPT" + case 202: // "FREE_TEXT" + case 203: // "NOT" + case 204: // "OPERATOR" + case 205: // "OPERATOR_BEGINS_WITH" + case 206: // "OPERATOR_CONTAINS" + case 207: // "OPERATOR_CONTAINS_WORD" + case 208: // "OPERATOR_DETECT_SQLI" + case 209: // "OPERATOR_DETECT_XSS" + case 210: // "OPERATOR_ENDS_WITH" + case 211: // "OPERATOR_EQ" + case 212: // "OPERATOR_FUZZY_HASH" + case 213: // "OPERATOR_GE" + case 214: // "OPERATOR_GEOLOOKUP" + case 215: // "OPERATOR_GSB_LOOKUP" + case 216: // "OPERATOR_GT" + case 217: // "OPERATOR_INSPECT_FILE" + case 218: // "OPERATOR_IP_MATCH" + case 219: // "OPERATOR_IP_MATCH_FROM_FILE" + case 220: // "OPERATOR_LE" + case 221: // "OPERATOR_LT" + case 222: // "OPERATOR_PM" + case 223: // "OPERATOR_PM_FROM_FILE" + case 224: // "OPERATOR_RBL" + case 225: // "OPERATOR_RSUB" + case 226: // "OPERATOR_RX" + case 227: // "Operator Rx" + case 228: // "OPERATOR_STR_EQ" + case 229: // "OPERATOR_STR_MATCH" + case 230: // "OPERATOR_UNCONDITIONAL_MATCH" + case 231: // "OPERATOR_VALIDATE_BYTE_RANGE" + case 232: // "OPERATOR_VALIDATE_DTD" + case 233: // "OPERATOR_VALIDATE_HASH" + case 234: // "OPERATOR_VALIDATE_SCHEMA" + case 235: // "OPERATOR_VALIDATE_URL_ENCODING" + case 236: // "OPERATOR_VALIDATE_UTF8_ENCODING" + case 237: // "OPERATOR_VERIFY_CC" + case 238: // "OPERATOR_VERIFY_CPF" + case 239: // "OPERATOR_VERIFY_SSN" + case 240: // "OPERATOR_WITHIN" + case 241: // "OP_QUOTE" + case 242: // "QUOTATION_MARK" + case 243: // "RUN_TIME_VAR_BLD" + case 244: // "RUN_TIME_VAR_DUR" + case 245: // "RUN_TIME_VAR_ENV" + case 246: // "RUN_TIME_VAR_HSV" + case 247: // "RUN_TIME_VAR_REMOTE_USER" + case 248: // "RUN_TIME_VAR_RULE" + case 249: // "RUN_TIME_VAR_TIME" + case 250: // "RUN_TIME_VAR_TIME_DAY" + case 251: // "RUN_TIME_VAR_TIME_EPOCH" + case 252: // "RUN_TIME_VAR_TIME_HOUR" + case 253: // "RUN_TIME_VAR_TIME_MIN" + case 254: // "RUN_TIME_VAR_TIME_MON" + case 255: // "RUN_TIME_VAR_TIME_SEC" + case 256: // "RUN_TIME_VAR_TIME_WDAY" + case 257: // "RUN_TIME_VAR_TIME_YEAR" + case 258: // "RUN_TIME_VAR_XML" + case 259: // "VARIABLE" + case 260: // "VARIABLE_COL" + case 261: // "VARIABLE_STATUS" + case 262: // "VARIABLE_TX" value.copy< std::string > (other.value); break; - case 212: // op - case 213: // op_before_init + case 269: // op + case 270: // op_before_init value.copy< std::unique_ptr > (other.value); break; - case 216: // var + case 273: // var value.copy< std::unique_ptr > (other.value); break; - case 217: // act + case 274: // act value.copy< std::unique_ptr > (other.value); break; - case 215: // variables + case 272: // variables value.copy< std::unique_ptr > > > (other.value); break; - case 210: // actions - case 211: // actions_may_quoted + case 267: // actions + case 268: // actions_may_quoted value.copy< std::unique_ptr > > > (other.value); break; @@ -2440,227 +2785,226 @@ namespace yy { (void) v; switch (this->type_get ()) { - case 7: // "Accuracy" - case 8: // "Allow" - case 9: // "Append" - case 10: // "AuditLog" - case 11: // "Block" - case 12: // "Capture" - case 13: // "Chain" - case 14: // "ACTION_CTL_AUDIT_ENGINE" - case 15: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 16: // "ACTION_CTL_BDY_JSON" - case 17: // "ACTION_CTL_BDY_XML" - case 18: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 19: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 20: // "ACTION_CTL_RULE_ENGINE" - case 21: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 22: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 23: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 24: // "Deny" - case 25: // "DeprecateVar" - case 26: // "Drop" - case 27: // "Exec" - case 28: // "ExpireVar" - case 29: // "Id" - case 30: // "InitCol" - case 31: // "Log" - case 32: // "LogData" - case 33: // "Maturity" - case 34: // "Msg" - case 35: // "MultiMatch" - case 36: // "NoAuditLog" - case 37: // "NoLog" - case 38: // "Pass" - case 39: // "Pause" - case 40: // "Phase" - case 41: // "Prepend" - case 42: // "Proxy" - case 43: // "Redirect" - case 44: // "Rev" - case 45: // "SanatiseArg" - case 46: // "SanatiseMatched" - case 47: // "SanatiseMatchedBytes" - case 48: // "SanatiseRequestHeader" - case 49: // "SanatiseResponseHeader" - case 50: // "SetEnv" - case 51: // "SetSrc" - case 52: // "SetSid" - case 53: // "SetUID" - case 54: // "SetVar" - case 55: // "Severity" - case 56: // "Skip" - case 57: // "SkipAfter" - case 58: // "Status" - case 59: // "Tag" - case 60: // "ACTION_TRANSFORMATION_CMD_LINE" - case 61: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 62: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 63: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 64: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 65: // "ACTION_TRANSFORMATION_JS_DECODE" - case 66: // "ACTION_TRANSFORMATION_LENGTH" - case 67: // "ACTION_TRANSFORMATION_LOWERCASE" - case 68: // "ACTION_TRANSFORMATION_MD5" - case 69: // "ACTION_TRANSFORMATION_NONE" - case 70: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 71: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 72: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 73: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 74: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 75: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 76: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 77: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 78: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 79: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 80: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 81: // "ACTION_TRANSFORMATION_SHA1" - case 82: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 83: // "ACTION_TRANSFORMATION_TRIM" - case 84: // "ACTION_TRANSFORMATION_URL_DECODE" - case 85: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 86: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 87: // "Ver" - case 88: // "xmlns" - case 89: // "CONFIG_COMPONENT_SIG" - case 90: // "CONFIG_DIR_AUDIT_DIR" - case 91: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 92: // "CONFIG_DIR_AUDIT_ENG" - case 93: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 94: // "CONFIG_DIR_AUDIT_LOG" - case 95: // "CONFIG_DIR_AUDIT_LOG2" - case 96: // "CONFIG_DIR_AUDIT_LOG_P" - case 97: // "CONFIG_DIR_AUDIT_STS" - case 98: // "CONFIG_DIR_AUDIT_TPE" - case 99: // "CONFIG_DIR_DEBUG_LOG" - case 100: // "CONFIG_DIR_DEBUG_LVL" - case 101: // "CONFIG_DIR_GEO_DB" - case 102: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 103: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 104: // "CONFIG_DIR_REQ_BODY" - case 105: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 106: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 107: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 108: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 109: // "CONFIG_DIR_RES_BODY" - case 110: // "CONFIG_DIR_RES_BODY_LIMIT" - case 111: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 112: // "CONFIG_DIR_RULE_ENG" - case 113: // "CONFIG_DIR_SEC_ACTION" - case 114: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 115: // "CONFIG_DIR_SEC_MARKER" - case 116: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 117: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 118: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 119: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 120: // "CONFIG_UPDLOAD_KEEP_FILES" - case 121: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 122: // "CONFIG_UPLOAD_DIR" - case 123: // "CONFIG_UPLOAD_FILE_LIMIT" - case 124: // "CONFIG_UPLOAD_FILE_MODE" - case 125: // "CONFIG_VALUE_ABORT" - case 126: // "CONFIG_VALUE_DETC" - case 127: // "CONFIG_VALUE_HTTPS" - case 128: // "CONFIG_VALUE_OFF" - case 129: // "CONFIG_VALUE_ON" - case 130: // "CONFIG_VALUE_PARALLEL" - case 131: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 132: // "CONFIG_VALUE_REJECT" - case 133: // "CONFIG_VALUE_RELEVANT_ONLY" - case 134: // "CONFIG_VALUE_SERIAL" - case 135: // "CONFIG_VALUE_WARN" - case 136: // "CONFIG_XML_EXTERNAL_ENTITY" - case 137: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 138: // "CONGIG_DIR_SEC_ARG_SEP" - case 139: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 140: // "CONGIG_DIR_SEC_DATA_DIR" - case 141: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 142: // "CONGIG_DIR_SEC_TMP_DIR" - case 143: // "DIRECTIVE" - case 144: // "DIRECTIVE_SECRULESCRIPT" - case 145: // "FREE_TEXT" - case 146: // "NOT" - case 147: // "OPERATOR" - case 148: // "OPERATOR_BEGINS_WITH" - case 149: // "OPERATOR_CONTAINS" - case 150: // "OPERATOR_CONTAINS_WORD" - case 151: // "OPERATOR_DETECT_SQLI" - case 152: // "OPERATOR_DETECT_XSS" - case 153: // "OPERATOR_ENDS_WITH" - case 154: // "OPERATOR_EQ" - case 155: // "OPERATOR_FUZZY_HASH" - case 156: // "OPERATOR_GE" - case 157: // "OPERATOR_GEOLOOKUP" - case 158: // "OPERATOR_GSB_LOOKUP" - case 159: // "OPERATOR_GT" - case 160: // "OPERATOR_INSPECT_FILE" - case 161: // "OPERATOR_IP_MATCH" - case 162: // "OPERATOR_IP_MATCH_FROM_FILE" - case 163: // "OPERATOR_LE" - case 164: // "OPERATOR_LT" - case 165: // "OPERATOR_PM" - case 166: // "OPERATOR_PM_FROM_FILE" - case 167: // "OPERATOR_RBL" - case 168: // "OPERATOR_RSUB" - case 169: // "OPERATOR_RX" - case 170: // "Operator Rx" - case 171: // "OPERATOR_STR_EQ" - case 172: // "OPERATOR_STR_MATCH" - case 173: // "OPERATOR_UNCONDITIONAL_MATCH" - case 174: // "OPERATOR_VALIDATE_BYTE_RANGE" - case 175: // "OPERATOR_VALIDATE_DTD" - case 176: // "OPERATOR_VALIDATE_HASH" - case 177: // "OPERATOR_VALIDATE_SCHEMA" - case 178: // "OPERATOR_VALIDATE_URL_ENCODING" - case 179: // "OPERATOR_VALIDATE_UTF8_ENCODING" - case 180: // "OPERATOR_VERIFY_CC" - case 181: // "OPERATOR_VERIFY_CPF" - case 182: // "OPERATOR_VERIFY_SSN" - case 183: // "OPERATOR_WITHIN" - case 184: // "OP_QUOTE" - case 185: // "QUOTATION_MARK" - case 186: // "RUN_TIME_VAR_BLD" - case 187: // "RUN_TIME_VAR_DUR" - case 188: // "RUN_TIME_VAR_ENV" - case 189: // "RUN_TIME_VAR_HSV" - case 190: // "RUN_TIME_VAR_REMOTE_USER" - case 191: // "RUN_TIME_VAR_RULE" - case 192: // "RUN_TIME_VAR_TIME" - case 193: // "RUN_TIME_VAR_TIME_DAY" - case 194: // "RUN_TIME_VAR_TIME_EPOCH" - case 195: // "RUN_TIME_VAR_TIME_HOUR" - case 196: // "RUN_TIME_VAR_TIME_MIN" - case 197: // "RUN_TIME_VAR_TIME_MON" - case 198: // "RUN_TIME_VAR_TIME_SEC" - case 199: // "RUN_TIME_VAR_TIME_WDAY" - case 200: // "RUN_TIME_VAR_TIME_YEAR" - case 201: // "RUN_TIME_VAR_XML" - case 202: // "VARIABLE" - case 203: // "VARIABLE_COL" - case 204: // "VARIABLE_STATUS" - case 205: // "VARIABLE_TX" + case 65: // "Accuracy" + case 66: // "Allow" + case 67: // "Append" + case 68: // "AuditLog" + case 69: // "Block" + case 70: // "Capture" + case 71: // "Chain" + case 72: // "ACTION_CTL_AUDIT_ENGINE" + case 73: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 74: // "ACTION_CTL_BDY_JSON" + case 75: // "ACTION_CTL_BDY_XML" + case 76: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 77: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 78: // "ACTION_CTL_RULE_ENGINE" + case 79: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 80: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 81: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 82: // "Deny" + case 83: // "DeprecateVar" + case 84: // "Drop" + case 85: // "Exec" + case 86: // "ExpireVar" + case 87: // "Id" + case 88: // "InitCol" + case 89: // "Log" + case 90: // "LogData" + case 91: // "Maturity" + case 92: // "Msg" + case 93: // "MultiMatch" + case 94: // "NoAuditLog" + case 95: // "NoLog" + case 96: // "Pass" + case 97: // "Pause" + case 98: // "Phase" + case 99: // "Prepend" + case 100: // "Proxy" + case 101: // "Redirect" + case 102: // "Rev" + case 103: // "SanatiseArg" + case 104: // "SanatiseMatched" + case 105: // "SanatiseMatchedBytes" + case 106: // "SanatiseRequestHeader" + case 107: // "SanatiseResponseHeader" + case 108: // "SetEnv" + case 109: // "SetSrc" + case 110: // "SetSid" + case 111: // "SetUID" + case 112: // "Severity" + case 113: // "Skip" + case 114: // "SkipAfter" + case 115: // "Status" + case 116: // "Tag" + case 117: // "ACTION_TRANSFORMATION_CMD_LINE" + case 118: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 119: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 120: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 121: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 122: // "ACTION_TRANSFORMATION_JS_DECODE" + case 123: // "ACTION_TRANSFORMATION_LENGTH" + case 124: // "ACTION_TRANSFORMATION_LOWERCASE" + case 125: // "ACTION_TRANSFORMATION_MD5" + case 126: // "ACTION_TRANSFORMATION_NONE" + case 127: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 128: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 129: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 130: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 131: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 132: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 133: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 134: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 135: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 136: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 137: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 138: // "ACTION_TRANSFORMATION_SHA1" + case 139: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 140: // "ACTION_TRANSFORMATION_TRIM" + case 141: // "ACTION_TRANSFORMATION_URL_DECODE" + case 142: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 143: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 144: // "Ver" + case 145: // "xmlns" + case 146: // "CONFIG_COMPONENT_SIG" + case 147: // "CONFIG_DIR_AUDIT_DIR" + case 148: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 149: // "CONFIG_DIR_AUDIT_ENG" + case 150: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 151: // "CONFIG_DIR_AUDIT_LOG" + case 152: // "CONFIG_DIR_AUDIT_LOG2" + case 153: // "CONFIG_DIR_AUDIT_LOG_P" + case 154: // "CONFIG_DIR_AUDIT_STS" + case 155: // "CONFIG_DIR_AUDIT_TPE" + case 156: // "CONFIG_DIR_DEBUG_LOG" + case 157: // "CONFIG_DIR_DEBUG_LVL" + case 158: // "CONFIG_DIR_GEO_DB" + case 159: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 160: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 161: // "CONFIG_DIR_REQ_BODY" + case 162: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 163: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 164: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 165: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 166: // "CONFIG_DIR_RES_BODY" + case 167: // "CONFIG_DIR_RES_BODY_LIMIT" + case 168: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 169: // "CONFIG_DIR_RULE_ENG" + case 170: // "CONFIG_DIR_SEC_ACTION" + case 171: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 172: // "CONFIG_DIR_SEC_MARKER" + case 173: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 174: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 175: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 176: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 177: // "CONFIG_UPDLOAD_KEEP_FILES" + case 178: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 179: // "CONFIG_UPLOAD_DIR" + case 180: // "CONFIG_UPLOAD_FILE_LIMIT" + case 181: // "CONFIG_UPLOAD_FILE_MODE" + case 182: // "CONFIG_VALUE_ABORT" + case 183: // "CONFIG_VALUE_DETC" + case 184: // "CONFIG_VALUE_HTTPS" + case 185: // "CONFIG_VALUE_OFF" + case 186: // "CONFIG_VALUE_ON" + case 187: // "CONFIG_VALUE_PARALLEL" + case 188: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 189: // "CONFIG_VALUE_REJECT" + case 190: // "CONFIG_VALUE_RELEVANT_ONLY" + case 191: // "CONFIG_VALUE_SERIAL" + case 192: // "CONFIG_VALUE_WARN" + case 193: // "CONFIG_XML_EXTERNAL_ENTITY" + case 194: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 195: // "CONGIG_DIR_SEC_ARG_SEP" + case 196: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 197: // "CONGIG_DIR_SEC_DATA_DIR" + case 198: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 199: // "CONGIG_DIR_SEC_TMP_DIR" + case 200: // "DIRECTIVE" + case 201: // "DIRECTIVE_SECRULESCRIPT" + case 202: // "FREE_TEXT" + case 203: // "NOT" + case 204: // "OPERATOR" + case 205: // "OPERATOR_BEGINS_WITH" + case 206: // "OPERATOR_CONTAINS" + case 207: // "OPERATOR_CONTAINS_WORD" + case 208: // "OPERATOR_DETECT_SQLI" + case 209: // "OPERATOR_DETECT_XSS" + case 210: // "OPERATOR_ENDS_WITH" + case 211: // "OPERATOR_EQ" + case 212: // "OPERATOR_FUZZY_HASH" + case 213: // "OPERATOR_GE" + case 214: // "OPERATOR_GEOLOOKUP" + case 215: // "OPERATOR_GSB_LOOKUP" + case 216: // "OPERATOR_GT" + case 217: // "OPERATOR_INSPECT_FILE" + case 218: // "OPERATOR_IP_MATCH" + case 219: // "OPERATOR_IP_MATCH_FROM_FILE" + case 220: // "OPERATOR_LE" + case 221: // "OPERATOR_LT" + case 222: // "OPERATOR_PM" + case 223: // "OPERATOR_PM_FROM_FILE" + case 224: // "OPERATOR_RBL" + case 225: // "OPERATOR_RSUB" + case 226: // "OPERATOR_RX" + case 227: // "Operator Rx" + case 228: // "OPERATOR_STR_EQ" + case 229: // "OPERATOR_STR_MATCH" + case 230: // "OPERATOR_UNCONDITIONAL_MATCH" + case 231: // "OPERATOR_VALIDATE_BYTE_RANGE" + case 232: // "OPERATOR_VALIDATE_DTD" + case 233: // "OPERATOR_VALIDATE_HASH" + case 234: // "OPERATOR_VALIDATE_SCHEMA" + case 235: // "OPERATOR_VALIDATE_URL_ENCODING" + case 236: // "OPERATOR_VALIDATE_UTF8_ENCODING" + case 237: // "OPERATOR_VERIFY_CC" + case 238: // "OPERATOR_VERIFY_CPF" + case 239: // "OPERATOR_VERIFY_SSN" + case 240: // "OPERATOR_WITHIN" + case 241: // "OP_QUOTE" + case 242: // "QUOTATION_MARK" + case 243: // "RUN_TIME_VAR_BLD" + case 244: // "RUN_TIME_VAR_DUR" + case 245: // "RUN_TIME_VAR_ENV" + case 246: // "RUN_TIME_VAR_HSV" + case 247: // "RUN_TIME_VAR_REMOTE_USER" + case 248: // "RUN_TIME_VAR_RULE" + case 249: // "RUN_TIME_VAR_TIME" + case 250: // "RUN_TIME_VAR_TIME_DAY" + case 251: // "RUN_TIME_VAR_TIME_EPOCH" + case 252: // "RUN_TIME_VAR_TIME_HOUR" + case 253: // "RUN_TIME_VAR_TIME_MIN" + case 254: // "RUN_TIME_VAR_TIME_MON" + case 255: // "RUN_TIME_VAR_TIME_SEC" + case 256: // "RUN_TIME_VAR_TIME_WDAY" + case 257: // "RUN_TIME_VAR_TIME_YEAR" + case 258: // "RUN_TIME_VAR_XML" + case 259: // "VARIABLE" + case 260: // "VARIABLE_COL" + case 261: // "VARIABLE_STATUS" + case 262: // "VARIABLE_TX" value.copy< std::string > (v); break; - case 212: // op - case 213: // op_before_init + case 269: // op + case 270: // op_before_init value.copy< std::unique_ptr > (v); break; - case 216: // var + case 273: // var value.copy< std::unique_ptr > (v); break; - case 217: // act + case 274: // act value.copy< std::unique_ptr > (v); break; - case 215: // variables + case 272: // variables value.copy< std::unique_ptr > > > (v); break; - case 210: // actions - case 211: // actions_may_quoted + case 267: // actions + case 268: // actions_may_quoted value.copy< std::unique_ptr > > > (v); break; @@ -2747,227 +3091,226 @@ namespace yy { // Type destructor. switch (yytype) { - case 7: // "Accuracy" - case 8: // "Allow" - case 9: // "Append" - case 10: // "AuditLog" - case 11: // "Block" - case 12: // "Capture" - case 13: // "Chain" - case 14: // "ACTION_CTL_AUDIT_ENGINE" - case 15: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 16: // "ACTION_CTL_BDY_JSON" - case 17: // "ACTION_CTL_BDY_XML" - case 18: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 19: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 20: // "ACTION_CTL_RULE_ENGINE" - case 21: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 22: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 23: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 24: // "Deny" - case 25: // "DeprecateVar" - case 26: // "Drop" - case 27: // "Exec" - case 28: // "ExpireVar" - case 29: // "Id" - case 30: // "InitCol" - case 31: // "Log" - case 32: // "LogData" - case 33: // "Maturity" - case 34: // "Msg" - case 35: // "MultiMatch" - case 36: // "NoAuditLog" - case 37: // "NoLog" - case 38: // "Pass" - case 39: // "Pause" - case 40: // "Phase" - case 41: // "Prepend" - case 42: // "Proxy" - case 43: // "Redirect" - case 44: // "Rev" - case 45: // "SanatiseArg" - case 46: // "SanatiseMatched" - case 47: // "SanatiseMatchedBytes" - case 48: // "SanatiseRequestHeader" - case 49: // "SanatiseResponseHeader" - case 50: // "SetEnv" - case 51: // "SetSrc" - case 52: // "SetSid" - case 53: // "SetUID" - case 54: // "SetVar" - case 55: // "Severity" - case 56: // "Skip" - case 57: // "SkipAfter" - case 58: // "Status" - case 59: // "Tag" - case 60: // "ACTION_TRANSFORMATION_CMD_LINE" - case 61: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 62: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 63: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 64: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 65: // "ACTION_TRANSFORMATION_JS_DECODE" - case 66: // "ACTION_TRANSFORMATION_LENGTH" - case 67: // "ACTION_TRANSFORMATION_LOWERCASE" - case 68: // "ACTION_TRANSFORMATION_MD5" - case 69: // "ACTION_TRANSFORMATION_NONE" - case 70: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 71: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 72: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 73: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 74: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 75: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 76: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 77: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 78: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 79: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 80: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 81: // "ACTION_TRANSFORMATION_SHA1" - case 82: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 83: // "ACTION_TRANSFORMATION_TRIM" - case 84: // "ACTION_TRANSFORMATION_URL_DECODE" - case 85: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 86: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 87: // "Ver" - case 88: // "xmlns" - case 89: // "CONFIG_COMPONENT_SIG" - case 90: // "CONFIG_DIR_AUDIT_DIR" - case 91: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 92: // "CONFIG_DIR_AUDIT_ENG" - case 93: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 94: // "CONFIG_DIR_AUDIT_LOG" - case 95: // "CONFIG_DIR_AUDIT_LOG2" - case 96: // "CONFIG_DIR_AUDIT_LOG_P" - case 97: // "CONFIG_DIR_AUDIT_STS" - case 98: // "CONFIG_DIR_AUDIT_TPE" - case 99: // "CONFIG_DIR_DEBUG_LOG" - case 100: // "CONFIG_DIR_DEBUG_LVL" - case 101: // "CONFIG_DIR_GEO_DB" - case 102: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 103: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 104: // "CONFIG_DIR_REQ_BODY" - case 105: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 106: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 107: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 108: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 109: // "CONFIG_DIR_RES_BODY" - case 110: // "CONFIG_DIR_RES_BODY_LIMIT" - case 111: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 112: // "CONFIG_DIR_RULE_ENG" - case 113: // "CONFIG_DIR_SEC_ACTION" - case 114: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 115: // "CONFIG_DIR_SEC_MARKER" - case 116: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 117: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 118: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 119: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 120: // "CONFIG_UPDLOAD_KEEP_FILES" - case 121: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 122: // "CONFIG_UPLOAD_DIR" - case 123: // "CONFIG_UPLOAD_FILE_LIMIT" - case 124: // "CONFIG_UPLOAD_FILE_MODE" - case 125: // "CONFIG_VALUE_ABORT" - case 126: // "CONFIG_VALUE_DETC" - case 127: // "CONFIG_VALUE_HTTPS" - case 128: // "CONFIG_VALUE_OFF" - case 129: // "CONFIG_VALUE_ON" - case 130: // "CONFIG_VALUE_PARALLEL" - case 131: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 132: // "CONFIG_VALUE_REJECT" - case 133: // "CONFIG_VALUE_RELEVANT_ONLY" - case 134: // "CONFIG_VALUE_SERIAL" - case 135: // "CONFIG_VALUE_WARN" - case 136: // "CONFIG_XML_EXTERNAL_ENTITY" - case 137: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 138: // "CONGIG_DIR_SEC_ARG_SEP" - case 139: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 140: // "CONGIG_DIR_SEC_DATA_DIR" - case 141: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 142: // "CONGIG_DIR_SEC_TMP_DIR" - case 143: // "DIRECTIVE" - case 144: // "DIRECTIVE_SECRULESCRIPT" - case 145: // "FREE_TEXT" - case 146: // "NOT" - case 147: // "OPERATOR" - case 148: // "OPERATOR_BEGINS_WITH" - case 149: // "OPERATOR_CONTAINS" - case 150: // "OPERATOR_CONTAINS_WORD" - case 151: // "OPERATOR_DETECT_SQLI" - case 152: // "OPERATOR_DETECT_XSS" - case 153: // "OPERATOR_ENDS_WITH" - case 154: // "OPERATOR_EQ" - case 155: // "OPERATOR_FUZZY_HASH" - case 156: // "OPERATOR_GE" - case 157: // "OPERATOR_GEOLOOKUP" - case 158: // "OPERATOR_GSB_LOOKUP" - case 159: // "OPERATOR_GT" - case 160: // "OPERATOR_INSPECT_FILE" - case 161: // "OPERATOR_IP_MATCH" - case 162: // "OPERATOR_IP_MATCH_FROM_FILE" - case 163: // "OPERATOR_LE" - case 164: // "OPERATOR_LT" - case 165: // "OPERATOR_PM" - case 166: // "OPERATOR_PM_FROM_FILE" - case 167: // "OPERATOR_RBL" - case 168: // "OPERATOR_RSUB" - case 169: // "OPERATOR_RX" - case 170: // "Operator Rx" - case 171: // "OPERATOR_STR_EQ" - case 172: // "OPERATOR_STR_MATCH" - case 173: // "OPERATOR_UNCONDITIONAL_MATCH" - case 174: // "OPERATOR_VALIDATE_BYTE_RANGE" - case 175: // "OPERATOR_VALIDATE_DTD" - case 176: // "OPERATOR_VALIDATE_HASH" - case 177: // "OPERATOR_VALIDATE_SCHEMA" - case 178: // "OPERATOR_VALIDATE_URL_ENCODING" - case 179: // "OPERATOR_VALIDATE_UTF8_ENCODING" - case 180: // "OPERATOR_VERIFY_CC" - case 181: // "OPERATOR_VERIFY_CPF" - case 182: // "OPERATOR_VERIFY_SSN" - case 183: // "OPERATOR_WITHIN" - case 184: // "OP_QUOTE" - case 185: // "QUOTATION_MARK" - case 186: // "RUN_TIME_VAR_BLD" - case 187: // "RUN_TIME_VAR_DUR" - case 188: // "RUN_TIME_VAR_ENV" - case 189: // "RUN_TIME_VAR_HSV" - case 190: // "RUN_TIME_VAR_REMOTE_USER" - case 191: // "RUN_TIME_VAR_RULE" - case 192: // "RUN_TIME_VAR_TIME" - case 193: // "RUN_TIME_VAR_TIME_DAY" - case 194: // "RUN_TIME_VAR_TIME_EPOCH" - case 195: // "RUN_TIME_VAR_TIME_HOUR" - case 196: // "RUN_TIME_VAR_TIME_MIN" - case 197: // "RUN_TIME_VAR_TIME_MON" - case 198: // "RUN_TIME_VAR_TIME_SEC" - case 199: // "RUN_TIME_VAR_TIME_WDAY" - case 200: // "RUN_TIME_VAR_TIME_YEAR" - case 201: // "RUN_TIME_VAR_XML" - case 202: // "VARIABLE" - case 203: // "VARIABLE_COL" - case 204: // "VARIABLE_STATUS" - case 205: // "VARIABLE_TX" + case 65: // "Accuracy" + case 66: // "Allow" + case 67: // "Append" + case 68: // "AuditLog" + case 69: // "Block" + case 70: // "Capture" + case 71: // "Chain" + case 72: // "ACTION_CTL_AUDIT_ENGINE" + case 73: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 74: // "ACTION_CTL_BDY_JSON" + case 75: // "ACTION_CTL_BDY_XML" + case 76: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 77: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 78: // "ACTION_CTL_RULE_ENGINE" + case 79: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 80: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 81: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 82: // "Deny" + case 83: // "DeprecateVar" + case 84: // "Drop" + case 85: // "Exec" + case 86: // "ExpireVar" + case 87: // "Id" + case 88: // "InitCol" + case 89: // "Log" + case 90: // "LogData" + case 91: // "Maturity" + case 92: // "Msg" + case 93: // "MultiMatch" + case 94: // "NoAuditLog" + case 95: // "NoLog" + case 96: // "Pass" + case 97: // "Pause" + case 98: // "Phase" + case 99: // "Prepend" + case 100: // "Proxy" + case 101: // "Redirect" + case 102: // "Rev" + case 103: // "SanatiseArg" + case 104: // "SanatiseMatched" + case 105: // "SanatiseMatchedBytes" + case 106: // "SanatiseRequestHeader" + case 107: // "SanatiseResponseHeader" + case 108: // "SetEnv" + case 109: // "SetSrc" + case 110: // "SetSid" + case 111: // "SetUID" + case 112: // "Severity" + case 113: // "Skip" + case 114: // "SkipAfter" + case 115: // "Status" + case 116: // "Tag" + case 117: // "ACTION_TRANSFORMATION_CMD_LINE" + case 118: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 119: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 120: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 121: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 122: // "ACTION_TRANSFORMATION_JS_DECODE" + case 123: // "ACTION_TRANSFORMATION_LENGTH" + case 124: // "ACTION_TRANSFORMATION_LOWERCASE" + case 125: // "ACTION_TRANSFORMATION_MD5" + case 126: // "ACTION_TRANSFORMATION_NONE" + case 127: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 128: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 129: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 130: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 131: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 132: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 133: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 134: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 135: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 136: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 137: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 138: // "ACTION_TRANSFORMATION_SHA1" + case 139: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 140: // "ACTION_TRANSFORMATION_TRIM" + case 141: // "ACTION_TRANSFORMATION_URL_DECODE" + case 142: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 143: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 144: // "Ver" + case 145: // "xmlns" + case 146: // "CONFIG_COMPONENT_SIG" + case 147: // "CONFIG_DIR_AUDIT_DIR" + case 148: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 149: // "CONFIG_DIR_AUDIT_ENG" + case 150: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 151: // "CONFIG_DIR_AUDIT_LOG" + case 152: // "CONFIG_DIR_AUDIT_LOG2" + case 153: // "CONFIG_DIR_AUDIT_LOG_P" + case 154: // "CONFIG_DIR_AUDIT_STS" + case 155: // "CONFIG_DIR_AUDIT_TPE" + case 156: // "CONFIG_DIR_DEBUG_LOG" + case 157: // "CONFIG_DIR_DEBUG_LVL" + case 158: // "CONFIG_DIR_GEO_DB" + case 159: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 160: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 161: // "CONFIG_DIR_REQ_BODY" + case 162: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 163: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 164: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 165: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 166: // "CONFIG_DIR_RES_BODY" + case 167: // "CONFIG_DIR_RES_BODY_LIMIT" + case 168: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 169: // "CONFIG_DIR_RULE_ENG" + case 170: // "CONFIG_DIR_SEC_ACTION" + case 171: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 172: // "CONFIG_DIR_SEC_MARKER" + case 173: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 174: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 175: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 176: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 177: // "CONFIG_UPDLOAD_KEEP_FILES" + case 178: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 179: // "CONFIG_UPLOAD_DIR" + case 180: // "CONFIG_UPLOAD_FILE_LIMIT" + case 181: // "CONFIG_UPLOAD_FILE_MODE" + case 182: // "CONFIG_VALUE_ABORT" + case 183: // "CONFIG_VALUE_DETC" + case 184: // "CONFIG_VALUE_HTTPS" + case 185: // "CONFIG_VALUE_OFF" + case 186: // "CONFIG_VALUE_ON" + case 187: // "CONFIG_VALUE_PARALLEL" + case 188: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 189: // "CONFIG_VALUE_REJECT" + case 190: // "CONFIG_VALUE_RELEVANT_ONLY" + case 191: // "CONFIG_VALUE_SERIAL" + case 192: // "CONFIG_VALUE_WARN" + case 193: // "CONFIG_XML_EXTERNAL_ENTITY" + case 194: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 195: // "CONGIG_DIR_SEC_ARG_SEP" + case 196: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 197: // "CONGIG_DIR_SEC_DATA_DIR" + case 198: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 199: // "CONGIG_DIR_SEC_TMP_DIR" + case 200: // "DIRECTIVE" + case 201: // "DIRECTIVE_SECRULESCRIPT" + case 202: // "FREE_TEXT" + case 203: // "NOT" + case 204: // "OPERATOR" + case 205: // "OPERATOR_BEGINS_WITH" + case 206: // "OPERATOR_CONTAINS" + case 207: // "OPERATOR_CONTAINS_WORD" + case 208: // "OPERATOR_DETECT_SQLI" + case 209: // "OPERATOR_DETECT_XSS" + case 210: // "OPERATOR_ENDS_WITH" + case 211: // "OPERATOR_EQ" + case 212: // "OPERATOR_FUZZY_HASH" + case 213: // "OPERATOR_GE" + case 214: // "OPERATOR_GEOLOOKUP" + case 215: // "OPERATOR_GSB_LOOKUP" + case 216: // "OPERATOR_GT" + case 217: // "OPERATOR_INSPECT_FILE" + case 218: // "OPERATOR_IP_MATCH" + case 219: // "OPERATOR_IP_MATCH_FROM_FILE" + case 220: // "OPERATOR_LE" + case 221: // "OPERATOR_LT" + case 222: // "OPERATOR_PM" + case 223: // "OPERATOR_PM_FROM_FILE" + case 224: // "OPERATOR_RBL" + case 225: // "OPERATOR_RSUB" + case 226: // "OPERATOR_RX" + case 227: // "Operator Rx" + case 228: // "OPERATOR_STR_EQ" + case 229: // "OPERATOR_STR_MATCH" + case 230: // "OPERATOR_UNCONDITIONAL_MATCH" + case 231: // "OPERATOR_VALIDATE_BYTE_RANGE" + case 232: // "OPERATOR_VALIDATE_DTD" + case 233: // "OPERATOR_VALIDATE_HASH" + case 234: // "OPERATOR_VALIDATE_SCHEMA" + case 235: // "OPERATOR_VALIDATE_URL_ENCODING" + case 236: // "OPERATOR_VALIDATE_UTF8_ENCODING" + case 237: // "OPERATOR_VERIFY_CC" + case 238: // "OPERATOR_VERIFY_CPF" + case 239: // "OPERATOR_VERIFY_SSN" + case 240: // "OPERATOR_WITHIN" + case 241: // "OP_QUOTE" + case 242: // "QUOTATION_MARK" + case 243: // "RUN_TIME_VAR_BLD" + case 244: // "RUN_TIME_VAR_DUR" + case 245: // "RUN_TIME_VAR_ENV" + case 246: // "RUN_TIME_VAR_HSV" + case 247: // "RUN_TIME_VAR_REMOTE_USER" + case 248: // "RUN_TIME_VAR_RULE" + case 249: // "RUN_TIME_VAR_TIME" + case 250: // "RUN_TIME_VAR_TIME_DAY" + case 251: // "RUN_TIME_VAR_TIME_EPOCH" + case 252: // "RUN_TIME_VAR_TIME_HOUR" + case 253: // "RUN_TIME_VAR_TIME_MIN" + case 254: // "RUN_TIME_VAR_TIME_MON" + case 255: // "RUN_TIME_VAR_TIME_SEC" + case 256: // "RUN_TIME_VAR_TIME_WDAY" + case 257: // "RUN_TIME_VAR_TIME_YEAR" + case 258: // "RUN_TIME_VAR_XML" + case 259: // "VARIABLE" + case 260: // "VARIABLE_COL" + case 261: // "VARIABLE_STATUS" + case 262: // "VARIABLE_TX" value.template destroy< std::string > (); break; - case 212: // op - case 213: // op_before_init + case 269: // op + case 270: // op_before_init value.template destroy< std::unique_ptr > (); break; - case 216: // var + case 273: // var value.template destroy< std::unique_ptr > (); break; - case 217: // act + case 274: // act value.template destroy< std::unique_ptr > (); break; - case 215: // variables + case 272: // variables value.template destroy< std::unique_ptr > > > (); break; - case 210: // actions - case 211: // actions_may_quoted + case 267: // actions + case 268: // actions_may_quoted value.template destroy< std::unique_ptr > > > (); break; @@ -2994,227 +3337,226 @@ namespace yy { super_type::move(s); switch (this->type_get ()) { - case 7: // "Accuracy" - case 8: // "Allow" - case 9: // "Append" - case 10: // "AuditLog" - case 11: // "Block" - case 12: // "Capture" - case 13: // "Chain" - case 14: // "ACTION_CTL_AUDIT_ENGINE" - case 15: // "ACTION_CTL_AUDIT_LOG_PARTS" - case 16: // "ACTION_CTL_BDY_JSON" - case 17: // "ACTION_CTL_BDY_XML" - case 18: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case 19: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case 20: // "ACTION_CTL_RULE_ENGINE" - case 21: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case 22: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case 23: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case 24: // "Deny" - case 25: // "DeprecateVar" - case 26: // "Drop" - case 27: // "Exec" - case 28: // "ExpireVar" - case 29: // "Id" - case 30: // "InitCol" - case 31: // "Log" - case 32: // "LogData" - case 33: // "Maturity" - case 34: // "Msg" - case 35: // "MultiMatch" - case 36: // "NoAuditLog" - case 37: // "NoLog" - case 38: // "Pass" - case 39: // "Pause" - case 40: // "Phase" - case 41: // "Prepend" - case 42: // "Proxy" - case 43: // "Redirect" - case 44: // "Rev" - case 45: // "SanatiseArg" - case 46: // "SanatiseMatched" - case 47: // "SanatiseMatchedBytes" - case 48: // "SanatiseRequestHeader" - case 49: // "SanatiseResponseHeader" - case 50: // "SetEnv" - case 51: // "SetSrc" - case 52: // "SetSid" - case 53: // "SetUID" - case 54: // "SetVar" - case 55: // "Severity" - case 56: // "Skip" - case 57: // "SkipAfter" - case 58: // "Status" - case 59: // "Tag" - case 60: // "ACTION_TRANSFORMATION_CMD_LINE" - case 61: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case 62: // "ACTION_TRANSFORMATION_CSS_DECODE" - case 63: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case 64: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case 65: // "ACTION_TRANSFORMATION_JS_DECODE" - case 66: // "ACTION_TRANSFORMATION_LENGTH" - case 67: // "ACTION_TRANSFORMATION_LOWERCASE" - case 68: // "ACTION_TRANSFORMATION_MD5" - case 69: // "ACTION_TRANSFORMATION_NONE" - case 70: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case 71: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case 72: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case 73: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case 74: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case 75: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case 76: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case 77: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case 78: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case 79: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case 80: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case 81: // "ACTION_TRANSFORMATION_SHA1" - case 82: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case 83: // "ACTION_TRANSFORMATION_TRIM" - case 84: // "ACTION_TRANSFORMATION_URL_DECODE" - case 85: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case 86: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case 87: // "Ver" - case 88: // "xmlns" - case 89: // "CONFIG_COMPONENT_SIG" - case 90: // "CONFIG_DIR_AUDIT_DIR" - case 91: // "CONFIG_DIR_AUDIT_DIR_MOD" - case 92: // "CONFIG_DIR_AUDIT_ENG" - case 93: // "CONFIG_DIR_AUDIT_FLE_MOD" - case 94: // "CONFIG_DIR_AUDIT_LOG" - case 95: // "CONFIG_DIR_AUDIT_LOG2" - case 96: // "CONFIG_DIR_AUDIT_LOG_P" - case 97: // "CONFIG_DIR_AUDIT_STS" - case 98: // "CONFIG_DIR_AUDIT_TPE" - case 99: // "CONFIG_DIR_DEBUG_LOG" - case 100: // "CONFIG_DIR_DEBUG_LVL" - case 101: // "CONFIG_DIR_GEO_DB" - case 102: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case 103: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case 104: // "CONFIG_DIR_REQ_BODY" - case 105: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case 106: // "CONFIG_DIR_REQ_BODY_LIMIT" - case 107: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case 108: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case 109: // "CONFIG_DIR_RES_BODY" - case 110: // "CONFIG_DIR_RES_BODY_LIMIT" - case 111: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case 112: // "CONFIG_DIR_RULE_ENG" - case 113: // "CONFIG_DIR_SEC_ACTION" - case 114: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case 115: // "CONFIG_DIR_SEC_MARKER" - case 116: // "CONFIG_DIR_UNICODE_MAP_FILE" - case 117: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case 118: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case 119: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case 120: // "CONFIG_UPDLOAD_KEEP_FILES" - case 121: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case 122: // "CONFIG_UPLOAD_DIR" - case 123: // "CONFIG_UPLOAD_FILE_LIMIT" - case 124: // "CONFIG_UPLOAD_FILE_MODE" - case 125: // "CONFIG_VALUE_ABORT" - case 126: // "CONFIG_VALUE_DETC" - case 127: // "CONFIG_VALUE_HTTPS" - case 128: // "CONFIG_VALUE_OFF" - case 129: // "CONFIG_VALUE_ON" - case 130: // "CONFIG_VALUE_PARALLEL" - case 131: // "CONFIG_VALUE_PROCESS_PARTIAL" - case 132: // "CONFIG_VALUE_REJECT" - case 133: // "CONFIG_VALUE_RELEVANT_ONLY" - case 134: // "CONFIG_VALUE_SERIAL" - case 135: // "CONFIG_VALUE_WARN" - case 136: // "CONFIG_XML_EXTERNAL_ENTITY" - case 137: // "CONGIG_DIR_RESPONSE_BODY_MP" - case 138: // "CONGIG_DIR_SEC_ARG_SEP" - case 139: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case 140: // "CONGIG_DIR_SEC_DATA_DIR" - case 141: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case 142: // "CONGIG_DIR_SEC_TMP_DIR" - case 143: // "DIRECTIVE" - case 144: // "DIRECTIVE_SECRULESCRIPT" - case 145: // "FREE_TEXT" - case 146: // "NOT" - case 147: // "OPERATOR" - case 148: // "OPERATOR_BEGINS_WITH" - case 149: // "OPERATOR_CONTAINS" - case 150: // "OPERATOR_CONTAINS_WORD" - case 151: // "OPERATOR_DETECT_SQLI" - case 152: // "OPERATOR_DETECT_XSS" - case 153: // "OPERATOR_ENDS_WITH" - case 154: // "OPERATOR_EQ" - case 155: // "OPERATOR_FUZZY_HASH" - case 156: // "OPERATOR_GE" - case 157: // "OPERATOR_GEOLOOKUP" - case 158: // "OPERATOR_GSB_LOOKUP" - case 159: // "OPERATOR_GT" - case 160: // "OPERATOR_INSPECT_FILE" - case 161: // "OPERATOR_IP_MATCH" - case 162: // "OPERATOR_IP_MATCH_FROM_FILE" - case 163: // "OPERATOR_LE" - case 164: // "OPERATOR_LT" - case 165: // "OPERATOR_PM" - case 166: // "OPERATOR_PM_FROM_FILE" - case 167: // "OPERATOR_RBL" - case 168: // "OPERATOR_RSUB" - case 169: // "OPERATOR_RX" - case 170: // "Operator Rx" - case 171: // "OPERATOR_STR_EQ" - case 172: // "OPERATOR_STR_MATCH" - case 173: // "OPERATOR_UNCONDITIONAL_MATCH" - case 174: // "OPERATOR_VALIDATE_BYTE_RANGE" - case 175: // "OPERATOR_VALIDATE_DTD" - case 176: // "OPERATOR_VALIDATE_HASH" - case 177: // "OPERATOR_VALIDATE_SCHEMA" - case 178: // "OPERATOR_VALIDATE_URL_ENCODING" - case 179: // "OPERATOR_VALIDATE_UTF8_ENCODING" - case 180: // "OPERATOR_VERIFY_CC" - case 181: // "OPERATOR_VERIFY_CPF" - case 182: // "OPERATOR_VERIFY_SSN" - case 183: // "OPERATOR_WITHIN" - case 184: // "OP_QUOTE" - case 185: // "QUOTATION_MARK" - case 186: // "RUN_TIME_VAR_BLD" - case 187: // "RUN_TIME_VAR_DUR" - case 188: // "RUN_TIME_VAR_ENV" - case 189: // "RUN_TIME_VAR_HSV" - case 190: // "RUN_TIME_VAR_REMOTE_USER" - case 191: // "RUN_TIME_VAR_RULE" - case 192: // "RUN_TIME_VAR_TIME" - case 193: // "RUN_TIME_VAR_TIME_DAY" - case 194: // "RUN_TIME_VAR_TIME_EPOCH" - case 195: // "RUN_TIME_VAR_TIME_HOUR" - case 196: // "RUN_TIME_VAR_TIME_MIN" - case 197: // "RUN_TIME_VAR_TIME_MON" - case 198: // "RUN_TIME_VAR_TIME_SEC" - case 199: // "RUN_TIME_VAR_TIME_WDAY" - case 200: // "RUN_TIME_VAR_TIME_YEAR" - case 201: // "RUN_TIME_VAR_XML" - case 202: // "VARIABLE" - case 203: // "VARIABLE_COL" - case 204: // "VARIABLE_STATUS" - case 205: // "VARIABLE_TX" + case 65: // "Accuracy" + case 66: // "Allow" + case 67: // "Append" + case 68: // "AuditLog" + case 69: // "Block" + case 70: // "Capture" + case 71: // "Chain" + case 72: // "ACTION_CTL_AUDIT_ENGINE" + case 73: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 74: // "ACTION_CTL_BDY_JSON" + case 75: // "ACTION_CTL_BDY_XML" + case 76: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 77: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 78: // "ACTION_CTL_RULE_ENGINE" + case 79: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 80: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 81: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 82: // "Deny" + case 83: // "DeprecateVar" + case 84: // "Drop" + case 85: // "Exec" + case 86: // "ExpireVar" + case 87: // "Id" + case 88: // "InitCol" + case 89: // "Log" + case 90: // "LogData" + case 91: // "Maturity" + case 92: // "Msg" + case 93: // "MultiMatch" + case 94: // "NoAuditLog" + case 95: // "NoLog" + case 96: // "Pass" + case 97: // "Pause" + case 98: // "Phase" + case 99: // "Prepend" + case 100: // "Proxy" + case 101: // "Redirect" + case 102: // "Rev" + case 103: // "SanatiseArg" + case 104: // "SanatiseMatched" + case 105: // "SanatiseMatchedBytes" + case 106: // "SanatiseRequestHeader" + case 107: // "SanatiseResponseHeader" + case 108: // "SetEnv" + case 109: // "SetSrc" + case 110: // "SetSid" + case 111: // "SetUID" + case 112: // "Severity" + case 113: // "Skip" + case 114: // "SkipAfter" + case 115: // "Status" + case 116: // "Tag" + case 117: // "ACTION_TRANSFORMATION_CMD_LINE" + case 118: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 119: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 120: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 121: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 122: // "ACTION_TRANSFORMATION_JS_DECODE" + case 123: // "ACTION_TRANSFORMATION_LENGTH" + case 124: // "ACTION_TRANSFORMATION_LOWERCASE" + case 125: // "ACTION_TRANSFORMATION_MD5" + case 126: // "ACTION_TRANSFORMATION_NONE" + case 127: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 128: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 129: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 130: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 131: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 132: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 133: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 134: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 135: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 136: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 137: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 138: // "ACTION_TRANSFORMATION_SHA1" + case 139: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 140: // "ACTION_TRANSFORMATION_TRIM" + case 141: // "ACTION_TRANSFORMATION_URL_DECODE" + case 142: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 143: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 144: // "Ver" + case 145: // "xmlns" + case 146: // "CONFIG_COMPONENT_SIG" + case 147: // "CONFIG_DIR_AUDIT_DIR" + case 148: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 149: // "CONFIG_DIR_AUDIT_ENG" + case 150: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 151: // "CONFIG_DIR_AUDIT_LOG" + case 152: // "CONFIG_DIR_AUDIT_LOG2" + case 153: // "CONFIG_DIR_AUDIT_LOG_P" + case 154: // "CONFIG_DIR_AUDIT_STS" + case 155: // "CONFIG_DIR_AUDIT_TPE" + case 156: // "CONFIG_DIR_DEBUG_LOG" + case 157: // "CONFIG_DIR_DEBUG_LVL" + case 158: // "CONFIG_DIR_GEO_DB" + case 159: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 160: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 161: // "CONFIG_DIR_REQ_BODY" + case 162: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 163: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 164: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 165: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 166: // "CONFIG_DIR_RES_BODY" + case 167: // "CONFIG_DIR_RES_BODY_LIMIT" + case 168: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 169: // "CONFIG_DIR_RULE_ENG" + case 170: // "CONFIG_DIR_SEC_ACTION" + case 171: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 172: // "CONFIG_DIR_SEC_MARKER" + case 173: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 174: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 175: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 176: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 177: // "CONFIG_UPDLOAD_KEEP_FILES" + case 178: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 179: // "CONFIG_UPLOAD_DIR" + case 180: // "CONFIG_UPLOAD_FILE_LIMIT" + case 181: // "CONFIG_UPLOAD_FILE_MODE" + case 182: // "CONFIG_VALUE_ABORT" + case 183: // "CONFIG_VALUE_DETC" + case 184: // "CONFIG_VALUE_HTTPS" + case 185: // "CONFIG_VALUE_OFF" + case 186: // "CONFIG_VALUE_ON" + case 187: // "CONFIG_VALUE_PARALLEL" + case 188: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 189: // "CONFIG_VALUE_REJECT" + case 190: // "CONFIG_VALUE_RELEVANT_ONLY" + case 191: // "CONFIG_VALUE_SERIAL" + case 192: // "CONFIG_VALUE_WARN" + case 193: // "CONFIG_XML_EXTERNAL_ENTITY" + case 194: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 195: // "CONGIG_DIR_SEC_ARG_SEP" + case 196: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 197: // "CONGIG_DIR_SEC_DATA_DIR" + case 198: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 199: // "CONGIG_DIR_SEC_TMP_DIR" + case 200: // "DIRECTIVE" + case 201: // "DIRECTIVE_SECRULESCRIPT" + case 202: // "FREE_TEXT" + case 203: // "NOT" + case 204: // "OPERATOR" + case 205: // "OPERATOR_BEGINS_WITH" + case 206: // "OPERATOR_CONTAINS" + case 207: // "OPERATOR_CONTAINS_WORD" + case 208: // "OPERATOR_DETECT_SQLI" + case 209: // "OPERATOR_DETECT_XSS" + case 210: // "OPERATOR_ENDS_WITH" + case 211: // "OPERATOR_EQ" + case 212: // "OPERATOR_FUZZY_HASH" + case 213: // "OPERATOR_GE" + case 214: // "OPERATOR_GEOLOOKUP" + case 215: // "OPERATOR_GSB_LOOKUP" + case 216: // "OPERATOR_GT" + case 217: // "OPERATOR_INSPECT_FILE" + case 218: // "OPERATOR_IP_MATCH" + case 219: // "OPERATOR_IP_MATCH_FROM_FILE" + case 220: // "OPERATOR_LE" + case 221: // "OPERATOR_LT" + case 222: // "OPERATOR_PM" + case 223: // "OPERATOR_PM_FROM_FILE" + case 224: // "OPERATOR_RBL" + case 225: // "OPERATOR_RSUB" + case 226: // "OPERATOR_RX" + case 227: // "Operator Rx" + case 228: // "OPERATOR_STR_EQ" + case 229: // "OPERATOR_STR_MATCH" + case 230: // "OPERATOR_UNCONDITIONAL_MATCH" + case 231: // "OPERATOR_VALIDATE_BYTE_RANGE" + case 232: // "OPERATOR_VALIDATE_DTD" + case 233: // "OPERATOR_VALIDATE_HASH" + case 234: // "OPERATOR_VALIDATE_SCHEMA" + case 235: // "OPERATOR_VALIDATE_URL_ENCODING" + case 236: // "OPERATOR_VALIDATE_UTF8_ENCODING" + case 237: // "OPERATOR_VERIFY_CC" + case 238: // "OPERATOR_VERIFY_CPF" + case 239: // "OPERATOR_VERIFY_SSN" + case 240: // "OPERATOR_WITHIN" + case 241: // "OP_QUOTE" + case 242: // "QUOTATION_MARK" + case 243: // "RUN_TIME_VAR_BLD" + case 244: // "RUN_TIME_VAR_DUR" + case 245: // "RUN_TIME_VAR_ENV" + case 246: // "RUN_TIME_VAR_HSV" + case 247: // "RUN_TIME_VAR_REMOTE_USER" + case 248: // "RUN_TIME_VAR_RULE" + case 249: // "RUN_TIME_VAR_TIME" + case 250: // "RUN_TIME_VAR_TIME_DAY" + case 251: // "RUN_TIME_VAR_TIME_EPOCH" + case 252: // "RUN_TIME_VAR_TIME_HOUR" + case 253: // "RUN_TIME_VAR_TIME_MIN" + case 254: // "RUN_TIME_VAR_TIME_MON" + case 255: // "RUN_TIME_VAR_TIME_SEC" + case 256: // "RUN_TIME_VAR_TIME_WDAY" + case 257: // "RUN_TIME_VAR_TIME_YEAR" + case 258: // "RUN_TIME_VAR_XML" + case 259: // "VARIABLE" + case 260: // "VARIABLE_COL" + case 261: // "VARIABLE_STATUS" + case 262: // "VARIABLE_TX" value.move< std::string > (s.value); break; - case 212: // op - case 213: // op_before_init + case 269: // op + case 270: // op_before_init value.move< std::unique_ptr > (s.value); break; - case 216: // var + case 273: // var value.move< std::unique_ptr > (s.value); break; - case 217: // act + case 274: // act value.move< std::unique_ptr > (s.value); break; - case 215: // variables + case 272: // variables value.move< std::unique_ptr > > > (s.value); break; - case 210: // actions - case 211: // actions_may_quoted + case 267: // actions + case 268: // actions_may_quoted value.move< std::unique_ptr > > > (s.value); break; @@ -3293,7 +3635,13 @@ namespace yy { 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460 + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517 }; return static_cast (yytoken_number_[type]); } @@ -3322,12 +3670,360 @@ namespace yy { return symbol_type (token::TOK_NEW_LINE, l); } + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_ARGS_COMBINED_SIZE (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_ARGS_COMBINED_SIZE, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_ARGS_GET_NAMES (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_ARGS_GET_NAMES, l); + } + seclang_parser::symbol_type seclang_parser::make_VARIABLE_ARGS_NAMES (const location_type& l) { return symbol_type (token::TOK_VARIABLE_ARGS_NAMES, l); } + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_ARGS_POST_NAMES (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_ARGS_POST_NAMES, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_AUTH_TYPE (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_AUTH_TYPE, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_FILES_COMBINED_SIZE (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_FILES_COMBINED_SIZE, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_FILES_TMP_NAMES (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_FILES_TMP_NAMES, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_FULL_REQUEST (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_FULL_REQUEST, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_FULL_REQUEST_LENGTH (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_FULL_REQUEST_LENGTH, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_INBOUND_DATA_ERROR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_INBOUND_DATA_ERROR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MATCHED_VAR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MATCHED_VAR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MATCHED_VAR_NAME (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MATCHED_VAR_NAME, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_CRLF_LF_LINES (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_DATA_AFTER (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_DATA_AFTER, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_HEADER_FOLDING (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_INVALID_QUOTING (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_STRICT_ERROR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_STRICT_ERROR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_OUTBOUND_DATA_ERROR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_OUTBOUND_DATA_ERROR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_PATH_INFO (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_PATH_INFO, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_QUERY_STRING (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_QUERY_STRING, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REMOTE_ADDR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REMOTE_ADDR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REMOTE_HOST (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REMOTE_HOST, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REMOTE_PORT (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REMOTE_PORT, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQBODY_ERROR_MSG (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR_MSG, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQBODY_ERROR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQBODY_ERROR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQBODY_PROCESSOR_ERROR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQBODY_PROCESSOR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQBODY_PROCESSOR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_BASENAME (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_BASENAME, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_BODY_LENGTH (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_BODY_LENGTH, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_BODY (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_BODY, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_FILE_NAME (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_FILE_NAME, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_HEADERS_NAMES (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_HEADERS_NAMES, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_LINE (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_LINE, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_METHOD (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_METHOD, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_PROTOCOL (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_PROTOCOL, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_URI_RAW (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_URI_RAW, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_REQUEST_URI (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_REQUEST_URI, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_RESOURCE (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_RESOURCE, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_RESPONSE_BODY (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_RESPONSE_BODY, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_RESPONSE_CONTENT_LENGTH (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_RESPONSE_CONTENT_TYPE (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_RESPONSE_HEADERS_NAMES (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_RESPONSE_PROTOCOL (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_RESPONSE_PROTOCOL, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_RESPONSE_STATUS (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_RESPONSE_STATUS, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_SERVER_ADDR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_SERVER_ADDR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_SERVER_NAME (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_SERVER_NAME, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_SERVER_PORT (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_SERVER_PORT, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_SESSION_ID (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_SESSION_ID, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_UNIQUE_ID (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_UNIQUE_ID, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_URL_ENCODED_ERROR (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_URL_ENCODED_ERROR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_VARIABLE_USER_ID (const location_type& l) + { + return symbol_type (token::TOK_VARIABLE_USER_ID, l); + } + + seclang_parser::symbol_type + seclang_parser::make_ACTION_SETVAR (const location_type& l) + { + return symbol_type (token::TOK_ACTION_SETVAR, l); + } + + seclang_parser::symbol_type + seclang_parser::make_SETVAR_OPERATION_EQUALS (const location_type& l) + { + return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS, l); + } + + seclang_parser::symbol_type + seclang_parser::make_SETVAR_OPERATION_EQUALS_PLUS (const location_type& l) + { + return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_PLUS, l); + } + + seclang_parser::symbol_type + seclang_parser::make_SETVAR_OPERATION_EQUALS_MINUS (const location_type& l) + { + return symbol_type (token::TOK_SETVAR_OPERATION_EQUALS_MINUS, l); + } + seclang_parser::symbol_type seclang_parser::make_ACTION_ACCURACY (const std::string& v, const location_type& l) { @@ -3610,12 +4306,6 @@ namespace yy { return symbol_type (token::TOK_ACTION_SETUID, v, l); } - seclang_parser::symbol_type - seclang_parser::make_ACTION_SETVAR (const std::string& v, const location_type& l) - { - return symbol_type (token::TOK_ACTION_SETVAR, v, l); - } - seclang_parser::symbol_type seclang_parser::make_ACTION_SEVERITY (const std::string& v, const location_type& l) { @@ -4525,7 +5215,7 @@ namespace yy { } // yy -#line 4529 "seclang-parser.hh" // lalr1.cc:377 +#line 5219 "seclang-parser.hh" // lalr1.cc:377 diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index 283f1476..58ac7dab 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -146,15 +146,67 @@ class Driver; #include "src/utils/system.h" #include "src/variables/args_names.h" #include "src/variables/xml.h" +#include "src/variables/args_combined_size.h" +#include "src/variables/args_get_names.h" +#include "src/variables/args_names.h" +#include "src/variables/args_post_names.h" +#include "src/variables/auth_type.h" #include "src/variables/duration.h" #include "src/variables/env.h" +#include "src/variables/files_combined_size.h" +#include "src/variables/files_tmp_names.h" +#include "src/variables/full_request.h" +#include "src/variables/full_request_length.h" #include "src/variables/highest_severity.h" +#include "src/variables/inbound_data_error.h" +#include "src/variables/matched_var.h" +#include "src/variables/matched_var_name.h" #include "src/variables/modsec_build.h" +#include "src/variables/multipart_crlf_lf_line.h" +#include "src/variables/multipart_data_after.h" +#include "src/variables/multipart_file_limit_exceeded.h" +#include "src/variables/multipart_header_folding.h" +#include "src/variables/multipart_invalid_header_folding.h" +#include "src/variables/multipart_invalid_quoting.h" +#include "src/variables/multipart_strict_error.h" +#include "src/variables/multipart_unmatched_boundary.h" +#include "src/variables/outbound_data_error.h" +#include "src/variables/path_info.h" +#include "src/variables/query_string.h" +#include "src/variables/remote_addr.h" +#include "src/variables/remote_host.h" +#include "src/variables/remote_port.h" #include "src/variables/remote_user.h" +#include "src/variables/reqbody_error.h" +#include "src/variables/reqbody_error_msg.h" +#include "src/variables/reqbody_processor_error.h" +#include "src/variables/reqbody_processor_error_msg.h" +#include "src/variables/reqbody_processor.h" +#include "src/variables/request_base_name.h" +#include "src/variables/request_body.h" +#include "src/variables/request_body_length.h" +#include "src/variables/request_file_name.h" +#include "src/variables/request_headers_names.h" +#include "src/variables/request_line.h" +#include "src/variables/request_method.h" +#include "src/variables/request_protocol.h" +#include "src/variables/request_uri.h" +#include "src/variables/request_uri_raw.h" +#include "src/variables/resources.h" +#include "src/variables/response_body.h" +#include "src/variables/response_content_length.h" +#include "src/variables/response_content_type.h" +#include "src/variables/response_headers_names.h" +#include "src/variables/response_protocol.h" +#include "src/variables/response_status.h" #include "src/variables/rule.h" -#include "src/variables/time.h" +#include "src/variables/server_addr.h" +#include "src/variables/server_name.h" +#include "src/variables/server_port.h" +#include "src/variables/session_id.h" #include "src/variables/time_day.h" #include "src/variables/time_epoch.h" +#include "src/variables/time.h" #include "src/variables/time_hour.h" #include "src/variables/time_min.h" #include "src/variables/time_mon.h" @@ -162,6 +214,11 @@ class Driver; #include "src/variables/time_wday.h" #include "src/variables/time_year.h" #include "src/variables/tx.h" +#include "src/variables/unique_id.h" +#include "src/variables/url_encoded_error.h" +#include "src/variables/user_id.h" +#include "src/variables/variable.h" +#include "src/variables/xml.h" #include "src/variables/variations/count.h" #include "src/variables/variations/exclusion.h" @@ -258,8 +315,66 @@ using modsecurity::operators::Operator; COMMA "," PIPE NEW_LINE - VARIABLE_ARGS_NAMES "Variable ARGS_NAMES" -; + VARIABLE_ARGS_COMBINED_SIZE + VARIABLE_ARGS_GET_NAMES + VARIABLE_ARGS_NAMES "Variable ARGS_NAMES" + VARIABLE_ARGS_POST_NAMES + VARIABLE_AUTH_TYPE "AUTH_TYPE" + VARIABLE_FILES_COMBINED_SIZE "FILES_COMBINED_SIZE" + VARIABLE_FILES_TMP_NAMES "FILES_TMPNAMES" + VARIABLE_FULL_REQUEST "FULL_REQUEST" + VARIABLE_FULL_REQUEST_LENGTH "FULL_REQUEST_LENGTH" + VARIABLE_INBOUND_DATA_ERROR "INBOUND_DATA_ERROR" + VARIABLE_MATCHED_VAR "MATCHED_VAR" + VARIABLE_MATCHED_VAR_NAME "MATCHED_VAR_NAME" + VARIABLE_MULTIPART_CRLF_LF_LINES "MULTIPART_CRLF_LF_LINES" + VARIABLE_MULTIPART_DATA_AFTER "MULTIPART_DATA_AFTER" + VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED "MULTIPART_FILE_LIMIT_EXCEEDED" + VARIABLE_MULTIPART_HEADER_FOLDING "MULTIPART_HEADER_FOLDING" + VARIABLE_MULTIPART_INVALID_HEADER_FOLDING "MULTIPART_INVALID_HEADER_FOLDING" + VARIABLE_MULTIPART_INVALID_QUOTING "MULTIPART_INVALID_QUOTING" + VARIABLE_MULTIPART_STRICT_ERROR "MULTIPART_STRICT_ERROR" + VARIABLE_MULTIPART_UNMATCHED_BOUNDARY "MULTIPART_UNMATCHED_BOUNDARY" + VARIABLE_OUTBOUND_DATA_ERROR "OUTBOUND_DATA_ERROR" + VARIABLE_PATH_INFO "PATH_INFO" + VARIABLE_QUERY_STRING "QUERY_STRING" + VARIABLE_REMOTE_ADDR "REMOTE_ADDR" + VARIABLE_REMOTE_HOST "REMOTE_HOST" + VARIABLE_REMOTE_PORT "REMOTE_PORT" + VARIABLE_REQBODY_ERROR_MSG "REQBODY_ERROR_MSG" + VARIABLE_REQBODY_ERROR "REQBODY_ERROR" + VARIABLE_REQBODY_PROCESSOR_ERROR_MSG "REQBODY_PROCESSOR_ERROR_MSG" + VARIABLE_REQBODY_PROCESSOR_ERROR "REQBODY_PROCESSOR_ERROR" + VARIABLE_REQBODY_PROCESSOR "REQBODY_PROCESSOR" + VARIABLE_REQUEST_BASENAME "REQUEST_BASENAME" + VARIABLE_REQUEST_BODY_LENGTH "REQUEST_BODY_LENGTH" + VARIABLE_REQUEST_BODY "REQUEST_BODY" + VARIABLE_REQUEST_FILE_NAME "REQUEST_FILENAME" + VARIABLE_REQUEST_HEADERS_NAMES + VARIABLE_REQUEST_LINE "REQUEST_LINE" + VARIABLE_REQUEST_METHOD "REQUEST_METHOD" + VARIABLE_REQUEST_PROTOCOL "REQUEST_PROTOCOL" + VARIABLE_REQUEST_URI_RAW "REQUEST_URI_RAW" + VARIABLE_REQUEST_URI "REQUEST_URI" + VARIABLE_RESOURCE "RESOURCE" + VARIABLE_RESPONSE_BODY "RESPONSE_BODY" + VARIABLE_RESPONSE_CONTENT_LENGTH "RESPONSE_CONTENT_LENGTH" + VARIABLE_RESPONSE_CONTENT_TYPE + VARIABLE_RESPONSE_HEADERS_NAMES + VARIABLE_RESPONSE_PROTOCOL "RESPONSE_PROTOCOL" + VARIABLE_RESPONSE_STATUS "RESPONSE_STATUS" + VARIABLE_SERVER_ADDR "SERVER_ADDR" + VARIABLE_SERVER_NAME "SERVER_NAME" + VARIABLE_SERVER_PORT "SERVER_PORT" + VARIABLE_SESSION_ID "SESSIONID" + VARIABLE_UNIQUE_ID "UNIQUE_ID" + VARIABLE_URL_ENCODED_ERROR "URLENCODED_ERROR" + VARIABLE_USER_ID "USERID" + ACTION_SETVAR "SetVar" + SETVAR_OPERATION_EQUALS + SETVAR_OPERATION_EQUALS_PLUS + SETVAR_OPERATION_EQUALS_MINUS + ; %token ACTION_ACCURACY "Accuracy" @@ -309,7 +424,6 @@ using modsecurity::operators::Operator; ACTION_SETRSC "SetSrc" ACTION_SETSID "SetSid" ACTION_SETUID "SetUID" - ACTION_SETVAR "SetVar" ACTION_SEVERITY "Severity" ACTION_SKIP "Skip" ACTION_SKIP_AFTER "SkipAfter" @@ -1142,22 +1256,275 @@ var: std::unique_ptr c(new Variables::ArgsNames()); $$ = std::move(c); } - | VARIABLE + | VARIABLE_ARGS_GET_NAMES { - std::string name($1); - char z = name.at(0); - if (z == '&') { - name.erase(0, 1); - std::unique_ptr c(new Count(new Variable(name, Variable::VariableKind::DirectVariable))); - $$ = std::move(c); - } else if (z == '!') { - name.erase(0, 1); - std::unique_ptr c(new Exclusion(new Variable(name, Variable::VariableKind::DirectVariable))); - $$ = std::move(c); - } else { - std::unique_ptr c(new Variable(name, Variable::VariableKind::DirectVariable)); - $$ = std::move(c); - } + std::unique_ptr c(new Variables::ArgsGetNames()); + $$ = std::move(c); + } + | VARIABLE_ARGS_POST_NAMES + { + std::unique_ptr c(new Variables::ArgsPostNames()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_HEADERS_NAMES + { + std::unique_ptr c(new Variables::RequestHeadersNames()); + $$ = std::move(c); + } + | VARIABLE_RESPONSE_CONTENT_TYPE + { + std::unique_ptr c(new Variables::ResponseContentType()); + $$ = std::move(c); + } + | VARIABLE_RESPONSE_HEADERS_NAMES + { + std::unique_ptr c(new Variables::ResponseHeadersNames()); + $$ = std::move(c); + } + | VARIABLE_ARGS_COMBINED_SIZE + { + std::unique_ptr c(new Variables::ArgsCombinedSize()); + $$ = std::move(c); + } + | VARIABLE_AUTH_TYPE + { + std::unique_ptr c(new Variables::AuthType()); + $$ = std::move(c); + } + | VARIABLE_FILES_COMBINED_SIZE + { + std::unique_ptr c(new Variables::FilesCombinedSize()); + $$ = std::move(c); + } + | VARIABLE_FILES_TMP_NAMES + { + std::unique_ptr c(new Variables::FilesTmpNames()); + $$ = std::move(c); + } + | VARIABLE_FULL_REQUEST + { + std::unique_ptr c(new Variables::FullRequest()); + $$ = std::move(c); + } + | VARIABLE_FULL_REQUEST_LENGTH + { + std::unique_ptr c(new Variables::FullRequestLength()); + $$ = std::move(c); + } + | VARIABLE_INBOUND_DATA_ERROR + { + std::unique_ptr c(new Variables::InboundDataError()); + $$ = std::move(c); + } + | VARIABLE_MATCHED_VAR + { + std::unique_ptr c(new Variables::MatchedVar()); + $$ = std::move(c); + } + | VARIABLE_MATCHED_VAR_NAME + { + std::unique_ptr c(new Variables::MatchedVarName()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_CRLF_LF_LINES + { + std::unique_ptr c(new Variables::MultipartCrlfLFLines()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_DATA_AFTER + { + std::unique_ptr c(new Variables::MultipartDateAfter()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED + { + std::unique_ptr c(new Variables::MultipartFileLimitExceeded()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_HEADER_FOLDING + { + std::unique_ptr c(new Variables::MultipartHeaderFolding()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_INVALID_HEADER_FOLDING + { + std::unique_ptr c(new Variables::MultipartInvalidHeaderFolding()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_INVALID_QUOTING + { + std::unique_ptr c(new Variables::MultipartInvalidQuoting()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_STRICT_ERROR + { + std::unique_ptr c(new Variables::MultipartStrictError()); + $$ = std::move(c); + } + | VARIABLE_MULTIPART_UNMATCHED_BOUNDARY + { + std::unique_ptr c(new Variables::MultipartUnmatchedBoundary()); + $$ = std::move(c); + } + | VARIABLE_OUTBOUND_DATA_ERROR + { + std::unique_ptr c(new Variables::OutboundDataError()); + $$ = std::move(c); + } + | VARIABLE_PATH_INFO + { + std::unique_ptr c(new Variables::PathInfo()); + $$ = std::move(c); + } + | VARIABLE_QUERY_STRING + { + std::unique_ptr c(new Variables::QueryString()); + $$ = std::move(c); + } + | VARIABLE_REMOTE_ADDR + { + std::unique_ptr c(new Variables::RemoteAddr()); + $$ = std::move(c); + } + | VARIABLE_REMOTE_HOST + { + std::unique_ptr c(new Variables::RemoteHost()); + $$ = std::move(c); + } + | VARIABLE_REMOTE_PORT + { + std::unique_ptr c(new Variables::RemotePort()); + $$ = std::move(c); + } + | VARIABLE_REQBODY_ERROR + { + std::unique_ptr c(new Variables::ReqbodyError()); + $$ = std::move(c); + } + | VARIABLE_REQBODY_ERROR_MSG + { + std::unique_ptr c(new Variables::ReqbodyErrorMsg()); + $$ = std::move(c); + } + | VARIABLE_REQBODY_PROCESSOR + { + std::unique_ptr c(new Variables::ReqbodyProcessor()); + $$ = std::move(c); + } + | VARIABLE_REQBODY_PROCESSOR_ERROR + { + std::unique_ptr c(new Variables::ReqbodyProcessorError()); + $$ = std::move(c); + } + | VARIABLE_REQBODY_PROCESSOR_ERROR_MSG + { + std::unique_ptr c(new Variables::ReqbodyProcessorErrorMsg()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_BASENAME + { + std::unique_ptr c(new Variables::RequestBasename()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_BODY + { + std::unique_ptr c(new Variables::RequestBody()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_BODY_LENGTH + { + std::unique_ptr c(new Variables::RequestBodyLength()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_FILE_NAME + { + std::unique_ptr c(new Variables::RequestFilename()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_LINE + { + std::unique_ptr c(new Variables::RequestLine()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_METHOD + { + std::unique_ptr c(new Variables::RequestMethod()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_PROTOCOL + { + std::unique_ptr c(new Variables::RequestProtocol()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_URI + { + std::unique_ptr c(new Variables::RequestURI()); + $$ = std::move(c); + } + | VARIABLE_REQUEST_URI_RAW + { + std::unique_ptr c(new Variables::RequestURIRaw()); + $$ = std::move(c); + } + | VARIABLE_RESOURCE + { + std::unique_ptr c(new Variables::Resource()); + $$ = std::move(c); + } + | VARIABLE_RESPONSE_BODY + { + std::unique_ptr c(new Variables::ResponseBody()); + $$ = std::move(c); + } + | VARIABLE_RESPONSE_CONTENT_LENGTH + { + std::unique_ptr c(new Variables::ResponseContentLength()); + $$ = std::move(c); + } + | VARIABLE_RESPONSE_PROTOCOL + { + std::unique_ptr c(new Variables::ResponseProtocol()); + $$ = std::move(c); + } + | VARIABLE_RESPONSE_STATUS + { + std::unique_ptr c(new Variables::ResponseStatus()); + $$ = std::move(c); + } + | VARIABLE_SERVER_ADDR + { + std::unique_ptr c(new Variables::ServerAddr()); + $$ = std::move(c); + } + | VARIABLE_SERVER_NAME + { + std::unique_ptr c(new Variables::ServerName()); + $$ = std::move(c); + } + | VARIABLE_SERVER_PORT + { + std::unique_ptr c(new Variables::ServerPort()); + $$ = std::move(c); + } + | VARIABLE_SESSION_ID + { + std::unique_ptr c(new Variables::SessionID()); + $$ = std::move(c); + } + | VARIABLE_UNIQUE_ID + { + std::unique_ptr c(new Variables::UniqueID()); + $$ = std::move(c); + } + | VARIABLE_URL_ENCODED_ERROR + { + std::unique_ptr c(new Variables::UrlEncodedError()); + $$ = std::move(c); + } + | VARIABLE_USER_ID + { + std::unique_ptr c(new Variables::UserID()); + $$ = std::move(c); } | VARIABLE_STATUS { @@ -1450,20 +1817,9 @@ var: } | RUN_TIME_VAR_XML { - std::string name($1); - char z = name.at(0); - if (z == '&') { - name.erase(0, 1); - std::unique_ptr c(new Count(new XML(name))); - $$ = std::move(c); - } else if (z == '!') { - name.erase(0, 1); - std::unique_ptr c(new Exclusion(new XML(name))); - $$ = std::move(c); - } else { + std::string name($1); std::unique_ptr c(new XML(name)); $$ = std::move(c); - } } | RUN_TIME_VAR_RULE { @@ -1707,9 +2063,21 @@ act: { ACTION_CONTAINER($$, new actions::SetUID($1)); } - | ACTION_SETVAR + | ACTION_SETVAR VARIABLE { - ACTION_CONTAINER($$, new actions::SetVar($1)); + ACTION_CONTAINER($$, new actions::SetVar(actions::SetVarOperation::setToOne, $2)); + } + | ACTION_SETVAR VARIABLE SETVAR_OPERATION_EQUALS FREE_TEXT + { + ACTION_CONTAINER($$, new actions::SetVar(actions::SetVarOperation::setOperation, $2, $4)); + } + | ACTION_SETVAR VARIABLE SETVAR_OPERATION_EQUALS_PLUS FREE_TEXT + { + ACTION_CONTAINER($$, new actions::SetVar(actions::SetVarOperation::sumAndSetOperation, $2, $4)); + } + | ACTION_SETVAR VARIABLE SETVAR_OPERATION_EQUALS_MINUS FREE_TEXT + { + ACTION_CONTAINER($$, new actions::SetVar(actions::SetVarOperation::substractAndSetOperation, $2, $4)); } | ACTION_SEVERITY { diff --git a/src/parser/seclang-scanner.ll b/src/parser/seclang-scanner.ll index 2ebfa232..aa0e007c 100755 --- a/src/parser/seclang-scanner.ll +++ b/src/parser/seclang-scanner.ll @@ -172,6 +172,8 @@ CONGIG_DIR_SEC_DATA_DIR (?i:SecDataDir) CONGIG_DIR_SEC_STATUS_ENGINE (?i:SecStatusEngine) CONGIG_DIR_SEC_TMP_DIR (?i:SecTmpDir) DICT_ELEMENT [^ \t|]+ +DICT_ELEMENT_TWO [^\"\=]+ +DICT_ELEMENT_TWO2 [A-Za-z_ -\%\{\.\}\-\/]+ DIRECTIVE (?i:SecRule) DIRECTIVE_SECRULESCRIPT (?i:SecRuleScript) FREE_TEXT_NEW_LINE [^\"|\n]+ @@ -180,6 +182,7 @@ FREE_TEXT_QUOTE_COMMA [^,\']+ FREE_TEXT_SPACE [^ \t]+ FREE_TEXT_SPACE_COMMA [^, \t]+ FREE_TEXT_SPACE_COMMA_QUOTE [^, \t\"\n\r]+ +FREE_TEXT_COMMA_QUOTE [^,\"\\n\\r]+ NEW_LINE_FREE_TEXT [^, \t\"\n\r]+ OPERATOR_UNCONDITIONAL_MATCH (?i:@unconditionalMatch) @@ -243,19 +246,87 @@ RUN_TIME_VAR_TIME_SEC (?i:TIME_SEC) RUN_TIME_VAR_TIME_WDAY (?i:TIME_WDAY) RUN_TIME_VAR_TIME_YEAR (?i:TIME_YEAR) RUN_TIME_VAR_XML (?i:XML) -VARIABLENOCOLON (?i:URLENCODED_ERROR|REQBODY_PROCESSOR_ERROR_MSG|REQBODY_PROCESSOR_ERROR|REQBODY_PROCESSOR|REQBODY_ERROR_MSG|REQBODY_ERROR|MULTIPART_FILE_LIMIT_EXCEEDED|MULTIPART_INVALID_QUOTING|MULTIPART_HEADER_FOLDING|MULTIPART_INVALID_HEADER_FOLDING|MULTIPART_STRICT_ERROR|MULTIPART_UNMATCHED_BOUNDARY|REMOTE_ADDR|REQUEST_LINE) -VARIABLE (?i:(SERVER_NAME|MULTIPART_DATA_AFTER|RESOURCE|ARGS_COMBINED_SIZE|ARGS_GET_NAMES|ARGS_POST_NAMES|FILES_TMPNAMES|FILES_COMBINED_SIZE|FULL_REQUEST_LENGTH|REQUEST_BODY_LENGTH|REQUEST_URI_RAW|UNIQUE_ID|SERVER_PORT|SERVER_ADDR|REMOTE_PORT|REMOTE_HOST|PATH_INFO|MULTIPART_CRLF_LF_LINES|MATCHED_VAR_NAME|MATCHED_VAR|INBOUND_DATA_ERROR|OUTBOUND_DATA_ERROR|FULL_REQUEST|AUTH_TYPE|REMOTE_ADDR|REQUEST_BASENAME|REQUEST_BODY|REQUEST_FILENAME|REQUEST_HEADERS_NAMES|REQUEST_METHOD|REQUEST_PROTOCOL|REQUEST_URI|RESPONSE_BODY|RESPONSE_CONTENT_LENGTH|RESPONSE_CONTENT_TYPE|RESPONSE_HEADERS_NAMES|RESPONSE_PROTOCOL|RESPONSE_STATUS|USERID|SESSIONID)) -VARIABLE_ARGS_NAMES (?i:ARGS_NAMES) -VARIABLE_COL (?i:(SESSION|GLOBAL|ARGS_POST|ARGS_GET|ARGS|FILES_SIZES|FILES_NAMES|FILES_TMP_CONTENT|MULTIPART_FILENAME|MULTIPART_NAME|MATCHED_VARS_NAMES|MATCHED_VARS|FILES|QUERY_STRING|REQUEST_COOKIES|REQUEST_HEADERS|RESPONSE_HEADERS|GEO|IP|REQUEST_COOKIES_NAMES)) + + +VARIABLE_ARGS_COMBINED_SIZE (?i:ARGS_COMBINED_SIZE) +VARIABLE_ARGS_GET_NAMES (?i:ARGS_GET_NAMES) +VARIABLE_ARGS_NAMES (?i:ARGS_NAMES) +VARIABLE_ARGS_POST_NAMES (?i:ARGS_POST_NAMES) +VARIABLE_AUTH_TYPE (?i:AUTH_TYPE) +VARIABLE_FILES_COMBINED_SIZE (?i:FILES_COMBINED_SIZE) +VARIABLE_FILES_TMP_NAMES (?i:FILES_TMPNAMES) +VARIABLE_FULL_REQUEST (?i:FULL_REQUEST) +VARIABLE_FULL_REQUEST_LENGTH (?i:FULL_REQUEST_LENGTH) +VARIABLE_INBOUND_DATA_ERROR (?i:INBOUND_DATA_ERROR) +VARIABLE_MATCHED_VAR (?i:MATCHED_VAR) +VARIABLE_MATCHED_VAR_NAME (?i:MATCHED_VAR_NAME) +VARIABLE_MULTIPART_CRLF_LF_LINES (?i:MULTIPART_CRLF_LF_LINES) +VARIABLE_MULTIPART_DATA_AFTER (?i:MULTIPART_DATA_AFTER) +VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED (?i:MULTIPART_FILE_LIMIT_EXCEEDED) +VARIABLE_MULTIPART_HEADER_FOLDING (?i:MULTIPART_HEADER_FOLDING) +VARIABLE_MULTIPART_INVALID_HEADER_FOLDING (?i:MULTIPART_INVALID_HEADER_FOLDING) +VARIABLE_MULTIPART_INVALID_QUOTING (?i:MULTIPART_INVALID_QUOTING) +VARIABLE_MULTIPART_STRICT_ERROR (?i:MULTIPART_STRICT_ERROR) +VARIABLE_MULTIPART_UNMATCHED_BOUNDARY (?i:MULTIPART_UNMATCHED_BOUNDARY) +VARIABLE_OUTBOUND_DATA_ERROR (?i:OUTBOUND_DATA_ERROR) +VARIABLE_PATH_INFO (?i:PATH_INFO) +VARIABLE_QUERY_STRING (?i:QUERY_STRING) +VARIABLE_REMOTE_ADDR (?i:REMOTE_ADDR) +VARIABLE_REMOTE_HOST (?i:REMOTE_HOST) +VARIABLE_REMOTE_PORT (?i:REMOTE_PORT) +VARIABLE_REQBODY_ERROR (?i:REQBODY_ERROR) +VARIABLE_REQBODY_ERROR_MSG (?i:REQBODY_ERROR_MSG) +VARIABLE_REQBODY_PROCESSOR_ERROR (?i:REQBODY_PROCESSOR_ERROR) +VARIABLE_REQBODY_PROCESSOR_ERROR_MSG (?i:REQBODY_PROCESSOR_ERROR_MSG) +VARIABLE_REQBODY_PROCESSOR (?i:REQBODY_PROCESSOR) +VARIABLE_REQUEST_BASENAME (?i:REQUEST_BASENAME) +VARIABLE_REQUEST_BODY (?i:REQUEST_BODY) +VARIABLE_REQUEST_BODY_LENGTH (?i:REQUEST_BODY_LENGTH) +VARIABLE_REQUEST_FILE_NAME (?i:REQUEST_FILENAME) +VARIABLE_REQUEST_HEADERS_NAMES (?i:REQUEST_HEADERS_NAMES) +VARIABLE_REQUEST_LINE (?i:REQUEST_LINE) +VARIABLE_REQUEST_METHOD (?i:REQUEST_METHOD) +VARIABLE_REQUEST_PROTOCOL (?i:REQUEST_PROTOCOL) +VARIABLE_REQUEST_URI (?i:REQUEST_URI) +VARIABLE_REQUEST_URI_RAW (?i:REQUEST_URI_RAW) +VARIABLE_RESOURCE (?i:RESOURCE) +VARIABLE_RESPONSE_BODY (?i:RESPONSE_BODY) +VARIABLE_RESPONSE_CONTENT_LENGTH (?i:RESPONSE_CONTENT_LENGTH) +VARIABLE_RESPONSE_CONTENT_TYPE (?i:RESPONSE_CONTENT_TYPE) +VARIABLE_RESPONSE_HEADERS_NAMES (?i:RESPONSE_HEADERS_NAMES) +VARIABLE_RESPONSE_PROTOCOL (?i:RESPONSE_PROTOCOL) +VARIABLE_RESPONSE_STATUS (?i:RESPONSE_STATUS) +VARIABLE_SERVER_ADDR (?i:SERVER_ADDR) +VARIABLE_SERVER_NAME (?i:SERVER_NAME) +VARIABLE_SERVER_PORT (?i:SERVER_PORT) +VARIABLE_SESSION_ID (?i:SESSIONID) +VARIABLE_UNIQUE_ID (?i:UNIQUE_ID) +VARIABLE_URL_ENCODED_ERROR (?i:URLENCODED_ERROR) +VARIABLE_USER_ID (?i:USERID) +VARIABLE_WEBSERVER_ERROR_LOG (?:WEBSERVER_ERROR_LOG) + + + + +VARIABLE_COL (?i:(GLOBAL|ARGS_POST|ARGS_GET|ARGS|FILES_SIZES|FILES_NAMES|FILES_TMP_CONTENT|MULTIPART_FILENAME|MULTIPART_NAME|MATCHED_VARS_NAMES|MATCHED_VARS|FILES|REQUEST_COOKIES|REQUEST_HEADERS|RESPONSE_HEADERS|GEO|REQUEST_COOKIES_NAMES)) +VARIABLE_SESSION (?i:(SESSION)) +VARIABLE_IP (?i:(IP)) +VARIABLE_USER (?i:(USER)) + VARIABLE_STATUS (?i:(STATUS[^:])) VARIABLE_TX (?i:TX) -VARIABLE_WEBSERVER_ERROR_LOG (?:WEBSERVER_ERROR_LOG) VAR_FREE_TEXT_QUOTE ([^\']|([^\\]\\\'))+ VAR_FREE_TEXT_SPACE [^ \t\"]+ VAR_FREE_TEXT_SPACE_COMMA [^, \t\"]+ NEW_LINE [\n\r]+ +EQUALS (?i:=) +EQUALS_PLUS (?i:=\+) +EQUALS_MINUS (?i:=\-) + + + %x TRANSACTION_TO_VARIABLE %x EXPECTING_VARIABLE %x TRANSACTION_FROM_VARIABLE_TO_OPERATOR @@ -269,6 +340,9 @@ NEW_LINE [\n\r]+ %x FINISH_ACTIONS %x LEXING_ERROR %x LEXING_ERROR_ACTION +%x SETVAR_ACTION_WAITING_VARIABLE +%x SETVAR_ACTION_WAITING_OPERATION +%x SETVAR_ACTION_WAITING_CONTENT %{ // Code run each time a pattern is matched. @@ -343,10 +417,10 @@ NEW_LINE [\n\r]+ {ACTION_SETSID}:{VAR_FREE_TEXT_SPACE_COMMA} { return p::make_ACTION_SETSID(yytext, *driver.loc.back()); } {ACTION_SETUID}:'{VAR_FREE_TEXT_QUOTE}' { return p::make_ACTION_SETUID(yytext, *driver.loc.back()); } {ACTION_SETUID}:{VAR_FREE_TEXT_SPACE_COMMA} { return p::make_ACTION_SETUID(yytext, *driver.loc.back()); } -{ACTION_SETVAR}:'{VAR_FREE_TEXT_QUOTE}={VAR_FREE_TEXT_QUOTE}' { return p::make_ACTION_SETVAR(yytext, *driver.loc.back()); } -{ACTION_SETVAR}:'{VAR_FREE_TEXT_QUOTE}' { return p::make_ACTION_SETVAR(yytext, *driver.loc.back()); } -{ACTION_SETVAR}:{VAR_FREE_TEXT_SPACE_COMMA} { return p::make_ACTION_SETVAR(yytext, *driver.loc.back()); } -{ACTION_SETVAR}:{VAR_FREE_TEXT_SPACE}={VAR_FREE_TEXT_SPACE_COMMA} { return p::make_ACTION_SETVAR(yytext, *driver.loc.back()); } + +{ACTION_SETVAR}: { BEGIN(SETVAR_ACTION_WAITING_VARIABLE); return p::make_ACTION_SETVAR(*driver.loc.back()); } + + {ACTION_SEVERITY}:'{ACTION_SEVERITY_VALUE}' { return p::make_ACTION_SEVERITY(yytext, *driver.loc.back()); } {ACTION_SEVERITY}:{ACTION_SEVERITY_VALUE} { return p::make_ACTION_SEVERITY(yytext, *driver.loc.back()); } {ACTION_SKIP_AFTER}:{FREE_TEXT_SPACE_COMMA_QUOTE} { return p::make_ACTION_SKIP_AFTER(yytext, *driver.loc.back()); } @@ -402,6 +476,51 @@ NEW_LINE [\n\r]+ . { BEGIN(LEXING_ERROR_ACTION); yyless(0); } } +{ +\'* { } +\"* { } +{VARIABLE_TX}(\:[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_TX}(\:{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_TX}(\.[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_TX}(\.{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_SESSION}(\:[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_SESSION}(\:{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_SESSION}(\.[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_SESSION}(\.{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_IP}(\:[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_IP}(\:{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_IP}(\.[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_IP}(\.{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_USER}(\:[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_USER}(\:{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_USER}(\.[\']{DICT_ELEMENT_TWO}[\'])? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +{VARIABLE_USER}(\.{DICT_ELEMENT_TWO})? { BEGIN(SETVAR_ACTION_WAITING_OPERATION); return p::make_VARIABLE(yytext, *driver.loc.back()); } +. { BEGIN(LEXING_ERROR_ACTION); yyless(0); } +[ \t]*\\\n[ \t]* { driver.loc.back()->lines(1); driver.loc.back()->step(); } +[ \t]*\\\r\n[ \t]* { driver.loc.back()->lines(1); driver.loc.back()->step(); } +} + + + + +{ +[ \t]*\n { BEGIN(INITIAL); yyless(1); } +[ \t]*\r\n { BEGIN(INITIAL); driver.loc.back()->lines(1); driver.loc.back()->step(); } +[ \t]*\n { BEGIN(EXPECTING_ACTIONS); yyless(yyleng); driver.loc.back()->lines(1); driver.loc.back()->step(); } +[ \t]*\r\n { BEGIN(EXPECTING_ACTIONS); yyless(yyleng); driver.loc.back()->lines(1); driver.loc.back()->step(); } +[ \t]*\"[ \t]* { } +[ \t]*\'[ \t]* { } +\"[ \t]*\n { BEGIN(EXPECTING_ACTIONS); yyless(1); } +\"[ \t]*\r\n { BEGIN(EXPECTING_ACTIONS); driver.loc.back()->lines(1); driver.loc.back()->step(); } +{EQUALS_PLUS} { BEGIN(SETVAR_ACTION_WAITING_CONTENT); return p::make_SETVAR_OPERATION_EQUALS_PLUS(*driver.loc.back()); } +{EQUALS_MINUS} { BEGIN(SETVAR_ACTION_WAITING_CONTENT); return p::make_SETVAR_OPERATION_EQUALS_MINUS(*driver.loc.back()); } +{EQUALS} { BEGIN(SETVAR_ACTION_WAITING_CONTENT); return p::make_SETVAR_OPERATION_EQUALS(*driver.loc.back()); } +. { BEGIN(LEXING_ERROR_ACTION); yyless(0); } +} + +{ +[^,"\n]+ { BEGIN(EXPECTING_ACTIONS); return p::make_FREE_TEXT(yytext, *driver.loc.back()); } +} { <> { BEGIN(INITIAL); yyless(0); p::make_NEW_LINE(*driver.loc.back()); } @@ -488,7 +607,6 @@ NEW_LINE [\n\r]+ { -{VARIABLE_ARGS_NAMES} { return p::make_VARIABLE_ARGS_NAMES(*driver.loc.back()); } [!&]?{RUN_TIME_VAR_BLD} { return p::make_RUN_TIME_VAR_BLD(yytext, *driver.loc.back()); } [!&]?{RUN_TIME_VAR_DUR} { return p::make_RUN_TIME_VAR_DUR(yytext, *driver.loc.back()); } @@ -508,15 +626,18 @@ NEW_LINE [\n\r]+ [!&]?{RUN_TIME_VAR_TIME} { return p::make_RUN_TIME_VAR_TIME(yytext, *driver.loc.back()); } [!&]?{RUN_TIME_VAR_XML}(\:[\']{FREE_TEXT_QUOTE}[\'])? { return p::make_RUN_TIME_VAR_XML(yytext, *driver.loc.back()); } [!&]?{RUN_TIME_VAR_XML}(\:{DICT_ELEMENT})? { return p::make_RUN_TIME_VAR_XML(yytext, *driver.loc.back()); } -[!&]?{VARIABLENOCOLON} { return p::make_VARIABLE(yytext, *driver.loc.back()); } [!&]?{VARIABLE_COL}(\:[\']{FREE_TEXT_QUOTE}[\'])? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } [!&]?{VARIABLE_COL}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +[!&]?{VARIABLE_SESSION}(\:[\']{FREE_TEXT_QUOTE}[\'])? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +[!&]?{VARIABLE_SESSION}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +[!&]?{VARIABLE_IP}(\:[\']{FREE_TEXT_QUOTE}[\'])? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +[!&]?{VARIABLE_IP}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +[!&]?{VARIABLE_USER}(\:[\']{FREE_TEXT_QUOTE}[\'])? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +[!&]?{VARIABLE_USER}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } [!&]?{VARIABLE_STATUS} { return p::make_VARIABLE_STATUS(yytext, *driver.loc.back()); } [!&]?{VARIABLE_TX}(\:[\']{FREE_TEXT_QUOTE}[\'])? { return p::make_VARIABLE_TX(yytext, *driver.loc.back()); } [!&]?{VARIABLE_TX}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_TX(yytext, *driver.loc.back()); } [!&]?{VARIABLE_WEBSERVER_ERROR_LOG} { driver.error (*driver.loc.back(), "Variable VARIABLE_WEBSERVER_ERROR_LOG is not supported by libModSecurity", ""); throw p::syntax_error(*driver.loc.back(), "");} -[!&]?{VARIABLE}(\:[\']{FREE_TEXT_QUOTE}[\'])? { return p::make_VARIABLE(yytext, *driver.loc.back()); } -[!&]?{VARIABLE}(\:{DICT_ELEMENT})? { return p::make_VARIABLE(yytext, *driver.loc.back()); } ["][!&]?{RUN_TIME_VAR_BLD}["] { return p::make_RUN_TIME_VAR_BLD(yytext, *driver.loc.back()); } ["][!&]?{RUN_TIME_VAR_DUR}["] { return p::make_RUN_TIME_VAR_DUR(yytext, *driver.loc.back()); } ["][!&]?{RUN_TIME_VAR_ENV}(\:\'{FREE_TEXT_QUOTE}[\'])?["] { return p::make_RUN_TIME_VAR_ENV(yytext, *driver.loc.back()); } @@ -526,14 +647,75 @@ NEW_LINE [\n\r]+ ["][!&]?{RUN_TIME_VAR_RULE}(\:{DICT_ELEMENT})? { return p::make_RUN_TIME_VAR_RULE(yytext, *driver.loc.back()); } ["][!&]?{RUN_TIME_VAR_XML}(\:[\']{FREE_TEXT_QUOTE}[\'])?["] { return p::make_RUN_TIME_VAR_XML(yytext, *driver.loc.back()); } ["][!&]?{RUN_TIME_VAR_XML}(\:{DICT_ELEMENT})? { return p::make_RUN_TIME_VAR_XML(yytext, *driver.loc.back()); } -["][!&]?{VARIABLENOCOLON}["] { return p::make_VARIABLE(yytext, *driver.loc.back()); } ["][!&]?{VARIABLE_COL}(\:[\']{FREE_TEXT_QUOTE}[\'])?["] { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } ["][!&]?{VARIABLE_COL}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +["][!&]?{VARIABLE_SESSION}(\:[\']{FREE_TEXT_QUOTE}[\'])?["] { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +["][!&]?{VARIABLE_SESSION}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +["][!&]?{VARIABLE_IP}(\:[\']{FREE_TEXT_QUOTE}[\'])?["] { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +["][!&]?{VARIABLE_IP}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +["][!&]?{VARIABLE_USER}(\:[\']{FREE_TEXT_QUOTE}[\'])?["] { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } +["][!&]?{VARIABLE_USER}(\:{DICT_ELEMENT})? { return p::make_VARIABLE_COL(yytext, *driver.loc.back()); } ["][!&]?{VARIABLE_TX}(\:[\']{FREE_TEXT_QUOTE}[\'])?["] { return p::make_VARIABLE_TX(yytext, *driver.loc.back()); } ["][!&]?{VARIABLE_TX}(\:{DICT_ELEMENT})?["] { return p::make_VARIABLE_TX(yytext, *driver.loc.back()); } -["][!&]?{VARIABLE}(\:[\']{FREE_TEXT_QUOTE}[\'])?["] { return p::make_VARIABLE(yytext, *driver.loc.back()); } -["][!&]?{VARIABLE}(\:{DICT_ELEMENT})?["] { return p::make_VARIABLE(yytext, *driver.loc.back()); } [&]?{RUN_TIME_VAR_TIME_WDAY} { return p::make_RUN_TIME_VAR_TIME_WDAY(yytext, *driver.loc.back()); } + +{VARIABLE_ARGS_COMBINED_SIZE} { return p::make_VARIABLE_ARGS_COMBINED_SIZE(*driver.loc.back()); } +{VARIABLE_ARGS_GET_NAMES} { return p::make_VARIABLE_ARGS_GET_NAMES(*driver.loc.back()); } +{VARIABLE_ARGS_NAMES} { return p::make_VARIABLE_ARGS_NAMES(*driver.loc.back()); } +{VARIABLE_ARGS_POST_NAMES} { return p::make_VARIABLE_ARGS_POST_NAMES(*driver.loc.back()); } +{VARIABLE_AUTH_TYPE} { return p::make_VARIABLE_AUTH_TYPE(*driver.loc.back()); } +{VARIABLE_FILES_COMBINED_SIZE} { return p::make_VARIABLE_FILES_COMBINED_SIZE(*driver.loc.back()); } +{VARIABLE_FILES_TMP_NAMES} { return p::make_VARIABLE_FILES_TMP_NAMES(*driver.loc.back()); } +{VARIABLE_FULL_REQUEST_LENGTH} { return p::make_VARIABLE_FULL_REQUEST_LENGTH(*driver.loc.back()); } +{VARIABLE_FULL_REQUEST} { return p::make_VARIABLE_FULL_REQUEST(*driver.loc.back()); } +{VARIABLE_INBOUND_DATA_ERROR} { return p::make_VARIABLE_INBOUND_DATA_ERROR(*driver.loc.back()); } +{VARIABLE_MATCHED_VAR_NAME} { return p::make_VARIABLE_MATCHED_VAR_NAME(*driver.loc.back()); } +{VARIABLE_MATCHED_VAR} { return p::make_VARIABLE_MATCHED_VAR(*driver.loc.back()); } +{VARIABLE_MULTIPART_CRLF_LF_LINES} { return p::make_VARIABLE_MULTIPART_CRLF_LF_LINES(*driver.loc.back()); } +{VARIABLE_MULTIPART_DATA_AFTER} { return p::make_VARIABLE_MULTIPART_DATA_AFTER(*driver.loc.back()); } +{VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED} { return p::make_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED(*driver.loc.back()); } +{VARIABLE_MULTIPART_HEADER_FOLDING} { return p::make_VARIABLE_MULTIPART_HEADER_FOLDING(*driver.loc.back()); } +{VARIABLE_MULTIPART_INVALID_HEADER_FOLDING} { return p::make_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING(*driver.loc.back()); } +{VARIABLE_MULTIPART_INVALID_QUOTING} { return p::make_VARIABLE_MULTIPART_INVALID_QUOTING(*driver.loc.back()); } +{VARIABLE_MULTIPART_STRICT_ERROR} { return p::make_VARIABLE_MULTIPART_STRICT_ERROR(*driver.loc.back()); } +{VARIABLE_MULTIPART_UNMATCHED_BOUNDARY} { return p::make_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY(*driver.loc.back()); } +{VARIABLE_OUTBOUND_DATA_ERROR} { return p::make_VARIABLE_OUTBOUND_DATA_ERROR(*driver.loc.back()); } +{VARIABLE_PATH_INFO} { return p::make_VARIABLE_PATH_INFO(*driver.loc.back()); } +{VARIABLE_QUERY_STRING} { return p::make_VARIABLE_QUERY_STRING(*driver.loc.back()); } +{VARIABLE_REMOTE_ADDR} { return p::make_VARIABLE_REMOTE_ADDR(*driver.loc.back()); } +{VARIABLE_REMOTE_HOST} { return p::make_VARIABLE_REMOTE_HOST(*driver.loc.back()); } +{VARIABLE_REMOTE_PORT} { return p::make_VARIABLE_REMOTE_PORT(*driver.loc.back()); } +{VARIABLE_REQBODY_ERROR_MSG} { return p::make_VARIABLE_REQBODY_ERROR_MSG(*driver.loc.back()); } +{VARIABLE_REQBODY_ERROR} { return p::make_VARIABLE_REQBODY_ERROR(*driver.loc.back()); } +{VARIABLE_REQBODY_PROCESSOR_ERROR_MSG} { return p::make_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG(*driver.loc.back()); } +{VARIABLE_REQBODY_PROCESSOR_ERROR} { return p::make_VARIABLE_REQBODY_PROCESSOR_ERROR(*driver.loc.back()); } +{VARIABLE_REQBODY_PROCESSOR} { return p::make_VARIABLE_REQBODY_PROCESSOR(*driver.loc.back()); } +{VARIABLE_REQUEST_BASENAME} { return p::make_VARIABLE_REQUEST_BASENAME(*driver.loc.back()); } +{VARIABLE_REQUEST_BODY_LENGTH} { return p::make_VARIABLE_REQUEST_BODY_LENGTH(*driver.loc.back()); } +{VARIABLE_REQUEST_BODY} { return p::make_VARIABLE_REQUEST_BODY(*driver.loc.back()); } +{VARIABLE_REQUEST_FILE_NAME} { return p::make_VARIABLE_REQUEST_FILE_NAME(*driver.loc.back()); } +{VARIABLE_REQUEST_HEADERS_NAMES} { return p::make_VARIABLE_REQUEST_HEADERS_NAMES(*driver.loc.back()); } +{VARIABLE_REQUEST_LINE} { return p::make_VARIABLE_REQUEST_LINE(*driver.loc.back()); } +{VARIABLE_REQUEST_METHOD} { return p::make_VARIABLE_REQUEST_METHOD(*driver.loc.back()); } +{VARIABLE_REQUEST_PROTOCOL} { return p::make_VARIABLE_REQUEST_PROTOCOL(*driver.loc.back()); } +{VARIABLE_REQUEST_URI_RAW} { return p::make_VARIABLE_REQUEST_URI_RAW(*driver.loc.back()); } +{VARIABLE_REQUEST_URI} { return p::make_VARIABLE_REQUEST_URI(*driver.loc.back()); } +{VARIABLE_RESOURCE} { return p::make_VARIABLE_RESOURCE(*driver.loc.back()); } +{VARIABLE_RESPONSE_BODY} { return p::make_VARIABLE_RESPONSE_BODY(*driver.loc.back()); } +{VARIABLE_RESPONSE_CONTENT_LENGTH} { return p::make_VARIABLE_RESPONSE_CONTENT_LENGTH(*driver.loc.back()); } +{VARIABLE_RESPONSE_CONTENT_TYPE} { return p::make_VARIABLE_RESPONSE_CONTENT_TYPE(*driver.loc.back()); } +{VARIABLE_RESPONSE_HEADERS_NAMES} { return p::make_VARIABLE_RESPONSE_HEADERS_NAMES(*driver.loc.back()); } +{VARIABLE_RESPONSE_PROTOCOL} { return p::make_VARIABLE_RESPONSE_PROTOCOL(*driver.loc.back()); } +{VARIABLE_RESPONSE_STATUS} { return p::make_VARIABLE_RESPONSE_STATUS(*driver.loc.back()); } +{VARIABLE_SERVER_ADDR} { return p::make_VARIABLE_SERVER_ADDR(*driver.loc.back()); } +{VARIABLE_SERVER_NAME} { return p::make_VARIABLE_SERVER_NAME(*driver.loc.back()); } +{VARIABLE_SERVER_PORT} { return p::make_VARIABLE_SERVER_PORT(*driver.loc.back()); } +{VARIABLE_SESSION_ID} { return p::make_VARIABLE_SESSION_ID(*driver.loc.back()); } +{VARIABLE_UNIQUE_ID} { return p::make_VARIABLE_UNIQUE_ID(*driver.loc.back()); } +{VARIABLE_URL_ENCODED_ERROR} { return p::make_VARIABLE_URL_ENCODED_ERROR(*driver.loc.back()); } +{VARIABLE_USER_ID} { return p::make_VARIABLE_USER_ID(*driver.loc.back()); } + + } { diff --git a/src/request_body_processor/multipart.cc b/src/request_body_processor/multipart.cc index ccf98e48..ade1795c 100644 --- a/src/request_body_processor/multipart.cc +++ b/src/request_body_processor/multipart.cc @@ -859,8 +859,9 @@ int Multipart::process_boundary(int last_part) { * is clear that there is no more data to be processed. */ int Multipart::multipart_complete(std::string *error) { - m_transaction->m_collections.store("MULTIPART_UNMATCHED_BOUNDARY", - std::to_string(m_flag_unmatched_boundary)); + m_transaction->m_variableMultipartUnmatchedBoundary.set( + std::to_string(m_flag_unmatched_boundary), + m_transaction->m_variableOffset); m_transaction->m_collections.store("MULTIPART_DATA_BEFORE", std::to_string(m_flag_data_before)); @@ -868,8 +869,9 @@ int Multipart::multipart_complete(std::string *error) { debug(4, "Multipart: Warning: seen data before first boundary."); } - m_transaction->m_collections.store("MULTIPART_DATA_AFTER", - std::to_string(m_flag_data_after)); + m_transaction->m_variableMultipartDataAfter.set( + std::to_string(m_flag_data_after), + m_transaction->m_variableOffset); if (m_flag_data_after) { debug(4, "Multipart: Warning: seen data after last boundary."); } @@ -886,8 +888,9 @@ int Multipart::multipart_complete(std::string *error) { debug(4, "Multipart: Warning: boundary whitespace in C-T header."); } - m_transaction->m_collections.store("MULTIPART_HEADER_FOLDING", - std::to_string(m_flag_header_folding)); + m_transaction->m_variableMultipartHeaderFolding.set( + std::to_string(m_flag_header_folding), + m_transaction->m_variableOffset); if (m_flag_header_folding) { debug(4, "Multipart: Warning: header folding used."); } @@ -896,8 +899,9 @@ int Multipart::multipart_complete(std::string *error) { std::to_string(m_flag_crlf_line)); m_transaction->m_collections.store("MULTIPART_LF_LINE", std::to_string(m_flag_lf_line)); - m_transaction->m_collections.store("MULTIPART_CRLF_LF_LINES", - std::to_string(m_flag_crlf_line && m_flag_lf_line)); + m_transaction->m_variableMultipartCrlfLFLines.set( + std::to_string(m_flag_crlf_line && m_flag_lf_line), + m_transaction->m_variableOffset); if (m_flag_crlf_line && m_flag_lf_line) { debug(4, "Multipart: Warning: mixed line endings used (CRLF/LF)."); } else if (m_flag_lf_line) { @@ -910,8 +914,9 @@ int Multipart::multipart_complete(std::string *error) { debug(4, "Multipart: Warning: missing semicolon in C-T header."); } - m_transaction->m_collections.store("MULTIPART_INVALID_QUOTING", - std::to_string(m_flag_invalid_quoting)); + m_transaction->m_variableMultipartInvalidQuoting.set( + std::to_string(m_flag_invalid_quoting), + m_transaction->m_variableOffset); if (m_flag_invalid_quoting) { debug(4, "Multipart: Warning: invalid quoting used."); } @@ -922,20 +927,21 @@ int Multipart::multipart_complete(std::string *error) { debug(4, "Multipart: Warning: invalid part parsing."); } - m_transaction->m_collections.store("MULTIPART_INVALID_HEADER_FOLDING", - std::to_string(m_flag_invalid_header_folding)); + m_transaction->m_variableMultipartInvalidHeaderFolding.set( + std::to_string(m_flag_invalid_header_folding), + m_transaction->m_variableOffset); if (m_flag_invalid_header_folding) { debug(4, "Multipart: Warning: invalid header folding used."); } - m_transaction->m_collections.store("MULTIPART_STRICT_ERROR", + m_transaction->m_variableMultipartStrictError.set( std::to_string(m_flag_error || m_flag_boundary_quoted != 0 || m_flag_boundary_whitespace != 0 || m_flag_data_before != 0 || m_flag_data_after != 0 || m_flag_header_folding != 0 || m_flag_lf_line != 0 || m_flag_missing_semicolon != 0 || m_flag_invalid_quoting != 0 || m_flag_invalid_part != 0 || m_flag_invalid_header_folding != 0 - || m_flag_file_limit_exceeded != 0)); + || m_flag_file_limit_exceeded != 0), m_transaction->m_variableOffset); if ((m_seen_data != 0) && (m_is_complete == 0)) { @@ -1031,8 +1037,9 @@ int Multipart::multipart_complete(std::string *error) { std::to_string(m_transaction->->m_ARGScombinedSize)); #endif } - m_transaction->m_collections.store("FILES_COMBINED_SIZE", - std::to_string(file_combined_size)); + m_transaction->m_variableFilesCombinedSize.set( + std::to_string(file_combined_size), + m_transaction->m_variableOffset); return true; } diff --git a/src/rule.cc b/src/rule.cc index 2e3fb77a..c950b292 100644 --- a/src/rule.cc +++ b/src/rule.cc @@ -173,8 +173,8 @@ bool Rule::evaluateActions(Transaction *trasn) { void Rule::updateMatchedVars(Transaction *trasn, std::string key, std::string value) { trasn->debug(4, "Matched vars updated."); - trasn->m_collections.storeOrUpdateFirst("MATCHED_VAR", value); - trasn->m_collections.storeOrUpdateFirst("MATCHED_VAR_NAME", key); + trasn->m_variableMatchedVar.set(value, trasn->m_variableOffset); + trasn->m_variableMatchedVarName.set(key, trasn->m_variableOffset); trasn->m_collections.store("MATCHED_VARS:" + key, value); trasn->m_collections.store("MATCHED_VARS_NAMES:" + key, key); } @@ -183,6 +183,7 @@ void Rule::updateMatchedVars(Transaction *trasn, std::string key, void Rule::cleanMatchedVars(Transaction *trasn) { trasn->debug(4, "Matched vars cleaned."); trasn->m_collections.storeOrUpdateFirst("MATCHED_VAR", ""); + trasn->m_variableMatchedVar.set("", trasn->m_variableOffset); trasn->m_collections.del("MATCHED_VARS_NAME"); trasn->m_collections.del("MATCHED_VARS"); trasn->m_collections.del("MATCHED_VARS_NAMES"); diff --git a/src/transaction.cc b/src/transaction.cc index c9d61f04..bea3a9ea 100644 --- a/src/transaction.cc +++ b/src/transaction.cc @@ -109,15 +109,9 @@ Transaction::Transaction(ModSecurity *ms, Rules *rules, void *logCbData) m_timeStamp(std::time(NULL)), m_httpCodeReturned(200), m_highestSeverityAction(255), - m_ARGScombinedSize(0), - m_ARGScombinedSizeStr(NULL), - m_namesArgsPost(NULL), - m_namesArgsGet(NULL), + m_ARGScombinedSizeDouble(0), m_requestBodyType(UnknownFormat), m_requestBodyProcessor(UnknownFormat), - m_requestHeadersNames(NULL), - m_responseHeadersNames(NULL), - m_responseContentType(NULL), m_requestBodyAccess(Rules::PropertyNotSetConfigBoolean), m_marker(""), m_allowType(modsecurity::actions::disruptive::NoneAllowType), @@ -135,23 +129,7 @@ Transaction::Transaction(ModSecurity *ms, Rules *rules, void *logCbData) std::to_string(modsecurity::utils::generate_transaction_unique_id()); m_rules->incrementReferenceCount(); - m_collections.store("ARGS_COMBINED_SIZE", std::string("0")); - m_ARGScombinedSizeStr = m_collections.resolveFirst("ARGS_COMBINED_SIZE"); - m_collections.store("ARGS_POST_NAMES", std::string("")); - this->m_namesArgsPost = m_collections.resolveFirst("ARGS_POST_NAMES"); - m_collections.store("ARGS_GET_NAMES", std::string("")); - this->m_namesArgsGet = m_collections.resolveFirst("ARGS_GET_NAMES"); - m_collections.store("REQUEST_HEADERS_NAMES", std::string("")); - this->m_requestHeadersNames = m_collections.resolveFirst( - "REQUEST_HEADERS_NAMES"); - m_collections.store("RESPONSE_HEADERS_NAMES", std::string("")); - this->m_responseHeadersNames = m_collections.resolveFirst( - "RESPONSE_HEADERS_NAMES"); - m_collections.store("RESPONSE_CONTENT_TYPE", std::string("")); - this->m_responseContentType = m_collections.resolveFirst( - "RESPONSE_CONTENT_TYPE"); - - m_collections.storeOrUpdateFirst("URLENCODED_ERROR", "0"); + m_variableUrlEncodedError.set("0", 0); #ifndef NO_LOGS this->debug(4, "Initializing transaction"); @@ -233,14 +211,13 @@ int Transaction::processConnection(const char *client, int cPort, debug(4, "Starting phase CONNECTION. (SecRules 0)"); #endif - this->m_collections.store("REMOTE_HOST", m_clientIpAddress); - this->m_collections.store("UNIQUE_ID", m_id); - this->m_collections.store("REMOTE_ADDR", m_clientIpAddress); - this->m_collections.store("SERVER_ADDR", m_serverIpAddress); - this->m_collections.store("SERVER_PORT", - std::to_string(this->m_serverPort)); - this->m_collections.store("REMOTE_PORT", - std::to_string(this->m_clientPort)); + m_variableRemoteHost.set(m_clientIpAddress, m_variableOffset); + m_variableUniqueID.set(m_id, m_variableOffset); + m_variableRemoteAddr.set(m_clientIpAddress, m_variableOffset); + m_variableServerAddr.set(m_serverIpAddress, m_variableOffset); + m_variableServerPort.set(std::to_string(this->m_serverPort), m_variableOffset); + m_variableRemotePort.set(std::to_string(this->m_clientPort), m_variableOffset); + this->m_rules->evaluate(modsecurity::ConnectionPhase, this); return true; } @@ -289,7 +266,7 @@ bool Transaction::extractArguments(const std::string &orig, &invalid, &changed); if (invalid) { - m_collections.storeOrUpdateFirst("URLENCODED_ERROR", "1"); + m_variableUrlEncodedError.set("1", m_variableOffset); } addArgument(orig, std::string(reinterpret_cast(key_c), key_s-1), @@ -309,30 +286,20 @@ bool Transaction::addArgument(const std::string& orig, const std::string& key, key + "\", value \"" + value + "\""); m_collections.store("ARGS:" + key, value); + if (orig == "GET") { m_collections.store("ARGS_GET:" + key, value); - if (m_namesArgsGet->empty()) { - m_namesArgsGet->assign(key); - } else { - m_namesArgsGet->assign(*m_namesArgsGet + " " + key); - } - } - if (orig == "POST") { + m_variableArgGetNames.append(key, 0, true); + } else if (orig == "POST") { m_collections.store("ARGS_POST:" + key, value); - if (m_namesArgsPost->empty()) { - m_namesArgsPost->assign(key); - } else { - m_namesArgsPost->assign(*m_namesArgsPost + " " + key); - } + m_variableArgPostNames.append(key, 0, true); } - m_variableArgsNames.append(key, 0, true); - - this->m_ARGScombinedSize = this->m_ARGScombinedSize + \ + m_ARGScombinedSizeDouble = m_ARGScombinedSizeDouble + \ key.length() + value.length(); - this->m_ARGScombinedSizeStr->assign( - std::to_string(this->m_ARGScombinedSize)); + + m_variableARGScombinedSize.set(std::to_string(m_ARGScombinedSizeDouble), 0); return true; } @@ -377,8 +344,8 @@ int Transaction::processURI(const char *uri, const char *method, size_t pos = m_uri_decoded.find("?"); size_t pos_raw = uri_s.find("?"); - m_collections.store("REQUEST_LINE", std::string(method) + " " + - std::string(uri) + " HTTP/" + std::string(http_version)); + m_variableRequestLine.set(std::string(method) + " " + std::string(uri) + + " HTTP/" + std::string(http_version), m_variableOffset); if (pos != std::string::npos) { m_uri_no_query_string_decoded = std::string(m_uri_decoded, 0, pos); @@ -387,8 +354,9 @@ int Transaction::processURI(const char *uri, const char *method, } if (pos_raw != std::string::npos) { - m_collections.store("QUERY_STRING", std::string(uri_s, pos_raw + 1, - uri_s.length() - (pos_raw + 1))); + std::string qry = std::string(uri_s, pos_raw + 1, + uri_s.length() - (pos_raw + 1)); + m_variableQueryString.set(qry, m_variableOffset); } std::string path_info; @@ -397,18 +365,18 @@ int Transaction::processURI(const char *uri, const char *method, } else { path_info = std::string(m_uri_decoded, 0, pos); } - m_collections.store("PATH_INFO", path_info); - m_collections.store("REQUEST_FILENAME", path_info); + m_variablePathInfo.set(path_info, m_variableOffset); + m_variableRequestFilename.set(path_info, m_variableOffset); size_t offset = path_info.find_last_of("/\\"); if (offset != std::string::npos && path_info.length() > offset + 1) { std::string basename = std::string(path_info, offset + 1, path_info.length() - (offset + 1)); - m_collections.store("REQUEST_BASENAME", basename); + m_variableRequestBasename.set(basename, m_variableOffset); } - m_collections.store("REQUEST_METHOD", method); - m_collections.store("REQUEST_PROTOCOL", - "HTTP/" + std::string(http_version)); + m_variableRequestMethod.set(method, m_variableOffset); + m_variableRequestProtocol.set("HTTP/" + std::string(http_version), + m_variableOffset); std::string parsedURI = m_uri_decoded; // The more popular case is without domain @@ -434,8 +402,8 @@ int Transaction::processURI(const char *uri, const char *method, } } - m_collections.store("REQUEST_URI", parsedURI); - m_collections.store("REQUEST_URI_RAW", uri); + m_variableRequestURI.set(parsedURI, m_variableOffset); + m_variableRequestURIRaw.set(uri, m_variableOffset); if (pos != std::string::npos && (m_uri_decoded.length() - pos) > 2) { extractArguments("GET", std::string(uri_s, pos_raw + 1, @@ -496,14 +464,14 @@ int Transaction::processRequestHeaders() { */ int Transaction::addRequestHeader(const std::string& key, const std::string& value) { - m_requestHeadersNames->assign(*m_requestHeadersNames + " " + key); + m_variableRequestHeadersNames.append(key, 0, true); this->m_collections.store("REQUEST_HEADERS:" + key, value); std::string keyl = utils::string::tolower(key); if (keyl == "authorization") { std::vector type = utils::string::split(value, ' '); - this->m_collections.store("AUTH_TYPE", type[0]); + m_variableAuthType.set(type[0], m_variableOffset); } if (keyl == "cookie") { @@ -535,18 +503,18 @@ int Transaction::addRequestHeader(const std::string& key, std::string l = utils::string::tolower(value); if (l.compare(0, multipart.length(), multipart) == 0) { this->m_requestBodyType = MultiPartRequestBody; - m_collections.store("REQBODY_PROCESSOR", "MULTIPART"); + m_variableReqbodyProcessor.set("MULTIPART", m_variableOffset); } if (l == "application/x-www-form-urlencoded") { this->m_requestBodyType = WWWFormUrlEncoded; - m_collections.store("REQBODY_PROCESSOR", "URLENCODED"); + m_variableReqbodyProcessor.set("URLENCODED", m_variableOffset); } } if (keyl == "host") { std::vector host = utils::string::split(value, ':'); - m_collections.store("SERVER_NAME", host[0]); + m_variableServerName.set(host[0], m_variableOffset); } return 1; } @@ -637,8 +605,8 @@ int Transaction::processRequestBody() { return true; } - if (m_collections.resolveFirst("INBOUND_DATA_ERROR") == NULL) { - m_collections.store("INBOUND_DATA_ERROR", "0"); + if (m_variableInboundDataError.m_value.empty() == true) { + m_variableInboundDataError.set("0", m_variableOffset); } /* @@ -658,15 +626,15 @@ int Transaction::processRequestBody() { m_xml->complete(&error); } if (error.empty() == false) { - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_ERROR_MSG", - "XML parsing error: " + error); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR_MSG", - "XML parsing error: " + error); + m_variableReqbodyError.set("1", m_variableOffset); + m_variableReqbodyErrorMsg.set("XML parsing error: " + error, + m_variableOffset); + m_variableReqbodyProcessorErrorMsg.set("XML parsing error: " \ + + error, m_variableOffset); + m_variableReqbodyProcessorError.set("1", m_variableOffset); } else { - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "0"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "0"); + m_variableReqbodyError.set("1", m_variableOffset); + m_variableReqbodyProcessorError.set("0", m_variableOffset); } } else if (m_requestBodyProcessor == JSONRequestBody) { std::string error; @@ -677,15 +645,15 @@ int Transaction::processRequestBody() { m_json->complete(&error); } if (error.empty() == false) { - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_ERROR_MSG", - "XML parsing error: " + error); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR_MSG", - "XML parsing error: " + error); + m_variableReqbodyError.set("1", m_variableOffset); + m_variableReqbodyProcessorError.set("1", m_variableOffset); + m_variableReqbodyErrorMsg.set("XML parsing error: " + error, + m_variableOffset); + m_variableReqbodyProcessorErrorMsg.set("XML parsing error: " \ + + error, m_variableOffset); } else { - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "0"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "0"); + m_variableReqbodyError.set("0", m_variableOffset); + m_variableReqbodyProcessorError.set("0", m_variableOffset); } } else if (m_requestBodyType == MultiPartRequestBody) { std::string error; @@ -700,15 +668,15 @@ int Transaction::processRequestBody() { m.multipart_complete(&error); } if (error.empty() == false) { - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_ERROR_MSG", - "Multipart parsing error: " + error); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR_MSG", - "Multipart parsing error: " + error); + m_variableReqbodyError.set("1", m_variableOffset); + m_variableReqbodyProcessorError.set("1", m_variableOffset); + m_variableReqbodyErrorMsg.set("Multipart parsing error: " + error, + m_variableOffset); + m_variableReqbodyProcessorErrorMsg.set("Multipart parsing " \ + "error: " + error, m_variableOffset); } else { - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "0"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "0"); + m_variableReqbodyError.set("0", m_variableOffset); + m_variableReqbodyProcessorError.set("0", m_variableOffset); } } else if (m_requestBodyType == WWWFormUrlEncoded) { extractArguments("POST", m_requestBody.str()); @@ -720,15 +688,15 @@ int Transaction::processRequestBody() { if (a != NULL && a->empty() == false) { error.assign(*a); } - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "1"); - m_collections.storeOrUpdateFirst("REQBODY_ERROR_MSG", - "Unknown request body processor: " + error); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR_MSG", - "Unknown request body processor: " + error); + m_variableReqbodyError.set("1", m_variableOffset); + m_variableReqbodyProcessorError.set("1", m_variableOffset); + m_variableReqbodyErrorMsg.set("Unknown request body processor: " \ + + error, m_variableOffset); + m_variableReqbodyProcessorErrorMsg.set("Unknown request body " \ + "processor: " + error, m_variableOffset); } else { - m_collections.storeOrUpdateFirst("REQBODY_ERROR", "0"); - m_collections.storeOrUpdateFirst("REQBODY_PROCESSOR_ERROR", "0"); + m_variableReqbodyError.set("0", m_variableOffset); + m_variableReqbodyProcessorError.set("0", m_variableOffset); } #if 1 @@ -774,14 +742,15 @@ int Transaction::processRequestBody() { fullRequest = fullRequest + "\n\n"; fullRequest = fullRequest + m_requestBody.str(); - m_collections.store("FULL_REQUEST", fullRequest); - m_collections.store("FULL_REQUEST_LENGTH", - std::to_string(fullRequest.size())); + m_variableFullRequest.set(fullRequest, m_variableOffset); + m_variableFullRequestLength.set(std::to_string(fullRequest.size()), + m_variableOffset); if (m_requestBody.tellp() > 0) { - m_collections.store("REQUEST_BODY", m_requestBody.str()); - m_collections.store("REQUEST_BODY_LENGTH", - std::to_string(m_requestBody.str().size())); + m_variableRequestBody.set(m_requestBody.str(), m_variableOffset); + m_variableRequestBodyLength.set(std::to_string( + m_requestBody.str().size()), + m_variableOffset); } this->m_rules->evaluate(modsecurity::RequestBodyPhase, this); @@ -853,7 +822,7 @@ int Transaction::appendRequestBody(const unsigned char *buf, size_t len) { if (this->m_rules->m_requestBodyLimit.m_value > 0 && this->m_rules->m_requestBodyLimit.m_value < len + current_size) { - m_collections.store("INBOUND_DATA_ERROR", "1"); + m_variableInboundDataError.set("1", m_variableOffset); #ifndef NO_LOGS debug(5, "Request body is bigger than the maximum expected."); #endif @@ -913,8 +882,8 @@ int Transaction::processResponseHeaders(int code, const std::string& proto) { #endif this->m_httpCodeReturned = code; - this->m_collections.store("RESPONSE_STATUS", std::to_string(code)); - m_collections.store("RESPONSE_PROTOCOL", proto); + m_variableResponseStatus.set(std::to_string(code), m_variableOffset); + m_variableResponseProtocol.set(proto, m_variableOffset); if (m_rules->m_secRuleEngine == Rules::DisabledRuleEngine) { #ifndef NO_LOGS @@ -948,7 +917,7 @@ int Transaction::processResponseHeaders(int code, const std::string& proto) { */ int Transaction::addResponseHeader(const std::string& key, const std::string& value) { - m_responseHeadersNames->assign(*m_responseHeadersNames + " " + key); + m_variableResponseHeadersNames.append(key, 0, true); this->m_collections.store("RESPONSE_HEADERS:" + key, value); @@ -957,7 +926,7 @@ int Transaction::addResponseHeader(const std::string& key, // Content-Type: text/html; charset=UTF-8 std::vector val = utils::string::split(value, ';'); if (val.size() > 0) { - this->m_responseContentType->assign(val[0]); + m_variableResponseContentType.set(val[0], 0); } } return 1; @@ -1050,10 +1019,10 @@ int Transaction::processResponseBody() { } std::set &bi = this->m_rules->m_responseBodyTypeToBeInspected; - auto t = bi.find(*m_responseContentType); + auto t = bi.find(m_variableResponseContentType.m_value); if (t == bi.end() && bi.empty() == false) { #ifndef NO_LOGS - debug(5, "Response Content-Type is " + *m_responseContentType + \ + debug(5, "Response Content-Type is " + m_variableResponseContentType.m_value + \ ". It is not marked to be inspected."); std::string validContetTypes(""); for (std::set::iterator i = bi.begin(); @@ -1064,13 +1033,12 @@ int Transaction::processResponseBody() { #endif return true; } - if (m_collections.resolveFirst("OUTBOUND_DATA_ERROR") == NULL) { - m_collections.store("OUTBOUND_DATA_ERROR", "0"); + if (m_variableOutboundDataError.m_value.empty() == true) { + m_variableOutboundDataError.set("0", m_variableOffset); } - m_collections.store("RESPONSE_BODY", m_responseBody.str()); - m_collections.store("RESPONSE_CONTENT_LENGTH", - std::to_string(m_responseBody.str().size())); + m_variableResponseBody.set(m_responseBody.str(), m_variableOffset); + m_variableResponseContentLength.set(std::to_string(m_responseBody.str().size()), m_variableOffset); this->m_rules->evaluate(modsecurity::ResponseBodyPhase, this); return true; @@ -1099,11 +1067,11 @@ int Transaction::appendResponseBody(const unsigned char *buf, size_t len) { int current_size = this->m_responseBody.tellp(); std::set &bi = this->m_rules->m_responseBodyTypeToBeInspected; - auto t = bi.find(*m_responseContentType); + auto t = bi.find(m_variableResponseContentType.m_value); if (t == bi.end() && bi.empty() == false) { #ifndef NO_LOGS debug(4, "Not appending response body. " \ - "Response Content-Type is " + *m_responseContentType + \ + "Response Content-Type is " + m_variableResponseContentType.m_value + \ ". It is not marked to be inspected."); #endif return true; @@ -1117,7 +1085,7 @@ int Transaction::appendResponseBody(const unsigned char *buf, size_t len) { if (this->m_rules->m_responseBodyLimit.m_value > 0 && this->m_rules->m_responseBodyLimit.m_value < len + current_size) { - m_collections.store("OUTBOUND_DATA_ERROR", "1"); + m_variableOutboundDataError.set("1", m_variableOffset); #ifndef NO_LOGS debug(5, "Response body is bigger than the maximum expected."); #endif diff --git a/src/variables/xml.h b/src/variables/xml.h index afee419f..ee2617d8 100644 --- a/src/variables/xml.h +++ b/src/variables/xml.h @@ -38,7 +38,7 @@ class XML : public Variable { void evaluateInternal(Transaction *transaction, Rule *rule, - std::vector *l) override; + std::vector *l); std::string m_plain; };