From b079faee9734671edbac474d995b1cce8a9339b9 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Tue, 14 Apr 2020 11:33:17 -0300 Subject: [PATCH] Adds new method for rule merge IMPORTANT: SecDefaultAction specified on a child configuration will overwrite the ones specified on the parent; Previously it was concatenating. --- CHANGES | 4 + .../reading_logs_via_rule_message.h | 15 +- .../using_bodies_in_chunks/simple_request.cc | 14 +- headers/modsecurity/actions/action.h | 2 +- headers/modsecurity/modsecurity.h | 2 +- headers/modsecurity/rule.h | 15 +- headers/modsecurity/rule_marker.h | 5 - headers/modsecurity/rule_message.h | 266 +- headers/modsecurity/rule_unconditional.h | 2 +- headers/modsecurity/rule_with_actions.h | 327 +- headers/modsecurity/rule_with_operator.h | 14 +- headers/modsecurity/rules.h | 3 + headers/modsecurity/transaction.h | 60 +- src/actions/accuracy.cc | 1 - src/actions/accuracy.h | 1 + src/actions/audit_log.cc | 7 +- src/actions/audit_log.h | 2 +- src/actions/block.cc | 10 +- src/actions/block.h | 2 +- src/actions/chain.cc | 2 +- src/actions/data/status.cc | 2 +- src/actions/data/status.h | 2 +- src/actions/disruptive/deny.cc | 6 +- src/actions/disruptive/deny.h | 2 +- src/actions/disruptive/drop.cc | 6 +- src/actions/disruptive/drop.h | 2 +- src/actions/disruptive/pass.cc | 2 +- src/actions/disruptive/pass.h | 2 +- src/actions/disruptive/redirect.cc | 6 +- src/actions/disruptive/redirect.h | 2 +- src/actions/init_col.h | 2 +- src/actions/log.cc | 4 +- src/actions/log.h | 2 +- src/actions/log_data.cc | 4 +- src/actions/log_data.h | 4 +- src/actions/maturity.cc | 1 - src/actions/maturity.h | 1 + src/actions/msg.cc | 4 +- src/actions/msg.h | 4 +- src/actions/no_audit_log.cc | 6 +- src/actions/no_audit_log.h | 2 +- src/actions/no_log.cc | 3 +- src/actions/no_log.h | 2 +- src/actions/rev.cc | 1 - src/actions/rev.h | 3 +- src/actions/set_env.h | 2 +- src/actions/set_rsc.h | 2 +- src/actions/set_sid.h | 2 +- src/actions/set_uid.h | 2 +- src/actions/set_var.h | 4 +- src/actions/severity.cc | 12 +- src/actions/severity.h | 2 +- src/actions/tag.cc | 4 +- src/actions/tag.h | 4 +- src/actions/ver.cc | 1 - src/audit_log/audit_log.cc | 7 +- src/modsecurity.cc | 4 +- src/operators/begins_with.cc | 2 +- src/operators/begins_with.h | 2 +- src/operators/contains.cc | 2 +- src/operators/contains.h | 2 +- src/operators/contains_word.cc | 2 +- src/operators/contains_word.h | 2 +- src/operators/detect_sqli.cc | 2 +- src/operators/detect_sqli.h | 2 +- src/operators/detect_xss.cc | 2 +- src/operators/detect_xss.h | 2 +- src/operators/ends_with.cc | 2 +- src/operators/ends_with.h | 2 +- src/operators/operator.cc | 2 +- src/operators/operator.h | 6 +- src/operators/pm.cc | 4 +- src/operators/pm.h | 2 +- src/operators/rbl.cc | 2 +- src/operators/rbl.h | 2 +- src/operators/rx.cc | 2 +- src/operators/rx.h | 2 +- src/operators/rx_global.cc | 2 +- src/operators/rx_global.h | 2 +- src/operators/validate_byte_range.cc | 2 +- src/operators/validate_byte_range.h | 2 +- src/operators/validate_url_encoding.cc | 2 +- src/operators/validate_url_encoding.h | 2 +- src/operators/validate_utf8_encoding.cc | 2 +- src/operators/validate_utf8_encoding.h | 2 +- src/operators/verify_cc.cc | 2 +- src/operators/verify_cc.h | 2 +- src/operators/verify_cpf.cc | 2 +- src/operators/verify_cpf.h | 2 +- src/operators/verify_ssn.cc | 2 +- src/operators/verify_ssn.h | 2 +- src/operators/verify_svnr.cc | 2 +- src/operators/verify_svnr.h | 2 +- src/operators/within.cc | 2 +- src/operators/within.h | 2 +- src/parser/driver.cc | 71 +- src/parser/location.hh | 50 +- src/parser/position.hh | 2 +- src/parser/seclang-parser.cc | 5130 ++++++++--------- src/parser/seclang-parser.hh | 3128 +++++----- src/parser/seclang-parser.yy | 27 +- src/parser/seclang-scanner.cc | 10 +- src/parser/stack.hh | 2 +- src/rule_message.cc | 37 +- src/rule_script.cc | 11 +- src/rule_script.h | 14 +- src/rule_unconditional.cc | 11 +- src/rule_with_actions.cc | 396 +- src/rule_with_operator.cc | 64 +- src/rules_set.cc | 40 + src/rules_set_phases.cc | 24 +- src/transaction.cc | 71 +- src/variables/rule.h | 58 +- test/cppcheck_suppressions.txt | 3 + .../config-update-action-by-id.json | 4 +- test/test-cases/regression/issue-1528.json | 4 +- test/test-cases/regression/issue-1844.json | 22 +- test/test-cases/regression/issue-2296.json | 12 +- .../regression/offset-variable.json | 286 +- test/test-cases/regression/operator-rx.json | 5 +- .../regression/variable-ARGS_POST_NAMES.json | 3 +- 121 files changed, 5250 insertions(+), 5192 deletions(-) diff --git a/CHANGES b/CHANGES index d08f3a0a..fa2f5277 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ v3.x.y - YYYY-MMM-DD (to be released) ------------------------------------- + - IMPORTANT: SecDefaultAction behaves changing: SecDefaultAction specified + on a child configuration will overwrite the ones specified on the parent; + Previously it was concatenating. + [@zimmerle] - Using std::shared_ptr instead of generates its own references counters for Rules and related. [@zimmerle] diff --git a/examples/reading_logs_via_rule_message/reading_logs_via_rule_message.h b/examples/reading_logs_via_rule_message/reading_logs_via_rule_message.h index 58cbba8b..98e0a0ec 100644 --- a/examples/reading_logs_via_rule_message/reading_logs_via_rule_message.h +++ b/examples/reading_logs_via_rule_message/reading_logs_via_rule_message.h @@ -176,21 +176,22 @@ class ReadingLogsViaRuleMessage { return; } - const modsecurity::RuleMessage *ruleMessage = \ - reinterpret_cast(ruleMessagev); + modsecurity::RuleMessage ruleMessage( + *reinterpret_cast(ruleMessagev)); - std::cout << "Rule Id: " << std::to_string(ruleMessage->m_ruleId); - std::cout << " phase: " << std::to_string(ruleMessage->m_phase); + + std::cout << "Rule Id: " << std::to_string(ruleMessage.getRuleId()); + std::cout << " phase: " << std::to_string(ruleMessage.getPhase()); std::cout << std::endl; - if (ruleMessage->m_isDisruptive) { + if (ruleMessage.isDisruptive()) { std::cout << " * Disruptive action: "; - std::cout << modsecurity::RuleMessage::log(ruleMessage); + std::cout << modsecurity::RuleMessage::log(&ruleMessage); std::cout << std::endl; std::cout << " ** %d is meant to be informed by the webserver."; std::cout << std::endl; } else { std::cout << " * Match, but no disruptive action: "; - std::cout << modsecurity::RuleMessage::log(ruleMessage); + std::cout << modsecurity::RuleMessage::log(&ruleMessage); std::cout << std::endl; } } diff --git a/examples/using_bodies_in_chunks/simple_request.cc b/examples/using_bodies_in_chunks/simple_request.cc index 0f555622..87899fcb 100644 --- a/examples/using_bodies_in_chunks/simple_request.cc +++ b/examples/using_bodies_in_chunks/simple_request.cc @@ -69,21 +69,21 @@ static void logCb(void *data, const void *ruleMessagev) { return; } - const modsecurity::RuleMessage *ruleMessage = \ - reinterpret_cast(ruleMessagev); + modsecurity::RuleMessage ruleMessage( + *reinterpret_cast(ruleMessagev)); - std::cout << "Rule Id: " << std::to_string(ruleMessage->m_ruleId); - std::cout << " phase: " << std::to_string(ruleMessage->m_phase); + std::cout << "Rule Id: " << std::to_string(ruleMessage.getRuleId()); + std::cout << " phase: " << std::to_string(ruleMessage.getPhase()); std::cout << std::endl; - if (ruleMessage->m_isDisruptive) { + if (ruleMessage.isDisruptive()) { std::cout << " * Disruptive action: "; - std::cout << modsecurity::RuleMessage::log(ruleMessage); + std::cout << modsecurity::RuleMessage::log(&ruleMessage); std::cout << std::endl; std::cout << " ** %d is meant to be informed by the webserver."; std::cout << std::endl; } else { std::cout << " * Match, but no disruptive action: "; - std::cout << modsecurity::RuleMessage::log(ruleMessage); + std::cout << modsecurity::RuleMessage::log(&ruleMessage); std::cout << std::endl; } } diff --git a/headers/modsecurity/actions/action.h b/headers/modsecurity/actions/action.h index 374b77d6..f5791e39 100644 --- a/headers/modsecurity/actions/action.h +++ b/headers/modsecurity/actions/action.h @@ -78,7 +78,7 @@ class Action { Transaction *transaction); virtual bool evaluate(RuleWithActions *rule, Transaction *transaction); virtual bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr ruleMessage) { + RuleMessage &ruleMessage) { return evaluate(rule, transaction); } virtual bool init(std::string *error) { return true; } diff --git a/headers/modsecurity/modsecurity.h b/headers/modsecurity/modsecurity.h index d4892f96..5d26efb7 100644 --- a/headers/modsecurity/modsecurity.h +++ b/headers/modsecurity/modsecurity.h @@ -292,7 +292,7 @@ class ModSecurity { */ void setServerLogCb(ModSecLogCb cb, int properties); - void serverLog(void *data, std::shared_ptr rm); + void serverLog(void *data, RuleMessage *rm); const std::string& getConnectorInformation() const; diff --git a/headers/modsecurity/rule.h b/headers/modsecurity/rule.h index b10e0556..2805d5de 100644 --- a/headers/modsecurity/rule.h +++ b/headers/modsecurity/rule.h @@ -57,13 +57,17 @@ using TransformationResult = std::pair, using TransformationResults = std::list; using Transformation = actions::transformations::Transformation; -using Transformations = std::vector; +using Transformations = std::vector >; +using TransformationsPtr = std::vector; using Actions = std::vector; -using Tags = std::vector; -using SetVars = std::vector; -using MatchActions = std::vector; +using Tags = std::vector >; +using TagsPtr = std::vector; +using SetVars = std::vector >; +using SetVarsPtr = std::vector; +using MatchActions = std::vector >; +using MatchActionsPtr = std::vector; class Rule { public: @@ -88,9 +92,6 @@ class Rule { virtual bool evaluate(Transaction *transaction) = 0; - virtual bool evaluate(Transaction *transaction, - std::shared_ptr rm) = 0; - std::shared_ptr getFileName() const { return m_fileName; } diff --git a/headers/modsecurity/rule_marker.h b/headers/modsecurity/rule_marker.h index b8b835ef..6aa1205d 100644 --- a/headers/modsecurity/rule_marker.h +++ b/headers/modsecurity/rule_marker.h @@ -55,11 +55,6 @@ class RuleMarker : public Rule { return *this; } - virtual bool evaluate(Transaction *transaction, - std::shared_ptr rm) override { - return evaluate(transaction); - } - virtual bool evaluate(Transaction *transaction) override { if (transaction->isInsideAMarker()) { if (*transaction->getCurrentMarker() == *m_name) { diff --git a/headers/modsecurity/rule_message.h b/headers/modsecurity/rule_message.h index 51eca0e8..a529391d 100644 --- a/headers/modsecurity/rule_message.h +++ b/headers/modsecurity/rule_message.h @@ -42,120 +42,59 @@ class RuleMessage { ClientLogMessageInfo = 4 }; - /** - * - * FIXME: RuleMessage is currently too big, doing a lot of - * unnecessary data duplication. Needs to be shrink down. - * - */ - RuleMessage(RuleWithActions *rule, Transaction *trans) : - m_accuracy(rule->m_accuracy), - m_clientIpAddress(trans->m_clientIpAddress), - m_data(""), - m_id(trans->m_id), - m_isDisruptive(false), - m_match(""), - m_maturity(rule->m_maturity), - m_message(""), - m_noAuditLog(false), - m_phase(rule->getPhase() - 1), - m_reference(""), - m_rev(rule->m_rev), - m_rule(rule), - m_ruleFile(rule->getFileName()), - m_ruleId(rule->m_ruleId), - m_ruleLine(rule->getLineNumber()), - m_saveMessage(true), - m_serverIpAddress(trans->m_serverIpAddress), + + explicit RuleMessage(const RuleMessage &ruleMessage) : + m_severity(ruleMessage.m_severity), + m_tags(), + m_data(ruleMessage.m_data), + m_match(ruleMessage.m_match), + m_message(ruleMessage.m_message), + m_reference(ruleMessage.m_reference), + m_transaction(ruleMessage.m_transaction), + m_rule(ruleMessage.m_rule) + { } + + + explicit RuleMessage(Transaction *transaction) : m_severity(0), - m_uriNoQueryStringDecoded(trans->m_uri_no_query_string_decoded), - m_ver(rule->m_ver), - m_tags() + m_tags(), + m_data(""), + m_match(""), + m_message(""), + m_reference(""), + m_transaction(transaction), + m_rule(nullptr) + { } explicit RuleMessage(RuleMessage *rule) : - m_accuracy(rule->m_accuracy), - m_clientIpAddress(rule->m_clientIpAddress), - m_data(rule->m_data), - m_id(rule->m_id), - m_isDisruptive(rule->m_isDisruptive), - m_match(rule->m_match), - m_maturity(rule->m_maturity), - m_message(rule->m_message), - m_noAuditLog(rule->m_noAuditLog), - m_phase(rule->m_phase), - m_reference(rule->m_reference), - m_rev(rule->m_rev), - m_rule(rule->m_rule), - m_ruleFile(rule->m_ruleFile), - m_ruleId(rule->m_ruleId), - m_ruleLine(rule->m_ruleLine), - m_saveMessage(rule->m_saveMessage), - m_serverIpAddress(rule->m_serverIpAddress), m_severity(rule->m_severity), - m_uriNoQueryStringDecoded(rule->m_uriNoQueryStringDecoded), - m_ver(rule->m_ver), - m_tags(rule->m_tags) - { } - - RuleMessage(const RuleMessage& ruleMessage) - : m_accuracy(ruleMessage.m_accuracy), - m_clientIpAddress(ruleMessage.m_clientIpAddress), - m_data(ruleMessage.m_data), - m_id(ruleMessage.m_id), - m_isDisruptive(ruleMessage.m_isDisruptive), - m_match(ruleMessage.m_match), - m_maturity(ruleMessage.m_maturity), - m_message(ruleMessage.m_message), - m_noAuditLog(ruleMessage.m_noAuditLog), - m_phase(ruleMessage.m_phase), - m_reference(ruleMessage.m_reference), - m_rev(ruleMessage.m_rev), - m_rule(ruleMessage.m_rule), - m_ruleFile(ruleMessage.m_ruleFile), - m_ruleId(ruleMessage.m_ruleId), - m_ruleLine(ruleMessage.m_ruleLine), - m_saveMessage(ruleMessage.m_saveMessage), - m_serverIpAddress(ruleMessage.m_serverIpAddress), - m_severity(ruleMessage.m_severity), - m_uriNoQueryStringDecoded(ruleMessage.m_uriNoQueryStringDecoded), - m_ver(ruleMessage.m_ver), - m_tags(ruleMessage.m_tags) + m_tags(rule->m_tags), + m_data(rule->m_data), + m_match(rule->m_match), + m_message(rule->m_message), + m_reference(rule->m_reference), + m_transaction(rule->m_transaction), + m_rule(rule->m_rule) { } RuleMessage &operator=(const RuleMessage& ruleMessage) { - m_accuracy = ruleMessage.m_accuracy; - m_clientIpAddress = ruleMessage.m_clientIpAddress; - m_data = ruleMessage.m_data; - m_id = ruleMessage.m_id; - m_isDisruptive = ruleMessage.m_isDisruptive; - m_match = ruleMessage.m_match; - m_maturity = ruleMessage.m_maturity; - m_message = ruleMessage.m_message; - m_noAuditLog = ruleMessage.m_noAuditLog; - m_phase = ruleMessage.m_phase; - m_reference = ruleMessage.m_reference; - m_rev = ruleMessage.m_rev; - m_rule = ruleMessage.m_rule; - m_ruleFile = ruleMessage.m_ruleFile; - m_ruleId = ruleMessage.m_ruleId; - m_ruleLine = ruleMessage.m_ruleLine; - m_saveMessage = ruleMessage.m_saveMessage; - m_serverIpAddress = ruleMessage.m_serverIpAddress; m_severity = ruleMessage.m_severity; - m_uriNoQueryStringDecoded = ruleMessage.m_uriNoQueryStringDecoded; - m_ver = ruleMessage.m_ver; m_tags = ruleMessage.m_tags; + m_data = ruleMessage.m_data; + m_match = ruleMessage.m_match; + m_message = ruleMessage.m_message; + m_reference = ruleMessage.m_reference; + m_transaction = ruleMessage.m_transaction; + m_rule = ruleMessage.m_rule; return *this; } void clean() { m_data = ""; m_match = ""; - m_isDisruptive = false; m_reference = ""; m_severity = 0; - m_ver = ""; } std::string log() { @@ -183,29 +122,122 @@ class RuleMessage { static std::string _details(const RuleMessage *rm); static std::string _errorLogTail(const RuleMessage *rm); - int m_accuracy; - std::shared_ptr m_clientIpAddress; - std::string m_data; - std::shared_ptr m_id; - bool m_isDisruptive; - std::string m_match; - int m_maturity; - std::string m_message; - bool m_noAuditLog; - int m_phase; - std::string m_reference; - std::string m_rev; - RuleWithActions *m_rule; - std::shared_ptr m_ruleFile; - int m_ruleId; - int m_ruleLine; - bool m_saveMessage; - std::shared_ptr m_serverIpAddress; - int m_severity; - std::shared_ptr m_uriNoQueryStringDecoded; - std::string m_ver; + RuleWithActions *getRule() const { + return m_rule; + } + void setRule(RuleWithActions *rule) { + m_rule = rule; + } + + bool isSettle() const { + return m_rule != nullptr; + } + + int getRuleId() const { + if (m_rule) { + return m_rule->m_ruleId; + } + return -1; + } + + int getPhase() const { + if (m_rule) { + return m_rule->getPhase(); + } + return 0; + } + + std::string getFileName() const { + if (m_rule) { + return *m_rule->getFileName().get(); + } + return ""; + } + + int getLineNumber() const { + if (m_rule) { + return m_rule->getLineNumber(); + } + return 0; + } + + std::string getRev() const { + if (m_rule) { + return m_rule->getRevision(); + } + return ""; + } + + std::string getVer() const { + if (m_rule) { + return m_rule->getRevision(); + } + return ""; + } + + int getMaturity() const { + if (m_rule) { + return m_rule->getMaturity(); + } + return 0; + } + + int getAccuracy() const { + if (m_rule) { + return m_rule->getAccuracy(); + } + return 0; + } + + std::string getClientIpAddress() const { + if (m_transaction) { + return *m_transaction->m_clientIpAddress.get(); + } + return ""; + } + + std::string getServerIpAddress() const { + if (m_transaction) { + return *m_transaction->m_serverIpAddress.get(); + } + return ""; + } + + std::string getRequestId() const { + if (m_transaction) { + return *m_transaction->m_id.get(); + } + return ""; + } + + std::string getUri() const { + if (m_transaction) { + return *m_transaction->m_uri_no_query_string_decoded.get(); + } + return ""; + } + + bool isDisruptive() const { + if (m_rule) { + return m_rule->hasDisruptiveAction(); + } + return 0; + } + + int m_severity; std::list m_tags; + + // Transaction + std::string m_data; + std::string m_match; + + std::string m_message; + std::string m_reference; + + private: + Transaction *m_transaction; + RuleWithActions *m_rule; }; diff --git a/headers/modsecurity/rule_unconditional.h b/headers/modsecurity/rule_unconditional.h index c66fa7c1..b1ac0eb4 100644 --- a/headers/modsecurity/rule_unconditional.h +++ b/headers/modsecurity/rule_unconditional.h @@ -55,7 +55,7 @@ class RuleUnconditional : public RuleWithActions { return *this; } - virtual bool evaluate(Transaction *transaction, std::shared_ptr ruleMessage) override; + virtual bool evaluate(Transaction *transaction) override; private: }; diff --git a/headers/modsecurity/rule_with_actions.h b/headers/modsecurity/rule_with_actions.h index 4b7db43f..a6731cb4 100644 --- a/headers/modsecurity/rule_with_actions.h +++ b/headers/modsecurity/rule_with_actions.h @@ -37,6 +37,10 @@ namespace modsecurity { class RuleWithActions : public Rule { public: + int SEVERITY_NOT_SET = 10; + int ACCURACY_NOT_SET = 10; + int MATURITY_NOT_SET = 10; + RuleWithActions( Actions *a, Transformations *t, @@ -45,33 +49,54 @@ class RuleWithActions : public Rule { ~RuleWithActions(); - RuleWithActions(const RuleWithActions& r) + RuleWithActions(const RuleWithActions &r) : Rule(r), - m_rev(r.m_rev), - m_ver(r.m_ver), - m_accuracy(r.m_accuracy), - m_maturity(r.m_maturity), m_ruleId(r.m_ruleId), m_chainedRuleChild(r.m_chainedRuleChild), m_chainedRuleParent(r.m_chainedRuleParent), m_disruptiveAction(r.m_disruptiveAction), m_logData(r.m_logData), m_msg(r.m_msg), - m_severity(r.m_severity), m_actionsRuntimePos(r.m_actionsRuntimePos), m_actionsSetVar(r.m_actionsSetVar), m_actionsTag(r.m_actionsTag), + m_defaultActionDisruptiveAction(r.m_defaultActionDisruptiveAction), + m_defaultActionLogData(r.m_defaultActionLogData), + m_defaultActionMsg(r.m_defaultActionMsg), + m_defaultActionActionsRuntimePos(r.m_defaultActionActionsRuntimePos), + m_defaultActionActionsSetVar(r.m_defaultActionActionsSetVar), + m_defaultActionActionsTag(r.m_defaultActionActionsTag), m_transformations(r.m_transformations), + m_defaultTransformations(r.m_defaultTransformations), + m_severity(r.m_severity), + m_revision(r.m_revision), + m_version(r.m_version), + m_accuracy(r.m_accuracy), + m_maturity(r.m_maturity), m_containsCaptureAction(r.m_containsCaptureAction), + m_containsLogAction(r.m_containsLogAction), + m_containsNoLogAction(r.m_containsNoLogAction), m_containsMultiMatchAction(r.m_containsMultiMatchAction), m_containsStaticBlockAction(r.m_containsStaticBlockAction), - m_isChained(r.m_isChained) - { } + m_defaultSeverity(r.m_defaultSeverity), + m_defaultRevision(r.m_defaultRevision), + m_defaultVersion(r.m_defaultVersion), + m_defaultAccuracy(r.m_defaultAccuracy), + m_defaultMaturity(r.m_defaultMaturity), + m_defaultContainsCaptureAction(r.m_defaultContainsCaptureAction), + m_defaultContainsLogAction(r.m_defaultContainsLogAction), + m_defaultContainsNoLogAction(r.m_defaultContainsNoLogAction), + m_defaultContainsMultiMatchAction(r.m_defaultContainsMultiMatchAction), + m_defaultContainsStaticBlockAction(r.m_defaultContainsStaticBlockAction), + m_isChained(r.m_isChained) { }; + virtual bool evaluate(Transaction *transaction) override; + +/* RuleWithActions &operator=(const RuleWithActions& r) { Rule::operator = (r); - m_rev = r.m_rev; - m_ver = r.m_ver; + //m_rev = r.m_rev; + //m_ver = r.m_ver; m_accuracy = r.m_accuracy; m_maturity = r.m_maturity; m_ruleId = r.m_ruleId; @@ -96,24 +121,21 @@ class RuleWithActions : public Rule { return *this; } - virtual bool evaluate(Transaction *transaction, std::shared_ptr ruleMessage) override; + //virtual bool evaluate(Transaction *transaction, std::shared_ptr ruleMessage) override; virtual bool evaluate(Transaction *transaction) override; - +*/ void executeActionsIndependentOfChainedRuleResult( Transaction *trasn, - bool *containsDisruptive, - std::shared_ptr ruleMessage); + bool *containsDisruptive); void executeActionsAfterFullMatch( Transaction *trasn, - bool containsDisruptive, - std::shared_ptr ruleMessage); + bool containsDisruptive); void executeAction(Transaction *trans, bool containsBlock, - std::shared_ptr ruleMessage, actions::Action *a, bool context); @@ -130,34 +152,193 @@ class RuleWithActions : public Rule { int *nth) const; - void performLogging(Transaction *trans, - std::shared_ptr ruleMessage, - bool lastLog = true, - bool chainedParentNull = false); + void addAction(actions::Action *a); + void addTransformation(std::shared_ptr t) { + m_transformations.push_back(t); + } + void addDefaultAction(std::shared_ptr); + void addDefaultTransformation(std::shared_ptr t) { + m_defaultTransformations.push_back(t); + } + std::vector getActionsByName(const std::string& name, Transaction *t); - bool containsTag(const std::string& name, Transaction *t); + bool containsTag(const std::string& name, Transaction *t) const; bool containsMsg(const std::string& name, Transaction *t); - inline bool isChained() const { return m_isChained == true; } - inline bool hasCaptureAction() const { return m_containsCaptureAction == true; } - inline void setChained(bool b) { m_isChained = b; } - inline bool hasDisruptiveAction() const { return m_disruptiveAction != NULL; } - inline bool hasBlockAction() const { return m_containsStaticBlockAction == true; } - inline bool hasMultimatch() const { return m_containsMultiMatchAction == true; } - inline bool hasLogData() const { return m_logData != NULL; } - std::string logData(Transaction *t); - inline bool hasMsg() const { return m_msg != NULL; } - std::string msg(Transaction *t); - inline bool hasSeverity() const { return m_severity != NULL; } - int severity() const; + void clearDefaultActions() { + m_defaultSeverity = SEVERITY_NOT_SET; + m_defaultRevision = ""; + m_defaultVersion = ""; + m_defaultAccuracy = ACCURACY_NOT_SET; + m_defaultMaturity = MATURITY_NOT_SET; + m_defaultContainsCaptureAction = false; + m_defaultContainsLogAction = false; + m_defaultContainsNoLogAction = false; + m_defaultContainsMultiMatchAction = false; + m_defaultContainsStaticBlockAction = false; + m_defaultActionLogData = nullptr; + m_defaultActionMsg = nullptr; + m_defaultActionActionsSetVar.clear(); + m_defaultActionActionsTag.clear(); + m_defaultActionActionsRuntimePos.clear(); + m_defaultActionDisruptiveAction = nullptr; + m_defaultActionActionsRuntimePos.clear(); + m_defaultTransformations.clear(); + } - std::string m_rev; - std::string m_ver; - int m_accuracy; - int m_maturity; + Transformations getTransformation() const { + Transformations dst; + for (auto &a : m_defaultTransformations) { + dst.push_back(a); + } + for (auto &a : m_transformations) { + dst.push_back(a); + } + return dst; + } + + TransformationsPtr getTransformationPtr() const { + TransformationsPtr dst; + for (auto &a : m_defaultTransformations) { + dst.push_back(a.get()); + } + for (auto &a : m_transformations) { + dst.push_back(a.get()); + } + return dst; + } + + SetVars getSetVarsActions() const { + SetVars dst; + for (auto &a : m_defaultActionActionsSetVar) { + dst.push_back(a); + } + for (auto &a : m_actionsSetVar) { + dst.push_back(a); + } + return dst; + } + + SetVarsPtr getSetVarsActionsPtr() const { + SetVarsPtr dst; + for (auto &a : m_defaultActionActionsSetVar) { + dst.push_back(a.get()); + } + for (auto &a : m_actionsSetVar) { + dst.push_back(a.get()); + } + return dst; + } + + MatchActionsPtr getMatchActionsPtr() const { + MatchActionsPtr dst; + for (auto &a : m_defaultActionActionsRuntimePos) { + dst.push_back(a.get()); + } + for (auto &a : m_actionsRuntimePos) { + dst.push_back(a.get()); + } + return dst; + } + + MatchActions getMatchActions() const { + MatchActions dst; + for (auto &a : m_defaultActionActionsRuntimePos) { + dst.push_back(a); + } + for (auto &a : m_actionsRuntimePos) { + dst.push_back(a); + } + return dst; + } + + inline bool hasChainAction() const { return m_isChained == true; } + inline void setHasChainAction(bool b) { m_isChained = b; } + inline bool hasChainedParent() const { return m_chainedRuleParent != nullptr; } + inline bool hasChainedChild() const { return m_chainedRuleChild.get() != nullptr; } + + inline bool hasCaptureAction() const { return m_containsCaptureAction || m_defaultContainsCaptureAction; } + + inline bool hasDisruptiveAction() const { return m_disruptiveAction != nullptr || m_defaultActionDisruptiveAction != nullptr; } + inline void setDisruptiveAction(std::shared_ptr a) { m_disruptiveAction = a; } + inline std::shared_ptr getDisruptiveAction() const { return m_disruptiveAction; } + + inline bool hasBlockAction() const { return m_containsStaticBlockAction || m_defaultContainsStaticBlockAction; } + inline void setHasBlockAction(bool b) { m_containsStaticBlockAction = b; } + + inline bool hasMultimatchAction() const { return m_containsMultiMatchAction || m_defaultContainsMultiMatchAction; } + + inline bool hasLogAction() const { return m_containsLogAction == true; } + inline void setHasLogAction(bool b) { m_containsLogAction = b; } + inline bool hasNoLogAction() const { return m_containsNoLogAction == true; } + inline void setHasNoLogAction(bool b) { m_containsNoLogAction = b; } + + inline bool hasLogDataAction() const { return m_logData != nullptr || m_defaultActionLogData != nullptr; } + inline std::shared_ptr getLogDataAction() const { return m_logData; } + std::string getLogData(/*const */Transaction *t); + inline void setLogDataAction(std::shared_ptr data) { m_logData = data; } + + inline bool hasMessageAction() const { return m_msg != nullptr || m_defaultActionMsg != nullptr; } + inline std::shared_ptr getMessageAction() const { return m_msg; } + inline void setMessageAction(std::shared_ptr msg) { m_msg = msg; } + std::string getMessage(/*const */Transaction *t); + + + inline bool hasSeverityAction() const { return m_severity != SEVERITY_NOT_SET || m_defaultSeverity != SEVERITY_NOT_SET; } + inline int getSeverity() const { return (m_severity != SEVERITY_NOT_SET)?m_severity:m_defaultSeverity; } + inline void setDefaultActionSeverity(unsigned int severity) { m_defaultSeverity = severity; } + inline void setSeverity(unsigned int severity) { m_severity = severity; } + + inline bool hasRevisionAction() const { return m_revision != ""; } + inline std::string getRevision() const { return m_revision; }; + inline void setRevision(const std::string &revision) { m_revision.assign(revision); } + + inline bool hasVersionAction() const { return m_version != ""; } + inline std::string getVersion() const { return m_version; }; + inline void setVersion(const std::string &version) { m_version.assign(version); } + + inline bool hasAccuracyAction() const { return m_accuracy != ACCURACY_NOT_SET || m_defaultAccuracy != ACCURACY_NOT_SET; } + inline int getAccuracy() const { return m_accuracy; } + inline void setAccuracy(unsigned int accuracy) { m_accuracy = accuracy; } + + inline bool hasMaturityAction() const { return m_maturity != MATURITY_NOT_SET || m_defaultMaturity != MATURITY_NOT_SET; } + inline int getMaturity() const { return m_maturity; } + inline void setDefaultActionMaturity(unsigned int maturity) { m_defaultMaturity = maturity; } + inline void setMaturity(unsigned int maturity) { m_maturity = maturity; } + + inline bool hasTagAction() const { return m_actionsTag.size() > 0; } + inline void setTags(Tags tags) { + for (auto tag : tags) { + m_actionsTag.push_back(tag); + } + } + inline void cleanTags() { + m_actionsTag.clear(); + } + Tags getTagsAction() const { + Tags dst; + for (auto &a : m_defaultActionActionsTag) { + dst.push_back(a); + } + for (auto &a : m_actionsTag) { + dst.push_back(a); + } + return dst; + } + + TagsPtr getTagsActionPtr() const { + TagsPtr dst; + for (auto &a : m_defaultActionActionsTag) { + dst.push_back(a.get()); + } + for (auto &a : m_actionsTag) { + dst.push_back(a.get()); + } + return dst; + } int64_t m_ruleId; @@ -167,20 +348,82 @@ class RuleWithActions : public Rule { private: /* actions */ - actions::Action *m_disruptiveAction; - actions::LogData *m_logData; - actions::Msg *m_msg; - actions::Severity *m_severity; + std::shared_ptr m_disruptiveAction; + std::shared_ptr m_logData; + std::shared_ptr m_msg; MatchActions m_actionsRuntimePos; SetVars m_actionsSetVar; Tags m_actionsTag; + /* actions || SecDefaultAction */ + std::shared_ptr m_defaultActionDisruptiveAction; + std::shared_ptr m_defaultActionLogData; + std::shared_ptr m_defaultActionMsg; + MatchActions m_defaultActionActionsRuntimePos; + SetVars m_defaultActionActionsSetVar; + Tags m_defaultActionActionsTag; + /* actions > transformations */ Transformations m_transformations; + /* actions > transformations || SecDefaultAction */ + Transformations m_defaultTransformations; + + + /* || */ + /** + * 0 - EMERGENCY: is generated from correlation of anomaly + * scoring data where there is an inbound + * attack and an outbound leakage. + * 1 - ALERT: is generated from correlation where there is + * an inbound attack and an outbound application + * level error. + * 2 - CRITICAL: Anomaly Score of 5. Is the highest severity + * level possible without correlation. It is + * normally generated by the web attack rules + * (40 level files). + * 3 - ERROR: Error - Anomaly Score of 4. Is generated mostly + * from outbound leakage rules (50 level files). + * 4 - WARNING: Anomaly Score of 3. Is generated by malicious + * client rules (35 level files). + * 5 - NOTICE: Anomaly Score of 2. Is generated by the Protocol + * policy and anomaly files. + * 6 - INFO + * 7 - DEBUG + **/ + unsigned int m_severity:3; + + std::string m_revision; + std::string m_version; + + /** + * 1-9 where 9 is very strong and 1 has many false positives + */ + unsigned int m_accuracy:3; + /** + * 1-9 where 9 is extensively tested and 1 is a brand new experimental rule + */ + unsigned int m_maturity:3; + + bool m_containsCaptureAction:1; + bool m_containsLogAction:1; + bool m_containsNoLogAction:1; bool m_containsMultiMatchAction:1; bool m_containsStaticBlockAction:1; + + /* || SecDefaultAction */ + unsigned int m_defaultSeverity:3; + std::string m_defaultRevision; + std::string m_defaultVersion; + unsigned int m_defaultAccuracy:3; + unsigned int m_defaultMaturity:3; + bool m_defaultContainsCaptureAction:1; + bool m_defaultContainsLogAction:1; + bool m_defaultContainsNoLogAction:1; + bool m_defaultContainsMultiMatchAction:1; + bool m_defaultContainsStaticBlockAction:1; + bool m_isChained:1; }; diff --git a/headers/modsecurity/rule_with_operator.h b/headers/modsecurity/rule_with_operator.h index a8868bcb..059c7173 100644 --- a/headers/modsecurity/rule_with_operator.h +++ b/headers/modsecurity/rule_with_operator.h @@ -45,10 +45,14 @@ class RuleWithOperator : public RuleWithActions { std::unique_ptr fileName, int lineNumber); + RuleWithOperator(const RuleWithOperator &op) + : RuleWithActions(op), + m_variables(op.m_variables), + m_operator(op.m_operator) { }; + virtual ~RuleWithOperator(); - bool evaluate(Transaction *transaction, - std::shared_ptr rm) override; + bool evaluate(Transaction *transaction) override; void getVariablesExceptions(Transaction *t, variables::Variables *exclusion, variables::Variables *addition); @@ -56,7 +60,7 @@ class RuleWithOperator : public RuleWithActions { variables::Variables *eclusion, Transaction *trans); bool executeOperatorAt(Transaction *trasn, const std::string &key, - std::string value, std::shared_ptr rm); + std::string value); static void updateMatchedVars(Transaction *trasn, const std::string &key, const std::string &value); @@ -70,8 +74,8 @@ class RuleWithOperator : public RuleWithActions { } private: - modsecurity::variables::Variables *m_variables; - operators::Operator *m_operator; + std::shared_ptr m_variables; + std::shared_ptr m_operator; }; diff --git a/headers/modsecurity/rules.h b/headers/modsecurity/rules.h index 3c8ccff4..79264b08 100644 --- a/headers/modsecurity/rules.h +++ b/headers/modsecurity/rules.h @@ -80,11 +80,14 @@ class Rules { return true; } + void fixDefaultActions(); + size_t size() const { return m_rules.size(); } std::shared_ptr operator[](int index) const { return m_rules[index]; } std::shared_ptr at(int index) const { return m_rules[index]; } std::vector > m_defaultActions; + std::vector > m_defaultTransformations; std::vector > m_rules; }; diff --git a/headers/modsecurity/transaction.h b/headers/modsecurity/transaction.h index 79d7b3b6..ba38bc39 100644 --- a/headers/modsecurity/transaction.h +++ b/headers/modsecurity/transaction.h @@ -103,6 +103,7 @@ class ModSecurity; class Transaction; class RulesSet; class RuleMessage; +class RuleWithActions; namespace actions { class Action; namespace disruptive { @@ -319,8 +320,56 @@ class TransactionSecMarkerManagement { std::shared_ptr m_marker; }; +class TransactionRuleMessageManagement { + public: + explicit TransactionRuleMessageManagement(Transaction *t) + : m_transaction(t), + m_noAuditLog(false) { + messageNew(); + }; + + RuleMessage *messageGetLast(); + void messageNew(); + + void logMatchLastRuleOnTheChain(RuleWithActions *rule); + + void messageSetNoAuditLog(bool a) { + m_noAuditLog = a; + } + + bool messageSaveAuditLog() const { + return m_noAuditLog; + } + + std::list messageGetAll() { + std::list messages; + for (RuleMessage *a : m_rulesMessages) { + messages.push_back(a); + } + + return messages; + } + + void messageClear() { + m_rulesMessages.clear(); + } + + private: + /** + * This variable holds all the messages asked to be save by the utilization + * of the actions: `log_data' and `msg'. These should be included on the + * auditlogs. + */ + std::list m_rulesMessages; + + Transaction *m_transaction; + bool m_noAuditLog; +}; + + /** @ingroup ModSecurity_CPP_API */ -class Transaction : public TransactionAnchoredVariables, public TransactionSecMarkerManagement { +class Transaction : public TransactionAnchoredVariables, public TransactionSecMarkerManagement, \ + public TransactionRuleMessageManagement { public: Transaction(ModSecurity *transaction, RulesSet *rules, void *logCbData); Transaction(ModSecurity *transaction, RulesSet *rules, char *id, @@ -400,7 +449,7 @@ class Transaction : public TransactionAnchoredVariables, public TransactionSecMa #ifndef NO_LOGS void debug(int, std::string) const; #endif - void serverLog(std::shared_ptr rm); + void serverLog(RuleMessage *rm); int getRuleEngineState() const; @@ -529,13 +578,6 @@ class Transaction : public TransactionAnchoredVariables, public TransactionSecMa */ std::list< std::pair > m_auditLogModifier; - /** - * This variable holds all the messages asked to be save by the utilization - * of the actions: `log_data' and `msg'. These should be included on the - * auditlogs. - */ - std::list m_rulesMessages; - /** * Holds the request body, in case of any. */ diff --git a/src/actions/accuracy.cc b/src/actions/accuracy.cc index c8cfca72..152ab05d 100644 --- a/src/actions/accuracy.cc +++ b/src/actions/accuracy.cc @@ -40,7 +40,6 @@ bool Accuracy::init(std::string *error) { bool Accuracy::evaluate(RuleWithActions *rule, Transaction *transaction) { - rule->m_accuracy = m_accuracy; return true; } diff --git a/src/actions/accuracy.h b/src/actions/accuracy.h index f787af19..0933f4f1 100644 --- a/src/actions/accuracy.h +++ b/src/actions/accuracy.h @@ -35,6 +35,7 @@ class Accuracy : public Action { bool evaluate(RuleWithActions *rule, Transaction *transaction) override; bool init(std::string *error) override; + int getAccuracy() const { return m_accuracy; } private: int m_accuracy; diff --git a/src/actions/audit_log.cc b/src/actions/audit_log.cc index c628ac23..7b64ddcb 100644 --- a/src/actions/audit_log.cc +++ b/src/actions/audit_log.cc @@ -28,11 +28,8 @@ namespace actions { bool AuditLog::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { - rm->m_noAuditLog = false; - ms_dbg_a(transaction, 9, "Saving transaction to logs"); - rm->m_saveMessage = true; - + RuleMessage &rm) { + transaction->messageSetNoAuditLog(false); return true; } diff --git a/src/actions/audit_log.h b/src/actions/audit_log.h index d870de2a..3a814968 100644 --- a/src/actions/audit_log.h +++ b/src/actions/audit_log.h @@ -36,7 +36,7 @@ class AuditLog : public Action { : Action(action, RunTimeOnlyIfMatchKind) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; }; diff --git a/src/actions/block.cc b/src/actions/block.cc index a6b91480..07d61643 100644 --- a/src/actions/block.cc +++ b/src/actions/block.cc @@ -30,16 +30,8 @@ namespace actions { bool Block::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { ms_dbg_a(transaction, 8, "Marking request as disruptive."); - - for (auto &a : transaction->m_rules->m_rulesSetPhases[rule->getPhase()]->m_defaultActions) { - if (a->isDisruptive() == false) { - continue; - } - a->evaluate(rule, transaction, rm); - } - return true; } diff --git a/src/actions/block.h b/src/actions/block.h index 7c40bbd8..b32e864c 100644 --- a/src/actions/block.h +++ b/src/actions/block.h @@ -36,7 +36,7 @@ class Block : public Action { explicit Block(const std::string &action) : Action(action) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; }; diff --git a/src/actions/chain.cc b/src/actions/chain.cc index 197f861f..dddf8cce 100644 --- a/src/actions/chain.cc +++ b/src/actions/chain.cc @@ -26,7 +26,7 @@ namespace actions { bool Chain::evaluate(RuleWithActions *rule, Transaction *transaction) { - rule->setChained(true); + rule->setHasChainAction(true); return true; } diff --git a/src/actions/data/status.cc b/src/actions/data/status.cc index 94299738..5c2b8627 100644 --- a/src/actions/data/status.cc +++ b/src/actions/data/status.cc @@ -39,7 +39,7 @@ bool Status::init(std::string *error) { bool Status::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { transaction->m_it.status = m_status; return true; } diff --git a/src/actions/data/status.h b/src/actions/data/status.h index d792247d..b61b4a2a 100644 --- a/src/actions/data/status.h +++ b/src/actions/data/status.h @@ -38,7 +38,7 @@ class Status : public Action { bool init(std::string *error) override; bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; int m_status; }; diff --git a/src/actions/disruptive/deny.cc b/src/actions/disruptive/deny.cc index e105d651..6dfe4245 100644 --- a/src/actions/disruptive/deny.cc +++ b/src/actions/disruptive/deny.cc @@ -29,7 +29,7 @@ namespace disruptive { bool Deny::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { ms_dbg_a(transaction, 8, "Running action deny"); if (transaction->m_it.status == 200) { @@ -38,9 +38,9 @@ bool Deny::evaluate(RuleWithActions *rule, Transaction *transaction, transaction->m_it.disruptive = true; intervention::freeLog(&transaction->m_it); - rm->m_isDisruptive = true; + rm.setRule(rule); transaction->m_it.log = strdup( - rm->log(RuleMessage::LogMessageInfo::ClientLogMessageInfo).c_str()); + rm.log(RuleMessage::LogMessageInfo::ClientLogMessageInfo).c_str()); return true; } diff --git a/src/actions/disruptive/deny.h b/src/actions/disruptive/deny.h index fb841a49..a11d41bb 100644 --- a/src/actions/disruptive/deny.h +++ b/src/actions/disruptive/deny.h @@ -34,7 +34,7 @@ class Deny : public Action { explicit Deny(const std::string &action) : Action(action) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; bool isDisruptive() override { return true; } }; diff --git a/src/actions/disruptive/drop.cc b/src/actions/disruptive/drop.cc index 18a3b552..5c7b0456 100644 --- a/src/actions/disruptive/drop.cc +++ b/src/actions/disruptive/drop.cc @@ -33,7 +33,7 @@ namespace disruptive { bool Drop::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { ms_dbg_a(transaction, 8, "Running action drop " \ "[executing deny instead of drop.]"); @@ -43,9 +43,9 @@ bool Drop::evaluate(RuleWithActions *rule, Transaction *transaction, transaction->m_it.disruptive = true; intervention::freeLog(&transaction->m_it); - rm->m_isDisruptive = true; + rm.setRule(rule); transaction->m_it.log = strdup( - rm->log(RuleMessage::LogMessageInfo::ClientLogMessageInfo).c_str()); + rm.log(RuleMessage::LogMessageInfo::ClientLogMessageInfo).c_str()); return true; } diff --git a/src/actions/disruptive/drop.h b/src/actions/disruptive/drop.h index f60eddfa..ebfc853b 100644 --- a/src/actions/disruptive/drop.h +++ b/src/actions/disruptive/drop.h @@ -33,7 +33,7 @@ class Drop : public Action { explicit Drop(const std::string &action) : Action(action) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; bool isDisruptive() override { return true; } }; diff --git a/src/actions/disruptive/pass.cc b/src/actions/disruptive/pass.cc index e0f038c4..2334ce21 100644 --- a/src/actions/disruptive/pass.cc +++ b/src/actions/disruptive/pass.cc @@ -30,7 +30,7 @@ namespace disruptive { bool Pass::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { intervention::free(&transaction->m_it); intervention::reset(&transaction->m_it); diff --git a/src/actions/disruptive/pass.h b/src/actions/disruptive/pass.h index 0c09d287..3abbe03f 100644 --- a/src/actions/disruptive/pass.h +++ b/src/actions/disruptive/pass.h @@ -32,7 +32,7 @@ class Pass : public Action { explicit Pass(const std::string &action) : Action(action) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; bool isDisruptive() override { return true; } }; diff --git a/src/actions/disruptive/redirect.cc b/src/actions/disruptive/redirect.cc index ac2993b4..ef3a3a43 100644 --- a/src/actions/disruptive/redirect.cc +++ b/src/actions/disruptive/redirect.cc @@ -35,7 +35,7 @@ bool Redirect::init(std::string *error) { bool Redirect::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { std::string m_urlExpanded(m_string->evaluate(transaction)); /* if it was changed before, lets keep it. */ if (transaction->m_it.status == 200 @@ -47,9 +47,9 @@ bool Redirect::evaluate(RuleWithActions *rule, Transaction *transaction, transaction->m_it.url = strdup(m_urlExpanded.c_str()); transaction->m_it.disruptive = true; intervention::freeLog(&transaction->m_it); - rm->m_isDisruptive = true; + rm.setRule(rule); transaction->m_it.log = strdup( - rm->log(RuleMessage::LogMessageInfo::ClientLogMessageInfo).c_str()); + rm.log(RuleMessage::LogMessageInfo::ClientLogMessageInfo).c_str()); return true; } diff --git a/src/actions/disruptive/redirect.h b/src/actions/disruptive/redirect.h index 46b5d51a..50022d0a 100644 --- a/src/actions/disruptive/redirect.h +++ b/src/actions/disruptive/redirect.h @@ -47,7 +47,7 @@ class Redirect : public Action { m_string(std::move(z)) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; bool init(std::string *error) override; bool isDisruptive() override { return true; } diff --git a/src/actions/init_col.h b/src/actions/init_col.h index 16d7ace9..5cd2f8bc 100644 --- a/src/actions/init_col.h +++ b/src/actions/init_col.h @@ -42,7 +42,7 @@ class InitCol : public Action { bool init(std::string *error) override; private: std::string m_collection_key; - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/log.cc b/src/actions/log.cc index 6ca507cd..137a00d3 100644 --- a/src/actions/log.cc +++ b/src/actions/log.cc @@ -29,9 +29,7 @@ namespace actions { bool Log::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { - ms_dbg_a(transaction, 9, "Saving transaction to logs"); - rm->m_saveMessage = true; + RuleMessage &rm) { return true; } diff --git a/src/actions/log.h b/src/actions/log.h index 736d4a13..d6d5e46d 100644 --- a/src/actions/log.h +++ b/src/actions/log.h @@ -34,7 +34,7 @@ class Log : public Action { : Action(action, RunTimeOnlyIfMatchKind) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; }; } // namespace actions diff --git a/src/actions/log_data.cc b/src/actions/log_data.cc index 49c539cf..82549a3d 100644 --- a/src/actions/log_data.cc +++ b/src/actions/log_data.cc @@ -30,8 +30,8 @@ namespace actions { bool LogData::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { - rm->m_data = data(transaction); + RuleMessage &rm) { + rm.m_data = data(transaction); return true; } diff --git a/src/actions/log_data.h b/src/actions/log_data.h index da2fbf4d..44afb773 100644 --- a/src/actions/log_data.h +++ b/src/actions/log_data.h @@ -40,11 +40,11 @@ class LogData : public Action { m_string(std::move(z)) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; std::string data(Transaction *Transaction); - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/maturity.cc b/src/actions/maturity.cc index 131d2148..c125641a 100644 --- a/src/actions/maturity.cc +++ b/src/actions/maturity.cc @@ -40,7 +40,6 @@ bool Maturity::init(std::string *error) { bool Maturity::evaluate(RuleWithActions *rule, Transaction *transaction) { - rule->m_maturity = m_maturity; return true; } diff --git a/src/actions/maturity.h b/src/actions/maturity.h index dd185efa..1fe13533 100644 --- a/src/actions/maturity.h +++ b/src/actions/maturity.h @@ -35,6 +35,7 @@ class Maturity : public Action { bool evaluate(RuleWithActions *rule, Transaction *transaction) override; bool init(std::string *error) override; + int getMaturity() const { return m_maturity; } private: int m_maturity; diff --git a/src/actions/msg.cc b/src/actions/msg.cc index 1f0b3538..1cf0dfe7 100644 --- a/src/actions/msg.cc +++ b/src/actions/msg.cc @@ -47,9 +47,9 @@ namespace actions { bool Msg::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { std::string msg = data(transaction); - rm->m_message = msg; + rm.m_message = msg; ms_dbg_a(transaction, 9, "Saving msg: " + msg); return true; diff --git a/src/actions/msg.h b/src/actions/msg.h index 61661194..ddc67f73 100644 --- a/src/actions/msg.h +++ b/src/actions/msg.h @@ -41,10 +41,10 @@ class Msg : public Action { m_string(std::move(z)) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; std::string data(Transaction *Transaction); - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/no_audit_log.cc b/src/actions/no_audit_log.cc index e4a59f73..8f7f5388 100644 --- a/src/actions/no_audit_log.cc +++ b/src/actions/no_audit_log.cc @@ -27,10 +27,8 @@ namespace actions { bool NoAuditLog::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { - rm->m_noAuditLog = true; - rm->m_saveMessage = false; - + RuleMessage &rm) { + transaction->messageSetNoAuditLog(true); return true; } diff --git a/src/actions/no_audit_log.h b/src/actions/no_audit_log.h index dbd5d098..337e76f1 100644 --- a/src/actions/no_audit_log.h +++ b/src/actions/no_audit_log.h @@ -36,7 +36,7 @@ class NoAuditLog : public Action { : Action(action, RunTimeOnlyIfMatchKind) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; }; } // namespace actions diff --git a/src/actions/no_log.cc b/src/actions/no_log.cc index 501ea4da..496e1515 100644 --- a/src/actions/no_log.cc +++ b/src/actions/no_log.cc @@ -30,8 +30,7 @@ namespace actions { bool NoLog::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { - rm->m_saveMessage = false; + RuleMessage &rm) { return true; } diff --git a/src/actions/no_log.h b/src/actions/no_log.h index 87d4e305..0d2f745d 100644 --- a/src/actions/no_log.h +++ b/src/actions/no_log.h @@ -34,7 +34,7 @@ class NoLog : public Action { : Action(action, RunTimeOnlyIfMatchKind) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; }; } // namespace actions diff --git a/src/actions/rev.cc b/src/actions/rev.cc index 43d8d1be..400b31c3 100644 --- a/src/actions/rev.cc +++ b/src/actions/rev.cc @@ -34,7 +34,6 @@ bool Rev::init(std::string *error) { bool Rev::evaluate(RuleWithActions *rule, Transaction *transaction) { - rule->m_rev = m_rev; return true; } diff --git a/src/actions/rev.h b/src/actions/rev.h index 9e3c1bfb..a5c95258 100644 --- a/src/actions/rev.h +++ b/src/actions/rev.h @@ -33,9 +33,10 @@ class Rev : public Action { bool evaluate(RuleWithActions *rule, Transaction *transaction) override; bool init(std::string *error) override; + std::string getRevision() const { return m_rev; } private: - std::string m_rev; + std::string m_rev; }; diff --git a/src/actions/set_env.h b/src/actions/set_env.h index 33ccfc33..d5284d42 100644 --- a/src/actions/set_env.h +++ b/src/actions/set_env.h @@ -43,7 +43,7 @@ class SetENV : public Action { bool init(std::string *error) override; private: - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/set_rsc.h b/src/actions/set_rsc.h index 5913b7c7..41094f0e 100644 --- a/src/actions/set_rsc.h +++ b/src/actions/set_rsc.h @@ -43,7 +43,7 @@ class SetRSC : public Action { bool init(std::string *error) override; private: - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/set_sid.h b/src/actions/set_sid.h index 64f8f3cc..78a2911a 100644 --- a/src/actions/set_sid.h +++ b/src/actions/set_sid.h @@ -43,7 +43,7 @@ class SetSID : public Action { bool init(std::string *error) override; private: - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/set_uid.h b/src/actions/set_uid.h index b8c3a0db..5cc96c6b 100644 --- a/src/actions/set_uid.h +++ b/src/actions/set_uid.h @@ -43,7 +43,7 @@ class SetUID : public Action { bool init(std::string *error) override; private: - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/set_var.h b/src/actions/set_var.h index 5fe9de03..51f596b4 100644 --- a/src/actions/set_var.h +++ b/src/actions/set_var.h @@ -63,8 +63,8 @@ class SetVar : public Action { private: SetVarOperation m_operation; - std::unique_ptr m_variable; - std::unique_ptr m_string; + std::shared_ptr m_variable; + std::shared_ptr m_string; }; } // namespace actions diff --git a/src/actions/severity.cc b/src/actions/severity.cc index 8344e105..e1bc8239 100644 --- a/src/actions/severity.cc +++ b/src/actions/severity.cc @@ -72,17 +72,7 @@ bool Severity::init(std::string *error) { bool Severity::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { - ms_dbg_a(transaction, 9, "This rule severity is: " + \ - std::to_string(this->m_severity) + " current transaction is: " + \ - std::to_string(transaction->m_highestSeverityAction)); - - rm->m_severity = m_severity; - - if (transaction->m_highestSeverityAction > this->m_severity) { - transaction->m_highestSeverityAction = this->m_severity; - } - + RuleMessage &rm) { return true; } diff --git a/src/actions/severity.h b/src/actions/severity.h index 32a223e0..eb3f0ada 100644 --- a/src/actions/severity.h +++ b/src/actions/severity.h @@ -36,7 +36,7 @@ class Severity : public Action { m_severity(0) { } bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; bool init(std::string *error) override; int m_severity; diff --git a/src/actions/tag.cc b/src/actions/tag.cc index 3b1b6fd5..04d36afd 100644 --- a/src/actions/tag.cc +++ b/src/actions/tag.cc @@ -58,11 +58,11 @@ std::string Tag::getName(Transaction *transaction) { bool Tag::evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) { + RuleMessage &rm) { std::string tag = getName(transaction); ms_dbg_a(transaction, 9, "Rule tag: " + tag); - rm->m_tags.push_back(tag); + rm.m_tags.push_back(tag); return true; } diff --git a/src/actions/tag.h b/src/actions/tag.h index 75369f5f..38b06928 100644 --- a/src/actions/tag.h +++ b/src/actions/tag.h @@ -39,10 +39,10 @@ class Tag : public Action { std::string getName(Transaction *transaction); bool evaluate(RuleWithActions *rule, Transaction *transaction, - std::shared_ptr rm) override; + RuleMessage &rm) override; protected: - std::unique_ptr m_string; + std::shared_ptr m_string; }; diff --git a/src/actions/ver.cc b/src/actions/ver.cc index 43b8b832..8f1d1ef7 100644 --- a/src/actions/ver.cc +++ b/src/actions/ver.cc @@ -28,7 +28,6 @@ namespace actions { bool Ver::evaluate(RuleWithActions *rule, Transaction *transaction) { - rule->m_ver = m_parser_payload; return true; } diff --git a/src/audit_log/audit_log.cc b/src/audit_log/audit_log.cc index 50213d5d..b159f779 100644 --- a/src/audit_log/audit_log.cc +++ b/src/audit_log/audit_log.cc @@ -295,12 +295,7 @@ bool AuditLog::saveIfRelevant(Transaction *transaction, int parts) { return true; } - for (RuleMessage &i : transaction->m_rulesMessages) { - if (i.m_noAuditLog == false) { - saveAnyway = true; - break; - } - } + saveAnyway = transaction->messageSaveAuditLog(); if ((m_status == RelevantOnlyAuditLogStatus && this->isRelevant(transaction->m_httpCodeReturned) == false) diff --git a/src/modsecurity.cc b/src/modsecurity.cc index 854ec31e..101309cd 100644 --- a/src/modsecurity.cc +++ b/src/modsecurity.cc @@ -190,7 +190,7 @@ const std::string& ModSecurity::getConnectorInformation() const { return m_connector; } -void ModSecurity::serverLog(void *data, std::shared_ptr rm) { +void ModSecurity::serverLog(void *data, RuleMessage *rm) { if (m_logCb == NULL) { std::cerr << "Server log callback is not set -- " << rm->errorLog(); std::cerr << std::endl; @@ -209,7 +209,7 @@ void ModSecurity::serverLog(void *data, std::shared_ptr rm) { } if (m_logProperties & RuleMessageLogProperty) { - const void *a = static_cast(rm.get()); + const void *a = static_cast(rm); if (m_logProperties & IncludeFullHighlightLogProperty) { m_logCb(data, a); return; diff --git a/src/operators/begins_with.cc b/src/operators/begins_with.cc index a2f89fce..7cf8909d 100644 --- a/src/operators/begins_with.cc +++ b/src/operators/begins_with.cc @@ -25,7 +25,7 @@ namespace operators { bool BeginsWith::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &str, std::shared_ptr ruleMessage) { + const std::string &str, RuleMessage *ruleMessage) { std::string p(m_string->evaluate(transaction)); if (str.size() < p.size()) { diff --git a/src/operators/begins_with.h b/src/operators/begins_with.h index c9fcee46..db8755ca 100644 --- a/src/operators/begins_with.h +++ b/src/operators/begins_with.h @@ -33,7 +33,7 @@ class BeginsWith : public Operator { : Operator("BeginsWith", std::move(param)) { } bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &str, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; }; } // namespace operators diff --git a/src/operators/contains.cc b/src/operators/contains.cc index 95c2702a..828e7ac6 100644 --- a/src/operators/contains.cc +++ b/src/operators/contains.cc @@ -22,7 +22,7 @@ namespace modsecurity { namespace operators { bool Contains::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &input, std::shared_ptr ruleMessage) { + const std::string &input, RuleMessage *ruleMessage) { std::string p(m_string->evaluate(transaction)); size_t offset = input.find(p); diff --git a/src/operators/contains.h b/src/operators/contains.h index 13fcda92..0144e418 100644 --- a/src/operators/contains.h +++ b/src/operators/contains.h @@ -36,7 +36,7 @@ class Contains : public Operator { : Operator("Contains", std::move(param)) { } bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &str, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; }; } // namespace operators diff --git a/src/operators/contains_word.cc b/src/operators/contains_word.cc index 9bcdbd6c..b691d62e 100644 --- a/src/operators/contains_word.cc +++ b/src/operators/contains_word.cc @@ -37,7 +37,7 @@ bool ContainsWord::acceptableChar(const std::string& a, size_t pos) { } bool ContainsWord::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &str, std::shared_ptr ruleMessage) { + const std::string &str, RuleMessage *ruleMessage) { std::string paramTarget(m_string->evaluate(transaction)); if (paramTarget.empty()) { diff --git a/src/operators/contains_word.h b/src/operators/contains_word.h index c15e3990..20ee3ff8 100644 --- a/src/operators/contains_word.h +++ b/src/operators/contains_word.h @@ -34,7 +34,7 @@ class ContainsWord : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &str, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; private: static bool acceptableChar(const std::string& a, size_t pos); diff --git a/src/operators/detect_sqli.cc b/src/operators/detect_sqli.cc index 793d5644..b4cae8cc 100644 --- a/src/operators/detect_sqli.cc +++ b/src/operators/detect_sqli.cc @@ -26,7 +26,7 @@ namespace operators { bool DetectSQLi::evaluate(Transaction *t, RuleWithActions *rule, - const std::string& input, std::shared_ptr ruleMessage) { + const std::string& input, RuleMessage *ruleMessage) { char fingerprint[8]; int issqli; diff --git a/src/operators/detect_sqli.h b/src/operators/detect_sqli.h index 237e6a2f..9ab7a7c1 100644 --- a/src/operators/detect_sqli.h +++ b/src/operators/detect_sqli.h @@ -34,7 +34,7 @@ class DetectSQLi : public Operator { bool evaluate(Transaction *t, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; }; } // namespace operators diff --git a/src/operators/detect_xss.cc b/src/operators/detect_xss.cc index 6c89ef72..c10238ab 100644 --- a/src/operators/detect_xss.cc +++ b/src/operators/detect_xss.cc @@ -26,7 +26,7 @@ namespace operators { bool DetectXSS::evaluate(Transaction *t, RuleWithActions *rule, - const std::string& input, std::shared_ptr ruleMessage) { + const std::string& input, RuleMessage *ruleMessage) { int is_xss; is_xss = libinjection_xss(input.c_str(), input.length()); diff --git a/src/operators/detect_xss.h b/src/operators/detect_xss.h index c4554625..16bddb22 100644 --- a/src/operators/detect_xss.h +++ b/src/operators/detect_xss.h @@ -33,7 +33,7 @@ class DetectXSS : public Operator { bool evaluate(Transaction *t, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; }; } // namespace operators diff --git a/src/operators/ends_with.cc b/src/operators/ends_with.cc index 404f3ffd..125fef6a 100644 --- a/src/operators/ends_with.cc +++ b/src/operators/ends_with.cc @@ -24,7 +24,7 @@ namespace operators { bool EndsWith::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &str, std::shared_ptr ruleMessage) { + const std::string &str, RuleMessage *ruleMessage) { bool ret = false; std::string p(m_string->evaluate(transaction)); diff --git a/src/operators/ends_with.h b/src/operators/ends_with.h index 47e42c3f..1fd55595 100644 --- a/src/operators/ends_with.h +++ b/src/operators/ends_with.h @@ -35,7 +35,7 @@ class EndsWith : public Operator { } bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &str, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; }; diff --git a/src/operators/operator.cc b/src/operators/operator.cc index b74b0729..2aaa143a 100644 --- a/src/operators/operator.cc +++ b/src/operators/operator.cc @@ -71,7 +71,7 @@ namespace operators { bool Operator::evaluateInternal(Transaction *transaction, - RuleWithActions *rule, const std::string& a, std::shared_ptr rm) { + RuleWithActions *rule, const std::string& a, RuleMessage *rm) { bool res = evaluate(transaction, rule, a, rm); if (m_negation) { diff --git a/src/operators/operator.h b/src/operators/operator.h index 4a21e595..44437794 100644 --- a/src/operators/operator.h +++ b/src/operators/operator.h @@ -114,7 +114,7 @@ class Operator { bool evaluateInternal(Transaction *t, RuleWithActions *rule, const std::string& a); bool evaluateInternal(Transaction *t, RuleWithActions *rule, - const std::string& a, std::shared_ptr ruleMessage); + const std::string& a, RuleMessage *ruleMessage); virtual bool evaluate(Transaction *transaction, const std::string &str); @@ -123,11 +123,11 @@ class Operator { return evaluate(transaction, str); } virtual bool evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &str, std::shared_ptr ruleMessage) { + const std::string &str, RuleMessage *ruleMessage) { return evaluate(transaction, str); } - static void logOffset(std::shared_ptr ruleMessage, int offset, int len) { + static void logOffset(RuleMessage *ruleMessage, int offset, int len) { if (ruleMessage) { ruleMessage->m_reference.append("o" + std::to_string(offset) + "," diff --git a/src/operators/pm.cc b/src/operators/pm.cc index ebf31c40..d08f37bb 100644 --- a/src/operators/pm.cc +++ b/src/operators/pm.cc @@ -82,8 +82,8 @@ void Pm::postOrderTraversal(acmp_btree_node_t *node) { bool Pm::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &input, std::shared_ptr ruleMessage) { - int rc; + const std::string &input, RuleMessage *ruleMessage) { + int rc = -1; ACMPT pt; pt.parser = m_p; pt.ptr = NULL; diff --git a/src/operators/pm.h b/src/operators/pm.h index b090ec5d..34ff688a 100644 --- a/src/operators/pm.h +++ b/src/operators/pm.h @@ -43,7 +43,7 @@ class Pm : public Operator { ~Pm(); bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &str, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; bool init(const std::string &file, std::string *error) override; diff --git a/src/operators/rbl.cc b/src/operators/rbl.cc index ffdb17a2..973494ad 100644 --- a/src/operators/rbl.cc +++ b/src/operators/rbl.cc @@ -202,7 +202,7 @@ void Rbl::furtherInfo(struct sockaddr_in *sin, const std::string &ipStr, bool Rbl::evaluate(Transaction *t, RuleWithActions *rule, const std::string& ipStr, - std::shared_ptr ruleMessage) { + RuleMessage *ruleMessage) { struct addrinfo *info = NULL; std::string host = Rbl::mapIpToAddress(ipStr, t); int rc = 0; diff --git a/src/operators/rbl.h b/src/operators/rbl.h index f002d532..eb25c56b 100644 --- a/src/operators/rbl.h +++ b/src/operators/rbl.h @@ -78,7 +78,7 @@ class Rbl : public Operator { } bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; std::string mapIpToAddress(const std::string &ipStr, Transaction *trans) const; diff --git a/src/operators/rx.cc b/src/operators/rx.cc index f69ca97d..a6112f0c 100644 --- a/src/operators/rx.cc +++ b/src/operators/rx.cc @@ -37,7 +37,7 @@ bool Rx::init(const std::string &arg, std::string *error) { bool Rx::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string& input, std::shared_ptr ruleMessage) { + const std::string& input, RuleMessage *ruleMessage) { Regex *re; if (m_param.empty() && !m_string->m_containsMacro) { diff --git a/src/operators/rx.h b/src/operators/rx.h index 817e74eb..3fee464a 100644 --- a/src/operators/rx.h +++ b/src/operators/rx.h @@ -51,7 +51,7 @@ class Rx : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; bool init(const std::string &arg, std::string *error) override; diff --git a/src/operators/rx_global.cc b/src/operators/rx_global.cc index f715a4fd..7f71655b 100644 --- a/src/operators/rx_global.cc +++ b/src/operators/rx_global.cc @@ -37,7 +37,7 @@ bool RxGlobal::init(const std::string &arg, std::string *error) { bool RxGlobal::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string& input, std::shared_ptr ruleMessage) { + const std::string& input, RuleMessage *ruleMessage) { Regex *re; if (m_param.empty() && !m_string->m_containsMacro) { diff --git a/src/operators/rx_global.h b/src/operators/rx_global.h index 86e37d0d..f608773c 100644 --- a/src/operators/rx_global.h +++ b/src/operators/rx_global.h @@ -51,7 +51,7 @@ class RxGlobal : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; bool init(const std::string &arg, std::string *error) override; diff --git a/src/operators/validate_byte_range.cc b/src/operators/validate_byte_range.cc index 07b88149..8ab58538 100644 --- a/src/operators/validate_byte_range.cc +++ b/src/operators/validate_byte_range.cc @@ -111,7 +111,7 @@ bool ValidateByteRange::init(const std::string &file, bool ValidateByteRange::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &input, std::shared_ptr ruleMessage) { + const std::string &input, RuleMessage *ruleMessage) { bool ret = true; size_t count = 0; diff --git a/src/operators/validate_byte_range.h b/src/operators/validate_byte_range.h index 2c44e769..da053783 100644 --- a/src/operators/validate_byte_range.h +++ b/src/operators/validate_byte_range.h @@ -39,7 +39,7 @@ class ValidateByteRange : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; bool getRange(const std::string &rangeRepresentation, std::string *error); bool init(const std::string& file, std::string *error) override; private: diff --git a/src/operators/validate_url_encoding.cc b/src/operators/validate_url_encoding.cc index 20a86eb6..302ca1f8 100644 --- a/src/operators/validate_url_encoding.cc +++ b/src/operators/validate_url_encoding.cc @@ -69,7 +69,7 @@ int ValidateUrlEncoding::validate_url_encoding(const char *input, bool ValidateUrlEncoding::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &input, std::shared_ptr ruleMessage) { + const std::string &input, RuleMessage *ruleMessage) { size_t offset = 0; bool res = false; diff --git a/src/operators/validate_url_encoding.h b/src/operators/validate_url_encoding.h index fe274dc0..3f0498dc 100644 --- a/src/operators/validate_url_encoding.h +++ b/src/operators/validate_url_encoding.h @@ -33,7 +33,7 @@ class ValidateUrlEncoding : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; static int validate_url_encoding(const char *input, uint64_t input_length, size_t *offset); diff --git a/src/operators/validate_utf8_encoding.cc b/src/operators/validate_utf8_encoding.cc index e95061af..ec5ac90a 100644 --- a/src/operators/validate_utf8_encoding.cc +++ b/src/operators/validate_utf8_encoding.cc @@ -114,7 +114,7 @@ int ValidateUtf8Encoding::detect_utf8_character( } bool ValidateUtf8Encoding::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &str, std::shared_ptr ruleMessage) { + const std::string &str, RuleMessage *ruleMessage) { unsigned int i, bytes_left; const char *str_c = str.c_str(); diff --git a/src/operators/validate_utf8_encoding.h b/src/operators/validate_utf8_encoding.h index e59eef58..a7d63c83 100644 --- a/src/operators/validate_utf8_encoding.h +++ b/src/operators/validate_utf8_encoding.h @@ -40,7 +40,7 @@ class ValidateUtf8Encoding : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string &str, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; static int detect_utf8_character(const unsigned char *p_read, unsigned int length); diff --git a/src/operators/verify_cc.cc b/src/operators/verify_cc.cc index a0d76cc3..4690e22c 100644 --- a/src/operators/verify_cc.cc +++ b/src/operators/verify_cc.cc @@ -118,7 +118,7 @@ bool VerifyCC::init(const std::string ¶m2, std::string *error) { bool VerifyCC::evaluate(Transaction *t, RuleWithActions *rule, - const std::string& i, std::shared_ptr ruleMessage) { + const std::string& i, RuleMessage *ruleMessage) { int offset = 0; int target_length = i.length(); diff --git a/src/operators/verify_cc.h b/src/operators/verify_cc.h index dc82492c..7095cbc8 100644 --- a/src/operators/verify_cc.h +++ b/src/operators/verify_cc.h @@ -37,7 +37,7 @@ class VerifyCC : public Operator { bool evaluate(Transaction *t, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; bool init(const std::string ¶m, std::string *error) override; private: pcre *m_pc; diff --git a/src/operators/verify_cpf.cc b/src/operators/verify_cpf.cc index 778584db..5566d8b6 100644 --- a/src/operators/verify_cpf.cc +++ b/src/operators/verify_cpf.cc @@ -109,7 +109,7 @@ bool VerifyCPF::verify(const char *cpfnumber, int len) { bool VerifyCPF::evaluate(Transaction *t, RuleWithActions *rule, - const std::string& input, std::shared_ptr ruleMessage) { + const std::string& input, RuleMessage *ruleMessage) { std::list matches; bool is_cpf = false; int i; diff --git a/src/operators/verify_cpf.h b/src/operators/verify_cpf.h index eecf71b1..e15e74c4 100644 --- a/src/operators/verify_cpf.h +++ b/src/operators/verify_cpf.h @@ -48,7 +48,7 @@ class VerifyCPF : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; bool verify(const char *ssnumber, int len); diff --git a/src/operators/verify_ssn.cc b/src/operators/verify_ssn.cc index 59a36dd7..8912b99c 100644 --- a/src/operators/verify_ssn.cc +++ b/src/operators/verify_ssn.cc @@ -111,7 +111,7 @@ invalid: bool VerifySSN::evaluate(Transaction *t, RuleWithActions *rule, - const std::string& input, std::shared_ptr ruleMessage) { + const std::string& input, RuleMessage *ruleMessage) { std::list matches; bool is_ssn = false; int i; diff --git a/src/operators/verify_ssn.h b/src/operators/verify_ssn.h index 7c0828fb..ef38cad3 100644 --- a/src/operators/verify_ssn.h +++ b/src/operators/verify_ssn.h @@ -48,7 +48,7 @@ class VerifySSN : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; diff --git a/src/operators/verify_svnr.cc b/src/operators/verify_svnr.cc index 248e6b4e..f9f4174c 100644 --- a/src/operators/verify_svnr.cc +++ b/src/operators/verify_svnr.cc @@ -78,7 +78,7 @@ bool VerifySVNR::verify(const char *svnrnumber, int len) { bool VerifySVNR::evaluate(Transaction *t, RuleWithActions *rule, - const std::string& input, std::shared_ptr ruleMessage) { + const std::string& input, RuleMessage* ruleMessage) { std::list matches; bool is_svnr = false; int i; diff --git a/src/operators/verify_svnr.h b/src/operators/verify_svnr.h index 6fe9df9a..898bee79 100644 --- a/src/operators/verify_svnr.h +++ b/src/operators/verify_svnr.h @@ -34,7 +34,7 @@ class VerifySVNR : public Operator { bool evaluate(Transaction *transaction, RuleWithActions *rule, const std::string& input, - std::shared_ptr ruleMessage) override; + RuleMessage *ruleMessage) override; bool verify(const char *ssnumber, int len); diff --git a/src/operators/within.cc b/src/operators/within.cc index ce781cc7..a4ffc655 100644 --- a/src/operators/within.cc +++ b/src/operators/within.cc @@ -25,7 +25,7 @@ namespace operators { bool Within::evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &str, std::shared_ptr ruleMessage) { + const std::string &str, RuleMessage *ruleMessage) { bool res = false; size_t pos = 0; std::string paramTarget(m_string->evaluate(transaction)); diff --git a/src/operators/within.h b/src/operators/within.h index 7fcb4309..b9921a73 100644 --- a/src/operators/within.h +++ b/src/operators/within.h @@ -34,7 +34,7 @@ class Within : public Operator { m_couldContainsMacro = true; } bool evaluate(Transaction *transaction, RuleWithActions *rule, - const std::string &str, std::shared_ptr ruleMessage) override; + const std::string &str, RuleMessage *ruleMessage) override; }; } // namespace operators diff --git a/src/parser/driver.cc b/src/parser/driver.cc index c8d15b48..be63b434 100644 --- a/src/parser/driver.cc +++ b/src/parser/driver.cc @@ -81,7 +81,7 @@ int Driver::addSecRule(std::unique_ptr r) { } /* is it a chained rule? */ - if (m_lastRule != nullptr && m_lastRule->isChained()) { + if (m_lastRule != nullptr && m_lastRule->hasChainAction()) { r->setPhase(m_lastRule->getPhase()); if (r->hasDisruptiveAction()) { m_parserError << "Disruptive actions can only be specified by"; @@ -91,6 +91,74 @@ int Driver::addSecRule(std::unique_ptr r) { m_lastRule->m_chainedRuleChild = std::move(r); m_lastRule->m_chainedRuleChild->m_chainedRuleParent = m_lastRule; m_lastRule = m_lastRule->m_chainedRuleChild.get(); + + /* Lets set all meta-data to the first rule */ + RuleWithActions *firstRule = m_lastRule; + if (!firstRule->hasChainAction()) { + while (firstRule->m_chainedRuleParent != nullptr) { + if (firstRule->hasMessageAction()) { + firstRule->m_chainedRuleParent->setMessageAction( + firstRule->getMessageAction() + ); + firstRule->setMessageAction(nullptr); + } + if (firstRule->hasLogDataAction()) { + firstRule->m_chainedRuleParent->setLogDataAction( + firstRule->getLogDataAction() + ); + firstRule->setLogDataAction(nullptr); + } + if (firstRule->hasSeverityAction()) { + firstRule->m_chainedRuleParent->setSeverity( + firstRule->getSeverity() + ); + } + if (firstRule->hasRevisionAction()) { + firstRule->m_chainedRuleParent->setRevision( + firstRule->getRevision() + ); + } + if (firstRule->hasVersionAction()) { + firstRule->m_chainedRuleParent->setVersion( + firstRule->getVersion() + ); + } + if (firstRule->hasAccuracyAction()) { + firstRule->m_chainedRuleParent->setAccuracy( + firstRule->getAccuracy() + ); + } + if (firstRule->hasMaturityAction()) { + firstRule->m_chainedRuleParent->setMaturity( + firstRule->getMaturity() + ); + } + + if (firstRule->hasTagAction()) { + firstRule->m_chainedRuleParent->setTags( + firstRule->getTagsAction() + ); + firstRule->cleanTags(); + } + + if (firstRule->hasDisruptiveAction()) { + firstRule->m_chainedRuleParent->setDisruptiveAction( + firstRule->getDisruptiveAction() + ); + firstRule->setDisruptiveAction(nullptr); + } + firstRule->m_chainedRuleParent->setHasBlockAction( + firstRule->hasBlockAction() + ); + firstRule->m_chainedRuleParent->setHasLogAction( + firstRule->hasLogAction() + ); + firstRule->m_chainedRuleParent->setHasLogAction( + firstRule->hasNoLogAction() + ); + firstRule = firstRule->m_chainedRuleParent; + } + } return true; } @@ -119,6 +187,7 @@ int Driver::addSecRule(std::unique_ptr r) { } m_lastRule = rule.get(); + m_rulesSetPhases.insert(rule); return true; diff --git a/src/parser/location.hh b/src/parser/location.hh index 314b0693..3f87b6b7 100644 --- a/src/parser/location.hh +++ b/src/parser/location.hh @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.5.1. // Locations for Bison parsers in C++ @@ -60,13 +60,11 @@ namespace yy { class position { public: - /// Type for file name. - typedef const std::string filename_type; /// Type for line and column numbers. typedef int counter_type; /// Construct a position. - explicit position (filename_type* f = YY_NULLPTR, + explicit position (std::string* f = YY_NULLPTR, counter_type l = 1, counter_type c = 1) : filename (f) @@ -76,7 +74,7 @@ namespace yy { /// Initialization. - void initialize (filename_type* fn = YY_NULLPTR, + void initialize (std::string* fn = YY_NULLPTR, counter_type l = 1, counter_type c = 1) { @@ -105,7 +103,7 @@ namespace yy { /** \} */ /// File name to which this position refers. - filename_type* filename; + std::string* filename; /// Current line number. counter_type line; /// Current column number. @@ -148,6 +146,24 @@ namespace yy { return res -= width; } + /// Compare two position objects. + inline bool + operator== (const position& pos1, const position& pos2) + { + return (pos1.line == pos2.line + && pos1.column == pos2.column + && (pos1.filename == pos2.filename + || (pos1.filename && pos2.filename + && *pos1.filename == *pos2.filename))); + } + + /// Compare two position objects. + inline bool + operator!= (const position& pos1, const position& pos2) + { + return !(pos1 == pos2); + } + /** \brief Intercept output stream redirection. ** \param ostr the destination output stream ** \param pos a reference to the position to redirect @@ -165,8 +181,6 @@ namespace yy { class location { public: - /// Type for file name. - typedef position::filename_type filename_type; /// Type for line and column numbers. typedef position::counter_type counter_type; @@ -183,7 +197,7 @@ namespace yy { {} /// Construct a 0-width location in \a f, \a l, \a c. - explicit location (filename_type* f, + explicit location (std::string* f, counter_type l = 1, counter_type c = 1) : begin (f, l, c) @@ -192,7 +206,7 @@ namespace yy { /// Initialization. - void initialize (filename_type* f = YY_NULLPTR, + void initialize (std::string* f = YY_NULLPTR, counter_type l = 1, counter_type c = 1) { @@ -274,6 +288,20 @@ namespace yy { return res -= width; } + /// Compare two location objects. + inline bool + operator== (const location& loc1, const location& loc2) + { + return loc1.begin == loc2.begin && loc1.end == loc2.end; + } + + /// Compare two location objects. + inline bool + operator!= (const location& loc1, const location& loc2) + { + return !(loc1 == loc2); + } + /** \brief Intercept output stream redirection. ** \param ostr the destination output stream ** \param loc a reference to the location to redirect @@ -299,6 +327,6 @@ namespace yy { } } // yy -#line 303 "location.hh" +#line 331 "location.hh" #endif // !YY_YY_LOCATION_HH_INCLUDED diff --git a/src/parser/position.hh b/src/parser/position.hh index 037a25d3..bf34c1c5 100644 --- a/src/parser/position.hh +++ b/src/parser/position.hh @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.5.1. // Starting with Bison 3.2, this file is useless: the structure it // used to define is now defined in "location.hh". diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc index 67fbc497..b3e76941 100644 --- a/src/parser/seclang-parser.cc +++ b/src/parser/seclang-parser.cc @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.5.1. // Skeleton implementation for Bison LALR(1) parsers in C++ @@ -30,9 +30,8 @@ // This special exception was added by the Free Software Foundation in // version 2.2 of Bison. -// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, -// especially those whose name start with YY_ or yy_. They are -// private implementation details that can be changed or removed. +// Undocumented macros, especially those whose name start with YY_, +// are private implementation details. Do not rely on them. @@ -46,7 +45,7 @@ #include "src/parser/driver.h" -#line 50 "seclang-parser.cc" +#line 49 "seclang-parser.cc" #ifndef YY_ @@ -61,7 +60,6 @@ # endif #endif - // Whether we are compiled with exception support. #ifndef YY_EXCEPTIONS # if defined __GNUC__ && !defined __EXCEPTIONS @@ -117,7 +115,7 @@ # define YY_STACK_PRINT() \ do { \ if (yydebug_) \ - yy_stack_print_ (); \ + yystack_print_ (); \ } while (false) #else // !YYDEBUG @@ -138,7 +136,49 @@ #define YYRECOVERING() (!!yyerrstatus_) namespace yy { -#line 142 "seclang-parser.cc" +#line 140 "seclang-parser.cc" + + + /* Return YYSTR after stripping away unnecessary quotes and + backslashes, so that it's suitable for yyerror. The heuristic is + that double-quoting is unnecessary unless the string contains an + apostrophe, a comma, or backslash (other than backslash-backslash). + YYSTR is taken from yytname. */ + std::string + seclang_parser::yytnamerr_ (const char *yystr) + { + if (*yystr == '"') + { + std::string yyr; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + else + goto append; + + append: + default: + yyr += *yyp; + break; + + case '"': + return yyr; + } + do_not_strip_quotes: ; + } + + return yystr; + } + /// Build a parser object. seclang_parser::seclang_parser (modsecurity::Parser::Driver& driver_yyarg) @@ -158,7 +198,7 @@ namespace yy { {} /*---------------. - | symbol kinds. | + | Symbol types. | `---------------*/ @@ -189,13 +229,13 @@ namespace yy { : state (s) {} - seclang_parser::symbol_kind_type - seclang_parser::by_state::kind () const YY_NOEXCEPT + seclang_parser::symbol_number_type + seclang_parser::by_state::type_get () const YY_NOEXCEPT { if (state == empty_state) - return symbol_kind::S_YYEMPTY; + return empty_symbol; else - return YY_CAST (symbol_kind_type, yystos_[+state]); + return yystos_[+state]; } seclang_parser::stack_symbol_type::stack_symbol_type () @@ -204,235 +244,235 @@ namespace yy { seclang_parser::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that) : super_type (YY_MOVE (that.state), YY_MOVE (that.location)) { - switch (that.kind ()) + switch (that.type_get ()) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value)); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_var: // var + case 356: // var value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action value.YY_MOVE_OR_COPY< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value)); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted value.YY_MOVE_OR_COPY< std::unique_ptr > > > (YY_MOVE (that.value)); break; @@ -449,235 +489,235 @@ namespace yy { seclang_parser::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that) : super_type (s, YY_MOVE (that.location)) { - switch (that.kind ()) + switch (that.type_get ()) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" value.move< std::string > (YY_MOVE (that.value)); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init value.move< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string value.move< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_var: // var + case 356: // var value.move< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action value.move< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted value.move< std::unique_ptr > > > (YY_MOVE (that.value)); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted value.move< std::unique_ptr > > > (YY_MOVE (that.value)); break; @@ -686,7 +726,7 @@ namespace yy { } // that is emptied. - that.kind_ = symbol_kind::S_YYEMPTY; + that.type = empty_symbol; } #if YY_CPLUSPLUS < 201103L @@ -694,235 +734,235 @@ namespace yy { seclang_parser::stack_symbol_type::operator= (const stack_symbol_type& that) { state = that.state; - switch (that.kind ()) + switch (that.type_get ()) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" value.copy< std::string > (that.value); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init value.copy< std::unique_ptr > (that.value); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string value.copy< std::unique_ptr > (that.value); break; - case symbol_kind::S_var: // var + case 356: // var value.copy< std::unique_ptr > (that.value); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action value.copy< std::unique_ptr > (that.value); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted value.copy< std::unique_ptr > > > (that.value); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted value.copy< std::unique_ptr > > > (that.value); break; @@ -938,235 +978,235 @@ namespace yy { seclang_parser::stack_symbol_type::operator= (stack_symbol_type& that) { state = that.state; - switch (that.kind ()) + switch (that.type_get ()) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" value.move< std::string > (that.value); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init value.move< std::unique_ptr > (that.value); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string value.move< std::unique_ptr > (that.value); break; - case symbol_kind::S_var: // var + case 356: // var value.move< std::unique_ptr > (that.value); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action value.move< std::unique_ptr > (that.value); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted value.move< std::unique_ptr > > > (that.value); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted value.move< std::unique_ptr > > > (that.value); break; @@ -1192,21 +1232,23 @@ namespace yy { #if YYDEBUG template void - seclang_parser::yy_print_ (std::ostream& yyo, const basic_symbol& yysym) const + seclang_parser::yy_print_ (std::ostream& yyo, + const basic_symbol& yysym) const { std::ostream& yyoutput = yyo; YYUSE (yyoutput); + symbol_number_type yytype = yysym.type_get (); +#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408 + // Avoid a (spurious) G++ 4.8 warning about "array subscript is + // below array bounds". if (yysym.empty ()) - yyo << "empty symbol"; - else - { - symbol_kind_type yykind = yysym.kind (); - yyo << (yykind < YYNTOKENS ? "token" : "nterm") - << ' ' << yysym.name () << " (" - << yysym.location << ": "; - YYUSE (yykind); - yyo << ')'; - } + std::abort (); +#endif + yyo << (yytype < yyntokens_ ? "token" : "nterm") + << ' ' << yytname_[yytype] << " (" + << yysym.location << ": "; + YYUSE (yytype); + yyo << ')'; } #endif @@ -1265,11 +1307,11 @@ namespace yy { seclang_parser::state_type seclang_parser::yy_lr_goto_state_ (state_type yystate, int yysym) { - int yyr = yypgoto_[yysym - YYNTOKENS] + yystate; + int yyr = yypgoto_[yysym - yyntokens_] + yystate; if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate) return yytable_[yyr]; else - return yydefgoto_[yysym - YYNTOKENS]; + return yydefgoto_[yysym - yyntokens_]; } bool @@ -1324,7 +1366,7 @@ namespace yy { yyla.location.begin.filename = yyla.location.end.filename = new std::string(driver.file); } -#line 1328 "seclang-parser.cc" +#line 1370 "seclang-parser.cc" /* Initialize the stack. The initial state will be set in @@ -1339,7 +1381,6 @@ namespace yy { `-----------------------------------------------*/ yynewstate: YYCDEBUG << "Entering state " << int (yystack_[0].state) << '\n'; - YY_STACK_PRINT (); // Accept? if (yystack_[0].state == yyfinal_) @@ -1360,7 +1401,7 @@ namespace yy { // Read a lookahead token. if (yyla.empty ()) { - YYCDEBUG << "Reading a token\n"; + YYCDEBUG << "Reading a token: "; #if YY_EXCEPTIONS try #endif // YY_EXCEPTIONS @@ -1379,20 +1420,10 @@ namespace yy { } YY_SYMBOL_PRINT ("Next token is", yyla); - if (yyla.kind () == symbol_kind::S_YYerror) - { - // The scanner already issued an error message, process directly - // to error recovery. But do not keep the error token as - // lookahead, it is too special and may lead us to an endless - // loop in error recovery. */ - yyla.kind_ = symbol_kind::S_YYUNDEF; - goto yyerrlab1; - } - /* If the proper action on seeing token YYLA.TYPE is to reduce or to detect an error, take that action. */ - yyn += yyla.kind (); - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.kind ()) + yyn += yyla.type_get (); + if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ()) { goto yydefault; } @@ -1439,233 +1470,233 @@ namespace yy { when using variants. */ switch (yyr1_[yyn]) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" yylhs.value.emplace< std::string > (); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init yylhs.value.emplace< std::unique_ptr > (); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string yylhs.value.emplace< std::unique_ptr > (); break; - case symbol_kind::S_var: // var + case 356: // var yylhs.value.emplace< std::unique_ptr > (); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action yylhs.value.emplace< std::unique_ptr > (); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted yylhs.value.emplace< std::unique_ptr > > > (); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted yylhs.value.emplace< std::unique_ptr > > > (); break; @@ -1689,230 +1720,230 @@ namespace yy { { switch (yyn) { - case 2: // input: "end of file" + case 2: #line 713 "seclang-parser.yy" { return 0; } -#line 1698 "seclang-parser.cc" +#line 1729 "seclang-parser.cc" break; - case 6: // audit_log: "CONFIG_DIR_AUDIT_DIR_MOD" + case 6: #line 726 "seclang-parser.yy" { driver.m_auditLog->setStorageDirMode(strtol(yystack_[0].value.as < std::string > ().c_str(), NULL, 8)); } -#line 1706 "seclang-parser.cc" +#line 1737 "seclang-parser.cc" break; - case 7: // audit_log: "CONFIG_DIR_AUDIT_DIR" + case 7: #line 732 "seclang-parser.yy" { driver.m_auditLog->setStorageDir(yystack_[0].value.as < std::string > ()); } -#line 1714 "seclang-parser.cc" +#line 1745 "seclang-parser.cc" break; - case 8: // audit_log: "CONFIG_DIR_AUDIT_ENG" "CONFIG_VALUE_RELEVANT_ONLY" + case 8: #line 738 "seclang-parser.yy" { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::RelevantOnlyAuditLogStatus); } -#line 1722 "seclang-parser.cc" +#line 1753 "seclang-parser.cc" break; - case 9: // audit_log: "CONFIG_DIR_AUDIT_ENG" "CONFIG_VALUE_OFF" + case 9: #line 742 "seclang-parser.yy" { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OffAuditLogStatus); } -#line 1730 "seclang-parser.cc" +#line 1761 "seclang-parser.cc" break; - case 10: // audit_log: "CONFIG_DIR_AUDIT_ENG" "CONFIG_VALUE_ON" + case 10: #line 746 "seclang-parser.yy" { driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OnAuditLogStatus); } -#line 1738 "seclang-parser.cc" +#line 1769 "seclang-parser.cc" break; - case 11: // audit_log: "CONFIG_DIR_AUDIT_FLE_MOD" + case 11: #line 752 "seclang-parser.yy" { driver.m_auditLog->setFileMode(strtol(yystack_[0].value.as < std::string > ().c_str(), NULL, 8)); } -#line 1746 "seclang-parser.cc" +#line 1777 "seclang-parser.cc" break; - case 12: // audit_log: "CONFIG_DIR_AUDIT_LOG2" + case 12: #line 758 "seclang-parser.yy" { driver.m_auditLog->setFilePath2(yystack_[0].value.as < std::string > ()); } -#line 1754 "seclang-parser.cc" +#line 1785 "seclang-parser.cc" break; - case 13: // audit_log: "CONFIG_DIR_AUDIT_LOG_P" + case 13: #line 764 "seclang-parser.yy" { driver.m_auditLog->setParts(yystack_[0].value.as < std::string > ()); } -#line 1762 "seclang-parser.cc" +#line 1793 "seclang-parser.cc" break; - case 14: // audit_log: "CONFIG_DIR_AUDIT_LOG" + case 14: #line 770 "seclang-parser.yy" { driver.m_auditLog->setFilePath1(yystack_[0].value.as < std::string > ()); } -#line 1770 "seclang-parser.cc" +#line 1801 "seclang-parser.cc" break; - case 15: // audit_log: CONFIG_DIR_AUDIT_LOG_FMT JSON + case 15: #line 775 "seclang-parser.yy" { driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::JSONAuditLogFormat); } -#line 1778 "seclang-parser.cc" +#line 1809 "seclang-parser.cc" break; - case 16: // audit_log: CONFIG_DIR_AUDIT_LOG_FMT NATIVE + case 16: #line 780 "seclang-parser.yy" { driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::NativeAuditLogFormat); } -#line 1786 "seclang-parser.cc" +#line 1817 "seclang-parser.cc" break; - case 17: // audit_log: "CONFIG_DIR_AUDIT_STS" + case 17: #line 786 "seclang-parser.yy" { std::string relevant_status(yystack_[0].value.as < std::string > ()); driver.m_auditLog->setRelevantStatus(relevant_status); } -#line 1795 "seclang-parser.cc" +#line 1826 "seclang-parser.cc" break; - case 18: // audit_log: "CONFIG_DIR_AUDIT_TPE" "CONFIG_VALUE_SERIAL" + case 18: #line 793 "seclang-parser.yy" { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::SerialAuditLogType); } -#line 1803 "seclang-parser.cc" +#line 1834 "seclang-parser.cc" break; - case 19: // audit_log: "CONFIG_DIR_AUDIT_TPE" "CONFIG_VALUE_PARALLEL" + case 19: #line 797 "seclang-parser.yy" { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::ParallelAuditLogType); } -#line 1811 "seclang-parser.cc" +#line 1842 "seclang-parser.cc" break; - case 20: // audit_log: "CONFIG_DIR_AUDIT_TPE" "CONFIG_VALUE_HTTPS" + case 20: #line 801 "seclang-parser.yy" { driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::HttpsAuditLogType); } -#line 1819 "seclang-parser.cc" +#line 1850 "seclang-parser.cc" break; - case 21: // audit_log: "CONFIG_UPDLOAD_KEEP_FILES" "CONFIG_VALUE_ON" + case 21: #line 807 "seclang-parser.yy" { driver.m_uploadKeepFiles = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 1827 "seclang-parser.cc" +#line 1858 "seclang-parser.cc" break; - case 22: // audit_log: "CONFIG_UPDLOAD_KEEP_FILES" "CONFIG_VALUE_OFF" + case 22: #line 811 "seclang-parser.yy" { driver.m_uploadKeepFiles = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 1835 "seclang-parser.cc" +#line 1866 "seclang-parser.cc" break; - case 23: // audit_log: "CONFIG_UPDLOAD_KEEP_FILES" "CONFIG_VALUE_RELEVANT_ONLY" + case 23: #line 815 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecUploadKeepFiles RelevantOnly is not currently supported. Accepted values are On or Off"); YYERROR; } -#line 1844 "seclang-parser.cc" +#line 1875 "seclang-parser.cc" break; - case 24: // audit_log: "CONFIG_UPLOAD_FILE_LIMIT" + case 24: #line 820 "seclang-parser.yy" { driver.m_uploadFileLimit.m_set = true; driver.m_uploadFileLimit.m_value = strtol(yystack_[0].value.as < std::string > ().c_str(), NULL, 10); } -#line 1853 "seclang-parser.cc" +#line 1884 "seclang-parser.cc" break; - case 25: // audit_log: "CONFIG_UPLOAD_FILE_MODE" + case 25: #line 825 "seclang-parser.yy" { driver.m_uploadFileMode.m_set = true; driver.m_uploadFileMode.m_value = strtol(yystack_[0].value.as < std::string > ().c_str(), NULL, 8); } -#line 1862 "seclang-parser.cc" +#line 1893 "seclang-parser.cc" break; - case 26: // audit_log: "CONFIG_UPLOAD_DIR" + case 26: #line 830 "seclang-parser.yy" { driver.m_uploadDirectory.m_set = true; driver.m_uploadDirectory.m_value = yystack_[0].value.as < std::string > (); } -#line 1871 "seclang-parser.cc" +#line 1902 "seclang-parser.cc" break; - case 27: // audit_log: "CONFIG_UPDLOAD_SAVE_TMP_FILES" "CONFIG_VALUE_ON" + case 27: #line 835 "seclang-parser.yy" { driver.m_tmpSaveUploadedFiles = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 1879 "seclang-parser.cc" +#line 1910 "seclang-parser.cc" break; - case 28: // audit_log: "CONFIG_UPDLOAD_SAVE_TMP_FILES" "CONFIG_VALUE_OFF" + case 28: #line 839 "seclang-parser.yy" { driver.m_tmpSaveUploadedFiles = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 1887 "seclang-parser.cc" +#line 1918 "seclang-parser.cc" break; - case 29: // actions: "QUOTATION_MARK" actions_may_quoted "QUOTATION_MARK" + case 29: #line 846 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[1].value.as < std::unique_ptr > > > ()); } -#line 1895 "seclang-parser.cc" +#line 1926 "seclang-parser.cc" break; - case 30: // actions: actions_may_quoted + case 30: #line 850 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[0].value.as < std::unique_ptr > > > ()); } -#line 1903 "seclang-parser.cc" +#line 1934 "seclang-parser.cc" break; - case 31: // actions_may_quoted: actions_may_quoted "," act + case 31: #line 857 "seclang-parser.yy" { 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 1913 "seclang-parser.cc" +#line 1944 "seclang-parser.cc" break; - case 32: // actions_may_quoted: act + case 32: #line 863 "seclang-parser.yy" { std::unique_ptr>> b(new std::vector>()); @@ -1920,10 +1951,10 @@ namespace yy { b->push_back(std::move(yystack_[0].value.as < std::unique_ptr > ())); yylhs.value.as < std::unique_ptr > > > () = std::move(b); } -#line 1924 "seclang-parser.cc" +#line 1955 "seclang-parser.cc" break; - case 33: // op: op_before_init + case 33: #line 873 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > () = std::move(yystack_[0].value.as < std::unique_ptr > ()); @@ -1933,10 +1964,10 @@ namespace yy { YYERROR; } } -#line 1937 "seclang-parser.cc" +#line 1968 "seclang-parser.cc" break; - case 34: // op: "NOT" op_before_init + case 34: #line 882 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > () = std::move(yystack_[0].value.as < std::unique_ptr > ()); @@ -1947,10 +1978,10 @@ namespace yy { YYERROR; } } -#line 1951 "seclang-parser.cc" +#line 1982 "seclang-parser.cc" break; - case 35: // op: run_time_string + case 35: #line 892 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as < std::unique_ptr > ()))); @@ -1960,10 +1991,10 @@ namespace yy { YYERROR; } } -#line 1964 "seclang-parser.cc" +#line 1995 "seclang-parser.cc" break; - case 36: // op: "NOT" run_time_string + case 36: #line 901 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as < std::unique_ptr > ()))); @@ -1974,301 +2005,301 @@ namespace yy { YYERROR; } } -#line 1978 "seclang-parser.cc" +#line 2009 "seclang-parser.cc" break; - case 37: // op_before_init: "OPERATOR_UNCONDITIONAL_MATCH" + case 37: #line 914 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::UnconditionalMatch()); } -#line 1986 "seclang-parser.cc" +#line 2017 "seclang-parser.cc" break; - case 38: // op_before_init: "OPERATOR_DETECT_SQLI" + case 38: #line 918 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::DetectSQLi()); } -#line 1994 "seclang-parser.cc" +#line 2025 "seclang-parser.cc" break; - case 39: // op_before_init: "OPERATOR_DETECT_XSS" + case 39: #line 922 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::DetectXSS()); } -#line 2002 "seclang-parser.cc" +#line 2033 "seclang-parser.cc" break; - case 40: // op_before_init: "OPERATOR_VALIDATE_URL_ENCODING" + case 40: #line 926 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::ValidateUrlEncoding()); } -#line 2010 "seclang-parser.cc" +#line 2041 "seclang-parser.cc" break; - case 41: // op_before_init: "OPERATOR_VALIDATE_UTF8_ENCODING" + case 41: #line 930 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::ValidateUtf8Encoding()); } -#line 2018 "seclang-parser.cc" +#line 2049 "seclang-parser.cc" break; - case 42: // op_before_init: "OPERATOR_INSPECT_FILE" run_time_string + case 42: #line 934 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::InspectFile(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2026 "seclang-parser.cc" +#line 2057 "seclang-parser.cc" break; - case 43: // op_before_init: "OPERATOR_FUZZY_HASH" run_time_string + case 43: #line 938 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::FuzzyHash(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2034 "seclang-parser.cc" +#line 2065 "seclang-parser.cc" break; - case 44: // op_before_init: "OPERATOR_VALIDATE_BYTE_RANGE" run_time_string + case 44: #line 942 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::ValidateByteRange(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2042 "seclang-parser.cc" +#line 2073 "seclang-parser.cc" break; - case 45: // op_before_init: "OPERATOR_VALIDATE_DTD" run_time_string + case 45: #line 946 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::ValidateDTD(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2050 "seclang-parser.cc" +#line 2081 "seclang-parser.cc" break; - case 46: // op_before_init: "OPERATOR_VALIDATE_HASH" run_time_string + case 46: #line 950 "seclang-parser.yy" { /* $$ = new operators::ValidateHash($1); */ OPERATOR_NOT_SUPPORTED("ValidateHash", yystack_[2].location); } -#line 2059 "seclang-parser.cc" +#line 2090 "seclang-parser.cc" break; - case 47: // op_before_init: "OPERATOR_VALIDATE_SCHEMA" run_time_string + case 47: #line 955 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::ValidateSchema(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2067 "seclang-parser.cc" +#line 2098 "seclang-parser.cc" break; - case 48: // op_before_init: "OPERATOR_VERIFY_CC" run_time_string + case 48: #line 959 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::VerifyCC(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2075 "seclang-parser.cc" +#line 2106 "seclang-parser.cc" break; - case 49: // op_before_init: "OPERATOR_VERIFY_CPF" run_time_string + case 49: #line 963 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::VerifyCPF(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2083 "seclang-parser.cc" +#line 2114 "seclang-parser.cc" break; - case 50: // op_before_init: "OPERATOR_VERIFY_SSN" run_time_string + case 50: #line 967 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::VerifySSN(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2091 "seclang-parser.cc" +#line 2122 "seclang-parser.cc" break; - case 51: // op_before_init: "OPERATOR_VERIFY_SVNR" run_time_string + case 51: #line 971 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::VerifySVNR(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2099 "seclang-parser.cc" +#line 2130 "seclang-parser.cc" break; - case 52: // op_before_init: "OPERATOR_GSB_LOOKUP" run_time_string + case 52: #line 975 "seclang-parser.yy" { /* $$ = new operators::GsbLookup($1); */ OPERATOR_NOT_SUPPORTED("GsbLookup", yystack_[2].location); } -#line 2108 "seclang-parser.cc" +#line 2139 "seclang-parser.cc" break; - case 53: // op_before_init: "OPERATOR_RSUB" run_time_string + case 53: #line 980 "seclang-parser.yy" { /* $$ = new operators::Rsub($1); */ OPERATOR_NOT_SUPPORTED("Rsub", yystack_[2].location); } -#line 2117 "seclang-parser.cc" +#line 2148 "seclang-parser.cc" break; - case 54: // op_before_init: "OPERATOR_WITHIN" run_time_string + case 54: #line 985 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Within(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2125 "seclang-parser.cc" +#line 2156 "seclang-parser.cc" break; - case 55: // op_before_init: "OPERATOR_CONTAINS_WORD" run_time_string + case 55: #line 989 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::ContainsWord(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2133 "seclang-parser.cc" +#line 2164 "seclang-parser.cc" break; - case 56: // op_before_init: "OPERATOR_CONTAINS" run_time_string + case 56: #line 993 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Contains(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2141 "seclang-parser.cc" +#line 2172 "seclang-parser.cc" break; - case 57: // op_before_init: "OPERATOR_ENDS_WITH" run_time_string + case 57: #line 997 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::EndsWith(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2149 "seclang-parser.cc" +#line 2180 "seclang-parser.cc" break; - case 58: // op_before_init: "OPERATOR_EQ" run_time_string + case 58: #line 1001 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Eq(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2157 "seclang-parser.cc" +#line 2188 "seclang-parser.cc" break; - case 59: // op_before_init: "OPERATOR_GE" run_time_string + case 59: #line 1005 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Ge(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2165 "seclang-parser.cc" +#line 2196 "seclang-parser.cc" break; - case 60: // op_before_init: "OPERATOR_GT" run_time_string + case 60: #line 1009 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Gt(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2173 "seclang-parser.cc" +#line 2204 "seclang-parser.cc" break; - case 61: // op_before_init: "OPERATOR_IP_MATCH_FROM_FILE" run_time_string + case 61: #line 1013 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::IpMatchF(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2181 "seclang-parser.cc" +#line 2212 "seclang-parser.cc" break; - case 62: // op_before_init: "OPERATOR_IP_MATCH" run_time_string + case 62: #line 1017 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::IpMatch(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2189 "seclang-parser.cc" +#line 2220 "seclang-parser.cc" break; - case 63: // op_before_init: "OPERATOR_LE" run_time_string + case 63: #line 1021 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Le(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2197 "seclang-parser.cc" +#line 2228 "seclang-parser.cc" break; - case 64: // op_before_init: "OPERATOR_LT" run_time_string + case 64: #line 1025 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Lt(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2205 "seclang-parser.cc" +#line 2236 "seclang-parser.cc" break; - case 65: // op_before_init: "OPERATOR_PM_FROM_FILE" run_time_string + case 65: #line 1029 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::PmFromFile(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2213 "seclang-parser.cc" +#line 2244 "seclang-parser.cc" break; - case 66: // op_before_init: "OPERATOR_PM" run_time_string + case 66: #line 1033 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Pm(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2221 "seclang-parser.cc" +#line 2252 "seclang-parser.cc" break; - case 67: // op_before_init: "OPERATOR_RBL" run_time_string + case 67: #line 1037 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Rbl(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2229 "seclang-parser.cc" +#line 2260 "seclang-parser.cc" break; - case 68: // op_before_init: "OPERATOR_RX" run_time_string + case 68: #line 1041 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::Rx(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2237 "seclang-parser.cc" +#line 2268 "seclang-parser.cc" break; - case 69: // op_before_init: "OPERATOR_RX_GLOBAL" run_time_string + case 69: #line 1045 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::RxGlobal(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2245 "seclang-parser.cc" +#line 2276 "seclang-parser.cc" break; - case 70: // op_before_init: "OPERATOR_STR_EQ" run_time_string + case 70: #line 1049 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::StrEq(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2253 "seclang-parser.cc" +#line 2284 "seclang-parser.cc" break; - case 71: // op_before_init: "OPERATOR_STR_MATCH" run_time_string + case 71: #line 1053 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::StrMatch(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2261 "seclang-parser.cc" +#line 2292 "seclang-parser.cc" break; - case 72: // op_before_init: "OPERATOR_BEGINS_WITH" run_time_string + case 72: #line 1057 "seclang-parser.yy" { OPERATOR_CONTAINER(yylhs.value.as < std::unique_ptr > (), new operators::BeginsWith(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 2269 "seclang-parser.cc" +#line 2300 "seclang-parser.cc" break; - case 73: // op_before_init: "OPERATOR_GEOLOOKUP" + case 73: #line 1061 "seclang-parser.yy" { #if defined(WITH_GEOIP) or defined(WITH_MAXMIND) @@ -2280,17 +2311,19 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 2284 "seclang-parser.cc" +#line 2315 "seclang-parser.cc" break; - case 75: // expression: "DIRECTIVE" variables op actions + case 75: #line 1076 "seclang-parser.yy" { std::vector *a = new std::vector(); - std::vector *t = new std::vector(); + std::vector > *t = new std::vector >(); for (auto &i : *yystack_[0].value.as < std::unique_ptr > > > ().get()) { if (dynamic_cast(i.get())) { - t->push_back(dynamic_cast(i.release())); + std::shared_ptr at = std::move(i); + std::shared_ptr t2 = std::static_pointer_cast(std::move(at)); + t->push_back(std::move(t2)); } else { a->push_back(i.release()); } @@ -2314,11 +2347,11 @@ namespace yy { YYERROR; } } -#line 2318 "seclang-parser.cc" +#line 2351 "seclang-parser.cc" break; - case 76: // expression: "DIRECTIVE" variables op -#line 1106 "seclang-parser.yy" + case 76: +#line 1108 "seclang-parser.yy" { variables::Variables *v = new variables::Variables(); for (auto &i : *yystack_[1].value.as < std::unique_ptr > > > ().get()) { @@ -2337,17 +2370,19 @@ namespace yy { YYERROR; } } -#line 2341 "seclang-parser.cc" +#line 2374 "seclang-parser.cc" break; - case 77: // expression: "CONFIG_DIR_SEC_ACTION" actions -#line 1125 "seclang-parser.yy" + case 77: +#line 1127 "seclang-parser.yy" { std::vector *a = new std::vector(); - std::vector *t = new std::vector(); + std::vector > *t = new std::vector >(); for (auto &i : *yystack_[0].value.as < std::unique_ptr > > > ().get()) { if (dynamic_cast(i.get())) { - t->push_back(dynamic_cast(i.release())); + std::shared_ptr at = std::move(i); + std::shared_ptr t2 = std::static_pointer_cast(std::move(at)); + t->push_back(std::move(t2)); } else { a->push_back(i.release()); } @@ -2360,18 +2395,20 @@ namespace yy { )); driver.addSecAction(std::move(rule)); } -#line 2364 "seclang-parser.cc" +#line 2399 "seclang-parser.cc" break; - case 78: // expression: "DIRECTIVE_SECRULESCRIPT" actions -#line 1144 "seclang-parser.yy" + case 78: +#line 1148 "seclang-parser.yy" { std::string err; std::vector *a = new std::vector(); - std::vector *t = new std::vector(); + std::vector > *t = new std::vector >(); for (auto &i : *yystack_[0].value.as < std::unique_ptr > > > ().get()) { if (dynamic_cast(i.get())) { - t->push_back(dynamic_cast(i.release())); + std::shared_ptr at = std::move(i); + std::shared_ptr t2 = std::static_pointer_cast(std::move(at)); + t->push_back(std::move(t2)); } else { a->push_back(i.release()); } @@ -2392,11 +2429,11 @@ namespace yy { YYERROR; } } -#line 2396 "seclang-parser.cc" +#line 2433 "seclang-parser.cc" break; - case 79: // expression: "CONFIG_DIR_SEC_DEFAULT_ACTION" actions -#line 1172 "seclang-parser.yy" + case 79: +#line 1178 "seclang-parser.yy" { bool hasDisruptive = false; std::vector *actions = new std::vector(); @@ -2447,84 +2484,89 @@ namespace yy { } for (actions::Action *a : checkedActions) { - driver.m_rulesSetPhases[definedPhase]->m_defaultActions.push_back( - std::unique_ptr(a)); + if (dynamic_cast(a)) { + driver.m_rulesSetPhases[definedPhase]->m_defaultTransformations.push_back( + std::shared_ptr( + dynamic_cast(a))); + } else { + driver.m_rulesSetPhases[definedPhase]->m_defaultActions.push_back(std::unique_ptr(a)); + } } delete actions; } -#line 2457 "seclang-parser.cc" +#line 2499 "seclang-parser.cc" break; - case 80: // expression: "CONFIG_DIR_SEC_MARKER" -#line 1229 "seclang-parser.yy" + case 80: +#line 1240 "seclang-parser.yy" { driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as < std::string > ()), /* file name */ std::unique_ptr(new std::string(*yystack_[0].location.end.filename)), /* line number */ yystack_[0].location.end.line ); } -#line 2468 "seclang-parser.cc" +#line 2510 "seclang-parser.cc" break; - case 81: // expression: "CONFIG_DIR_RULE_ENG" "CONFIG_VALUE_OFF" -#line 1236 "seclang-parser.yy" + case 81: +#line 1247 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::DisabledRuleEngine; } -#line 2476 "seclang-parser.cc" +#line 2518 "seclang-parser.cc" break; - case 82: // expression: "CONFIG_DIR_RULE_ENG" "CONFIG_VALUE_ON" -#line 1240 "seclang-parser.yy" + case 82: +#line 1251 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::EnabledRuleEngine; } -#line 2484 "seclang-parser.cc" +#line 2526 "seclang-parser.cc" break; - case 83: // expression: "CONFIG_DIR_RULE_ENG" "CONFIG_VALUE_DETC" -#line 1244 "seclang-parser.yy" + case 83: +#line 1255 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::DetectionOnlyRuleEngine; } -#line 2492 "seclang-parser.cc" +#line 2534 "seclang-parser.cc" break; - case 84: // expression: "CONFIG_DIR_REQ_BODY" "CONFIG_VALUE_ON" -#line 1248 "seclang-parser.yy" + case 84: +#line 1259 "seclang-parser.yy" { driver.m_secRequestBodyAccess = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 2500 "seclang-parser.cc" +#line 2542 "seclang-parser.cc" break; - case 85: // expression: "CONFIG_DIR_REQ_BODY" "CONFIG_VALUE_OFF" -#line 1252 "seclang-parser.yy" + case 85: +#line 1263 "seclang-parser.yy" { driver.m_secRequestBodyAccess = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 2508 "seclang-parser.cc" +#line 2550 "seclang-parser.cc" break; - case 86: // expression: "CONFIG_DIR_RES_BODY" "CONFIG_VALUE_ON" -#line 1256 "seclang-parser.yy" + case 86: +#line 1267 "seclang-parser.yy" { driver.m_secResponseBodyAccess = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 2516 "seclang-parser.cc" +#line 2558 "seclang-parser.cc" break; - case 87: // expression: "CONFIG_DIR_RES_BODY" "CONFIG_VALUE_OFF" -#line 1260 "seclang-parser.yy" + case 87: +#line 1271 "seclang-parser.yy" { driver.m_secResponseBodyAccess = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 2524 "seclang-parser.cc" +#line 2566 "seclang-parser.cc" break; - case 88: // expression: "CONFIG_SEC_ARGUMENT_SEPARATOR" -#line 1264 "seclang-parser.yy" + case 88: +#line 1275 "seclang-parser.yy" { if (yystack_[0].value.as < std::string > ().length() != 1) { driver.error(yystack_[1].location, "Argument separator should be set to a single character."); @@ -2533,259 +2575,259 @@ namespace yy { driver.m_secArgumentSeparator.m_value = yystack_[0].value.as < std::string > (); driver.m_secArgumentSeparator.m_set = true; } -#line 2537 "seclang-parser.cc" +#line 2579 "seclang-parser.cc" break; - case 89: // expression: "CONFIG_COMPONENT_SIG" -#line 1273 "seclang-parser.yy" + case 89: +#line 1284 "seclang-parser.yy" { driver.m_components.push_back(yystack_[0].value.as < std::string > ()); } -#line 2545 "seclang-parser.cc" +#line 2587 "seclang-parser.cc" break; - case 90: // expression: "CONFIG_CONN_ENGINE" "CONFIG_VALUE_ON" -#line 1277 "seclang-parser.yy" + case 90: +#line 1288 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecConnEngine is not yet supported."); YYERROR; } -#line 2554 "seclang-parser.cc" +#line 2596 "seclang-parser.cc" break; - case 91: // expression: "CONFIG_CONN_ENGINE" "CONFIG_VALUE_OFF" -#line 1282 "seclang-parser.yy" + case 91: +#line 1293 "seclang-parser.yy" { } -#line 2561 "seclang-parser.cc" +#line 2603 "seclang-parser.cc" break; - case 92: // expression: "CONFIG_SEC_WEB_APP_ID" -#line 1285 "seclang-parser.yy" + case 92: +#line 1296 "seclang-parser.yy" { driver.m_secWebAppId.m_value = yystack_[0].value.as < std::string > (); driver.m_secWebAppId.m_set = true; } -#line 2570 "seclang-parser.cc" +#line 2612 "seclang-parser.cc" break; - case 93: // expression: "CONFIG_SEC_SERVER_SIG" -#line 1290 "seclang-parser.yy" + case 93: +#line 1301 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecServerSignature is not supported."); YYERROR; } -#line 2579 "seclang-parser.cc" +#line 2621 "seclang-parser.cc" break; - case 94: // expression: "CONFIG_SEC_CACHE_TRANSFORMATIONS" -#line 1295 "seclang-parser.yy" + case 94: +#line 1306 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecCacheTransformations is not supported."); YYERROR; } -#line 2588 "seclang-parser.cc" +#line 2630 "seclang-parser.cc" break; - case 95: // expression: "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" "CONFIG_VALUE_ON" -#line 1300 "seclang-parser.yy" + case 95: +#line 1311 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecDisableBackendCompression is not supported."); YYERROR; } -#line 2597 "seclang-parser.cc" +#line 2639 "seclang-parser.cc" break; - case 96: // expression: "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" "CONFIG_VALUE_OFF" -#line 1305 "seclang-parser.yy" + case 96: +#line 1316 "seclang-parser.yy" { } -#line 2604 "seclang-parser.cc" +#line 2646 "seclang-parser.cc" break; - case 97: // expression: "CONFIG_CONTENT_INJECTION" "CONFIG_VALUE_ON" -#line 1308 "seclang-parser.yy" + case 97: +#line 1319 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecContentInjection is not yet supported."); YYERROR; } -#line 2613 "seclang-parser.cc" +#line 2655 "seclang-parser.cc" break; - case 98: // expression: "CONFIG_CONTENT_INJECTION" "CONFIG_VALUE_OFF" -#line 1313 "seclang-parser.yy" + case 98: +#line 1324 "seclang-parser.yy" { } -#line 2620 "seclang-parser.cc" +#line 2662 "seclang-parser.cc" break; - case 99: // expression: "CONFIG_SEC_CHROOT_DIR" -#line 1316 "seclang-parser.yy" + case 99: +#line 1327 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecChrootDir is not supported."); YYERROR; } -#line 2629 "seclang-parser.cc" +#line 2671 "seclang-parser.cc" break; - case 100: // expression: "CONFIG_SEC_HASH_ENGINE" "CONFIG_VALUE_ON" -#line 1321 "seclang-parser.yy" + case 100: +#line 1332 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecHashEngine is not yet supported."); YYERROR; } -#line 2638 "seclang-parser.cc" +#line 2680 "seclang-parser.cc" break; - case 101: // expression: "CONFIG_SEC_HASH_ENGINE" "CONFIG_VALUE_OFF" -#line 1326 "seclang-parser.yy" + case 101: +#line 1337 "seclang-parser.yy" { } -#line 2645 "seclang-parser.cc" +#line 2687 "seclang-parser.cc" break; - case 102: // expression: "CONFIG_SEC_HASH_KEY" -#line 1329 "seclang-parser.yy" + case 102: +#line 1340 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashKey is not yet supported."); YYERROR; } -#line 2654 "seclang-parser.cc" +#line 2696 "seclang-parser.cc" break; - case 103: // expression: "CONFIG_SEC_HASH_PARAM" -#line 1334 "seclang-parser.yy" + case 103: +#line 1345 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashParam is not yet supported."); YYERROR; } -#line 2663 "seclang-parser.cc" +#line 2705 "seclang-parser.cc" break; - case 104: // expression: "CONFIG_SEC_HASH_METHOD_RX" -#line 1339 "seclang-parser.yy" + case 104: +#line 1350 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashMethodRx is not yet supported."); YYERROR; } -#line 2672 "seclang-parser.cc" +#line 2714 "seclang-parser.cc" break; - case 105: // expression: "CONFIG_SEC_HASH_METHOD_PM" -#line 1344 "seclang-parser.yy" + case 105: +#line 1355 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashMethodPm is not yet supported."); YYERROR; } -#line 2681 "seclang-parser.cc" +#line 2723 "seclang-parser.cc" break; - case 106: // expression: "CONFIG_DIR_GSB_DB" -#line 1349 "seclang-parser.yy" + case 106: +#line 1360 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecGsbLookupDb is not supported."); YYERROR; } -#line 2690 "seclang-parser.cc" +#line 2732 "seclang-parser.cc" break; - case 107: // expression: "CONFIG_SEC_GUARDIAN_LOG" -#line 1354 "seclang-parser.yy" + case 107: +#line 1365 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecGuardianLog is not supported."); YYERROR; } -#line 2699 "seclang-parser.cc" +#line 2741 "seclang-parser.cc" break; - case 108: // expression: "CONFIG_SEC_INTERCEPT_ON_ERROR" "CONFIG_VALUE_ON" -#line 1359 "seclang-parser.yy" + case 108: +#line 1370 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecInterceptOnError is not yet supported."); YYERROR; } -#line 2708 "seclang-parser.cc" +#line 2750 "seclang-parser.cc" break; - case 109: // expression: "CONFIG_SEC_INTERCEPT_ON_ERROR" "CONFIG_VALUE_OFF" -#line 1364 "seclang-parser.yy" + case 109: +#line 1375 "seclang-parser.yy" { } -#line 2715 "seclang-parser.cc" +#line 2757 "seclang-parser.cc" break; - case 110: // expression: "CONFIG_SEC_CONN_R_STATE_LIMIT" -#line 1367 "seclang-parser.yy" + case 110: +#line 1378 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecConnReadStateLimit is not yet supported."); YYERROR; } -#line 2724 "seclang-parser.cc" +#line 2766 "seclang-parser.cc" break; - case 111: // expression: "CONFIG_SEC_CONN_W_STATE_LIMIT" -#line 1372 "seclang-parser.yy" + case 111: +#line 1383 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecConnWriteStateLimit is not yet supported."); YYERROR; } -#line 2733 "seclang-parser.cc" +#line 2775 "seclang-parser.cc" break; - case 112: // expression: "CONFIG_SEC_SENSOR_ID" -#line 1377 "seclang-parser.yy" + case 112: +#line 1388 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecSensorId is not yet supported."); YYERROR; } -#line 2742 "seclang-parser.cc" +#line 2784 "seclang-parser.cc" break; - case 113: // expression: "CONFIG_SEC_RULE_INHERITANCE" "CONFIG_VALUE_ON" -#line 1382 "seclang-parser.yy" + case 113: +#line 1393 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecRuleInheritance is not yet supported."); YYERROR; } -#line 2751 "seclang-parser.cc" +#line 2793 "seclang-parser.cc" break; - case 114: // expression: "CONFIG_SEC_RULE_INHERITANCE" "CONFIG_VALUE_OFF" -#line 1387 "seclang-parser.yy" + case 114: +#line 1398 "seclang-parser.yy" { } -#line 2758 "seclang-parser.cc" +#line 2800 "seclang-parser.cc" break; - case 115: // expression: "CONFIG_SEC_RULE_PERF_TIME" -#line 1390 "seclang-parser.yy" + case 115: +#line 1401 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecRulePerfTime is not yet supported."); YYERROR; } -#line 2767 "seclang-parser.cc" +#line 2809 "seclang-parser.cc" break; - case 116: // expression: "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" -#line 1395 "seclang-parser.yy" + case 116: +#line 1406 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecStreamInBodyInspection is not supported."); YYERROR; } -#line 2776 "seclang-parser.cc" +#line 2818 "seclang-parser.cc" break; - case 117: // expression: "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" -#line 1400 "seclang-parser.yy" + case 117: +#line 1411 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecStreamOutBodyInspection is not supported."); YYERROR; } -#line 2785 "seclang-parser.cc" +#line 2827 "seclang-parser.cc" break; - case 118: // expression: "CONFIG_SEC_RULE_REMOVE_BY_ID" -#line 1405 "seclang-parser.yy" + case 118: +#line 1416 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.load(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2798,11 +2840,11 @@ namespace yy { YYERROR; } } -#line 2802 "seclang-parser.cc" +#line 2844 "seclang-parser.cc" break; - case 119: // expression: "CONFIG_SEC_RULE_REMOVE_BY_TAG" -#line 1418 "seclang-parser.yy" + case 119: +#line 1429 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadRemoveRuleByTag(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2815,11 +2857,11 @@ namespace yy { YYERROR; } } -#line 2819 "seclang-parser.cc" +#line 2861 "seclang-parser.cc" break; - case 120: // expression: "CONFIG_SEC_RULE_REMOVE_BY_MSG" -#line 1431 "seclang-parser.yy" + case 120: +#line 1442 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2832,11 +2874,11 @@ namespace yy { YYERROR; } } -#line 2836 "seclang-parser.cc" +#line 2878 "seclang-parser.cc" break; - case 121: // expression: "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" variables_pre_process -#line 1444 "seclang-parser.yy" + case 121: +#line 1455 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadUpdateTargetByTag(yystack_[1].value.as < std::string > (), std::move(yystack_[0].value.as < std::unique_ptr > > > ()), &error) == false) { @@ -2849,11 +2891,11 @@ namespace yy { YYERROR; } } -#line 2853 "seclang-parser.cc" +#line 2895 "seclang-parser.cc" break; - case 122: // expression: "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" variables_pre_process -#line 1457 "seclang-parser.yy" + case 122: +#line 1468 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadUpdateTargetByMsg(yystack_[1].value.as < std::string > (), std::move(yystack_[0].value.as < std::unique_ptr > > > ()), &error) == false) { @@ -2866,11 +2908,11 @@ namespace yy { YYERROR; } } -#line 2870 "seclang-parser.cc" +#line 2912 "seclang-parser.cc" break; - case 123: // expression: "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" variables_pre_process -#line 1470 "seclang-parser.yy" + case 123: +#line 1481 "seclang-parser.yy" { std::string error; double ruleId; @@ -2896,11 +2938,11 @@ namespace yy { YYERROR; } } -#line 2900 "seclang-parser.cc" +#line 2942 "seclang-parser.cc" break; - case 124: // expression: "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" actions -#line 1496 "seclang-parser.yy" + case 124: +#line 1507 "seclang-parser.yy" { std::string error; double ruleId; @@ -2927,11 +2969,11 @@ namespace yy { YYERROR; } } -#line 2931 "seclang-parser.cc" +#line 2973 "seclang-parser.cc" break; - case 125: // expression: "CONFIG_DIR_DEBUG_LVL" -#line 1524 "seclang-parser.yy" + case 125: +#line 1535 "seclang-parser.yy" { if (driver.m_debugLog != NULL) { driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as < std::string > ().c_str())); @@ -2943,11 +2985,11 @@ namespace yy { YYERROR; } } -#line 2947 "seclang-parser.cc" +#line 2989 "seclang-parser.cc" break; - case 126: // expression: "CONFIG_DIR_DEBUG_LOG" -#line 1536 "seclang-parser.yy" + case 126: +#line 1547 "seclang-parser.yy" { if (driver.m_debugLog != NULL) { std::string error; @@ -2966,11 +3008,11 @@ namespace yy { YYERROR; } } -#line 2970 "seclang-parser.cc" +#line 3012 "seclang-parser.cc" break; - case 127: // expression: "CONFIG_DIR_GEO_DB" -#line 1556 "seclang-parser.yy" + case 127: +#line 1567 "seclang-parser.yy" { #if defined(WITH_GEOIP) or defined(WITH_MAXMIND) std::string err; @@ -2997,38 +3039,38 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 3001 "seclang-parser.cc" +#line 3043 "seclang-parser.cc" break; - case 128: // expression: "CONFIG_DIR_ARGS_LIMIT" -#line 1583 "seclang-parser.yy" + case 128: +#line 1594 "seclang-parser.yy" { driver.m_argumentsLimit.m_set = true; driver.m_argumentsLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3010 "seclang-parser.cc" +#line 3052 "seclang-parser.cc" break; - case 129: // expression: "CONFIG_DIR_REQ_BODY_LIMIT" -#line 1589 "seclang-parser.yy" + case 129: +#line 1600 "seclang-parser.yy" { driver.m_requestBodyLimit.m_set = true; driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3019 "seclang-parser.cc" +#line 3061 "seclang-parser.cc" break; - case 130: // expression: "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" -#line 1594 "seclang-parser.yy" + case 130: +#line 1605 "seclang-parser.yy" { driver.m_requestBodyNoFilesLimit.m_set = true; driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3028 "seclang-parser.cc" +#line 3070 "seclang-parser.cc" break; - case 131: // expression: "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" -#line 1599 "seclang-parser.yy" + case 131: +#line 1610 "seclang-parser.yy" { std::stringstream ss; ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer "; @@ -3037,68 +3079,68 @@ namespace yy { driver.error(yystack_[1].location, ss.str()); YYERROR; } -#line 3041 "seclang-parser.cc" +#line 3083 "seclang-parser.cc" break; - case 132: // expression: "CONFIG_DIR_RES_BODY_LIMIT" -#line 1608 "seclang-parser.yy" + case 132: +#line 1619 "seclang-parser.yy" { driver.m_responseBodyLimit.m_set = true; driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3050 "seclang-parser.cc" +#line 3092 "seclang-parser.cc" break; - case 133: // expression: "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" "CONFIG_VALUE_PROCESS_PARTIAL" -#line 1613 "seclang-parser.yy" + case 133: +#line 1624 "seclang-parser.yy" { driver.m_requestBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 3058 "seclang-parser.cc" +#line 3100 "seclang-parser.cc" break; - case 134: // expression: "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" "CONFIG_VALUE_REJECT" -#line 1617 "seclang-parser.yy" + case 134: +#line 1628 "seclang-parser.yy" { driver.m_requestBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::RejectBodyLimitAction; } -#line 3066 "seclang-parser.cc" +#line 3108 "seclang-parser.cc" break; - case 135: // expression: "CONFIG_DIR_RES_BODY_LIMIT_ACTION" "CONFIG_VALUE_PROCESS_PARTIAL" -#line 1621 "seclang-parser.yy" + case 135: +#line 1632 "seclang-parser.yy" { driver.m_responseBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 3074 "seclang-parser.cc" +#line 3116 "seclang-parser.cc" break; - case 136: // expression: "CONFIG_DIR_RES_BODY_LIMIT_ACTION" "CONFIG_VALUE_REJECT" -#line 1625 "seclang-parser.yy" + case 136: +#line 1636 "seclang-parser.yy" { driver.m_responseBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::RejectBodyLimitAction; } -#line 3082 "seclang-parser.cc" +#line 3124 "seclang-parser.cc" break; - case 137: // expression: "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" "CONFIG_VALUE_ABORT" -#line 1629 "seclang-parser.yy" + case 137: +#line 1640 "seclang-parser.yy" { driver.m_remoteRulesActionOnFailed = RulesSet::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction; } -#line 3090 "seclang-parser.cc" +#line 3132 "seclang-parser.cc" break; - case 138: // expression: "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" "CONFIG_VALUE_WARN" -#line 1633 "seclang-parser.yy" + case 138: +#line 1644 "seclang-parser.yy" { driver.m_remoteRulesActionOnFailed = RulesSet::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction; } -#line 3098 "seclang-parser.cc" +#line 3140 "seclang-parser.cc" break; - case 141: // expression: "CONGIG_DIR_RESPONSE_BODY_MP" -#line 1647 "seclang-parser.yy" + case 141: +#line 1658 "seclang-parser.yy" { std::istringstream buf(yystack_[0].value.as < std::string > ()); std::istream_iterator beg(buf), end; @@ -3110,37 +3152,37 @@ namespace yy { driver.m_responseBodyTypeToBeInspected.m_value.insert(*it); } } -#line 3114 "seclang-parser.cc" +#line 3156 "seclang-parser.cc" break; - case 142: // expression: "CONGIG_DIR_RESPONSE_BODY_MP_CLEAR" -#line 1659 "seclang-parser.yy" + case 142: +#line 1670 "seclang-parser.yy" { driver.m_responseBodyTypeToBeInspected.m_set = true; driver.m_responseBodyTypeToBeInspected.m_clear = true; driver.m_responseBodyTypeToBeInspected.m_value.clear(); } -#line 3124 "seclang-parser.cc" +#line 3166 "seclang-parser.cc" break; - case 143: // expression: "CONFIG_XML_EXTERNAL_ENTITY" "CONFIG_VALUE_OFF" -#line 1665 "seclang-parser.yy" + case 143: +#line 1676 "seclang-parser.yy" { driver.m_secXMLExternalEntity = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 3132 "seclang-parser.cc" +#line 3174 "seclang-parser.cc" break; - case 144: // expression: "CONFIG_XML_EXTERNAL_ENTITY" "CONFIG_VALUE_ON" -#line 1669 "seclang-parser.yy" + case 144: +#line 1680 "seclang-parser.yy" { driver.m_secXMLExternalEntity = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 3140 "seclang-parser.cc" +#line 3182 "seclang-parser.cc" break; - case 145: // expression: "CONGIG_DIR_SEC_TMP_DIR" -#line 1673 "seclang-parser.yy" + case 145: +#line 1684 "seclang-parser.yy" { /* Parser error disabled to avoid breaking default installations with modsecurity.conf-recommended std::stringstream ss; @@ -3151,31 +3193,31 @@ namespace yy { YYERROR; */ } -#line 3155 "seclang-parser.cc" +#line 3197 "seclang-parser.cc" break; - case 148: // expression: "CONGIG_DIR_SEC_COOKIE_FORMAT" -#line 1694 "seclang-parser.yy" + case 148: +#line 1705 "seclang-parser.yy" { if (atoi(yystack_[0].value.as < std::string > ().c_str()) == 1) { driver.error(yystack_[1].location, "SecCookieFormat 1 is not yet supported."); YYERROR; } } -#line 3166 "seclang-parser.cc" +#line 3208 "seclang-parser.cc" break; - case 149: // expression: "CONFIG_SEC_COOKIEV0_SEPARATOR" -#line 1701 "seclang-parser.yy" + case 149: +#line 1712 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecCookieV0Separator is not yet supported."); YYERROR; } -#line 3175 "seclang-parser.cc" +#line 3217 "seclang-parser.cc" break; - case 151: // expression: "CONFIG_DIR_UNICODE_MAP_FILE" -#line 1711 "seclang-parser.yy" + case 151: +#line 1722 "seclang-parser.yy" { std::string error; std::vector param; @@ -3229,31 +3271,31 @@ namespace yy { } } -#line 3233 "seclang-parser.cc" +#line 3275 "seclang-parser.cc" break; - case 152: // expression: "CONFIG_SEC_COLLECTION_TIMEOUT" -#line 1765 "seclang-parser.yy" + case 152: +#line 1776 "seclang-parser.yy" { /* Parser error disabled to avoid breaking default CRS installations with crs-setup.conf-recommended driver.error(@0, "SecCollectionTimeout is not yet supported."); YYERROR; */ } -#line 3244 "seclang-parser.cc" +#line 3286 "seclang-parser.cc" break; - case 153: // expression: "CONFIG_SEC_HTTP_BLKEY" -#line 1772 "seclang-parser.yy" + case 153: +#line 1783 "seclang-parser.yy" { driver.m_httpblKey.m_set = true; driver.m_httpblKey.m_value = yystack_[0].value.as < std::string > (); } -#line 3253 "seclang-parser.cc" +#line 3295 "seclang-parser.cc" break; - case 154: // variables: variables_pre_process -#line 1780 "seclang-parser.yy" + case 154: +#line 1791 "seclang-parser.yy" { std::unique_ptr > > originalList = std::move(yystack_[0].value.as < std::unique_ptr > > > ()); std::unique_ptr>> newList(new std::vector>()); @@ -3287,2371 +3329,2371 @@ namespace yy { } yylhs.value.as < std::unique_ptr > > > () = std::move(newNewList); } -#line 3291 "seclang-parser.cc" +#line 3333 "seclang-parser.cc" break; - case 155: // variables_pre_process: variables_may_be_quoted -#line 1817 "seclang-parser.yy" + case 155: +#line 1828 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[0].value.as < std::unique_ptr > > > ()); } -#line 3299 "seclang-parser.cc" +#line 3341 "seclang-parser.cc" break; - case 156: // variables_pre_process: "QUOTATION_MARK" variables_may_be_quoted "QUOTATION_MARK" -#line 1821 "seclang-parser.yy" + case 156: +#line 1832 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[1].value.as < std::unique_ptr > > > ()); } -#line 3307 "seclang-parser.cc" +#line 3349 "seclang-parser.cc" break; - case 157: // variables_may_be_quoted: variables_may_be_quoted PIPE var -#line 1828 "seclang-parser.yy" + case 157: +#line 1839 "seclang-parser.yy" { 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 3316 "seclang-parser.cc" +#line 3358 "seclang-parser.cc" break; - case 158: // variables_may_be_quoted: variables_may_be_quoted PIPE VAR_EXCLUSION var -#line 1833 "seclang-parser.yy" + case 158: +#line 1844 "seclang-parser.yy" { std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as < std::unique_ptr > ()))); yystack_[3].value.as < std::unique_ptr > > > ()->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[3].value.as < std::unique_ptr > > > ()); } -#line 3326 "seclang-parser.cc" +#line 3368 "seclang-parser.cc" break; - case 159: // variables_may_be_quoted: variables_may_be_quoted PIPE VAR_COUNT var -#line 1839 "seclang-parser.yy" + case 159: +#line 1850 "seclang-parser.yy" { std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as < std::unique_ptr > ()))); yystack_[3].value.as < std::unique_ptr > > > ()->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[3].value.as < std::unique_ptr > > > ()); } -#line 3336 "seclang-parser.cc" +#line 3378 "seclang-parser.cc" break; - case 160: // variables_may_be_quoted: var -#line 1845 "seclang-parser.yy" + case 160: +#line 1856 "seclang-parser.yy" { 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 3346 "seclang-parser.cc" +#line 3388 "seclang-parser.cc" break; - case 161: // variables_may_be_quoted: VAR_EXCLUSION var -#line 1851 "seclang-parser.yy" + case 161: +#line 1862 "seclang-parser.yy" { std::unique_ptr>> b(new std::vector>()); std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as < std::unique_ptr > ()))); b->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(b); } -#line 3357 "seclang-parser.cc" +#line 3399 "seclang-parser.cc" break; - case 162: // variables_may_be_quoted: VAR_COUNT var -#line 1858 "seclang-parser.yy" + case 162: +#line 1869 "seclang-parser.yy" { std::unique_ptr>> b(new std::vector>()); std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as < std::unique_ptr > ()))); b->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(b); } -#line 3368 "seclang-parser.cc" +#line 3410 "seclang-parser.cc" break; - case 163: // var: VARIABLE_ARGS "Dictionary element" -#line 1868 "seclang-parser.yy" + case 163: +#line 1879 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3376 "seclang-parser.cc" +#line 3418 "seclang-parser.cc" break; - case 164: // var: VARIABLE_ARGS "Dictionary element, selected by regexp" -#line 1872 "seclang-parser.yy" + case 164: +#line 1883 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3384 "seclang-parser.cc" +#line 3426 "seclang-parser.cc" break; - case 165: // var: VARIABLE_ARGS -#line 1876 "seclang-parser.yy" + case 165: +#line 1887 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_NoDictElement()); } -#line 3392 "seclang-parser.cc" +#line 3434 "seclang-parser.cc" break; - case 166: // var: VARIABLE_ARGS_POST "Dictionary element" -#line 1880 "seclang-parser.yy" + case 166: +#line 1891 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3400 "seclang-parser.cc" +#line 3442 "seclang-parser.cc" break; - case 167: // var: VARIABLE_ARGS_POST "Dictionary element, selected by regexp" -#line 1884 "seclang-parser.yy" + case 167: +#line 1895 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3408 "seclang-parser.cc" +#line 3450 "seclang-parser.cc" break; - case 168: // var: VARIABLE_ARGS_POST -#line 1888 "seclang-parser.yy" + case 168: +#line 1899 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_NoDictElement()); } -#line 3416 "seclang-parser.cc" +#line 3458 "seclang-parser.cc" break; - case 169: // var: VARIABLE_ARGS_GET "Dictionary element" -#line 1892 "seclang-parser.yy" + case 169: +#line 1903 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3424 "seclang-parser.cc" +#line 3466 "seclang-parser.cc" break; - case 170: // var: VARIABLE_ARGS_GET "Dictionary element, selected by regexp" -#line 1896 "seclang-parser.yy" + case 170: +#line 1907 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3432 "seclang-parser.cc" +#line 3474 "seclang-parser.cc" break; - case 171: // var: VARIABLE_ARGS_GET -#line 1900 "seclang-parser.yy" + case 171: +#line 1911 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_NoDictElement()); } -#line 3440 "seclang-parser.cc" +#line 3482 "seclang-parser.cc" break; - case 172: // var: VARIABLE_FILES_SIZES "Dictionary element" -#line 1904 "seclang-parser.yy" + case 172: +#line 1915 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3448 "seclang-parser.cc" +#line 3490 "seclang-parser.cc" break; - case 173: // var: VARIABLE_FILES_SIZES "Dictionary element, selected by regexp" -#line 1908 "seclang-parser.yy" + case 173: +#line 1919 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3456 "seclang-parser.cc" +#line 3498 "seclang-parser.cc" break; - case 174: // var: VARIABLE_FILES_SIZES -#line 1912 "seclang-parser.yy" + case 174: +#line 1923 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_NoDictElement()); } -#line 3464 "seclang-parser.cc" +#line 3506 "seclang-parser.cc" break; - case 175: // var: VARIABLE_FILES_NAMES "Dictionary element" -#line 1916 "seclang-parser.yy" + case 175: +#line 1927 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3472 "seclang-parser.cc" +#line 3514 "seclang-parser.cc" break; - case 176: // var: VARIABLE_FILES_NAMES "Dictionary element, selected by regexp" -#line 1920 "seclang-parser.yy" + case 176: +#line 1931 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3480 "seclang-parser.cc" +#line 3522 "seclang-parser.cc" break; - case 177: // var: VARIABLE_FILES_NAMES -#line 1924 "seclang-parser.yy" + case 177: +#line 1935 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_NoDictElement()); } -#line 3488 "seclang-parser.cc" +#line 3530 "seclang-parser.cc" break; - case 178: // var: VARIABLE_FILES_TMP_CONTENT "Dictionary element" -#line 1928 "seclang-parser.yy" + case 178: +#line 1939 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3496 "seclang-parser.cc" +#line 3538 "seclang-parser.cc" break; - case 179: // var: VARIABLE_FILES_TMP_CONTENT "Dictionary element, selected by regexp" -#line 1932 "seclang-parser.yy" + case 179: +#line 1943 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3504 "seclang-parser.cc" +#line 3546 "seclang-parser.cc" break; - case 180: // var: VARIABLE_FILES_TMP_CONTENT -#line 1936 "seclang-parser.yy" + case 180: +#line 1947 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_NoDictElement()); } -#line 3512 "seclang-parser.cc" +#line 3554 "seclang-parser.cc" break; - case 181: // var: VARIABLE_MULTIPART_FILENAME "Dictionary element" -#line 1940 "seclang-parser.yy" + case 181: +#line 1951 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3520 "seclang-parser.cc" +#line 3562 "seclang-parser.cc" break; - case 182: // var: VARIABLE_MULTIPART_FILENAME "Dictionary element, selected by regexp" -#line 1944 "seclang-parser.yy" + case 182: +#line 1955 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3528 "seclang-parser.cc" +#line 3570 "seclang-parser.cc" break; - case 183: // var: VARIABLE_MULTIPART_FILENAME -#line 1948 "seclang-parser.yy" + case 183: +#line 1959 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_NoDictElement()); } -#line 3536 "seclang-parser.cc" +#line 3578 "seclang-parser.cc" break; - case 184: // var: VARIABLE_MULTIPART_NAME "Dictionary element" -#line 1952 "seclang-parser.yy" + case 184: +#line 1963 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3544 "seclang-parser.cc" +#line 3586 "seclang-parser.cc" break; - case 185: // var: VARIABLE_MULTIPART_NAME "Dictionary element, selected by regexp" -#line 1956 "seclang-parser.yy" + case 185: +#line 1967 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3552 "seclang-parser.cc" +#line 3594 "seclang-parser.cc" break; - case 186: // var: VARIABLE_MULTIPART_NAME -#line 1960 "seclang-parser.yy" + case 186: +#line 1971 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_NoDictElement()); } -#line 3560 "seclang-parser.cc" +#line 3602 "seclang-parser.cc" break; - case 187: // var: VARIABLE_MATCHED_VARS_NAMES "Dictionary element" -#line 1964 "seclang-parser.yy" + case 187: +#line 1975 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3568 "seclang-parser.cc" +#line 3610 "seclang-parser.cc" break; - case 188: // var: VARIABLE_MATCHED_VARS_NAMES "Dictionary element, selected by regexp" -#line 1968 "seclang-parser.yy" + case 188: +#line 1979 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3576 "seclang-parser.cc" +#line 3618 "seclang-parser.cc" break; - case 189: // var: VARIABLE_MATCHED_VARS_NAMES -#line 1972 "seclang-parser.yy" + case 189: +#line 1983 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_NoDictElement()); } -#line 3584 "seclang-parser.cc" +#line 3626 "seclang-parser.cc" break; - case 190: // var: VARIABLE_MATCHED_VARS "Dictionary element" -#line 1976 "seclang-parser.yy" + case 190: +#line 1987 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3592 "seclang-parser.cc" +#line 3634 "seclang-parser.cc" break; - case 191: // var: VARIABLE_MATCHED_VARS "Dictionary element, selected by regexp" -#line 1980 "seclang-parser.yy" + case 191: +#line 1991 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3600 "seclang-parser.cc" +#line 3642 "seclang-parser.cc" break; - case 192: // var: VARIABLE_MATCHED_VARS -#line 1984 "seclang-parser.yy" + case 192: +#line 1995 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_NoDictElement()); } -#line 3608 "seclang-parser.cc" +#line 3650 "seclang-parser.cc" break; - case 193: // var: VARIABLE_FILES "Dictionary element" -#line 1988 "seclang-parser.yy" + case 193: +#line 1999 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3616 "seclang-parser.cc" +#line 3658 "seclang-parser.cc" break; - case 194: // var: VARIABLE_FILES "Dictionary element, selected by regexp" -#line 1992 "seclang-parser.yy" + case 194: +#line 2003 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3624 "seclang-parser.cc" +#line 3666 "seclang-parser.cc" break; - case 195: // var: VARIABLE_FILES -#line 1996 "seclang-parser.yy" + case 195: +#line 2007 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_NoDictElement()); } -#line 3632 "seclang-parser.cc" +#line 3674 "seclang-parser.cc" break; - case 196: // var: VARIABLE_REQUEST_COOKIES "Dictionary element" -#line 2000 "seclang-parser.yy" + case 196: +#line 2011 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3640 "seclang-parser.cc" +#line 3682 "seclang-parser.cc" break; - case 197: // var: VARIABLE_REQUEST_COOKIES "Dictionary element, selected by regexp" -#line 2004 "seclang-parser.yy" + case 197: +#line 2015 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3648 "seclang-parser.cc" +#line 3690 "seclang-parser.cc" break; - case 198: // var: VARIABLE_REQUEST_COOKIES -#line 2008 "seclang-parser.yy" + case 198: +#line 2019 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_NoDictElement()); } -#line 3656 "seclang-parser.cc" +#line 3698 "seclang-parser.cc" break; - case 199: // var: VARIABLE_REQUEST_HEADERS "Dictionary element" -#line 2012 "seclang-parser.yy" + case 199: +#line 2023 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3664 "seclang-parser.cc" +#line 3706 "seclang-parser.cc" break; - case 200: // var: VARIABLE_REQUEST_HEADERS "Dictionary element, selected by regexp" -#line 2016 "seclang-parser.yy" + case 200: +#line 2027 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3672 "seclang-parser.cc" +#line 3714 "seclang-parser.cc" break; - case 201: // var: VARIABLE_REQUEST_HEADERS -#line 2020 "seclang-parser.yy" + case 201: +#line 2031 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_NoDictElement()); } -#line 3680 "seclang-parser.cc" +#line 3722 "seclang-parser.cc" break; - case 202: // var: VARIABLE_RESPONSE_HEADERS "Dictionary element" -#line 2024 "seclang-parser.yy" + case 202: +#line 2035 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3688 "seclang-parser.cc" +#line 3730 "seclang-parser.cc" break; - case 203: // var: VARIABLE_RESPONSE_HEADERS "Dictionary element, selected by regexp" -#line 2028 "seclang-parser.yy" + case 203: +#line 2039 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3696 "seclang-parser.cc" +#line 3738 "seclang-parser.cc" break; - case 204: // var: VARIABLE_RESPONSE_HEADERS -#line 2032 "seclang-parser.yy" + case 204: +#line 2043 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_NoDictElement()); } -#line 3704 "seclang-parser.cc" +#line 3746 "seclang-parser.cc" break; - case 205: // var: VARIABLE_GEO "Dictionary element" -#line 2036 "seclang-parser.yy" + case 205: +#line 2047 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3712 "seclang-parser.cc" +#line 3754 "seclang-parser.cc" break; - case 206: // var: VARIABLE_GEO "Dictionary element, selected by regexp" -#line 2040 "seclang-parser.yy" + case 206: +#line 2051 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3720 "seclang-parser.cc" +#line 3762 "seclang-parser.cc" break; - case 207: // var: VARIABLE_GEO -#line 2044 "seclang-parser.yy" + case 207: +#line 2055 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_NoDictElement()); } -#line 3728 "seclang-parser.cc" +#line 3770 "seclang-parser.cc" break; - case 208: // var: VARIABLE_REQUEST_COOKIES_NAMES "Dictionary element" -#line 2048 "seclang-parser.yy" + case 208: +#line 2059 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3736 "seclang-parser.cc" +#line 3778 "seclang-parser.cc" break; - case 209: // var: VARIABLE_REQUEST_COOKIES_NAMES "Dictionary element, selected by regexp" -#line 2052 "seclang-parser.yy" + case 209: +#line 2063 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3744 "seclang-parser.cc" +#line 3786 "seclang-parser.cc" break; - case 210: // var: VARIABLE_REQUEST_COOKIES_NAMES -#line 2056 "seclang-parser.yy" + case 210: +#line 2067 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_NoDictElement()); } -#line 3752 "seclang-parser.cc" +#line 3794 "seclang-parser.cc" break; - case 211: // var: VARIABLE_RULE "Dictionary element" -#line 2060 "seclang-parser.yy" + case 211: +#line 2071 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3760 "seclang-parser.cc" +#line 3802 "seclang-parser.cc" break; - case 212: // var: VARIABLE_RULE "Dictionary element, selected by regexp" -#line 2064 "seclang-parser.yy" + case 212: +#line 2075 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3768 "seclang-parser.cc" +#line 3810 "seclang-parser.cc" break; - case 213: // var: VARIABLE_RULE -#line 2068 "seclang-parser.yy" + case 213: +#line 2079 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_NoDictElement()); } -#line 3776 "seclang-parser.cc" +#line 3818 "seclang-parser.cc" break; - case 214: // var: "RUN_TIME_VAR_ENV" "Dictionary element" -#line 2072 "seclang-parser.yy" + case 214: +#line 2083 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV:" + yystack_[0].value.as < std::string > ())); } -#line 3784 "seclang-parser.cc" +#line 3826 "seclang-parser.cc" break; - case 215: // var: "RUN_TIME_VAR_ENV" "Dictionary element, selected by regexp" -#line 2076 "seclang-parser.yy" + case 215: +#line 2087 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV:" + yystack_[0].value.as < std::string > ())); } -#line 3792 "seclang-parser.cc" +#line 3834 "seclang-parser.cc" break; - case 216: // var: "RUN_TIME_VAR_ENV" -#line 2080 "seclang-parser.yy" + case 216: +#line 2091 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV")); } -#line 3800 "seclang-parser.cc" +#line 3842 "seclang-parser.cc" break; - case 217: // var: "RUN_TIME_VAR_XML" "Dictionary element" -#line 2084 "seclang-parser.yy" + case 217: +#line 2095 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML("XML:" + yystack_[0].value.as < std::string > ())); } -#line 3808 "seclang-parser.cc" +#line 3850 "seclang-parser.cc" break; - case 218: // var: "RUN_TIME_VAR_XML" "Dictionary element, selected by regexp" -#line 2088 "seclang-parser.yy" + case 218: +#line 2099 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML("XML:" + yystack_[0].value.as < std::string > ())); } -#line 3816 "seclang-parser.cc" +#line 3858 "seclang-parser.cc" break; - case 219: // var: "RUN_TIME_VAR_XML" -#line 2092 "seclang-parser.yy" + case 219: +#line 2103 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML_NoDictElement()); } -#line 3824 "seclang-parser.cc" +#line 3866 "seclang-parser.cc" break; - case 220: // var: "FILES_TMPNAMES" "Dictionary element" -#line 2096 "seclang-parser.yy" + case 220: +#line 2107 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3832 "seclang-parser.cc" +#line 3874 "seclang-parser.cc" break; - case 221: // var: "FILES_TMPNAMES" "Dictionary element, selected by regexp" -#line 2100 "seclang-parser.yy" + case 221: +#line 2111 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3840 "seclang-parser.cc" +#line 3882 "seclang-parser.cc" break; - case 222: // var: "FILES_TMPNAMES" -#line 2104 "seclang-parser.yy" + case 222: +#line 2115 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_NoDictElement()); } -#line 3848 "seclang-parser.cc" +#line 3890 "seclang-parser.cc" break; - case 223: // var: "RESOURCE" run_time_string -#line 2108 "seclang-parser.yy" + case 223: +#line 2119 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3856 "seclang-parser.cc" +#line 3898 "seclang-parser.cc" break; - case 224: // var: "RESOURCE" "Dictionary element" -#line 2112 "seclang-parser.yy" + case 224: +#line 2123 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3864 "seclang-parser.cc" +#line 3906 "seclang-parser.cc" break; - case 225: // var: "RESOURCE" "Dictionary element, selected by regexp" -#line 2116 "seclang-parser.yy" + case 225: +#line 2127 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3872 "seclang-parser.cc" +#line 3914 "seclang-parser.cc" break; - case 226: // var: "RESOURCE" -#line 2120 "seclang-parser.yy" + case 226: +#line 2131 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_NoDictElement()); } -#line 3880 "seclang-parser.cc" +#line 3922 "seclang-parser.cc" break; - case 227: // var: "VARIABLE_IP" run_time_string -#line 2124 "seclang-parser.yy" + case 227: +#line 2135 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3888 "seclang-parser.cc" +#line 3930 "seclang-parser.cc" break; - case 228: // var: "VARIABLE_IP" "Dictionary element" -#line 2128 "seclang-parser.yy" + case 228: +#line 2139 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3896 "seclang-parser.cc" +#line 3938 "seclang-parser.cc" break; - case 229: // var: "VARIABLE_IP" "Dictionary element, selected by regexp" -#line 2132 "seclang-parser.yy" + case 229: +#line 2143 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3904 "seclang-parser.cc" +#line 3946 "seclang-parser.cc" break; - case 230: // var: "VARIABLE_IP" -#line 2136 "seclang-parser.yy" + case 230: +#line 2147 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_NoDictElement()); } -#line 3912 "seclang-parser.cc" +#line 3954 "seclang-parser.cc" break; - case 231: // var: "VARIABLE_GLOBAL" run_time_string -#line 2140 "seclang-parser.yy" + case 231: +#line 2151 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3920 "seclang-parser.cc" +#line 3962 "seclang-parser.cc" break; - case 232: // var: "VARIABLE_GLOBAL" "Dictionary element" -#line 2144 "seclang-parser.yy" + case 232: +#line 2155 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3928 "seclang-parser.cc" +#line 3970 "seclang-parser.cc" break; - case 233: // var: "VARIABLE_GLOBAL" "Dictionary element, selected by regexp" -#line 2148 "seclang-parser.yy" + case 233: +#line 2159 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3936 "seclang-parser.cc" +#line 3978 "seclang-parser.cc" break; - case 234: // var: "VARIABLE_GLOBAL" -#line 2152 "seclang-parser.yy" + case 234: +#line 2163 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_NoDictElement()); } -#line 3944 "seclang-parser.cc" +#line 3986 "seclang-parser.cc" break; - case 235: // var: "VARIABLE_USER" run_time_string -#line 2156 "seclang-parser.yy" + case 235: +#line 2167 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3952 "seclang-parser.cc" +#line 3994 "seclang-parser.cc" break; - case 236: // var: "VARIABLE_USER" "Dictionary element" -#line 2160 "seclang-parser.yy" + case 236: +#line 2171 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3960 "seclang-parser.cc" +#line 4002 "seclang-parser.cc" break; - case 237: // var: "VARIABLE_USER" "Dictionary element, selected by regexp" -#line 2164 "seclang-parser.yy" + case 237: +#line 2175 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3968 "seclang-parser.cc" +#line 4010 "seclang-parser.cc" break; - case 238: // var: "VARIABLE_USER" -#line 2168 "seclang-parser.yy" + case 238: +#line 2179 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_NoDictElement()); } -#line 3976 "seclang-parser.cc" +#line 4018 "seclang-parser.cc" break; - case 239: // var: "VARIABLE_TX" run_time_string -#line 2172 "seclang-parser.yy" + case 239: +#line 2183 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3984 "seclang-parser.cc" +#line 4026 "seclang-parser.cc" break; - case 240: // var: "VARIABLE_TX" "Dictionary element" -#line 2176 "seclang-parser.yy" + case 240: +#line 2187 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3992 "seclang-parser.cc" +#line 4034 "seclang-parser.cc" break; - case 241: // var: "VARIABLE_TX" "Dictionary element, selected by regexp" -#line 2180 "seclang-parser.yy" + case 241: +#line 2191 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4000 "seclang-parser.cc" +#line 4042 "seclang-parser.cc" break; - case 242: // var: "VARIABLE_TX" -#line 2184 "seclang-parser.yy" + case 242: +#line 2195 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_NoDictElement()); } -#line 4008 "seclang-parser.cc" +#line 4050 "seclang-parser.cc" break; - case 243: // var: "VARIABLE_SESSION" run_time_string -#line 2188 "seclang-parser.yy" + case 243: +#line 2199 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 4016 "seclang-parser.cc" +#line 4058 "seclang-parser.cc" break; - case 244: // var: "VARIABLE_SESSION" "Dictionary element" -#line 2192 "seclang-parser.yy" + case 244: +#line 2203 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4024 "seclang-parser.cc" +#line 4066 "seclang-parser.cc" break; - case 245: // var: "VARIABLE_SESSION" "Dictionary element, selected by regexp" -#line 2196 "seclang-parser.yy" + case 245: +#line 2207 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4032 "seclang-parser.cc" +#line 4074 "seclang-parser.cc" break; - case 246: // var: "VARIABLE_SESSION" -#line 2200 "seclang-parser.yy" + case 246: +#line 2211 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_NoDictElement()); } -#line 4040 "seclang-parser.cc" +#line 4082 "seclang-parser.cc" break; - case 247: // var: "Variable ARGS_NAMES" "Dictionary element" -#line 2204 "seclang-parser.yy" + case 247: +#line 2215 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4048 "seclang-parser.cc" +#line 4090 "seclang-parser.cc" break; - case 248: // var: "Variable ARGS_NAMES" "Dictionary element, selected by regexp" -#line 2208 "seclang-parser.yy" + case 248: +#line 2219 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4056 "seclang-parser.cc" +#line 4098 "seclang-parser.cc" break; - case 249: // var: "Variable ARGS_NAMES" -#line 2212 "seclang-parser.yy" + case 249: +#line 2223 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_NoDictElement()); } -#line 4064 "seclang-parser.cc" +#line 4106 "seclang-parser.cc" break; - case 250: // var: VARIABLE_ARGS_GET_NAMES "Dictionary element" -#line 2216 "seclang-parser.yy" + case 250: +#line 2227 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4072 "seclang-parser.cc" +#line 4114 "seclang-parser.cc" break; - case 251: // var: VARIABLE_ARGS_GET_NAMES "Dictionary element, selected by regexp" -#line 2220 "seclang-parser.yy" + case 251: +#line 2231 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4080 "seclang-parser.cc" +#line 4122 "seclang-parser.cc" break; - case 252: // var: VARIABLE_ARGS_GET_NAMES -#line 2224 "seclang-parser.yy" + case 252: +#line 2235 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_NoDictElement()); } -#line 4088 "seclang-parser.cc" +#line 4130 "seclang-parser.cc" break; - case 253: // var: VARIABLE_ARGS_POST_NAMES "Dictionary element" -#line 2229 "seclang-parser.yy" + case 253: +#line 2240 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4096 "seclang-parser.cc" +#line 4138 "seclang-parser.cc" break; - case 254: // var: VARIABLE_ARGS_POST_NAMES "Dictionary element, selected by regexp" -#line 2233 "seclang-parser.yy" + case 254: +#line 2244 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4104 "seclang-parser.cc" +#line 4146 "seclang-parser.cc" break; - case 255: // var: VARIABLE_ARGS_POST_NAMES -#line 2237 "seclang-parser.yy" + case 255: +#line 2248 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_NoDictElement()); } -#line 4112 "seclang-parser.cc" +#line 4154 "seclang-parser.cc" break; - case 256: // var: VARIABLE_REQUEST_HEADERS_NAMES "Dictionary element" -#line 2242 "seclang-parser.yy" + case 256: +#line 2253 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4120 "seclang-parser.cc" +#line 4162 "seclang-parser.cc" break; - case 257: // var: VARIABLE_REQUEST_HEADERS_NAMES "Dictionary element, selected by regexp" -#line 2246 "seclang-parser.yy" + case 257: +#line 2257 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4128 "seclang-parser.cc" +#line 4170 "seclang-parser.cc" break; - case 258: // var: VARIABLE_REQUEST_HEADERS_NAMES -#line 2250 "seclang-parser.yy" + case 258: +#line 2261 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_NoDictElement()); } -#line 4136 "seclang-parser.cc" +#line 4178 "seclang-parser.cc" break; - case 259: // var: VARIABLE_RESPONSE_CONTENT_TYPE -#line 2255 "seclang-parser.yy" + case 259: +#line 2266 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseContentType()); } -#line 4144 "seclang-parser.cc" +#line 4186 "seclang-parser.cc" break; - case 260: // var: VARIABLE_RESPONSE_HEADERS_NAMES "Dictionary element" -#line 2260 "seclang-parser.yy" + case 260: +#line 2271 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4152 "seclang-parser.cc" +#line 4194 "seclang-parser.cc" break; - case 261: // var: VARIABLE_RESPONSE_HEADERS_NAMES "Dictionary element, selected by regexp" -#line 2264 "seclang-parser.yy" + case 261: +#line 2275 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4160 "seclang-parser.cc" +#line 4202 "seclang-parser.cc" break; - case 262: // var: VARIABLE_RESPONSE_HEADERS_NAMES -#line 2268 "seclang-parser.yy" + case 262: +#line 2279 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_NoDictElement()); } -#line 4168 "seclang-parser.cc" +#line 4210 "seclang-parser.cc" break; - case 263: // var: VARIABLE_ARGS_COMBINED_SIZE -#line 2272 "seclang-parser.yy" + case 263: +#line 2283 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsCombinedSize()); } -#line 4176 "seclang-parser.cc" +#line 4218 "seclang-parser.cc" break; - case 264: // var: "AUTH_TYPE" -#line 2276 "seclang-parser.yy" + case 264: +#line 2287 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::AuthType()); } -#line 4184 "seclang-parser.cc" +#line 4226 "seclang-parser.cc" break; - case 265: // var: "FILES_COMBINED_SIZE" -#line 2280 "seclang-parser.yy" + case 265: +#line 2291 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesCombinedSize()); } -#line 4192 "seclang-parser.cc" +#line 4234 "seclang-parser.cc" break; - case 266: // var: "FULL_REQUEST" -#line 2284 "seclang-parser.yy" + case 266: +#line 2295 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FullRequest()); } -#line 4200 "seclang-parser.cc" +#line 4242 "seclang-parser.cc" break; - case 267: // var: "FULL_REQUEST_LENGTH" -#line 2288 "seclang-parser.yy" + case 267: +#line 2299 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FullRequestLength()); } -#line 4208 "seclang-parser.cc" +#line 4250 "seclang-parser.cc" break; - case 268: // var: "INBOUND_DATA_ERROR" -#line 2292 "seclang-parser.yy" + case 268: +#line 2303 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::InboundDataError()); } -#line 4216 "seclang-parser.cc" +#line 4258 "seclang-parser.cc" break; - case 269: // var: "MATCHED_VAR" -#line 2296 "seclang-parser.yy" + case 269: +#line 2307 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVar()); } -#line 4224 "seclang-parser.cc" +#line 4266 "seclang-parser.cc" break; - case 270: // var: "MATCHED_VAR_NAME" -#line 2300 "seclang-parser.yy" + case 270: +#line 2311 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarName()); } -#line 4232 "seclang-parser.cc" +#line 4274 "seclang-parser.cc" break; - case 271: // var: VARIABLE_MULTIPART_BOUNDARY_QUOTED -#line 2304 "seclang-parser.yy" + case 271: +#line 2315 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartBoundaryQuoted()); } -#line 4240 "seclang-parser.cc" +#line 4282 "seclang-parser.cc" break; - case 272: // var: VARIABLE_MULTIPART_BOUNDARY_WHITESPACE -#line 2308 "seclang-parser.yy" + case 272: +#line 2319 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartBoundaryWhiteSpace()); } -#line 4248 "seclang-parser.cc" +#line 4290 "seclang-parser.cc" break; - case 273: // var: "MULTIPART_CRLF_LF_LINES" -#line 2312 "seclang-parser.yy" + case 273: +#line 2323 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartCrlfLFLines()); } -#line 4256 "seclang-parser.cc" +#line 4298 "seclang-parser.cc" break; - case 274: // var: "MULTIPART_DATA_AFTER" -#line 2316 "seclang-parser.yy" + case 274: +#line 2327 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartDateAfter()); } -#line 4264 "seclang-parser.cc" +#line 4306 "seclang-parser.cc" break; - case 275: // var: VARIABLE_MULTIPART_DATA_BEFORE -#line 2320 "seclang-parser.yy" + case 275: +#line 2331 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartDateBefore()); } -#line 4272 "seclang-parser.cc" +#line 4314 "seclang-parser.cc" break; - case 276: // var: "MULTIPART_FILE_LIMIT_EXCEEDED" -#line 2324 "seclang-parser.yy" + case 276: +#line 2335 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartFileLimitExceeded()); } -#line 4280 "seclang-parser.cc" +#line 4322 "seclang-parser.cc" break; - case 277: // var: "MULTIPART_HEADER_FOLDING" -#line 2328 "seclang-parser.yy" + case 277: +#line 2339 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartHeaderFolding()); } -#line 4288 "seclang-parser.cc" +#line 4330 "seclang-parser.cc" break; - case 278: // var: "MULTIPART_INVALID_HEADER_FOLDING" -#line 2332 "seclang-parser.yy" + case 278: +#line 2343 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidHeaderFolding()); } -#line 4296 "seclang-parser.cc" +#line 4338 "seclang-parser.cc" break; - case 279: // var: VARIABLE_MULTIPART_INVALID_PART -#line 2336 "seclang-parser.yy" + case 279: +#line 2347 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidPart()); } -#line 4304 "seclang-parser.cc" +#line 4346 "seclang-parser.cc" break; - case 280: // var: "MULTIPART_INVALID_QUOTING" -#line 2340 "seclang-parser.yy" + case 280: +#line 2351 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidQuoting()); } -#line 4312 "seclang-parser.cc" +#line 4354 "seclang-parser.cc" break; - case 281: // var: VARIABLE_MULTIPART_LF_LINE -#line 2344 "seclang-parser.yy" + case 281: +#line 2355 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartLFLine()); } -#line 4320 "seclang-parser.cc" +#line 4362 "seclang-parser.cc" break; - case 282: // var: VARIABLE_MULTIPART_MISSING_SEMICOLON -#line 2348 "seclang-parser.yy" + case 282: +#line 2359 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartMissingSemicolon()); } -#line 4328 "seclang-parser.cc" +#line 4370 "seclang-parser.cc" break; - case 283: // var: VARIABLE_MULTIPART_SEMICOLON_MISSING -#line 2352 "seclang-parser.yy" + case 283: +#line 2363 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartMissingSemicolon()); } -#line 4336 "seclang-parser.cc" +#line 4378 "seclang-parser.cc" break; - case 284: // var: "MULTIPART_STRICT_ERROR" -#line 2356 "seclang-parser.yy" + case 284: +#line 2367 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartStrictError()); } -#line 4344 "seclang-parser.cc" +#line 4386 "seclang-parser.cc" break; - case 285: // var: "MULTIPART_UNMATCHED_BOUNDARY" -#line 2360 "seclang-parser.yy" + case 285: +#line 2371 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartUnmatchedBoundary()); } -#line 4352 "seclang-parser.cc" +#line 4394 "seclang-parser.cc" break; - case 286: // var: "OUTBOUND_DATA_ERROR" -#line 2364 "seclang-parser.yy" + case 286: +#line 2375 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::OutboundDataError()); } -#line 4360 "seclang-parser.cc" +#line 4402 "seclang-parser.cc" break; - case 287: // var: "PATH_INFO" -#line 2368 "seclang-parser.yy" + case 287: +#line 2379 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::PathInfo()); } -#line 4368 "seclang-parser.cc" +#line 4410 "seclang-parser.cc" break; - case 288: // var: "QUERY_STRING" -#line 2372 "seclang-parser.yy" + case 288: +#line 2383 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::QueryString()); } -#line 4376 "seclang-parser.cc" +#line 4418 "seclang-parser.cc" break; - case 289: // var: "REMOTE_ADDR" -#line 2376 "seclang-parser.yy" + case 289: +#line 2387 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemoteAddr()); } -#line 4384 "seclang-parser.cc" +#line 4426 "seclang-parser.cc" break; - case 290: // var: "REMOTE_HOST" -#line 2380 "seclang-parser.yy" + case 290: +#line 2391 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemoteHost()); } -#line 4392 "seclang-parser.cc" +#line 4434 "seclang-parser.cc" break; - case 291: // var: "REMOTE_PORT" -#line 2384 "seclang-parser.yy" + case 291: +#line 2395 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemotePort()); } -#line 4400 "seclang-parser.cc" +#line 4442 "seclang-parser.cc" break; - case 292: // var: "REQBODY_ERROR" -#line 2388 "seclang-parser.yy" + case 292: +#line 2399 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyError()); } -#line 4408 "seclang-parser.cc" +#line 4450 "seclang-parser.cc" break; - case 293: // var: "REQBODY_ERROR_MSG" -#line 2392 "seclang-parser.yy" + case 293: +#line 2403 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyErrorMsg()); } -#line 4416 "seclang-parser.cc" +#line 4458 "seclang-parser.cc" break; - case 294: // var: "REQBODY_PROCESSOR" -#line 2396 "seclang-parser.yy" + case 294: +#line 2407 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessor()); } -#line 4424 "seclang-parser.cc" +#line 4466 "seclang-parser.cc" break; - case 295: // var: "REQBODY_PROCESSOR_ERROR" -#line 2400 "seclang-parser.yy" + case 295: +#line 2411 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessorError()); } -#line 4432 "seclang-parser.cc" +#line 4474 "seclang-parser.cc" break; - case 296: // var: "REQBODY_PROCESSOR_ERROR_MSG" -#line 2404 "seclang-parser.yy" + case 296: +#line 2415 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessorErrorMsg()); } -#line 4440 "seclang-parser.cc" +#line 4482 "seclang-parser.cc" break; - case 297: // var: "REQUEST_BASENAME" -#line 2408 "seclang-parser.yy" + case 297: +#line 2419 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBasename()); } -#line 4448 "seclang-parser.cc" +#line 4490 "seclang-parser.cc" break; - case 298: // var: "REQUEST_BODY" -#line 2412 "seclang-parser.yy" + case 298: +#line 2423 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBody()); } -#line 4456 "seclang-parser.cc" +#line 4498 "seclang-parser.cc" break; - case 299: // var: "REQUEST_BODY_LENGTH" -#line 2416 "seclang-parser.yy" + case 299: +#line 2427 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBodyLength()); } -#line 4464 "seclang-parser.cc" +#line 4506 "seclang-parser.cc" break; - case 300: // var: "REQUEST_FILENAME" -#line 2420 "seclang-parser.yy" + case 300: +#line 2431 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestFilename()); } -#line 4472 "seclang-parser.cc" +#line 4514 "seclang-parser.cc" break; - case 301: // var: "REQUEST_LINE" -#line 2424 "seclang-parser.yy" + case 301: +#line 2435 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestLine()); } -#line 4480 "seclang-parser.cc" +#line 4522 "seclang-parser.cc" break; - case 302: // var: "REQUEST_METHOD" -#line 2428 "seclang-parser.yy" + case 302: +#line 2439 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestMethod()); } -#line 4488 "seclang-parser.cc" +#line 4530 "seclang-parser.cc" break; - case 303: // var: "REQUEST_PROTOCOL" -#line 2432 "seclang-parser.yy" + case 303: +#line 2443 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestProtocol()); } -#line 4496 "seclang-parser.cc" +#line 4538 "seclang-parser.cc" break; - case 304: // var: "REQUEST_URI" -#line 2436 "seclang-parser.yy" + case 304: +#line 2447 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestURI()); } -#line 4504 "seclang-parser.cc" +#line 4546 "seclang-parser.cc" break; - case 305: // var: "REQUEST_URI_RAW" -#line 2440 "seclang-parser.yy" + case 305: +#line 2451 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestURIRaw()); } -#line 4512 "seclang-parser.cc" +#line 4554 "seclang-parser.cc" break; - case 306: // var: "RESPONSE_BODY" -#line 2444 "seclang-parser.yy" + case 306: +#line 2455 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseBody()); } -#line 4520 "seclang-parser.cc" +#line 4562 "seclang-parser.cc" break; - case 307: // var: "RESPONSE_CONTENT_LENGTH" -#line 2448 "seclang-parser.yy" + case 307: +#line 2459 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseContentLength()); } -#line 4528 "seclang-parser.cc" +#line 4570 "seclang-parser.cc" break; - case 308: // var: "RESPONSE_PROTOCOL" -#line 2452 "seclang-parser.yy" + case 308: +#line 2463 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseProtocol()); } -#line 4536 "seclang-parser.cc" +#line 4578 "seclang-parser.cc" break; - case 309: // var: "RESPONSE_STATUS" -#line 2456 "seclang-parser.yy" + case 309: +#line 2467 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseStatus()); } -#line 4544 "seclang-parser.cc" +#line 4586 "seclang-parser.cc" break; - case 310: // var: "SERVER_ADDR" -#line 2460 "seclang-parser.yy" + case 310: +#line 2471 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerAddr()); } -#line 4552 "seclang-parser.cc" +#line 4594 "seclang-parser.cc" break; - case 311: // var: "SERVER_NAME" -#line 2464 "seclang-parser.yy" + case 311: +#line 2475 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerName()); } -#line 4560 "seclang-parser.cc" +#line 4602 "seclang-parser.cc" break; - case 312: // var: "SERVER_PORT" -#line 2468 "seclang-parser.yy" + case 312: +#line 2479 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerPort()); } -#line 4568 "seclang-parser.cc" +#line 4610 "seclang-parser.cc" break; - case 313: // var: "SESSIONID" -#line 2472 "seclang-parser.yy" + case 313: +#line 2483 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::SessionID()); } -#line 4576 "seclang-parser.cc" +#line 4618 "seclang-parser.cc" break; - case 314: // var: "UNIQUE_ID" -#line 2476 "seclang-parser.yy" + case 314: +#line 2487 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UniqueID()); } -#line 4584 "seclang-parser.cc" +#line 4626 "seclang-parser.cc" break; - case 315: // var: "URLENCODED_ERROR" -#line 2480 "seclang-parser.yy" + case 315: +#line 2491 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UrlEncodedError()); } -#line 4592 "seclang-parser.cc" +#line 4634 "seclang-parser.cc" break; - case 316: // var: "USERID" -#line 2484 "seclang-parser.yy" + case 316: +#line 2495 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UserID()); } -#line 4600 "seclang-parser.cc" +#line 4642 "seclang-parser.cc" break; - case 317: // var: "VARIABLE_STATUS" -#line 2488 "seclang-parser.yy" + case 317: +#line 2499 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Status()); } -#line 4608 "seclang-parser.cc" +#line 4650 "seclang-parser.cc" break; - case 318: // var: "VARIABLE_STATUS_LINE" -#line 2492 "seclang-parser.yy" + case 318: +#line 2503 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Status()); } -#line 4616 "seclang-parser.cc" +#line 4658 "seclang-parser.cc" break; - case 319: // var: "WEBAPPID" -#line 2496 "seclang-parser.yy" + case 319: +#line 2507 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::WebAppId()); } -#line 4624 "seclang-parser.cc" +#line 4666 "seclang-parser.cc" break; - case 320: // var: "RUN_TIME_VAR_DUR" -#line 2500 "seclang-parser.yy" + case 320: +#line 2511 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new Duration(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4635 "seclang-parser.cc" +#line 4677 "seclang-parser.cc" break; - case 321: // var: "RUN_TIME_VAR_BLD" -#line 2508 "seclang-parser.yy" + case 321: +#line 2519 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new ModsecBuild(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4646 "seclang-parser.cc" +#line 4688 "seclang-parser.cc" break; - case 322: // var: "RUN_TIME_VAR_HSV" -#line 2515 "seclang-parser.yy" + case 322: +#line 2526 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new HighestSeverity(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4657 "seclang-parser.cc" +#line 4699 "seclang-parser.cc" break; - case 323: // var: "RUN_TIME_VAR_REMOTE_USER" -#line 2522 "seclang-parser.yy" + case 323: +#line 2533 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new RemoteUser(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4668 "seclang-parser.cc" +#line 4710 "seclang-parser.cc" break; - case 324: // var: "RUN_TIME_VAR_TIME" -#line 2529 "seclang-parser.yy" + case 324: +#line 2540 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new Time(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4679 "seclang-parser.cc" +#line 4721 "seclang-parser.cc" break; - case 325: // var: "RUN_TIME_VAR_TIME_DAY" -#line 2536 "seclang-parser.yy" + case 325: +#line 2547 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeDay(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4690 "seclang-parser.cc" +#line 4732 "seclang-parser.cc" break; - case 326: // var: "RUN_TIME_VAR_TIME_EPOCH" -#line 2543 "seclang-parser.yy" + case 326: +#line 2554 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeEpoch(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4701 "seclang-parser.cc" +#line 4743 "seclang-parser.cc" break; - case 327: // var: "RUN_TIME_VAR_TIME_HOUR" -#line 2550 "seclang-parser.yy" + case 327: +#line 2561 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeHour(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4712 "seclang-parser.cc" +#line 4754 "seclang-parser.cc" break; - case 328: // var: "RUN_TIME_VAR_TIME_MIN" -#line 2557 "seclang-parser.yy" + case 328: +#line 2568 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeMin(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4723 "seclang-parser.cc" +#line 4765 "seclang-parser.cc" break; - case 329: // var: "RUN_TIME_VAR_TIME_MON" -#line 2564 "seclang-parser.yy" + case 329: +#line 2575 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeMon(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4734 "seclang-parser.cc" +#line 4776 "seclang-parser.cc" break; - case 330: // var: "RUN_TIME_VAR_TIME_SEC" -#line 2571 "seclang-parser.yy" + case 330: +#line 2582 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeSec(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4745 "seclang-parser.cc" +#line 4787 "seclang-parser.cc" break; - case 331: // var: "RUN_TIME_VAR_TIME_WDAY" -#line 2578 "seclang-parser.yy" + case 331: +#line 2589 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeWDay(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4756 "seclang-parser.cc" +#line 4798 "seclang-parser.cc" break; - case 332: // var: "RUN_TIME_VAR_TIME_YEAR" -#line 2585 "seclang-parser.yy" + case 332: +#line 2596 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeYear(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4767 "seclang-parser.cc" +#line 4809 "seclang-parser.cc" break; - case 333: // act: "Accuracy" -#line 2595 "seclang-parser.yy" + case 333: +#line 2606 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as < std::string > ())); } -#line 4775 "seclang-parser.cc" +#line 4817 "seclang-parser.cc" break; - case 334: // act: "Allow" -#line 2599 "seclang-parser.yy" + case 334: +#line 2610 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as < std::string > ())); } -#line 4783 "seclang-parser.cc" +#line 4825 "seclang-parser.cc" break; - case 335: // act: "Append" -#line 2603 "seclang-parser.yy" + case 335: +#line 2614 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Append", yystack_[1].location); } -#line 4791 "seclang-parser.cc" +#line 4833 "seclang-parser.cc" break; - case 336: // act: "AuditLog" -#line 2607 "seclang-parser.yy" + case 336: +#line 2618 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::AuditLog(yystack_[0].value.as < std::string > ())); } -#line 4799 "seclang-parser.cc" - break; - - case 337: // act: "Block" -#line 2611 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Block(yystack_[0].value.as < std::string > ())); - } -#line 4807 "seclang-parser.cc" - break; - - case 338: // act: "Capture" -#line 2615 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Capture(yystack_[0].value.as < std::string > ())); - } -#line 4815 "seclang-parser.cc" - break; - - case 339: // act: "Chain" -#line 2619 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Chain(yystack_[0].value.as < std::string > ())); - } -#line 4823 "seclang-parser.cc" - break; - - case 340: // act: "ACTION_CTL_AUDIT_ENGINE" "CONFIG_VALUE_ON" -#line 2623 "seclang-parser.yy" - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); - } -#line 4832 "seclang-parser.cc" - break; - - case 341: // act: "ACTION_CTL_AUDIT_ENGINE" "CONFIG_VALUE_OFF" -#line 2628 "seclang-parser.yy" - { - //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); - } #line 4841 "seclang-parser.cc" break; - case 342: // act: "ACTION_CTL_AUDIT_ENGINE" "CONFIG_VALUE_RELEVANT_ONLY" -#line 2633 "seclang-parser.yy" + case 337: +#line 2622 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Block(yystack_[0].value.as < std::string > ())); + } +#line 4849 "seclang-parser.cc" + break; + + case 338: +#line 2626 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Capture(yystack_[0].value.as < std::string > ())); + } +#line 4857 "seclang-parser.cc" + break; + + case 339: +#line 2630 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Chain(yystack_[0].value.as < std::string > ())); + } +#line 4865 "seclang-parser.cc" + break; + + case 340: +#line 2634 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } -#line 4850 "seclang-parser.cc" - break; - - case 343: // act: "ACTION_CTL_AUDIT_LOG_PARTS" -#line 2638 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as < std::string > ())); - } -#line 4858 "seclang-parser.cc" - break; - - case 344: // act: "ACTION_CTL_BDY_JSON" -#line 2642 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as < std::string > ())); - } -#line 4866 "seclang-parser.cc" - break; - - case 345: // act: "ACTION_CTL_BDY_XML" -#line 2646 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as < std::string > ())); - } #line 4874 "seclang-parser.cc" break; - case 346: // act: "ACTION_CTL_BDY_URLENCODED" -#line 2650 "seclang-parser.yy" + case 341: +#line 2639 "seclang-parser.yy" { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorURLENCODED(yystack_[0].value.as < std::string > ())); - } -#line 4882 "seclang-parser.cc" - break; - - case 347: // act: "ACTION_CTL_FORCE_REQ_BODY_VAR" "CONFIG_VALUE_ON" -#line 2654 "seclang-parser.yy" - { - //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); + //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } -#line 4891 "seclang-parser.cc" +#line 4883 "seclang-parser.cc" break; - case 348: // act: "ACTION_CTL_FORCE_REQ_BODY_VAR" "CONFIG_VALUE_OFF" -#line 2659 "seclang-parser.yy" + case 342: +#line 2644 "seclang-parser.yy" { - //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); + //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } +#line 4892 "seclang-parser.cc" + break; + + case 343: +#line 2649 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as < std::string > ())); + } #line 4900 "seclang-parser.cc" break; - case 349: // act: "ACTION_CTL_REQUEST_BODY_ACCESS" "CONFIG_VALUE_ON" -#line 2664 "seclang-parser.yy" + case 344: +#line 2653 "seclang-parser.yy" { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "true")); + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as < std::string > ())); } #line 4908 "seclang-parser.cc" break; - case 350: // act: "ACTION_CTL_REQUEST_BODY_ACCESS" "CONFIG_VALUE_OFF" -#line 2668 "seclang-parser.yy" + case 345: +#line 2657 "seclang-parser.yy" { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "false")); + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as < std::string > ())); } #line 4916 "seclang-parser.cc" break; - case 351: // act: "ACTION_CTL_RULE_ENGINE" "CONFIG_VALUE_ON" -#line 2672 "seclang-parser.yy" + case 346: +#line 2661 "seclang-parser.yy" { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=on")); + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorURLENCODED(yystack_[0].value.as < std::string > ())); } #line 4924 "seclang-parser.cc" break; - case 352: // act: "ACTION_CTL_RULE_ENGINE" "CONFIG_VALUE_OFF" -#line 2676 "seclang-parser.yy" + case 347: +#line 2665 "seclang-parser.yy" + { + //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); + } +#line 4933 "seclang-parser.cc" + break; + + case 348: +#line 2670 "seclang-parser.yy" + { + //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); + } +#line 4942 "seclang-parser.cc" + break; + + case 349: +#line 2675 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "true")); + } +#line 4950 "seclang-parser.cc" + break; + + case 350: +#line 2679 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "false")); + } +#line 4958 "seclang-parser.cc" + break; + + case 351: +#line 2683 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=on")); + } +#line 4966 "seclang-parser.cc" + break; + + case 352: +#line 2687 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=off")); } -#line 4932 "seclang-parser.cc" +#line 4974 "seclang-parser.cc" break; - case 353: // act: "ACTION_CTL_RULE_ENGINE" "CONFIG_VALUE_DETC" -#line 2680 "seclang-parser.yy" + case 353: +#line 2691 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=detectiononly")); } -#line 4940 "seclang-parser.cc" +#line 4982 "seclang-parser.cc" break; - case 354: // act: "ACTION_CTL_RULE_REMOVE_BY_ID" -#line 2684 "seclang-parser.yy" + case 354: +#line 2695 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as < std::string > ())); } -#line 4948 "seclang-parser.cc" +#line 4990 "seclang-parser.cc" break; - case 355: // act: "ACTION_CTL_RULE_REMOVE_BY_TAG" -#line 2688 "seclang-parser.yy" + case 355: +#line 2699 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveByTag(yystack_[0].value.as < std::string > ())); } -#line 4956 "seclang-parser.cc" +#line 4998 "seclang-parser.cc" break; - case 356: // act: "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" -#line 2692 "seclang-parser.yy" + case 356: +#line 2703 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as < std::string > ())); } -#line 4964 "seclang-parser.cc" +#line 5006 "seclang-parser.cc" break; - case 357: // act: "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" -#line 2696 "seclang-parser.yy" + case 357: +#line 2707 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as < std::string > ())); } -#line 4972 "seclang-parser.cc" +#line 5014 "seclang-parser.cc" break; - case 358: // act: "Deny" -#line 2700 "seclang-parser.yy" + case 358: +#line 2711 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Deny(yystack_[0].value.as < std::string > ())); } -#line 4980 "seclang-parser.cc" +#line 5022 "seclang-parser.cc" break; - case 359: // act: "DeprecateVar" -#line 2704 "seclang-parser.yy" + case 359: +#line 2715 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); } -#line 4988 "seclang-parser.cc" +#line 5030 "seclang-parser.cc" break; - case 360: // act: "Drop" -#line 2708 "seclang-parser.yy" + case 360: +#line 2719 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Drop(yystack_[0].value.as < std::string > ())); } -#line 4996 "seclang-parser.cc" +#line 5038 "seclang-parser.cc" break; - case 361: // act: "Exec" -#line 2712 "seclang-parser.yy" + case 361: +#line 2723 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Exec(yystack_[0].value.as < std::string > ())); } -#line 5004 "seclang-parser.cc" +#line 5046 "seclang-parser.cc" break; - case 362: // act: "ExpireVar" -#line 2716 "seclang-parser.yy" + case 362: +#line 2727 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("ExpireVar", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[0].value.as < std::string > ())); } -#line 5013 "seclang-parser.cc" +#line 5055 "seclang-parser.cc" break; - case 363: // act: "Id" -#line 2721 "seclang-parser.yy" + case 363: +#line 2732 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as < std::string > ())); } -#line 5021 "seclang-parser.cc" +#line 5063 "seclang-parser.cc" break; - case 364: // act: "InitCol" run_time_string -#line 2725 "seclang-parser.yy" + case 364: +#line 2736 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::InitCol(yystack_[1].value.as < std::string > (), std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5029 "seclang-parser.cc" +#line 5071 "seclang-parser.cc" break; - case 365: // act: "LogData" run_time_string -#line 2729 "seclang-parser.yy" + case 365: +#line 2740 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::LogData(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5037 "seclang-parser.cc" +#line 5079 "seclang-parser.cc" break; - case 366: // act: "Log" -#line 2733 "seclang-parser.yy" + case 366: +#line 2744 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Log(yystack_[0].value.as < std::string > ())); } -#line 5045 "seclang-parser.cc" +#line 5087 "seclang-parser.cc" break; - case 367: // act: "Maturity" -#line 2737 "seclang-parser.yy" + case 367: +#line 2748 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as < std::string > ())); } -#line 5053 "seclang-parser.cc" +#line 5095 "seclang-parser.cc" break; - case 368: // act: "Msg" run_time_string -#line 2741 "seclang-parser.yy" + case 368: +#line 2752 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Msg(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5061 "seclang-parser.cc" +#line 5103 "seclang-parser.cc" break; - case 369: // act: "MultiMatch" -#line 2745 "seclang-parser.yy" + case 369: +#line 2756 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::MultiMatch(yystack_[0].value.as < std::string > ())); } -#line 5069 "seclang-parser.cc" +#line 5111 "seclang-parser.cc" break; - case 370: // act: "NoAuditLog" -#line 2749 "seclang-parser.yy" + case 370: +#line 2760 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::NoAuditLog(yystack_[0].value.as < std::string > ())); } -#line 5077 "seclang-parser.cc" +#line 5119 "seclang-parser.cc" break; - case 371: // act: "NoLog" -#line 2753 "seclang-parser.yy" + case 371: +#line 2764 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::NoLog(yystack_[0].value.as < std::string > ())); } -#line 5085 "seclang-parser.cc" +#line 5127 "seclang-parser.cc" break; - case 372: // act: "Pass" -#line 2757 "seclang-parser.yy" + case 372: +#line 2768 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Pass(yystack_[0].value.as < std::string > ())); } -#line 5093 "seclang-parser.cc" +#line 5135 "seclang-parser.cc" break; - case 373: // act: "Pause" -#line 2761 "seclang-parser.yy" + case 373: +#line 2772 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); } -#line 5101 "seclang-parser.cc" +#line 5143 "seclang-parser.cc" break; - case 374: // act: "Phase" -#line 2765 "seclang-parser.yy" + case 374: +#line 2776 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Phase(yystack_[0].value.as < std::string > ())); } -#line 5109 "seclang-parser.cc" +#line 5151 "seclang-parser.cc" break; - case 375: // act: "Prepend" -#line 2769 "seclang-parser.yy" + case 375: +#line 2780 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); } -#line 5117 "seclang-parser.cc" +#line 5159 "seclang-parser.cc" break; - case 376: // act: "Proxy" -#line 2773 "seclang-parser.yy" + case 376: +#line 2784 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); } -#line 5125 "seclang-parser.cc" +#line 5167 "seclang-parser.cc" break; - case 377: // act: "Redirect" run_time_string -#line 2777 "seclang-parser.yy" + case 377: +#line 2788 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Redirect(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5133 "seclang-parser.cc" +#line 5175 "seclang-parser.cc" break; - case 378: // act: "Rev" -#line 2781 "seclang-parser.yy" + case 378: +#line 2792 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Rev(yystack_[0].value.as < std::string > ())); } -#line 5141 "seclang-parser.cc" +#line 5183 "seclang-parser.cc" break; - case 379: // act: "SanitiseArg" -#line 2785 "seclang-parser.yy" + case 379: +#line 2796 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseArg", yystack_[1].location); } -#line 5149 "seclang-parser.cc" +#line 5191 "seclang-parser.cc" break; - case 380: // act: "SanitiseMatched" -#line 2789 "seclang-parser.yy" + case 380: +#line 2800 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseMatched", yystack_[1].location); } -#line 5157 "seclang-parser.cc" +#line 5199 "seclang-parser.cc" break; - case 381: // act: "SanitiseMatchedBytes" -#line 2793 "seclang-parser.yy" + case 381: +#line 2804 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseMatchedBytes", yystack_[1].location); } -#line 5165 "seclang-parser.cc" +#line 5207 "seclang-parser.cc" break; - case 382: // act: "SanitiseRequestHeader" -#line 2797 "seclang-parser.yy" + case 382: +#line 2808 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseRequestHeader", yystack_[1].location); } -#line 5173 "seclang-parser.cc" +#line 5215 "seclang-parser.cc" break; - case 383: // act: "SanitiseResponseHeader" -#line 2801 "seclang-parser.yy" + case 383: +#line 2812 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseResponseHeader", yystack_[1].location); } -#line 5181 "seclang-parser.cc" +#line 5223 "seclang-parser.cc" break; - case 384: // act: "SetEnv" run_time_string -#line 2805 "seclang-parser.yy" + case 384: +#line 2816 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetENV(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5189 "seclang-parser.cc" +#line 5231 "seclang-parser.cc" break; - case 385: // act: "SetRsc" run_time_string -#line 2809 "seclang-parser.yy" + case 385: +#line 2820 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetRSC(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5197 "seclang-parser.cc" +#line 5239 "seclang-parser.cc" break; - case 386: // act: "SetSid" run_time_string -#line 2813 "seclang-parser.yy" + case 386: +#line 2824 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetSID(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5205 "seclang-parser.cc" +#line 5247 "seclang-parser.cc" break; - case 387: // act: "SetUID" run_time_string -#line 2817 "seclang-parser.yy" + case 387: +#line 2828 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetUID(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5213 "seclang-parser.cc" +#line 5255 "seclang-parser.cc" break; - case 388: // act: "SetVar" setvar_action -#line 2821 "seclang-parser.yy" + case 388: +#line 2832 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > () = std::move(yystack_[0].value.as < std::unique_ptr > ()); } -#line 5221 "seclang-parser.cc" +#line 5263 "seclang-parser.cc" break; - case 389: // act: "Severity" -#line 2825 "seclang-parser.yy" + case 389: +#line 2836 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Severity(yystack_[0].value.as < std::string > ())); } -#line 5229 "seclang-parser.cc" +#line 5271 "seclang-parser.cc" break; - case 390: // act: "Skip" -#line 2829 "seclang-parser.yy" + case 390: +#line 2840 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Skip(yystack_[0].value.as < std::string > ())); } -#line 5237 "seclang-parser.cc" +#line 5279 "seclang-parser.cc" break; - case 391: // act: "SkipAfter" -#line 2833 "seclang-parser.yy" + case 391: +#line 2844 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as < std::string > ())); } -#line 5245 "seclang-parser.cc" +#line 5287 "seclang-parser.cc" break; - case 392: // act: "Status" -#line 2837 "seclang-parser.yy" + case 392: +#line 2848 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as < std::string > ())); } -#line 5253 "seclang-parser.cc" +#line 5295 "seclang-parser.cc" break; - case 393: // act: "Tag" run_time_string -#line 2841 "seclang-parser.yy" + case 393: +#line 2852 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Tag(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5261 "seclang-parser.cc" +#line 5303 "seclang-parser.cc" break; - case 394: // act: "Ver" -#line 2845 "seclang-parser.yy" + case 394: +#line 2856 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Ver(yystack_[0].value.as < std::string > ())); } -#line 5269 "seclang-parser.cc" +#line 5311 "seclang-parser.cc" break; - case 395: // act: "xmlns" -#line 2849 "seclang-parser.yy" + case 395: +#line 2860 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as < std::string > ())); } -#line 5277 "seclang-parser.cc" +#line 5319 "seclang-parser.cc" break; - case 396: // act: "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" -#line 2853 "seclang-parser.yy" + case 396: +#line 2864 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityZero7bit(yystack_[0].value.as < std::string > ())); } -#line 5285 "seclang-parser.cc" +#line 5327 "seclang-parser.cc" break; - case 397: // act: "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" -#line 2857 "seclang-parser.yy" + case 397: +#line 2868 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityOdd7bit(yystack_[0].value.as < std::string > ())); } -#line 5293 "seclang-parser.cc" +#line 5335 "seclang-parser.cc" break; - case 398: // act: "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" -#line 2861 "seclang-parser.yy" + case 398: +#line 2872 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityEven7bit(yystack_[0].value.as < std::string > ())); } -#line 5301 "seclang-parser.cc" +#line 5343 "seclang-parser.cc" break; - case 399: // act: "ACTION_TRANSFORMATION_SQL_HEX_DECODE" -#line 2865 "seclang-parser.yy" + case 399: +#line 2876 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::SqlHexDecode(yystack_[0].value.as < std::string > ())); } -#line 5309 "seclang-parser.cc" +#line 5351 "seclang-parser.cc" break; - case 400: // act: "ACTION_TRANSFORMATION_BASE_64_ENCODE" -#line 2869 "seclang-parser.yy" + case 400: +#line 2880 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64Encode(yystack_[0].value.as < std::string > ())); } -#line 5317 "seclang-parser.cc" +#line 5359 "seclang-parser.cc" break; - case 401: // act: "ACTION_TRANSFORMATION_BASE_64_DECODE" -#line 2873 "seclang-parser.yy" + case 401: +#line 2884 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64Decode(yystack_[0].value.as < std::string > ())); } -#line 5325 "seclang-parser.cc" +#line 5367 "seclang-parser.cc" break; - case 402: // act: "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" -#line 2877 "seclang-parser.yy" + case 402: +#line 2888 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64DecodeExt(yystack_[0].value.as < std::string > ())); } -#line 5333 "seclang-parser.cc" +#line 5375 "seclang-parser.cc" break; - case 403: // act: "ACTION_TRANSFORMATION_CMD_LINE" -#line 2881 "seclang-parser.yy" + case 403: +#line 2892 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CmdLine(yystack_[0].value.as < std::string > ())); } -#line 5341 "seclang-parser.cc" +#line 5383 "seclang-parser.cc" break; - case 404: // act: "ACTION_TRANSFORMATION_SHA1" -#line 2885 "seclang-parser.yy" + case 404: +#line 2896 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Sha1(yystack_[0].value.as < std::string > ())); } -#line 5349 "seclang-parser.cc" +#line 5391 "seclang-parser.cc" break; - case 405: // act: "ACTION_TRANSFORMATION_MD5" -#line 2889 "seclang-parser.yy" + case 405: +#line 2900 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Md5(yystack_[0].value.as < std::string > ())); } -#line 5357 "seclang-parser.cc" +#line 5399 "seclang-parser.cc" break; - case 406: // act: "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" -#line 2893 "seclang-parser.yy" + case 406: +#line 2904 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::EscapeSeqDecode(yystack_[0].value.as < std::string > ())); } -#line 5365 "seclang-parser.cc" +#line 5407 "seclang-parser.cc" break; - case 407: // act: "ACTION_TRANSFORMATION_HEX_ENCODE" -#line 2897 "seclang-parser.yy" + case 407: +#line 2908 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HexEncode(yystack_[0].value.as < std::string > ())); } -#line 5373 "seclang-parser.cc" +#line 5415 "seclang-parser.cc" break; - case 408: // act: "ACTION_TRANSFORMATION_HEX_DECODE" -#line 2901 "seclang-parser.yy" + case 408: +#line 2912 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HexDecode(yystack_[0].value.as < std::string > ())); } -#line 5381 "seclang-parser.cc" +#line 5423 "seclang-parser.cc" break; - case 409: // act: "ACTION_TRANSFORMATION_LOWERCASE" -#line 2905 "seclang-parser.yy" + case 409: +#line 2916 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::LowerCase(yystack_[0].value.as < std::string > ())); } -#line 5389 "seclang-parser.cc" +#line 5431 "seclang-parser.cc" break; - case 410: // act: "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" -#line 2909 "seclang-parser.yy" + case 410: +#line 2920 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::PhpArgsNames(yystack_[0].value.as < std::string > ())); } -#line 5397 "seclang-parser.cc" +#line 5439 "seclang-parser.cc" break; - case 411: // act: "ACTION_TRANSFORMATION_UPPERCASE" -#line 2913 "seclang-parser.yy" + case 411: +#line 2924 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UpperCase(yystack_[0].value.as < std::string > ())); } -#line 5405 "seclang-parser.cc" +#line 5447 "seclang-parser.cc" break; - case 412: // act: "ACTION_TRANSFORMATION_URL_DECODE_UNI" -#line 2917 "seclang-parser.yy" + case 412: +#line 2928 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlDecodeUni(yystack_[0].value.as < std::string > ())); } -#line 5413 "seclang-parser.cc" +#line 5455 "seclang-parser.cc" break; - case 413: // act: "ACTION_TRANSFORMATION_URL_DECODE" -#line 2921 "seclang-parser.yy" + case 413: +#line 2932 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlDecode(yystack_[0].value.as < std::string > ())); } -#line 5421 "seclang-parser.cc" +#line 5463 "seclang-parser.cc" break; - case 414: // act: "ACTION_TRANSFORMATION_URL_ENCODE" -#line 2925 "seclang-parser.yy" + case 414: +#line 2936 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlEncode(yystack_[0].value.as < std::string > ())); } -#line 5429 "seclang-parser.cc" +#line 5471 "seclang-parser.cc" break; - case 415: // act: "ACTION_TRANSFORMATION_NONE" -#line 2929 "seclang-parser.yy" + case 415: +#line 2940 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::None(yystack_[0].value.as < std::string > ())); } -#line 5437 "seclang-parser.cc" +#line 5479 "seclang-parser.cc" break; - case 416: // act: "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" -#line 2933 "seclang-parser.yy" + case 416: +#line 2944 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CompressWhitespace(yystack_[0].value.as < std::string > ())); } -#line 5445 "seclang-parser.cc" +#line 5487 "seclang-parser.cc" break; - case 417: // act: "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" -#line 2937 "seclang-parser.yy" + case 417: +#line 2948 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveWhitespace(yystack_[0].value.as < std::string > ())); } -#line 5453 "seclang-parser.cc" +#line 5495 "seclang-parser.cc" break; - case 418: // act: "ACTION_TRANSFORMATION_REPLACE_NULLS" -#line 2941 "seclang-parser.yy" + case 418: +#line 2952 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ReplaceNulls(yystack_[0].value.as < std::string > ())); } -#line 5461 "seclang-parser.cc" +#line 5503 "seclang-parser.cc" break; - case 419: // act: "ACTION_TRANSFORMATION_REMOVE_NULLS" -#line 2945 "seclang-parser.yy" + case 419: +#line 2956 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveNulls(yystack_[0].value.as < std::string > ())); } -#line 5469 "seclang-parser.cc" +#line 5511 "seclang-parser.cc" break; - case 420: // act: "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" -#line 2949 "seclang-parser.yy" + case 420: +#line 2960 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HtmlEntityDecode(yystack_[0].value.as < std::string > ())); } -#line 5477 "seclang-parser.cc" +#line 5519 "seclang-parser.cc" break; - case 421: // act: "ACTION_TRANSFORMATION_JS_DECODE" -#line 2953 "seclang-parser.yy" + case 421: +#line 2964 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::JsDecode(yystack_[0].value.as < std::string > ())); } -#line 5485 "seclang-parser.cc" +#line 5527 "seclang-parser.cc" break; - case 422: // act: "ACTION_TRANSFORMATION_CSS_DECODE" -#line 2957 "seclang-parser.yy" + case 422: +#line 2968 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CssDecode(yystack_[0].value.as < std::string > ())); } -#line 5493 "seclang-parser.cc" +#line 5535 "seclang-parser.cc" break; - case 423: // act: "ACTION_TRANSFORMATION_TRIM" -#line 2961 "seclang-parser.yy" + case 423: +#line 2972 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Trim(yystack_[0].value.as < std::string > ())); } -#line 5501 "seclang-parser.cc" +#line 5543 "seclang-parser.cc" break; - case 424: // act: "ACTION_TRANSFORMATION_TRIM_LEFT" -#line 2965 "seclang-parser.yy" + case 424: +#line 2976 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::TrimLeft(yystack_[0].value.as < std::string > ())); } -#line 5509 "seclang-parser.cc" +#line 5551 "seclang-parser.cc" break; - case 425: // act: "ACTION_TRANSFORMATION_TRIM_RIGHT" -#line 2969 "seclang-parser.yy" + case 425: +#line 2980 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::TrimRight(yystack_[0].value.as < std::string > ())); } -#line 5517 "seclang-parser.cc" +#line 5559 "seclang-parser.cc" break; - case 426: // act: "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" -#line 2973 "seclang-parser.yy" + case 426: +#line 2984 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::NormalisePathWin(yystack_[0].value.as < std::string > ())); } -#line 5525 "seclang-parser.cc" +#line 5567 "seclang-parser.cc" break; - case 427: // act: "ACTION_TRANSFORMATION_NORMALISE_PATH" -#line 2977 "seclang-parser.yy" + case 427: +#line 2988 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::NormalisePath(yystack_[0].value.as < std::string > ())); } -#line 5533 "seclang-parser.cc" +#line 5575 "seclang-parser.cc" break; - case 428: // act: "ACTION_TRANSFORMATION_LENGTH" -#line 2981 "seclang-parser.yy" + case 428: +#line 2992 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Length(yystack_[0].value.as < std::string > ())); } -#line 5541 "seclang-parser.cc" +#line 5583 "seclang-parser.cc" break; - case 429: // act: "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" -#line 2985 "seclang-parser.yy" + case 429: +#line 2996 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Utf8ToUnicode(yystack_[0].value.as < std::string > ())); } -#line 5549 "seclang-parser.cc" +#line 5591 "seclang-parser.cc" break; - case 430: // act: "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" -#line 2989 "seclang-parser.yy" + case 430: +#line 3000 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveCommentsChar(yystack_[0].value.as < std::string > ())); } -#line 5557 "seclang-parser.cc" +#line 5599 "seclang-parser.cc" break; - case 431: // act: "ACTION_TRANSFORMATION_REMOVE_COMMENTS" -#line 2993 "seclang-parser.yy" + case 431: +#line 3004 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveComments(yystack_[0].value.as < std::string > ())); } -#line 5565 "seclang-parser.cc" +#line 5607 "seclang-parser.cc" break; - case 432: // act: "ACTION_TRANSFORMATION_REPLACE_COMMENTS" -#line 2997 "seclang-parser.yy" + case 432: +#line 3008 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ReplaceComments(yystack_[0].value.as < std::string > ())); } -#line 5573 "seclang-parser.cc" +#line 5615 "seclang-parser.cc" break; - case 433: // setvar_action: "NOT" var -#line 3004 "seclang-parser.yy" + case 433: +#line 3015 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::unsetOperation, std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5581 "seclang-parser.cc" +#line 5623 "seclang-parser.cc" break; - case 434: // setvar_action: var -#line 3008 "seclang-parser.yy" + case 434: +#line 3019 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setToOneOperation, std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5589 "seclang-parser.cc" - break; - - case 435: // setvar_action: var SETVAR_OPERATION_EQUALS run_time_string -#line 3012 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); - } -#line 5597 "seclang-parser.cc" - break; - - case 436: // setvar_action: var SETVAR_OPERATION_EQUALS_PLUS run_time_string -#line 3016 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::sumAndSetOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); - } -#line 5605 "seclang-parser.cc" - break; - - case 437: // setvar_action: var SETVAR_OPERATION_EQUALS_MINUS run_time_string -#line 3020 "seclang-parser.yy" - { - ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::substractAndSetOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); - } -#line 5613 "seclang-parser.cc" - break; - - case 438: // run_time_string: run_time_string "FREE_TEXT_QUOTE_MACRO_EXPANSION" -#line 3027 "seclang-parser.yy" - { - yystack_[1].value.as < std::unique_ptr > ()->appendText(yystack_[0].value.as < std::string > ()); - yylhs.value.as < std::unique_ptr > () = std::move(yystack_[1].value.as < std::unique_ptr > ()); - } -#line 5622 "seclang-parser.cc" - break; - - case 439: // run_time_string: run_time_string var -#line 3032 "seclang-parser.yy" - { - yystack_[1].value.as < std::unique_ptr > ()->appendVar(std::move(yystack_[0].value.as < std::unique_ptr > ())); - yylhs.value.as < std::unique_ptr > () = std::move(yystack_[1].value.as < std::unique_ptr > ()); - } #line 5631 "seclang-parser.cc" break; - case 440: // run_time_string: "FREE_TEXT_QUOTE_MACRO_EXPANSION" -#line 3037 "seclang-parser.yy" + case 435: +#line 3023 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); + } +#line 5639 "seclang-parser.cc" + break; + + case 436: +#line 3027 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::sumAndSetOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); + } +#line 5647 "seclang-parser.cc" + break; + + case 437: +#line 3031 "seclang-parser.yy" + { + ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::substractAndSetOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); + } +#line 5655 "seclang-parser.cc" + break; + + case 438: +#line 3038 "seclang-parser.yy" + { + yystack_[1].value.as < std::unique_ptr > ()->appendText(yystack_[0].value.as < std::string > ()); + yylhs.value.as < std::unique_ptr > () = std::move(yystack_[1].value.as < std::unique_ptr > ()); + } +#line 5664 "seclang-parser.cc" + break; + + case 439: +#line 3043 "seclang-parser.yy" + { + yystack_[1].value.as < std::unique_ptr > ()->appendVar(std::move(yystack_[0].value.as < std::unique_ptr > ())); + yylhs.value.as < std::unique_ptr > () = std::move(yystack_[1].value.as < std::unique_ptr > ()); + } +#line 5673 "seclang-parser.cc" + break; + + case 440: +#line 3048 "seclang-parser.yy" { std::unique_ptr r(new RunTimeString()); r->appendText(yystack_[0].value.as < std::string > ()); yylhs.value.as < std::unique_ptr > () = std::move(r); } -#line 5641 "seclang-parser.cc" +#line 5683 "seclang-parser.cc" break; - case 441: // run_time_string: var -#line 3043 "seclang-parser.yy" + case 441: +#line 3054 "seclang-parser.yy" { std::unique_ptr r(new RunTimeString()); r->appendVar(std::move(yystack_[0].value.as < std::unique_ptr > ())); yylhs.value.as < std::unique_ptr > () = std::move(r); } -#line 5651 "seclang-parser.cc" +#line 5693 "seclang-parser.cc" break; -#line 5655 "seclang-parser.cc" +#line 5697 "seclang-parser.cc" default: break; @@ -5668,6 +5710,7 @@ namespace yy { YY_SYMBOL_PRINT ("-> $$ =", yylhs); yypop_ (yylen); yylen = 0; + YY_STACK_PRINT (); // Shift the result of the reduction. yypush_ (YY_NULLPTR, YY_MOVE (yylhs)); @@ -5683,9 +5726,7 @@ namespace yy { if (!yyerrstatus_) { ++yynerrs_; - context yyctx (*this, yyla); - std::string msg = yysyntax_error_ (yyctx); - error (yyla.location, YY_MOVE (msg)); + error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla)); } @@ -5696,7 +5737,7 @@ namespace yy { error, discard it. */ // Return failure if at end of input. - if (yyla.kind () == symbol_kind::S_YYEOF) + if (yyla.type_get () == yyeof_) YYABORT; else if (!yyla.empty ()) { @@ -5722,7 +5763,6 @@ namespace yy { this YYERROR. */ yypop_ (yylen); yylen = 0; - YY_STACK_PRINT (); goto yyerrlab1; @@ -5731,33 +5771,31 @@ namespace yy { `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus_ = 3; // Each real token shifted decrements this. - // Pop stack until we find a state that shifts the error token. - for (;;) - { - yyn = yypact_[+yystack_[0].state]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += symbol_kind::S_YYerror; - if (0 <= yyn && yyn <= yylast_ - && yycheck_[yyn] == symbol_kind::S_YYerror) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - // Pop the current state because it cannot handle the error token. - if (yystack_.size () == 1) - YYABORT; - - yyerror_range[1].location = yystack_[0].location; - yy_destroy_ ("Error: popping", yystack_[0]); - yypop_ (); - YY_STACK_PRINT (); - } { stack_symbol_type error_token; + for (;;) + { + yyn = yypact_[+yystack_[0].state]; + if (!yy_pact_value_is_default_ (yyn)) + { + yyn += yy_error_token_; + if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yy_error_token_) + { + yyn = yytable_[yyn]; + if (0 < yyn) + break; + } + } + + // Pop the current state because it cannot handle the error token. + if (yystack_.size () == 1) + YYABORT; + + yyerror_range[1].location = yystack_[0].location; + yy_destroy_ ("Error: popping", yystack_[0]); + yypop_ (); + YY_STACK_PRINT (); + } yyerror_range[2].location = yyla.location; YYLLOC_DEFAULT (error_token.location, yyerror_range, 2); @@ -5795,7 +5833,6 @@ namespace yy { /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ yypop_ (yylen); - YY_STACK_PRINT (); while (1 < yystack_.size ()) { yy_destroy_ ("Cleanup: popping", yystack_[0]); @@ -5829,100 +5866,18 @@ namespace yy { error (yyexc.location, yyexc.what ()); } - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ + // Generate an error message. std::string - seclang_parser::yytnamerr_ (const char *yystr) + seclang_parser::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const { - if (*yystr == '"') - { - std::string yyr; - char const *yyp = yystr; + // Number of reported tokens (one for the "unexpected", one per + // "expected"). + std::ptrdiff_t yycount = 0; + // Its maximum. + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + // Arguments of yyformat. + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - yyr += *yyp; - break; - - case '"': - return yyr; - } - do_not_strip_quotes: ; - } - - return yystr; - } - - std::string - seclang_parser::symbol_name (symbol_kind_type yysymbol) - { - return yytnamerr_ (yytname_[yysymbol]); - } - - - - // seclang_parser::context. - seclang_parser::context::context (const seclang_parser& yyparser, const symbol_type& yyla) - : yyparser_ (yyparser) - , yyla_ (yyla) - {} - - int - seclang_parser::context::expected_tokens (symbol_kind_type yyarg[], int yyargn) const - { - // Actual number of expected tokens - int yycount = 0; - - int yyn = yypact_[+yyparser_.yystack_[0].state]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - // Stay within bounds of both yycheck and yytname. - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - for (int yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck_[yyx + yyn] == yyx && yyx != symbol_kind::S_YYerror - && !yy_table_value_is_error_ (yytable_[yyx + yyn])) - { - if (!yyarg) - ++yycount; - else if (yycount == yyargn) - return 0; - else - yyarg[yycount++] = YY_CAST (symbol_kind_type, yyx); - } - } - - if (yyarg && yycount == 0 && 0 < yyargn) - yyarg[0] = symbol_kind::S_YYEMPTY; - return yycount; - } - - - - int - seclang_parser::yy_syntax_error_arguments_ (const context& yyctx, - symbol_kind_type yyarg[], int yyargn) const - { /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action @@ -5947,26 +5902,35 @@ namespace yy { one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ - - if (!yyctx.lookahead ().empty ()) + if (!yyla.empty ()) { - if (yyarg) - yyarg[0] = yyctx.token (); - int yyn = yyctx.expected_tokens (yyarg ? yyarg + 1 : yyarg, yyargn - 1); - return yyn + 1; - } - return 0; - } + symbol_number_type yytoken = yyla.type_get (); + yyarg[yycount++] = yytname_[yytoken]; - // Generate an error message. - std::string - seclang_parser::yysyntax_error_ (const context& yyctx) const - { - // Its maximum. - enum { YYARGS_MAX = 5 }; - // Arguments of yyformat. - symbol_kind_type yyarg[YYARGS_MAX]; - int yycount = yy_syntax_error_arguments_ (yyctx, yyarg, YYARGS_MAX); + int yyn = yypact_[+yystate]; + if (!yy_pact_value_is_default_ (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + // Stay within bounds of both yycheck and yytname. + int yychecklim = yylast_ - yyn + 1; + int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; + for (int yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck_[yyx + yyn] == yyx && yyx != yy_error_token_ + && !yy_table_value_is_error_ (yytable_[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + break; + } + else + yyarg[yycount++] = yytname_[yyx]; + } + } + } char const* yyformat = YY_NULLPTR; switch (yycount) @@ -5991,7 +5955,7 @@ namespace yy { for (char const* yyp = yyformat; *yyp; ++yyp) if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) { - yyres += symbol_name (yyarg[yyi++]); + yyres += yytnamerr_ (yyarg[yyi++]); ++yyp; } else @@ -6959,13 +6923,13 @@ namespace yy { }; -#if YYDEBUG || 1 + // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - // First, the terminals, then, starting at \a YYNTOKENS, nonterminals. + // First, the terminals, then, starting at \a yyntokens_, nonterminals. const char* const seclang_parser::yytname_[] = { - "\"end of file\"", "error", "\"invalid token\"", "\",\"", + "\"end of file\"", "error", "$undefined", "\",\"", "\"CONFIG_CONTENT_INJECTION\"", "\"CONGIG_DIR_RESPONSE_BODY_MP_CLEAR\"", "PIPE", "NEW_LINE", "VAR_COUNT", "VAR_EXCLUSION", "VARIABLE_ARGS", "VARIABLE_ARGS_POST", "VARIABLE_ARGS_GET", "VARIABLE_FILES_SIZES", @@ -7140,8 +7104,6 @@ namespace yy { "variables_may_be_quoted", "var", "act", "setvar_action", "run_time_string", YY_NULLPTR }; -#endif - #if YYDEBUG const short @@ -7154,48 +7116,49 @@ namespace yy { 925, 929, 933, 937, 941, 945, 949, 954, 958, 962, 966, 970, 974, 979, 984, 988, 992, 996, 1000, 1004, 1008, 1012, 1016, 1020, 1024, 1028, 1032, 1036, 1040, 1044, - 1048, 1052, 1056, 1060, 1074, 1075, 1105, 1124, 1143, 1171, - 1228, 1235, 1239, 1243, 1247, 1251, 1255, 1259, 1263, 1272, - 1276, 1281, 1284, 1289, 1294, 1299, 1304, 1307, 1312, 1315, - 1320, 1325, 1328, 1333, 1338, 1343, 1348, 1353, 1358, 1363, - 1366, 1371, 1376, 1381, 1386, 1389, 1394, 1399, 1404, 1417, - 1430, 1443, 1456, 1469, 1495, 1523, 1535, 1555, 1582, 1588, - 1593, 1598, 1607, 1612, 1616, 1620, 1624, 1628, 1632, 1636, - 1641, 1646, 1658, 1664, 1668, 1672, 1683, 1692, 1693, 1700, - 1705, 1710, 1764, 1771, 1779, 1816, 1820, 1827, 1832, 1838, - 1844, 1850, 1857, 1867, 1871, 1875, 1879, 1883, 1887, 1891, - 1895, 1899, 1903, 1907, 1911, 1915, 1919, 1923, 1927, 1931, - 1935, 1939, 1943, 1947, 1951, 1955, 1959, 1963, 1967, 1971, - 1975, 1979, 1983, 1987, 1991, 1995, 1999, 2003, 2007, 2011, - 2015, 2019, 2023, 2027, 2031, 2035, 2039, 2043, 2047, 2051, - 2055, 2059, 2063, 2067, 2071, 2075, 2079, 2083, 2087, 2091, - 2095, 2099, 2103, 2107, 2111, 2115, 2119, 2123, 2127, 2131, - 2135, 2139, 2143, 2147, 2151, 2155, 2159, 2163, 2167, 2171, - 2175, 2179, 2183, 2187, 2191, 2195, 2199, 2203, 2207, 2211, - 2215, 2219, 2223, 2228, 2232, 2236, 2241, 2245, 2249, 2254, - 2259, 2263, 2267, 2271, 2275, 2279, 2283, 2287, 2291, 2295, - 2299, 2303, 2307, 2311, 2315, 2319, 2323, 2327, 2331, 2335, - 2339, 2343, 2347, 2351, 2355, 2359, 2363, 2367, 2371, 2375, - 2379, 2383, 2387, 2391, 2395, 2399, 2403, 2407, 2411, 2415, - 2419, 2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, 2455, - 2459, 2463, 2467, 2471, 2475, 2479, 2483, 2487, 2491, 2495, - 2499, 2507, 2514, 2521, 2528, 2535, 2542, 2549, 2556, 2563, - 2570, 2577, 2584, 2594, 2598, 2602, 2606, 2610, 2614, 2618, - 2622, 2627, 2632, 2637, 2641, 2645, 2649, 2653, 2658, 2663, - 2667, 2671, 2675, 2679, 2683, 2687, 2691, 2695, 2699, 2703, - 2707, 2711, 2715, 2720, 2724, 2728, 2732, 2736, 2740, 2744, - 2748, 2752, 2756, 2760, 2764, 2768, 2772, 2776, 2780, 2784, - 2788, 2792, 2796, 2800, 2804, 2808, 2812, 2816, 2820, 2824, - 2828, 2832, 2836, 2840, 2844, 2848, 2852, 2856, 2860, 2864, - 2868, 2872, 2876, 2880, 2884, 2888, 2892, 2896, 2900, 2904, - 2908, 2912, 2916, 2920, 2924, 2928, 2932, 2936, 2940, 2944, - 2948, 2952, 2956, 2960, 2964, 2968, 2972, 2976, 2980, 2984, - 2988, 2992, 2996, 3003, 3007, 3011, 3015, 3019, 3026, 3031, - 3036, 3042 + 1048, 1052, 1056, 1060, 1074, 1075, 1107, 1126, 1147, 1177, + 1239, 1246, 1250, 1254, 1258, 1262, 1266, 1270, 1274, 1283, + 1287, 1292, 1295, 1300, 1305, 1310, 1315, 1318, 1323, 1326, + 1331, 1336, 1339, 1344, 1349, 1354, 1359, 1364, 1369, 1374, + 1377, 1382, 1387, 1392, 1397, 1400, 1405, 1410, 1415, 1428, + 1441, 1454, 1467, 1480, 1506, 1534, 1546, 1566, 1593, 1599, + 1604, 1609, 1618, 1623, 1627, 1631, 1635, 1639, 1643, 1647, + 1652, 1657, 1669, 1675, 1679, 1683, 1694, 1703, 1704, 1711, + 1716, 1721, 1775, 1782, 1790, 1827, 1831, 1838, 1843, 1849, + 1855, 1861, 1868, 1878, 1882, 1886, 1890, 1894, 1898, 1902, + 1906, 1910, 1914, 1918, 1922, 1926, 1930, 1934, 1938, 1942, + 1946, 1950, 1954, 1958, 1962, 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, 2218, 2222, + 2226, 2230, 2234, 2239, 2243, 2247, 2252, 2256, 2260, 2265, + 2270, 2274, 2278, 2282, 2286, 2290, 2294, 2298, 2302, 2306, + 2310, 2314, 2318, 2322, 2326, 2330, 2334, 2338, 2342, 2346, + 2350, 2354, 2358, 2362, 2366, 2370, 2374, 2378, 2382, 2386, + 2390, 2394, 2398, 2402, 2406, 2410, 2414, 2418, 2422, 2426, + 2430, 2434, 2438, 2442, 2446, 2450, 2454, 2458, 2462, 2466, + 2470, 2474, 2478, 2482, 2486, 2490, 2494, 2498, 2502, 2506, + 2510, 2518, 2525, 2532, 2539, 2546, 2553, 2560, 2567, 2574, + 2581, 2588, 2595, 2605, 2609, 2613, 2617, 2621, 2625, 2629, + 2633, 2638, 2643, 2648, 2652, 2656, 2660, 2664, 2669, 2674, + 2678, 2682, 2686, 2690, 2694, 2698, 2702, 2706, 2710, 2714, + 2718, 2722, 2726, 2731, 2735, 2739, 2743, 2747, 2751, 2755, + 2759, 2763, 2767, 2771, 2775, 2779, 2783, 2787, 2791, 2795, + 2799, 2803, 2807, 2811, 2815, 2819, 2823, 2827, 2831, 2835, + 2839, 2843, 2847, 2851, 2855, 2859, 2863, 2867, 2871, 2875, + 2879, 2883, 2887, 2891, 2895, 2899, 2903, 2907, 2911, 2915, + 2919, 2923, 2927, 2931, 2935, 2939, 2943, 2947, 2951, 2955, + 2959, 2963, 2967, 2971, 2975, 2979, 2983, 2987, 2991, 2995, + 2999, 3003, 3007, 3014, 3018, 3022, 3026, 3030, 3037, 3042, + 3047, 3053 }; + // Print the state stack on the debug stream. void - seclang_parser::yy_stack_print_ () const + seclang_parser::yystack_print_ () { *yycdebug_ << "Stack now"; for (stack_type::const_iterator @@ -7206,8 +7169,9 @@ namespace yy { *yycdebug_ << '\n'; } + // Report on the debug stream that the rule \a yyrule is going to be reduced. void - seclang_parser::yy_reduce_print_ (int yyrule) const + seclang_parser::yy_reduce_print_ (int yyrule) { int yylno = yyrline_[yyrule]; int yynrhs = yyr2_[yyrule]; @@ -7223,9 +7187,9 @@ namespace yy { } // yy -#line 7227 "seclang-parser.cc" +#line 7191 "seclang-parser.cc" -#line 3049 "seclang-parser.yy" +#line 3060 "seclang-parser.yy" 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 1db831f2..a06db34e 100644 --- a/src/parser/seclang-parser.hh +++ b/src/parser/seclang-parser.hh @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.5.1. // Skeleton interface for Bison LALR(1) parsers in C++ @@ -38,9 +38,8 @@ // C++ LALR(1) parser skeleton written by Akim Demaille. -// DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, -// especially those whose name start with YY_ or yy_. They are -// private implementation details that can be changed or removed. +// Undocumented macros, especially those whose name start with YY_, +// are private implementation details. Do not rely on them. #ifndef YY_YY_SECLANG_PARSER_HH_INCLUDED # define YY_YY_SECLANG_PARSER_HH_INCLUDED @@ -351,7 +350,7 @@ using namespace modsecurity::operators; a = std::move(c); -#line 355 "seclang-parser.hh" +#line 354 "seclang-parser.hh" # include # include // std::abort @@ -485,7 +484,7 @@ using namespace modsecurity::operators; #endif namespace yy { -#line 489 "seclang-parser.hh" +#line 488 "seclang-parser.hh" @@ -521,13 +520,6 @@ namespace yy { new (yyas_ ()) T (YY_MOVE (t)); } -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - semantic_type (const self_type&) = delete; - /// Non copyable. - self_type& operator= (const self_type&) = delete; -#endif - /// Destruction, allowed only if empty. ~semantic_type () YY_NOEXCEPT { @@ -671,12 +663,9 @@ namespace yy { } private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. - semantic_type (const self_type&); - /// Non copyable. + /// Prohibit blind copies. self_type& operator= (const self_type&); -#endif + semantic_type (const self_type&); /// Accessor to raw memory as \a T. template @@ -963,747 +952,372 @@ namespace yy { location_type location; }; - /// Token kinds. + /// Tokens. struct token { - enum token_kind_type + enum yytokentype { - TOK_YYEMPTY = -2, - TOK_END = 0, // "end of file" - TOK_YYerror = 256, // error - TOK_YYUNDEF = 257, // "invalid token" - TOK_COMMA = 258, // "," - TOK_CONFIG_CONTENT_INJECTION = 259, // "CONFIG_CONTENT_INJECTION" - TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR = 260, // "CONGIG_DIR_RESPONSE_BODY_MP_CLEAR" - TOK_PIPE = 261, // PIPE - TOK_NEW_LINE = 262, // NEW_LINE - TOK_VAR_COUNT = 263, // VAR_COUNT - TOK_VAR_EXCLUSION = 264, // VAR_EXCLUSION - TOK_VARIABLE_ARGS = 265, // VARIABLE_ARGS - TOK_VARIABLE_ARGS_POST = 266, // VARIABLE_ARGS_POST - TOK_VARIABLE_ARGS_GET = 267, // VARIABLE_ARGS_GET - TOK_VARIABLE_FILES_SIZES = 268, // VARIABLE_FILES_SIZES - TOK_VARIABLE_FILES_NAMES = 269, // VARIABLE_FILES_NAMES - TOK_VARIABLE_FILES_TMP_CONTENT = 270, // VARIABLE_FILES_TMP_CONTENT - TOK_VARIABLE_MULTIPART_FILENAME = 271, // VARIABLE_MULTIPART_FILENAME - TOK_VARIABLE_MULTIPART_NAME = 272, // VARIABLE_MULTIPART_NAME - TOK_VARIABLE_MATCHED_VARS_NAMES = 273, // VARIABLE_MATCHED_VARS_NAMES - TOK_VARIABLE_MATCHED_VARS = 274, // VARIABLE_MATCHED_VARS - TOK_VARIABLE_FILES = 275, // VARIABLE_FILES - TOK_VARIABLE_REQUEST_COOKIES = 276, // VARIABLE_REQUEST_COOKIES - TOK_VARIABLE_REQUEST_HEADERS = 277, // VARIABLE_REQUEST_HEADERS - TOK_VARIABLE_RESPONSE_HEADERS = 278, // VARIABLE_RESPONSE_HEADERS - TOK_VARIABLE_GEO = 279, // VARIABLE_GEO - TOK_VARIABLE_REQUEST_COOKIES_NAMES = 280, // VARIABLE_REQUEST_COOKIES_NAMES - TOK_VARIABLE_ARGS_COMBINED_SIZE = 281, // VARIABLE_ARGS_COMBINED_SIZE - TOK_VARIABLE_ARGS_GET_NAMES = 282, // VARIABLE_ARGS_GET_NAMES - TOK_VARIABLE_RULE = 283, // VARIABLE_RULE - TOK_VARIABLE_ARGS_NAMES = 284, // "Variable ARGS_NAMES" - TOK_VARIABLE_ARGS_POST_NAMES = 285, // VARIABLE_ARGS_POST_NAMES - TOK_VARIABLE_AUTH_TYPE = 286, // "AUTH_TYPE" - TOK_VARIABLE_FILES_COMBINED_SIZE = 287, // "FILES_COMBINED_SIZE" - TOK_VARIABLE_FILES_TMP_NAMES = 288, // "FILES_TMPNAMES" - TOK_VARIABLE_FULL_REQUEST = 289, // "FULL_REQUEST" - TOK_VARIABLE_FULL_REQUEST_LENGTH = 290, // "FULL_REQUEST_LENGTH" - TOK_VARIABLE_INBOUND_DATA_ERROR = 291, // "INBOUND_DATA_ERROR" - TOK_VARIABLE_MATCHED_VAR = 292, // "MATCHED_VAR" - TOK_VARIABLE_MATCHED_VAR_NAME = 293, // "MATCHED_VAR_NAME" - TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 294, // VARIABLE_MULTIPART_BOUNDARY_QUOTED - TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 295, // VARIABLE_MULTIPART_BOUNDARY_WHITESPACE - TOK_VARIABLE_MULTIPART_CRLF_LF_LINES = 296, // "MULTIPART_CRLF_LF_LINES" - TOK_VARIABLE_MULTIPART_DATA_AFTER = 297, // "MULTIPART_DATA_AFTER" - TOK_VARIABLE_MULTIPART_DATA_BEFORE = 298, // VARIABLE_MULTIPART_DATA_BEFORE - TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 299, // "MULTIPART_FILE_LIMIT_EXCEEDED" - TOK_VARIABLE_MULTIPART_HEADER_FOLDING = 300, // "MULTIPART_HEADER_FOLDING" - TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 301, // "MULTIPART_INVALID_HEADER_FOLDING" - TOK_VARIABLE_MULTIPART_INVALID_PART = 302, // VARIABLE_MULTIPART_INVALID_PART - TOK_VARIABLE_MULTIPART_INVALID_QUOTING = 303, // "MULTIPART_INVALID_QUOTING" - TOK_VARIABLE_MULTIPART_LF_LINE = 304, // VARIABLE_MULTIPART_LF_LINE - TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON = 305, // VARIABLE_MULTIPART_MISSING_SEMICOLON - TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING = 306, // VARIABLE_MULTIPART_SEMICOLON_MISSING - TOK_VARIABLE_MULTIPART_STRICT_ERROR = 307, // "MULTIPART_STRICT_ERROR" - TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 308, // "MULTIPART_UNMATCHED_BOUNDARY" - TOK_VARIABLE_OUTBOUND_DATA_ERROR = 309, // "OUTBOUND_DATA_ERROR" - TOK_VARIABLE_PATH_INFO = 310, // "PATH_INFO" - TOK_VARIABLE_QUERY_STRING = 311, // "QUERY_STRING" - TOK_VARIABLE_REMOTE_ADDR = 312, // "REMOTE_ADDR" - TOK_VARIABLE_REMOTE_HOST = 313, // "REMOTE_HOST" - TOK_VARIABLE_REMOTE_PORT = 314, // "REMOTE_PORT" - TOK_VARIABLE_REQBODY_ERROR_MSG = 315, // "REQBODY_ERROR_MSG" - TOK_VARIABLE_REQBODY_ERROR = 316, // "REQBODY_ERROR" - TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 317, // "REQBODY_PROCESSOR_ERROR_MSG" - TOK_VARIABLE_REQBODY_PROCESSOR_ERROR = 318, // "REQBODY_PROCESSOR_ERROR" - TOK_VARIABLE_REQBODY_PROCESSOR = 319, // "REQBODY_PROCESSOR" - TOK_VARIABLE_REQUEST_BASENAME = 320, // "REQUEST_BASENAME" - TOK_VARIABLE_REQUEST_BODY_LENGTH = 321, // "REQUEST_BODY_LENGTH" - TOK_VARIABLE_REQUEST_BODY = 322, // "REQUEST_BODY" - TOK_VARIABLE_REQUEST_FILE_NAME = 323, // "REQUEST_FILENAME" - TOK_VARIABLE_REQUEST_HEADERS_NAMES = 324, // VARIABLE_REQUEST_HEADERS_NAMES - TOK_VARIABLE_REQUEST_LINE = 325, // "REQUEST_LINE" - TOK_VARIABLE_REQUEST_METHOD = 326, // "REQUEST_METHOD" - TOK_VARIABLE_REQUEST_PROTOCOL = 327, // "REQUEST_PROTOCOL" - TOK_VARIABLE_REQUEST_URI_RAW = 328, // "REQUEST_URI_RAW" - TOK_VARIABLE_REQUEST_URI = 329, // "REQUEST_URI" - TOK_VARIABLE_RESOURCE = 330, // "RESOURCE" - TOK_VARIABLE_RESPONSE_BODY = 331, // "RESPONSE_BODY" - TOK_VARIABLE_RESPONSE_CONTENT_LENGTH = 332, // "RESPONSE_CONTENT_LENGTH" - TOK_VARIABLE_RESPONSE_CONTENT_TYPE = 333, // VARIABLE_RESPONSE_CONTENT_TYPE - TOK_VARIABLE_RESPONSE_HEADERS_NAMES = 334, // VARIABLE_RESPONSE_HEADERS_NAMES - TOK_VARIABLE_RESPONSE_PROTOCOL = 335, // "RESPONSE_PROTOCOL" - TOK_VARIABLE_RESPONSE_STATUS = 336, // "RESPONSE_STATUS" - TOK_VARIABLE_SERVER_ADDR = 337, // "SERVER_ADDR" - TOK_VARIABLE_SERVER_NAME = 338, // "SERVER_NAME" - TOK_VARIABLE_SERVER_PORT = 339, // "SERVER_PORT" - TOK_VARIABLE_SESSION_ID = 340, // "SESSIONID" - TOK_VARIABLE_UNIQUE_ID = 341, // "UNIQUE_ID" - TOK_VARIABLE_URL_ENCODED_ERROR = 342, // "URLENCODED_ERROR" - TOK_VARIABLE_USER_ID = 343, // "USERID" - TOK_VARIABLE_WEB_APP_ID = 344, // "WEBAPPID" - TOK_VARIABLE_STATUS = 345, // "VARIABLE_STATUS" - TOK_VARIABLE_STATUS_LINE = 346, // "VARIABLE_STATUS_LINE" - TOK_VARIABLE_IP = 347, // "VARIABLE_IP" - TOK_VARIABLE_GLOBAL = 348, // "VARIABLE_GLOBAL" - TOK_VARIABLE_TX = 349, // "VARIABLE_TX" - TOK_VARIABLE_SESSION = 350, // "VARIABLE_SESSION" - TOK_VARIABLE_USER = 351, // "VARIABLE_USER" - TOK_RUN_TIME_VAR_ENV = 352, // "RUN_TIME_VAR_ENV" - TOK_RUN_TIME_VAR_XML = 353, // "RUN_TIME_VAR_XML" - TOK_ACTION_SETVAR = 354, // "SetVar" - TOK_SETVAR_OPERATION_EQUALS = 355, // SETVAR_OPERATION_EQUALS - TOK_SETVAR_OPERATION_EQUALS_PLUS = 356, // SETVAR_OPERATION_EQUALS_PLUS - TOK_SETVAR_OPERATION_EQUALS_MINUS = 357, // SETVAR_OPERATION_EQUALS_MINUS - TOK_NOT = 358, // "NOT" - TOK_OPERATOR_BEGINS_WITH = 359, // "OPERATOR_BEGINS_WITH" - TOK_OPERATOR_CONTAINS = 360, // "OPERATOR_CONTAINS" - TOK_OPERATOR_CONTAINS_WORD = 361, // "OPERATOR_CONTAINS_WORD" - TOK_OPERATOR_DETECT_SQLI = 362, // "OPERATOR_DETECT_SQLI" - TOK_OPERATOR_DETECT_XSS = 363, // "OPERATOR_DETECT_XSS" - TOK_OPERATOR_ENDS_WITH = 364, // "OPERATOR_ENDS_WITH" - TOK_OPERATOR_EQ = 365, // "OPERATOR_EQ" - TOK_OPERATOR_FUZZY_HASH = 366, // "OPERATOR_FUZZY_HASH" - TOK_OPERATOR_GEOLOOKUP = 367, // "OPERATOR_GEOLOOKUP" - TOK_OPERATOR_GE = 368, // "OPERATOR_GE" - TOK_OPERATOR_GSB_LOOKUP = 369, // "OPERATOR_GSB_LOOKUP" - TOK_OPERATOR_GT = 370, // "OPERATOR_GT" - TOK_OPERATOR_INSPECT_FILE = 371, // "OPERATOR_INSPECT_FILE" - TOK_OPERATOR_IP_MATCH_FROM_FILE = 372, // "OPERATOR_IP_MATCH_FROM_FILE" - TOK_OPERATOR_IP_MATCH = 373, // "OPERATOR_IP_MATCH" - TOK_OPERATOR_LE = 374, // "OPERATOR_LE" - TOK_OPERATOR_LT = 375, // "OPERATOR_LT" - TOK_OPERATOR_PM_FROM_FILE = 376, // "OPERATOR_PM_FROM_FILE" - TOK_OPERATOR_PM = 377, // "OPERATOR_PM" - TOK_OPERATOR_RBL = 378, // "OPERATOR_RBL" - TOK_OPERATOR_RSUB = 379, // "OPERATOR_RSUB" - TOK_OPERATOR_RX_CONTENT_ONLY = 380, // "Operator RX (content only)" - TOK_OPERATOR_RX = 381, // "OPERATOR_RX" - TOK_OPERATOR_RX_GLOBAL = 382, // "OPERATOR_RX_GLOBAL" - TOK_OPERATOR_STR_EQ = 383, // "OPERATOR_STR_EQ" - TOK_OPERATOR_STR_MATCH = 384, // "OPERATOR_STR_MATCH" - TOK_OPERATOR_UNCONDITIONAL_MATCH = 385, // "OPERATOR_UNCONDITIONAL_MATCH" - TOK_OPERATOR_VALIDATE_BYTE_RANGE = 386, // "OPERATOR_VALIDATE_BYTE_RANGE" - TOK_OPERATOR_VALIDATE_DTD = 387, // "OPERATOR_VALIDATE_DTD" - TOK_OPERATOR_VALIDATE_HASH = 388, // "OPERATOR_VALIDATE_HASH" - TOK_OPERATOR_VALIDATE_SCHEMA = 389, // "OPERATOR_VALIDATE_SCHEMA" - TOK_OPERATOR_VALIDATE_URL_ENCODING = 390, // "OPERATOR_VALIDATE_URL_ENCODING" - TOK_OPERATOR_VALIDATE_UTF8_ENCODING = 391, // "OPERATOR_VALIDATE_UTF8_ENCODING" - TOK_OPERATOR_VERIFY_CC = 392, // "OPERATOR_VERIFY_CC" - TOK_OPERATOR_VERIFY_CPF = 393, // "OPERATOR_VERIFY_CPF" - TOK_OPERATOR_VERIFY_SSN = 394, // "OPERATOR_VERIFY_SSN" - TOK_OPERATOR_VERIFY_SVNR = 395, // "OPERATOR_VERIFY_SVNR" - TOK_OPERATOR_WITHIN = 396, // "OPERATOR_WITHIN" - TOK_CONFIG_DIR_AUDIT_LOG_FMT = 397, // CONFIG_DIR_AUDIT_LOG_FMT - TOK_JSON = 398, // JSON - TOK_NATIVE = 399, // NATIVE - TOK_ACTION_CTL_RULE_ENGINE = 400, // "ACTION_CTL_RULE_ENGINE" - TOK_ACTION_ACCURACY = 401, // "Accuracy" - TOK_ACTION_ALLOW = 402, // "Allow" - TOK_ACTION_APPEND = 403, // "Append" - TOK_ACTION_AUDIT_LOG = 404, // "AuditLog" - TOK_ACTION_BLOCK = 405, // "Block" - TOK_ACTION_CAPTURE = 406, // "Capture" - TOK_ACTION_CHAIN = 407, // "Chain" - TOK_ACTION_CTL_AUDIT_ENGINE = 408, // "ACTION_CTL_AUDIT_ENGINE" - TOK_ACTION_CTL_AUDIT_LOG_PARTS = 409, // "ACTION_CTL_AUDIT_LOG_PARTS" - TOK_ACTION_CTL_BDY_JSON = 410, // "ACTION_CTL_BDY_JSON" - TOK_ACTION_CTL_BDY_XML = 411, // "ACTION_CTL_BDY_XML" - TOK_ACTION_CTL_BDY_URLENCODED = 412, // "ACTION_CTL_BDY_URLENCODED" - TOK_ACTION_CTL_FORCE_REQ_BODY_VAR = 413, // "ACTION_CTL_FORCE_REQ_BODY_VAR" - TOK_ACTION_CTL_REQUEST_BODY_ACCESS = 414, // "ACTION_CTL_REQUEST_BODY_ACCESS" - TOK_ACTION_CTL_RULE_REMOVE_BY_ID = 415, // "ACTION_CTL_RULE_REMOVE_BY_ID" - TOK_ACTION_CTL_RULE_REMOVE_BY_TAG = 416, // "ACTION_CTL_RULE_REMOVE_BY_TAG" - TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID = 417, // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG = 418, // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - TOK_ACTION_DENY = 419, // "Deny" - TOK_ACTION_DEPRECATE_VAR = 420, // "DeprecateVar" - TOK_ACTION_DROP = 421, // "Drop" - TOK_ACTION_EXEC = 422, // "Exec" - TOK_ACTION_EXPIRE_VAR = 423, // "ExpireVar" - TOK_ACTION_ID = 424, // "Id" - TOK_ACTION_INITCOL = 425, // "InitCol" - TOK_ACTION_LOG = 426, // "Log" - TOK_ACTION_LOG_DATA = 427, // "LogData" - TOK_ACTION_MATURITY = 428, // "Maturity" - TOK_ACTION_MSG = 429, // "Msg" - TOK_ACTION_MULTI_MATCH = 430, // "MultiMatch" - TOK_ACTION_NO_AUDIT_LOG = 431, // "NoAuditLog" - TOK_ACTION_NO_LOG = 432, // "NoLog" - TOK_ACTION_PASS = 433, // "Pass" - TOK_ACTION_PAUSE = 434, // "Pause" - TOK_ACTION_PHASE = 435, // "Phase" - TOK_ACTION_PREPEND = 436, // "Prepend" - TOK_ACTION_PROXY = 437, // "Proxy" - TOK_ACTION_REDIRECT = 438, // "Redirect" - TOK_ACTION_REV = 439, // "Rev" - TOK_ACTION_SANITISE_ARG = 440, // "SanitiseArg" - TOK_ACTION_SANITISE_MATCHED = 441, // "SanitiseMatched" - TOK_ACTION_SANITISE_MATCHED_BYTES = 442, // "SanitiseMatchedBytes" - TOK_ACTION_SANITISE_REQUEST_HEADER = 443, // "SanitiseRequestHeader" - TOK_ACTION_SANITISE_RESPONSE_HEADER = 444, // "SanitiseResponseHeader" - TOK_ACTION_SETENV = 445, // "SetEnv" - TOK_ACTION_SETRSC = 446, // "SetRsc" - TOK_ACTION_SETSID = 447, // "SetSid" - TOK_ACTION_SETUID = 448, // "SetUID" - TOK_ACTION_SEVERITY = 449, // "Severity" - TOK_ACTION_SKIP = 450, // "Skip" - TOK_ACTION_SKIP_AFTER = 451, // "SkipAfter" - TOK_ACTION_STATUS = 452, // "Status" - TOK_ACTION_TAG = 453, // "Tag" - TOK_ACTION_TRANSFORMATION_BASE_64_ENCODE = 454, // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - TOK_ACTION_TRANSFORMATION_BASE_64_DECODE = 455, // "ACTION_TRANSFORMATION_BASE_64_DECODE" - TOK_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT = 456, // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - TOK_ACTION_TRANSFORMATION_CMD_LINE = 457, // "ACTION_TRANSFORMATION_CMD_LINE" - TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE = 458, // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - TOK_ACTION_TRANSFORMATION_CSS_DECODE = 459, // "ACTION_TRANSFORMATION_CSS_DECODE" - TOK_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE = 460, // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - TOK_ACTION_TRANSFORMATION_HEX_ENCODE = 461, // "ACTION_TRANSFORMATION_HEX_ENCODE" - TOK_ACTION_TRANSFORMATION_HEX_DECODE = 462, // "ACTION_TRANSFORMATION_HEX_DECODE" - TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE = 463, // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - TOK_ACTION_TRANSFORMATION_JS_DECODE = 464, // "ACTION_TRANSFORMATION_JS_DECODE" - TOK_ACTION_TRANSFORMATION_LENGTH = 465, // "ACTION_TRANSFORMATION_LENGTH" - TOK_ACTION_TRANSFORMATION_LOWERCASE = 466, // "ACTION_TRANSFORMATION_LOWERCASE" - TOK_ACTION_TRANSFORMATION_PHP_ARGS_NAMES = 467, // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - TOK_ACTION_TRANSFORMATION_MD5 = 468, // "ACTION_TRANSFORMATION_MD5" - TOK_ACTION_TRANSFORMATION_NONE = 469, // "ACTION_TRANSFORMATION_NONE" - TOK_ACTION_TRANSFORMATION_NORMALISE_PATH = 470, // "ACTION_TRANSFORMATION_NORMALISE_PATH" - TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN = 471, // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT = 472, // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT = 473, // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT = 474, // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS = 475, // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR = 476, // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - TOK_ACTION_TRANSFORMATION_REMOVE_NULLS = 477, // "ACTION_TRANSFORMATION_REMOVE_NULLS" - TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE = 478, // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS = 479, // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - TOK_ACTION_TRANSFORMATION_REPLACE_NULLS = 480, // "ACTION_TRANSFORMATION_REPLACE_NULLS" - TOK_ACTION_TRANSFORMATION_SHA1 = 481, // "ACTION_TRANSFORMATION_SHA1" - TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE = 482, // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - TOK_ACTION_TRANSFORMATION_TRIM = 483, // "ACTION_TRANSFORMATION_TRIM" - TOK_ACTION_TRANSFORMATION_TRIM_LEFT = 484, // "ACTION_TRANSFORMATION_TRIM_LEFT" - TOK_ACTION_TRANSFORMATION_TRIM_RIGHT = 485, // "ACTION_TRANSFORMATION_TRIM_RIGHT" - TOK_ACTION_TRANSFORMATION_UPPERCASE = 486, // "ACTION_TRANSFORMATION_UPPERCASE" - TOK_ACTION_TRANSFORMATION_URL_ENCODE = 487, // "ACTION_TRANSFORMATION_URL_ENCODE" - TOK_ACTION_TRANSFORMATION_URL_DECODE = 488, // "ACTION_TRANSFORMATION_URL_DECODE" - TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI = 489, // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE = 490, // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - TOK_ACTION_VER = 491, // "Ver" - TOK_ACTION_XMLNS = 492, // "xmlns" - TOK_CONFIG_COMPONENT_SIG = 493, // "CONFIG_COMPONENT_SIG" - TOK_CONFIG_CONN_ENGINE = 494, // "CONFIG_CONN_ENGINE" - TOK_CONFIG_SEC_ARGUMENT_SEPARATOR = 495, // "CONFIG_SEC_ARGUMENT_SEPARATOR" - TOK_CONFIG_SEC_WEB_APP_ID = 496, // "CONFIG_SEC_WEB_APP_ID" - TOK_CONFIG_SEC_SERVER_SIG = 497, // "CONFIG_SEC_SERVER_SIG" - TOK_CONFIG_DIR_AUDIT_DIR = 498, // "CONFIG_DIR_AUDIT_DIR" - TOK_CONFIG_DIR_AUDIT_DIR_MOD = 499, // "CONFIG_DIR_AUDIT_DIR_MOD" - TOK_CONFIG_DIR_AUDIT_ENG = 500, // "CONFIG_DIR_AUDIT_ENG" - TOK_CONFIG_DIR_AUDIT_FLE_MOD = 501, // "CONFIG_DIR_AUDIT_FLE_MOD" - TOK_CONFIG_DIR_AUDIT_LOG = 502, // "CONFIG_DIR_AUDIT_LOG" - TOK_CONFIG_DIR_AUDIT_LOG2 = 503, // "CONFIG_DIR_AUDIT_LOG2" - TOK_CONFIG_DIR_AUDIT_LOG_P = 504, // "CONFIG_DIR_AUDIT_LOG_P" - TOK_CONFIG_DIR_AUDIT_STS = 505, // "CONFIG_DIR_AUDIT_STS" - TOK_CONFIG_DIR_AUDIT_TPE = 506, // "CONFIG_DIR_AUDIT_TPE" - TOK_CONFIG_DIR_DEBUG_LOG = 507, // "CONFIG_DIR_DEBUG_LOG" - TOK_CONFIG_DIR_DEBUG_LVL = 508, // "CONFIG_DIR_DEBUG_LVL" - TOK_CONFIG_SEC_CACHE_TRANSFORMATIONS = 509, // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - TOK_CONFIG_SEC_DISABLE_BACKEND_COMPRESS = 510, // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - TOK_CONFIG_SEC_HASH_ENGINE = 511, // "CONFIG_SEC_HASH_ENGINE" - TOK_CONFIG_SEC_HASH_KEY = 512, // "CONFIG_SEC_HASH_KEY" - TOK_CONFIG_SEC_HASH_PARAM = 513, // "CONFIG_SEC_HASH_PARAM" - TOK_CONFIG_SEC_HASH_METHOD_RX = 514, // "CONFIG_SEC_HASH_METHOD_RX" - TOK_CONFIG_SEC_HASH_METHOD_PM = 515, // "CONFIG_SEC_HASH_METHOD_PM" - TOK_CONFIG_SEC_CHROOT_DIR = 516, // "CONFIG_SEC_CHROOT_DIR" - TOK_CONFIG_DIR_GEO_DB = 517, // "CONFIG_DIR_GEO_DB" - TOK_CONFIG_DIR_GSB_DB = 518, // "CONFIG_DIR_GSB_DB" - TOK_CONFIG_SEC_GUARDIAN_LOG = 519, // "CONFIG_SEC_GUARDIAN_LOG" - TOK_CONFIG_DIR_PCRE_MATCH_LIMIT = 520, // "CONFIG_DIR_PCRE_MATCH_LIMIT" - TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION = 521, // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - TOK_CONFIG_SEC_CONN_R_STATE_LIMIT = 522, // "CONFIG_SEC_CONN_R_STATE_LIMIT" - TOK_CONFIG_SEC_CONN_W_STATE_LIMIT = 523, // "CONFIG_SEC_CONN_W_STATE_LIMIT" - TOK_CONFIG_SEC_SENSOR_ID = 524, // "CONFIG_SEC_SENSOR_ID" - TOK_CONFIG_DIR_ARGS_LIMIT = 525, // "CONFIG_DIR_ARGS_LIMIT" - TOK_CONFIG_DIR_REQ_BODY = 526, // "CONFIG_DIR_REQ_BODY" - TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT = 527, // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - TOK_CONFIG_DIR_REQ_BODY_LIMIT = 528, // "CONFIG_DIR_REQ_BODY_LIMIT" - TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION = 529, // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT = 530, // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - TOK_CONFIG_DIR_RES_BODY = 531, // "CONFIG_DIR_RES_BODY" - TOK_CONFIG_DIR_RES_BODY_LIMIT = 532, // "CONFIG_DIR_RES_BODY_LIMIT" - TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION = 533, // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - TOK_CONFIG_SEC_RULE_INHERITANCE = 534, // "CONFIG_SEC_RULE_INHERITANCE" - TOK_CONFIG_SEC_RULE_PERF_TIME = 535, // "CONFIG_SEC_RULE_PERF_TIME" - TOK_CONFIG_DIR_RULE_ENG = 536, // "CONFIG_DIR_RULE_ENG" - TOK_CONFIG_DIR_SEC_ACTION = 537, // "CONFIG_DIR_SEC_ACTION" - TOK_CONFIG_DIR_SEC_DEFAULT_ACTION = 538, // "CONFIG_DIR_SEC_DEFAULT_ACTION" - TOK_CONFIG_DIR_SEC_MARKER = 539, // "CONFIG_DIR_SEC_MARKER" - TOK_CONFIG_DIR_UNICODE_MAP_FILE = 540, // "CONFIG_DIR_UNICODE_MAP_FILE" - TOK_CONFIG_DIR_UNICODE_CODE_PAGE = 541, // "CONFIG_DIR_UNICODE_CODE_PAGE" - TOK_CONFIG_SEC_COLLECTION_TIMEOUT = 542, // "CONFIG_SEC_COLLECTION_TIMEOUT" - TOK_CONFIG_SEC_HTTP_BLKEY = 543, // "CONFIG_SEC_HTTP_BLKEY" - TOK_CONFIG_SEC_INTERCEPT_ON_ERROR = 544, // "CONFIG_SEC_INTERCEPT_ON_ERROR" - TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION = 545, // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - TOK_CONFIG_SEC_RULE_REMOVE_BY_ID = 546, // "CONFIG_SEC_RULE_REMOVE_BY_ID" - TOK_CONFIG_SEC_RULE_REMOVE_BY_MSG = 547, // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - TOK_CONFIG_SEC_RULE_REMOVE_BY_TAG = 548, // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG = 549, // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG = 550, // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID = 551, // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - TOK_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID = 552, // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - TOK_CONFIG_UPDLOAD_KEEP_FILES = 553, // "CONFIG_UPDLOAD_KEEP_FILES" - TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES = 554, // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - TOK_CONFIG_UPLOAD_DIR = 555, // "CONFIG_UPLOAD_DIR" - TOK_CONFIG_UPLOAD_FILE_LIMIT = 556, // "CONFIG_UPLOAD_FILE_LIMIT" - TOK_CONFIG_UPLOAD_FILE_MODE = 557, // "CONFIG_UPLOAD_FILE_MODE" - TOK_CONFIG_VALUE_ABORT = 558, // "CONFIG_VALUE_ABORT" - TOK_CONFIG_VALUE_DETC = 559, // "CONFIG_VALUE_DETC" - TOK_CONFIG_VALUE_HTTPS = 560, // "CONFIG_VALUE_HTTPS" - TOK_CONFIG_VALUE_OFF = 561, // "CONFIG_VALUE_OFF" - TOK_CONFIG_VALUE_ON = 562, // "CONFIG_VALUE_ON" - TOK_CONFIG_VALUE_PARALLEL = 563, // "CONFIG_VALUE_PARALLEL" - TOK_CONFIG_VALUE_PROCESS_PARTIAL = 564, // "CONFIG_VALUE_PROCESS_PARTIAL" - TOK_CONFIG_VALUE_REJECT = 565, // "CONFIG_VALUE_REJECT" - TOK_CONFIG_VALUE_RELEVANT_ONLY = 566, // "CONFIG_VALUE_RELEVANT_ONLY" - TOK_CONFIG_VALUE_SERIAL = 567, // "CONFIG_VALUE_SERIAL" - TOK_CONFIG_VALUE_WARN = 568, // "CONFIG_VALUE_WARN" - TOK_CONFIG_XML_EXTERNAL_ENTITY = 569, // "CONFIG_XML_EXTERNAL_ENTITY" - TOK_CONGIG_DIR_RESPONSE_BODY_MP = 570, // "CONGIG_DIR_RESPONSE_BODY_MP" - TOK_CONGIG_DIR_SEC_ARG_SEP = 571, // "CONGIG_DIR_SEC_ARG_SEP" - TOK_CONGIG_DIR_SEC_COOKIE_FORMAT = 572, // "CONGIG_DIR_SEC_COOKIE_FORMAT" - TOK_CONFIG_SEC_COOKIEV0_SEPARATOR = 573, // "CONFIG_SEC_COOKIEV0_SEPARATOR" - TOK_CONGIG_DIR_SEC_DATA_DIR = 574, // "CONGIG_DIR_SEC_DATA_DIR" - TOK_CONGIG_DIR_SEC_STATUS_ENGINE = 575, // "CONGIG_DIR_SEC_STATUS_ENGINE" - TOK_CONFIG_SEC_STREAM_IN_BODY_INSPECTION = 576, // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - TOK_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION = 577, // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - TOK_CONGIG_DIR_SEC_TMP_DIR = 578, // "CONGIG_DIR_SEC_TMP_DIR" - TOK_DIRECTIVE = 579, // "DIRECTIVE" - TOK_DIRECTIVE_SECRULESCRIPT = 580, // "DIRECTIVE_SECRULESCRIPT" - TOK_FREE_TEXT_QUOTE_MACRO_EXPANSION = 581, // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - TOK_QUOTATION_MARK = 582, // "QUOTATION_MARK" - TOK_RUN_TIME_VAR_BLD = 583, // "RUN_TIME_VAR_BLD" - TOK_RUN_TIME_VAR_DUR = 584, // "RUN_TIME_VAR_DUR" - TOK_RUN_TIME_VAR_HSV = 585, // "RUN_TIME_VAR_HSV" - TOK_RUN_TIME_VAR_REMOTE_USER = 586, // "RUN_TIME_VAR_REMOTE_USER" - TOK_RUN_TIME_VAR_TIME = 587, // "RUN_TIME_VAR_TIME" - TOK_RUN_TIME_VAR_TIME_DAY = 588, // "RUN_TIME_VAR_TIME_DAY" - TOK_RUN_TIME_VAR_TIME_EPOCH = 589, // "RUN_TIME_VAR_TIME_EPOCH" - TOK_RUN_TIME_VAR_TIME_HOUR = 590, // "RUN_TIME_VAR_TIME_HOUR" - TOK_RUN_TIME_VAR_TIME_MIN = 591, // "RUN_TIME_VAR_TIME_MIN" - TOK_RUN_TIME_VAR_TIME_MON = 592, // "RUN_TIME_VAR_TIME_MON" - TOK_RUN_TIME_VAR_TIME_SEC = 593, // "RUN_TIME_VAR_TIME_SEC" - TOK_RUN_TIME_VAR_TIME_WDAY = 594, // "RUN_TIME_VAR_TIME_WDAY" - TOK_RUN_TIME_VAR_TIME_YEAR = 595, // "RUN_TIME_VAR_TIME_YEAR" - TOK_VARIABLE = 596, // "VARIABLE" - TOK_DICT_ELEMENT = 597, // "Dictionary element" - TOK_DICT_ELEMENT_REGEXP = 598 // "Dictionary element, selected by regexp" - }; - /// Backward compatibility alias (Bison 3.6). - typedef token_kind_type yytokentype; - }; - - /// Token kind, as returned by yylex. - typedef token::yytokentype token_kind_type; - - /// Backward compatibility alias (Bison 3.6). - typedef token_kind_type token_type; - - /// Symbol kinds. - struct symbol_kind - { - enum symbol_kind_type - { - YYNTOKENS = 344, ///< Number of tokens. - S_YYEMPTY = -2, - S_YYEOF = 0, // "end of file" - S_YYerror = 1, // error - S_YYUNDEF = 2, // "invalid token" - S_COMMA = 3, // "," - S_CONFIG_CONTENT_INJECTION = 4, // "CONFIG_CONTENT_INJECTION" - S_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR = 5, // "CONGIG_DIR_RESPONSE_BODY_MP_CLEAR" - S_PIPE = 6, // PIPE - S_NEW_LINE = 7, // NEW_LINE - S_VAR_COUNT = 8, // VAR_COUNT - S_VAR_EXCLUSION = 9, // VAR_EXCLUSION - S_VARIABLE_ARGS = 10, // VARIABLE_ARGS - S_VARIABLE_ARGS_POST = 11, // VARIABLE_ARGS_POST - S_VARIABLE_ARGS_GET = 12, // VARIABLE_ARGS_GET - S_VARIABLE_FILES_SIZES = 13, // VARIABLE_FILES_SIZES - S_VARIABLE_FILES_NAMES = 14, // VARIABLE_FILES_NAMES - S_VARIABLE_FILES_TMP_CONTENT = 15, // VARIABLE_FILES_TMP_CONTENT - S_VARIABLE_MULTIPART_FILENAME = 16, // VARIABLE_MULTIPART_FILENAME - S_VARIABLE_MULTIPART_NAME = 17, // VARIABLE_MULTIPART_NAME - S_VARIABLE_MATCHED_VARS_NAMES = 18, // VARIABLE_MATCHED_VARS_NAMES - S_VARIABLE_MATCHED_VARS = 19, // VARIABLE_MATCHED_VARS - S_VARIABLE_FILES = 20, // VARIABLE_FILES - S_VARIABLE_REQUEST_COOKIES = 21, // VARIABLE_REQUEST_COOKIES - S_VARIABLE_REQUEST_HEADERS = 22, // VARIABLE_REQUEST_HEADERS - S_VARIABLE_RESPONSE_HEADERS = 23, // VARIABLE_RESPONSE_HEADERS - S_VARIABLE_GEO = 24, // VARIABLE_GEO - S_VARIABLE_REQUEST_COOKIES_NAMES = 25, // VARIABLE_REQUEST_COOKIES_NAMES - S_VARIABLE_ARGS_COMBINED_SIZE = 26, // VARIABLE_ARGS_COMBINED_SIZE - S_VARIABLE_ARGS_GET_NAMES = 27, // VARIABLE_ARGS_GET_NAMES - S_VARIABLE_RULE = 28, // VARIABLE_RULE - S_VARIABLE_ARGS_NAMES = 29, // "Variable ARGS_NAMES" - S_VARIABLE_ARGS_POST_NAMES = 30, // VARIABLE_ARGS_POST_NAMES - S_VARIABLE_AUTH_TYPE = 31, // "AUTH_TYPE" - S_VARIABLE_FILES_COMBINED_SIZE = 32, // "FILES_COMBINED_SIZE" - S_VARIABLE_FILES_TMP_NAMES = 33, // "FILES_TMPNAMES" - S_VARIABLE_FULL_REQUEST = 34, // "FULL_REQUEST" - S_VARIABLE_FULL_REQUEST_LENGTH = 35, // "FULL_REQUEST_LENGTH" - S_VARIABLE_INBOUND_DATA_ERROR = 36, // "INBOUND_DATA_ERROR" - S_VARIABLE_MATCHED_VAR = 37, // "MATCHED_VAR" - S_VARIABLE_MATCHED_VAR_NAME = 38, // "MATCHED_VAR_NAME" - S_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 39, // VARIABLE_MULTIPART_BOUNDARY_QUOTED - S_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 40, // VARIABLE_MULTIPART_BOUNDARY_WHITESPACE - S_VARIABLE_MULTIPART_CRLF_LF_LINES = 41, // "MULTIPART_CRLF_LF_LINES" - S_VARIABLE_MULTIPART_DATA_AFTER = 42, // "MULTIPART_DATA_AFTER" - S_VARIABLE_MULTIPART_DATA_BEFORE = 43, // VARIABLE_MULTIPART_DATA_BEFORE - S_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 44, // "MULTIPART_FILE_LIMIT_EXCEEDED" - S_VARIABLE_MULTIPART_HEADER_FOLDING = 45, // "MULTIPART_HEADER_FOLDING" - S_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 46, // "MULTIPART_INVALID_HEADER_FOLDING" - S_VARIABLE_MULTIPART_INVALID_PART = 47, // VARIABLE_MULTIPART_INVALID_PART - S_VARIABLE_MULTIPART_INVALID_QUOTING = 48, // "MULTIPART_INVALID_QUOTING" - S_VARIABLE_MULTIPART_LF_LINE = 49, // VARIABLE_MULTIPART_LF_LINE - S_VARIABLE_MULTIPART_MISSING_SEMICOLON = 50, // VARIABLE_MULTIPART_MISSING_SEMICOLON - S_VARIABLE_MULTIPART_SEMICOLON_MISSING = 51, // VARIABLE_MULTIPART_SEMICOLON_MISSING - S_VARIABLE_MULTIPART_STRICT_ERROR = 52, // "MULTIPART_STRICT_ERROR" - S_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 53, // "MULTIPART_UNMATCHED_BOUNDARY" - S_VARIABLE_OUTBOUND_DATA_ERROR = 54, // "OUTBOUND_DATA_ERROR" - S_VARIABLE_PATH_INFO = 55, // "PATH_INFO" - S_VARIABLE_QUERY_STRING = 56, // "QUERY_STRING" - S_VARIABLE_REMOTE_ADDR = 57, // "REMOTE_ADDR" - S_VARIABLE_REMOTE_HOST = 58, // "REMOTE_HOST" - S_VARIABLE_REMOTE_PORT = 59, // "REMOTE_PORT" - S_VARIABLE_REQBODY_ERROR_MSG = 60, // "REQBODY_ERROR_MSG" - S_VARIABLE_REQBODY_ERROR = 61, // "REQBODY_ERROR" - S_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 62, // "REQBODY_PROCESSOR_ERROR_MSG" - S_VARIABLE_REQBODY_PROCESSOR_ERROR = 63, // "REQBODY_PROCESSOR_ERROR" - S_VARIABLE_REQBODY_PROCESSOR = 64, // "REQBODY_PROCESSOR" - S_VARIABLE_REQUEST_BASENAME = 65, // "REQUEST_BASENAME" - S_VARIABLE_REQUEST_BODY_LENGTH = 66, // "REQUEST_BODY_LENGTH" - S_VARIABLE_REQUEST_BODY = 67, // "REQUEST_BODY" - S_VARIABLE_REQUEST_FILE_NAME = 68, // "REQUEST_FILENAME" - S_VARIABLE_REQUEST_HEADERS_NAMES = 69, // VARIABLE_REQUEST_HEADERS_NAMES - S_VARIABLE_REQUEST_LINE = 70, // "REQUEST_LINE" - S_VARIABLE_REQUEST_METHOD = 71, // "REQUEST_METHOD" - S_VARIABLE_REQUEST_PROTOCOL = 72, // "REQUEST_PROTOCOL" - S_VARIABLE_REQUEST_URI_RAW = 73, // "REQUEST_URI_RAW" - S_VARIABLE_REQUEST_URI = 74, // "REQUEST_URI" - S_VARIABLE_RESOURCE = 75, // "RESOURCE" - S_VARIABLE_RESPONSE_BODY = 76, // "RESPONSE_BODY" - S_VARIABLE_RESPONSE_CONTENT_LENGTH = 77, // "RESPONSE_CONTENT_LENGTH" - S_VARIABLE_RESPONSE_CONTENT_TYPE = 78, // VARIABLE_RESPONSE_CONTENT_TYPE - S_VARIABLE_RESPONSE_HEADERS_NAMES = 79, // VARIABLE_RESPONSE_HEADERS_NAMES - S_VARIABLE_RESPONSE_PROTOCOL = 80, // "RESPONSE_PROTOCOL" - S_VARIABLE_RESPONSE_STATUS = 81, // "RESPONSE_STATUS" - S_VARIABLE_SERVER_ADDR = 82, // "SERVER_ADDR" - S_VARIABLE_SERVER_NAME = 83, // "SERVER_NAME" - S_VARIABLE_SERVER_PORT = 84, // "SERVER_PORT" - S_VARIABLE_SESSION_ID = 85, // "SESSIONID" - S_VARIABLE_UNIQUE_ID = 86, // "UNIQUE_ID" - S_VARIABLE_URL_ENCODED_ERROR = 87, // "URLENCODED_ERROR" - S_VARIABLE_USER_ID = 88, // "USERID" - S_VARIABLE_WEB_APP_ID = 89, // "WEBAPPID" - S_VARIABLE_STATUS = 90, // "VARIABLE_STATUS" - S_VARIABLE_STATUS_LINE = 91, // "VARIABLE_STATUS_LINE" - S_VARIABLE_IP = 92, // "VARIABLE_IP" - S_VARIABLE_GLOBAL = 93, // "VARIABLE_GLOBAL" - S_VARIABLE_TX = 94, // "VARIABLE_TX" - S_VARIABLE_SESSION = 95, // "VARIABLE_SESSION" - S_VARIABLE_USER = 96, // "VARIABLE_USER" - S_RUN_TIME_VAR_ENV = 97, // "RUN_TIME_VAR_ENV" - S_RUN_TIME_VAR_XML = 98, // "RUN_TIME_VAR_XML" - S_ACTION_SETVAR = 99, // "SetVar" - S_SETVAR_OPERATION_EQUALS = 100, // SETVAR_OPERATION_EQUALS - S_SETVAR_OPERATION_EQUALS_PLUS = 101, // SETVAR_OPERATION_EQUALS_PLUS - S_SETVAR_OPERATION_EQUALS_MINUS = 102, // SETVAR_OPERATION_EQUALS_MINUS - S_NOT = 103, // "NOT" - S_OPERATOR_BEGINS_WITH = 104, // "OPERATOR_BEGINS_WITH" - S_OPERATOR_CONTAINS = 105, // "OPERATOR_CONTAINS" - S_OPERATOR_CONTAINS_WORD = 106, // "OPERATOR_CONTAINS_WORD" - S_OPERATOR_DETECT_SQLI = 107, // "OPERATOR_DETECT_SQLI" - S_OPERATOR_DETECT_XSS = 108, // "OPERATOR_DETECT_XSS" - S_OPERATOR_ENDS_WITH = 109, // "OPERATOR_ENDS_WITH" - S_OPERATOR_EQ = 110, // "OPERATOR_EQ" - S_OPERATOR_FUZZY_HASH = 111, // "OPERATOR_FUZZY_HASH" - S_OPERATOR_GEOLOOKUP = 112, // "OPERATOR_GEOLOOKUP" - S_OPERATOR_GE = 113, // "OPERATOR_GE" - S_OPERATOR_GSB_LOOKUP = 114, // "OPERATOR_GSB_LOOKUP" - S_OPERATOR_GT = 115, // "OPERATOR_GT" - S_OPERATOR_INSPECT_FILE = 116, // "OPERATOR_INSPECT_FILE" - S_OPERATOR_IP_MATCH_FROM_FILE = 117, // "OPERATOR_IP_MATCH_FROM_FILE" - S_OPERATOR_IP_MATCH = 118, // "OPERATOR_IP_MATCH" - S_OPERATOR_LE = 119, // "OPERATOR_LE" - S_OPERATOR_LT = 120, // "OPERATOR_LT" - S_OPERATOR_PM_FROM_FILE = 121, // "OPERATOR_PM_FROM_FILE" - S_OPERATOR_PM = 122, // "OPERATOR_PM" - S_OPERATOR_RBL = 123, // "OPERATOR_RBL" - S_OPERATOR_RSUB = 124, // "OPERATOR_RSUB" - S_OPERATOR_RX_CONTENT_ONLY = 125, // "Operator RX (content only)" - S_OPERATOR_RX = 126, // "OPERATOR_RX" - S_OPERATOR_RX_GLOBAL = 127, // "OPERATOR_RX_GLOBAL" - S_OPERATOR_STR_EQ = 128, // "OPERATOR_STR_EQ" - S_OPERATOR_STR_MATCH = 129, // "OPERATOR_STR_MATCH" - S_OPERATOR_UNCONDITIONAL_MATCH = 130, // "OPERATOR_UNCONDITIONAL_MATCH" - S_OPERATOR_VALIDATE_BYTE_RANGE = 131, // "OPERATOR_VALIDATE_BYTE_RANGE" - S_OPERATOR_VALIDATE_DTD = 132, // "OPERATOR_VALIDATE_DTD" - S_OPERATOR_VALIDATE_HASH = 133, // "OPERATOR_VALIDATE_HASH" - S_OPERATOR_VALIDATE_SCHEMA = 134, // "OPERATOR_VALIDATE_SCHEMA" - S_OPERATOR_VALIDATE_URL_ENCODING = 135, // "OPERATOR_VALIDATE_URL_ENCODING" - S_OPERATOR_VALIDATE_UTF8_ENCODING = 136, // "OPERATOR_VALIDATE_UTF8_ENCODING" - S_OPERATOR_VERIFY_CC = 137, // "OPERATOR_VERIFY_CC" - S_OPERATOR_VERIFY_CPF = 138, // "OPERATOR_VERIFY_CPF" - S_OPERATOR_VERIFY_SSN = 139, // "OPERATOR_VERIFY_SSN" - S_OPERATOR_VERIFY_SVNR = 140, // "OPERATOR_VERIFY_SVNR" - S_OPERATOR_WITHIN = 141, // "OPERATOR_WITHIN" - S_CONFIG_DIR_AUDIT_LOG_FMT = 142, // CONFIG_DIR_AUDIT_LOG_FMT - S_JSON = 143, // JSON - S_NATIVE = 144, // NATIVE - S_ACTION_CTL_RULE_ENGINE = 145, // "ACTION_CTL_RULE_ENGINE" - S_ACTION_ACCURACY = 146, // "Accuracy" - S_ACTION_ALLOW = 147, // "Allow" - S_ACTION_APPEND = 148, // "Append" - S_ACTION_AUDIT_LOG = 149, // "AuditLog" - S_ACTION_BLOCK = 150, // "Block" - S_ACTION_CAPTURE = 151, // "Capture" - S_ACTION_CHAIN = 152, // "Chain" - S_ACTION_CTL_AUDIT_ENGINE = 153, // "ACTION_CTL_AUDIT_ENGINE" - S_ACTION_CTL_AUDIT_LOG_PARTS = 154, // "ACTION_CTL_AUDIT_LOG_PARTS" - S_ACTION_CTL_BDY_JSON = 155, // "ACTION_CTL_BDY_JSON" - S_ACTION_CTL_BDY_XML = 156, // "ACTION_CTL_BDY_XML" - S_ACTION_CTL_BDY_URLENCODED = 157, // "ACTION_CTL_BDY_URLENCODED" - S_ACTION_CTL_FORCE_REQ_BODY_VAR = 158, // "ACTION_CTL_FORCE_REQ_BODY_VAR" - S_ACTION_CTL_REQUEST_BODY_ACCESS = 159, // "ACTION_CTL_REQUEST_BODY_ACCESS" - S_ACTION_CTL_RULE_REMOVE_BY_ID = 160, // "ACTION_CTL_RULE_REMOVE_BY_ID" - S_ACTION_CTL_RULE_REMOVE_BY_TAG = 161, // "ACTION_CTL_RULE_REMOVE_BY_TAG" - S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID = 162, // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG = 163, // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - S_ACTION_DENY = 164, // "Deny" - S_ACTION_DEPRECATE_VAR = 165, // "DeprecateVar" - S_ACTION_DROP = 166, // "Drop" - S_ACTION_EXEC = 167, // "Exec" - S_ACTION_EXPIRE_VAR = 168, // "ExpireVar" - S_ACTION_ID = 169, // "Id" - S_ACTION_INITCOL = 170, // "InitCol" - S_ACTION_LOG = 171, // "Log" - S_ACTION_LOG_DATA = 172, // "LogData" - S_ACTION_MATURITY = 173, // "Maturity" - S_ACTION_MSG = 174, // "Msg" - S_ACTION_MULTI_MATCH = 175, // "MultiMatch" - S_ACTION_NO_AUDIT_LOG = 176, // "NoAuditLog" - S_ACTION_NO_LOG = 177, // "NoLog" - S_ACTION_PASS = 178, // "Pass" - S_ACTION_PAUSE = 179, // "Pause" - S_ACTION_PHASE = 180, // "Phase" - S_ACTION_PREPEND = 181, // "Prepend" - S_ACTION_PROXY = 182, // "Proxy" - S_ACTION_REDIRECT = 183, // "Redirect" - S_ACTION_REV = 184, // "Rev" - S_ACTION_SANITISE_ARG = 185, // "SanitiseArg" - S_ACTION_SANITISE_MATCHED = 186, // "SanitiseMatched" - S_ACTION_SANITISE_MATCHED_BYTES = 187, // "SanitiseMatchedBytes" - S_ACTION_SANITISE_REQUEST_HEADER = 188, // "SanitiseRequestHeader" - S_ACTION_SANITISE_RESPONSE_HEADER = 189, // "SanitiseResponseHeader" - S_ACTION_SETENV = 190, // "SetEnv" - S_ACTION_SETRSC = 191, // "SetRsc" - S_ACTION_SETSID = 192, // "SetSid" - S_ACTION_SETUID = 193, // "SetUID" - S_ACTION_SEVERITY = 194, // "Severity" - S_ACTION_SKIP = 195, // "Skip" - S_ACTION_SKIP_AFTER = 196, // "SkipAfter" - S_ACTION_STATUS = 197, // "Status" - S_ACTION_TAG = 198, // "Tag" - S_ACTION_TRANSFORMATION_BASE_64_ENCODE = 199, // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - S_ACTION_TRANSFORMATION_BASE_64_DECODE = 200, // "ACTION_TRANSFORMATION_BASE_64_DECODE" - S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT = 201, // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - S_ACTION_TRANSFORMATION_CMD_LINE = 202, // "ACTION_TRANSFORMATION_CMD_LINE" - S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE = 203, // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - S_ACTION_TRANSFORMATION_CSS_DECODE = 204, // "ACTION_TRANSFORMATION_CSS_DECODE" - S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE = 205, // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - S_ACTION_TRANSFORMATION_HEX_ENCODE = 206, // "ACTION_TRANSFORMATION_HEX_ENCODE" - S_ACTION_TRANSFORMATION_HEX_DECODE = 207, // "ACTION_TRANSFORMATION_HEX_DECODE" - S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE = 208, // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - S_ACTION_TRANSFORMATION_JS_DECODE = 209, // "ACTION_TRANSFORMATION_JS_DECODE" - S_ACTION_TRANSFORMATION_LENGTH = 210, // "ACTION_TRANSFORMATION_LENGTH" - S_ACTION_TRANSFORMATION_LOWERCASE = 211, // "ACTION_TRANSFORMATION_LOWERCASE" - S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES = 212, // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - S_ACTION_TRANSFORMATION_MD5 = 213, // "ACTION_TRANSFORMATION_MD5" - S_ACTION_TRANSFORMATION_NONE = 214, // "ACTION_TRANSFORMATION_NONE" - S_ACTION_TRANSFORMATION_NORMALISE_PATH = 215, // "ACTION_TRANSFORMATION_NORMALISE_PATH" - S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN = 216, // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT = 217, // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT = 218, // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT = 219, // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - S_ACTION_TRANSFORMATION_REMOVE_COMMENTS = 220, // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR = 221, // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - S_ACTION_TRANSFORMATION_REMOVE_NULLS = 222, // "ACTION_TRANSFORMATION_REMOVE_NULLS" - S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE = 223, // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - S_ACTION_TRANSFORMATION_REPLACE_COMMENTS = 224, // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - S_ACTION_TRANSFORMATION_REPLACE_NULLS = 225, // "ACTION_TRANSFORMATION_REPLACE_NULLS" - S_ACTION_TRANSFORMATION_SHA1 = 226, // "ACTION_TRANSFORMATION_SHA1" - S_ACTION_TRANSFORMATION_SQL_HEX_DECODE = 227, // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - S_ACTION_TRANSFORMATION_TRIM = 228, // "ACTION_TRANSFORMATION_TRIM" - S_ACTION_TRANSFORMATION_TRIM_LEFT = 229, // "ACTION_TRANSFORMATION_TRIM_LEFT" - S_ACTION_TRANSFORMATION_TRIM_RIGHT = 230, // "ACTION_TRANSFORMATION_TRIM_RIGHT" - S_ACTION_TRANSFORMATION_UPPERCASE = 231, // "ACTION_TRANSFORMATION_UPPERCASE" - S_ACTION_TRANSFORMATION_URL_ENCODE = 232, // "ACTION_TRANSFORMATION_URL_ENCODE" - S_ACTION_TRANSFORMATION_URL_DECODE = 233, // "ACTION_TRANSFORMATION_URL_DECODE" - S_ACTION_TRANSFORMATION_URL_DECODE_UNI = 234, // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE = 235, // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - S_ACTION_VER = 236, // "Ver" - S_ACTION_XMLNS = 237, // "xmlns" - S_CONFIG_COMPONENT_SIG = 238, // "CONFIG_COMPONENT_SIG" - S_CONFIG_CONN_ENGINE = 239, // "CONFIG_CONN_ENGINE" - S_CONFIG_SEC_ARGUMENT_SEPARATOR = 240, // "CONFIG_SEC_ARGUMENT_SEPARATOR" - S_CONFIG_SEC_WEB_APP_ID = 241, // "CONFIG_SEC_WEB_APP_ID" - S_CONFIG_SEC_SERVER_SIG = 242, // "CONFIG_SEC_SERVER_SIG" - S_CONFIG_DIR_AUDIT_DIR = 243, // "CONFIG_DIR_AUDIT_DIR" - S_CONFIG_DIR_AUDIT_DIR_MOD = 244, // "CONFIG_DIR_AUDIT_DIR_MOD" - S_CONFIG_DIR_AUDIT_ENG = 245, // "CONFIG_DIR_AUDIT_ENG" - S_CONFIG_DIR_AUDIT_FLE_MOD = 246, // "CONFIG_DIR_AUDIT_FLE_MOD" - S_CONFIG_DIR_AUDIT_LOG = 247, // "CONFIG_DIR_AUDIT_LOG" - S_CONFIG_DIR_AUDIT_LOG2 = 248, // "CONFIG_DIR_AUDIT_LOG2" - S_CONFIG_DIR_AUDIT_LOG_P = 249, // "CONFIG_DIR_AUDIT_LOG_P" - S_CONFIG_DIR_AUDIT_STS = 250, // "CONFIG_DIR_AUDIT_STS" - S_CONFIG_DIR_AUDIT_TPE = 251, // "CONFIG_DIR_AUDIT_TPE" - S_CONFIG_DIR_DEBUG_LOG = 252, // "CONFIG_DIR_DEBUG_LOG" - S_CONFIG_DIR_DEBUG_LVL = 253, // "CONFIG_DIR_DEBUG_LVL" - S_CONFIG_SEC_CACHE_TRANSFORMATIONS = 254, // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS = 255, // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - S_CONFIG_SEC_HASH_ENGINE = 256, // "CONFIG_SEC_HASH_ENGINE" - S_CONFIG_SEC_HASH_KEY = 257, // "CONFIG_SEC_HASH_KEY" - S_CONFIG_SEC_HASH_PARAM = 258, // "CONFIG_SEC_HASH_PARAM" - S_CONFIG_SEC_HASH_METHOD_RX = 259, // "CONFIG_SEC_HASH_METHOD_RX" - S_CONFIG_SEC_HASH_METHOD_PM = 260, // "CONFIG_SEC_HASH_METHOD_PM" - S_CONFIG_SEC_CHROOT_DIR = 261, // "CONFIG_SEC_CHROOT_DIR" - S_CONFIG_DIR_GEO_DB = 262, // "CONFIG_DIR_GEO_DB" - S_CONFIG_DIR_GSB_DB = 263, // "CONFIG_DIR_GSB_DB" - S_CONFIG_SEC_GUARDIAN_LOG = 264, // "CONFIG_SEC_GUARDIAN_LOG" - S_CONFIG_DIR_PCRE_MATCH_LIMIT = 265, // "CONFIG_DIR_PCRE_MATCH_LIMIT" - S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION = 266, // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - S_CONFIG_SEC_CONN_R_STATE_LIMIT = 267, // "CONFIG_SEC_CONN_R_STATE_LIMIT" - S_CONFIG_SEC_CONN_W_STATE_LIMIT = 268, // "CONFIG_SEC_CONN_W_STATE_LIMIT" - S_CONFIG_SEC_SENSOR_ID = 269, // "CONFIG_SEC_SENSOR_ID" - S_CONFIG_DIR_ARGS_LIMIT = 270, // "CONFIG_DIR_ARGS_LIMIT" - S_CONFIG_DIR_REQ_BODY = 271, // "CONFIG_DIR_REQ_BODY" - S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT = 272, // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - S_CONFIG_DIR_REQ_BODY_LIMIT = 273, // "CONFIG_DIR_REQ_BODY_LIMIT" - S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION = 274, // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT = 275, // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - S_CONFIG_DIR_RES_BODY = 276, // "CONFIG_DIR_RES_BODY" - S_CONFIG_DIR_RES_BODY_LIMIT = 277, // "CONFIG_DIR_RES_BODY_LIMIT" - S_CONFIG_DIR_RES_BODY_LIMIT_ACTION = 278, // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - S_CONFIG_SEC_RULE_INHERITANCE = 279, // "CONFIG_SEC_RULE_INHERITANCE" - S_CONFIG_SEC_RULE_PERF_TIME = 280, // "CONFIG_SEC_RULE_PERF_TIME" - S_CONFIG_DIR_RULE_ENG = 281, // "CONFIG_DIR_RULE_ENG" - S_CONFIG_DIR_SEC_ACTION = 282, // "CONFIG_DIR_SEC_ACTION" - S_CONFIG_DIR_SEC_DEFAULT_ACTION = 283, // "CONFIG_DIR_SEC_DEFAULT_ACTION" - S_CONFIG_DIR_SEC_MARKER = 284, // "CONFIG_DIR_SEC_MARKER" - S_CONFIG_DIR_UNICODE_MAP_FILE = 285, // "CONFIG_DIR_UNICODE_MAP_FILE" - S_CONFIG_DIR_UNICODE_CODE_PAGE = 286, // "CONFIG_DIR_UNICODE_CODE_PAGE" - S_CONFIG_SEC_COLLECTION_TIMEOUT = 287, // "CONFIG_SEC_COLLECTION_TIMEOUT" - S_CONFIG_SEC_HTTP_BLKEY = 288, // "CONFIG_SEC_HTTP_BLKEY" - S_CONFIG_SEC_INTERCEPT_ON_ERROR = 289, // "CONFIG_SEC_INTERCEPT_ON_ERROR" - S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION = 290, // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - S_CONFIG_SEC_RULE_REMOVE_BY_ID = 291, // "CONFIG_SEC_RULE_REMOVE_BY_ID" - S_CONFIG_SEC_RULE_REMOVE_BY_MSG = 292, // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - S_CONFIG_SEC_RULE_REMOVE_BY_TAG = 293, // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG = 294, // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG = 295, // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID = 296, // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID = 297, // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - S_CONFIG_UPDLOAD_KEEP_FILES = 298, // "CONFIG_UPDLOAD_KEEP_FILES" - S_CONFIG_UPDLOAD_SAVE_TMP_FILES = 299, // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - S_CONFIG_UPLOAD_DIR = 300, // "CONFIG_UPLOAD_DIR" - S_CONFIG_UPLOAD_FILE_LIMIT = 301, // "CONFIG_UPLOAD_FILE_LIMIT" - S_CONFIG_UPLOAD_FILE_MODE = 302, // "CONFIG_UPLOAD_FILE_MODE" - S_CONFIG_VALUE_ABORT = 303, // "CONFIG_VALUE_ABORT" - S_CONFIG_VALUE_DETC = 304, // "CONFIG_VALUE_DETC" - S_CONFIG_VALUE_HTTPS = 305, // "CONFIG_VALUE_HTTPS" - S_CONFIG_VALUE_OFF = 306, // "CONFIG_VALUE_OFF" - S_CONFIG_VALUE_ON = 307, // "CONFIG_VALUE_ON" - S_CONFIG_VALUE_PARALLEL = 308, // "CONFIG_VALUE_PARALLEL" - S_CONFIG_VALUE_PROCESS_PARTIAL = 309, // "CONFIG_VALUE_PROCESS_PARTIAL" - S_CONFIG_VALUE_REJECT = 310, // "CONFIG_VALUE_REJECT" - S_CONFIG_VALUE_RELEVANT_ONLY = 311, // "CONFIG_VALUE_RELEVANT_ONLY" - S_CONFIG_VALUE_SERIAL = 312, // "CONFIG_VALUE_SERIAL" - S_CONFIG_VALUE_WARN = 313, // "CONFIG_VALUE_WARN" - S_CONFIG_XML_EXTERNAL_ENTITY = 314, // "CONFIG_XML_EXTERNAL_ENTITY" - S_CONGIG_DIR_RESPONSE_BODY_MP = 315, // "CONGIG_DIR_RESPONSE_BODY_MP" - S_CONGIG_DIR_SEC_ARG_SEP = 316, // "CONGIG_DIR_SEC_ARG_SEP" - S_CONGIG_DIR_SEC_COOKIE_FORMAT = 317, // "CONGIG_DIR_SEC_COOKIE_FORMAT" - S_CONFIG_SEC_COOKIEV0_SEPARATOR = 318, // "CONFIG_SEC_COOKIEV0_SEPARATOR" - S_CONGIG_DIR_SEC_DATA_DIR = 319, // "CONGIG_DIR_SEC_DATA_DIR" - S_CONGIG_DIR_SEC_STATUS_ENGINE = 320, // "CONGIG_DIR_SEC_STATUS_ENGINE" - S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION = 321, // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION = 322, // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - S_CONGIG_DIR_SEC_TMP_DIR = 323, // "CONGIG_DIR_SEC_TMP_DIR" - S_DIRECTIVE = 324, // "DIRECTIVE" - S_DIRECTIVE_SECRULESCRIPT = 325, // "DIRECTIVE_SECRULESCRIPT" - S_FREE_TEXT_QUOTE_MACRO_EXPANSION = 326, // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - S_QUOTATION_MARK = 327, // "QUOTATION_MARK" - S_RUN_TIME_VAR_BLD = 328, // "RUN_TIME_VAR_BLD" - S_RUN_TIME_VAR_DUR = 329, // "RUN_TIME_VAR_DUR" - S_RUN_TIME_VAR_HSV = 330, // "RUN_TIME_VAR_HSV" - S_RUN_TIME_VAR_REMOTE_USER = 331, // "RUN_TIME_VAR_REMOTE_USER" - S_RUN_TIME_VAR_TIME = 332, // "RUN_TIME_VAR_TIME" - S_RUN_TIME_VAR_TIME_DAY = 333, // "RUN_TIME_VAR_TIME_DAY" - S_RUN_TIME_VAR_TIME_EPOCH = 334, // "RUN_TIME_VAR_TIME_EPOCH" - S_RUN_TIME_VAR_TIME_HOUR = 335, // "RUN_TIME_VAR_TIME_HOUR" - S_RUN_TIME_VAR_TIME_MIN = 336, // "RUN_TIME_VAR_TIME_MIN" - S_RUN_TIME_VAR_TIME_MON = 337, // "RUN_TIME_VAR_TIME_MON" - S_RUN_TIME_VAR_TIME_SEC = 338, // "RUN_TIME_VAR_TIME_SEC" - S_RUN_TIME_VAR_TIME_WDAY = 339, // "RUN_TIME_VAR_TIME_WDAY" - S_RUN_TIME_VAR_TIME_YEAR = 340, // "RUN_TIME_VAR_TIME_YEAR" - S_VARIABLE = 341, // "VARIABLE" - S_DICT_ELEMENT = 342, // "Dictionary element" - S_DICT_ELEMENT_REGEXP = 343, // "Dictionary element, selected by regexp" - S_YYACCEPT = 344, // $accept - S_input = 345, // input - S_line = 346, // line - S_audit_log = 347, // audit_log - S_actions = 348, // actions - S_actions_may_quoted = 349, // actions_may_quoted - S_op = 350, // op - S_op_before_init = 351, // op_before_init - S_expression = 352, // expression - S_variables = 353, // variables - S_variables_pre_process = 354, // variables_pre_process - S_variables_may_be_quoted = 355, // variables_may_be_quoted - S_var = 356, // var - S_act = 357, // act - S_setvar_action = 358, // setvar_action - S_run_time_string = 359 // run_time_string + TOK_END = 0, + TOK_COMMA = 258, + TOK_CONFIG_CONTENT_INJECTION = 259, + TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR = 260, + TOK_PIPE = 261, + TOK_NEW_LINE = 262, + TOK_VAR_COUNT = 263, + TOK_VAR_EXCLUSION = 264, + TOK_VARIABLE_ARGS = 265, + TOK_VARIABLE_ARGS_POST = 266, + TOK_VARIABLE_ARGS_GET = 267, + TOK_VARIABLE_FILES_SIZES = 268, + TOK_VARIABLE_FILES_NAMES = 269, + TOK_VARIABLE_FILES_TMP_CONTENT = 270, + TOK_VARIABLE_MULTIPART_FILENAME = 271, + TOK_VARIABLE_MULTIPART_NAME = 272, + TOK_VARIABLE_MATCHED_VARS_NAMES = 273, + TOK_VARIABLE_MATCHED_VARS = 274, + TOK_VARIABLE_FILES = 275, + TOK_VARIABLE_REQUEST_COOKIES = 276, + TOK_VARIABLE_REQUEST_HEADERS = 277, + TOK_VARIABLE_RESPONSE_HEADERS = 278, + TOK_VARIABLE_GEO = 279, + TOK_VARIABLE_REQUEST_COOKIES_NAMES = 280, + TOK_VARIABLE_ARGS_COMBINED_SIZE = 281, + TOK_VARIABLE_ARGS_GET_NAMES = 282, + TOK_VARIABLE_RULE = 283, + TOK_VARIABLE_ARGS_NAMES = 284, + TOK_VARIABLE_ARGS_POST_NAMES = 285, + TOK_VARIABLE_AUTH_TYPE = 286, + TOK_VARIABLE_FILES_COMBINED_SIZE = 287, + TOK_VARIABLE_FILES_TMP_NAMES = 288, + TOK_VARIABLE_FULL_REQUEST = 289, + TOK_VARIABLE_FULL_REQUEST_LENGTH = 290, + TOK_VARIABLE_INBOUND_DATA_ERROR = 291, + TOK_VARIABLE_MATCHED_VAR = 292, + TOK_VARIABLE_MATCHED_VAR_NAME = 293, + TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED = 294, + TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE = 295, + TOK_VARIABLE_MULTIPART_CRLF_LF_LINES = 296, + TOK_VARIABLE_MULTIPART_DATA_AFTER = 297, + TOK_VARIABLE_MULTIPART_DATA_BEFORE = 298, + TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED = 299, + TOK_VARIABLE_MULTIPART_HEADER_FOLDING = 300, + TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING = 301, + TOK_VARIABLE_MULTIPART_INVALID_PART = 302, + TOK_VARIABLE_MULTIPART_INVALID_QUOTING = 303, + TOK_VARIABLE_MULTIPART_LF_LINE = 304, + TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON = 305, + TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING = 306, + TOK_VARIABLE_MULTIPART_STRICT_ERROR = 307, + TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY = 308, + TOK_VARIABLE_OUTBOUND_DATA_ERROR = 309, + TOK_VARIABLE_PATH_INFO = 310, + TOK_VARIABLE_QUERY_STRING = 311, + TOK_VARIABLE_REMOTE_ADDR = 312, + TOK_VARIABLE_REMOTE_HOST = 313, + TOK_VARIABLE_REMOTE_PORT = 314, + TOK_VARIABLE_REQBODY_ERROR_MSG = 315, + TOK_VARIABLE_REQBODY_ERROR = 316, + TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG = 317, + TOK_VARIABLE_REQBODY_PROCESSOR_ERROR = 318, + TOK_VARIABLE_REQBODY_PROCESSOR = 319, + TOK_VARIABLE_REQUEST_BASENAME = 320, + TOK_VARIABLE_REQUEST_BODY_LENGTH = 321, + TOK_VARIABLE_REQUEST_BODY = 322, + TOK_VARIABLE_REQUEST_FILE_NAME = 323, + TOK_VARIABLE_REQUEST_HEADERS_NAMES = 324, + TOK_VARIABLE_REQUEST_LINE = 325, + TOK_VARIABLE_REQUEST_METHOD = 326, + TOK_VARIABLE_REQUEST_PROTOCOL = 327, + TOK_VARIABLE_REQUEST_URI_RAW = 328, + TOK_VARIABLE_REQUEST_URI = 329, + TOK_VARIABLE_RESOURCE = 330, + TOK_VARIABLE_RESPONSE_BODY = 331, + TOK_VARIABLE_RESPONSE_CONTENT_LENGTH = 332, + TOK_VARIABLE_RESPONSE_CONTENT_TYPE = 333, + TOK_VARIABLE_RESPONSE_HEADERS_NAMES = 334, + TOK_VARIABLE_RESPONSE_PROTOCOL = 335, + TOK_VARIABLE_RESPONSE_STATUS = 336, + TOK_VARIABLE_SERVER_ADDR = 337, + TOK_VARIABLE_SERVER_NAME = 338, + TOK_VARIABLE_SERVER_PORT = 339, + TOK_VARIABLE_SESSION_ID = 340, + TOK_VARIABLE_UNIQUE_ID = 341, + TOK_VARIABLE_URL_ENCODED_ERROR = 342, + TOK_VARIABLE_USER_ID = 343, + TOK_VARIABLE_WEB_APP_ID = 344, + TOK_VARIABLE_STATUS = 345, + TOK_VARIABLE_STATUS_LINE = 346, + TOK_VARIABLE_IP = 347, + TOK_VARIABLE_GLOBAL = 348, + TOK_VARIABLE_TX = 349, + TOK_VARIABLE_SESSION = 350, + TOK_VARIABLE_USER = 351, + TOK_RUN_TIME_VAR_ENV = 352, + TOK_RUN_TIME_VAR_XML = 353, + TOK_ACTION_SETVAR = 354, + TOK_SETVAR_OPERATION_EQUALS = 355, + TOK_SETVAR_OPERATION_EQUALS_PLUS = 356, + TOK_SETVAR_OPERATION_EQUALS_MINUS = 357, + TOK_NOT = 358, + TOK_OPERATOR_BEGINS_WITH = 359, + TOK_OPERATOR_CONTAINS = 360, + TOK_OPERATOR_CONTAINS_WORD = 361, + TOK_OPERATOR_DETECT_SQLI = 362, + TOK_OPERATOR_DETECT_XSS = 363, + TOK_OPERATOR_ENDS_WITH = 364, + TOK_OPERATOR_EQ = 365, + TOK_OPERATOR_FUZZY_HASH = 366, + TOK_OPERATOR_GEOLOOKUP = 367, + TOK_OPERATOR_GE = 368, + TOK_OPERATOR_GSB_LOOKUP = 369, + TOK_OPERATOR_GT = 370, + TOK_OPERATOR_INSPECT_FILE = 371, + TOK_OPERATOR_IP_MATCH_FROM_FILE = 372, + TOK_OPERATOR_IP_MATCH = 373, + TOK_OPERATOR_LE = 374, + TOK_OPERATOR_LT = 375, + TOK_OPERATOR_PM_FROM_FILE = 376, + TOK_OPERATOR_PM = 377, + TOK_OPERATOR_RBL = 378, + TOK_OPERATOR_RSUB = 379, + TOK_OPERATOR_RX_CONTENT_ONLY = 380, + TOK_OPERATOR_RX = 381, + TOK_OPERATOR_RX_GLOBAL = 382, + TOK_OPERATOR_STR_EQ = 383, + TOK_OPERATOR_STR_MATCH = 384, + TOK_OPERATOR_UNCONDITIONAL_MATCH = 385, + TOK_OPERATOR_VALIDATE_BYTE_RANGE = 386, + TOK_OPERATOR_VALIDATE_DTD = 387, + TOK_OPERATOR_VALIDATE_HASH = 388, + TOK_OPERATOR_VALIDATE_SCHEMA = 389, + TOK_OPERATOR_VALIDATE_URL_ENCODING = 390, + TOK_OPERATOR_VALIDATE_UTF8_ENCODING = 391, + TOK_OPERATOR_VERIFY_CC = 392, + TOK_OPERATOR_VERIFY_CPF = 393, + TOK_OPERATOR_VERIFY_SSN = 394, + TOK_OPERATOR_VERIFY_SVNR = 395, + TOK_OPERATOR_WITHIN = 396, + TOK_CONFIG_DIR_AUDIT_LOG_FMT = 397, + TOK_JSON = 398, + TOK_NATIVE = 399, + TOK_ACTION_CTL_RULE_ENGINE = 400, + TOK_ACTION_ACCURACY = 401, + TOK_ACTION_ALLOW = 402, + TOK_ACTION_APPEND = 403, + TOK_ACTION_AUDIT_LOG = 404, + TOK_ACTION_BLOCK = 405, + TOK_ACTION_CAPTURE = 406, + TOK_ACTION_CHAIN = 407, + TOK_ACTION_CTL_AUDIT_ENGINE = 408, + TOK_ACTION_CTL_AUDIT_LOG_PARTS = 409, + TOK_ACTION_CTL_BDY_JSON = 410, + TOK_ACTION_CTL_BDY_XML = 411, + TOK_ACTION_CTL_BDY_URLENCODED = 412, + TOK_ACTION_CTL_FORCE_REQ_BODY_VAR = 413, + TOK_ACTION_CTL_REQUEST_BODY_ACCESS = 414, + TOK_ACTION_CTL_RULE_REMOVE_BY_ID = 415, + TOK_ACTION_CTL_RULE_REMOVE_BY_TAG = 416, + TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID = 417, + TOK_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG = 418, + TOK_ACTION_DENY = 419, + TOK_ACTION_DEPRECATE_VAR = 420, + TOK_ACTION_DROP = 421, + TOK_ACTION_EXEC = 422, + TOK_ACTION_EXPIRE_VAR = 423, + TOK_ACTION_ID = 424, + TOK_ACTION_INITCOL = 425, + TOK_ACTION_LOG = 426, + TOK_ACTION_LOG_DATA = 427, + TOK_ACTION_MATURITY = 428, + TOK_ACTION_MSG = 429, + TOK_ACTION_MULTI_MATCH = 430, + TOK_ACTION_NO_AUDIT_LOG = 431, + TOK_ACTION_NO_LOG = 432, + TOK_ACTION_PASS = 433, + TOK_ACTION_PAUSE = 434, + TOK_ACTION_PHASE = 435, + TOK_ACTION_PREPEND = 436, + TOK_ACTION_PROXY = 437, + TOK_ACTION_REDIRECT = 438, + TOK_ACTION_REV = 439, + TOK_ACTION_SANITISE_ARG = 440, + TOK_ACTION_SANITISE_MATCHED = 441, + TOK_ACTION_SANITISE_MATCHED_BYTES = 442, + TOK_ACTION_SANITISE_REQUEST_HEADER = 443, + TOK_ACTION_SANITISE_RESPONSE_HEADER = 444, + TOK_ACTION_SETENV = 445, + TOK_ACTION_SETRSC = 446, + TOK_ACTION_SETSID = 447, + TOK_ACTION_SETUID = 448, + TOK_ACTION_SEVERITY = 449, + TOK_ACTION_SKIP = 450, + TOK_ACTION_SKIP_AFTER = 451, + TOK_ACTION_STATUS = 452, + TOK_ACTION_TAG = 453, + TOK_ACTION_TRANSFORMATION_BASE_64_ENCODE = 454, + TOK_ACTION_TRANSFORMATION_BASE_64_DECODE = 455, + TOK_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT = 456, + TOK_ACTION_TRANSFORMATION_CMD_LINE = 457, + TOK_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE = 458, + TOK_ACTION_TRANSFORMATION_CSS_DECODE = 459, + TOK_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE = 460, + TOK_ACTION_TRANSFORMATION_HEX_ENCODE = 461, + TOK_ACTION_TRANSFORMATION_HEX_DECODE = 462, + TOK_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE = 463, + TOK_ACTION_TRANSFORMATION_JS_DECODE = 464, + TOK_ACTION_TRANSFORMATION_LENGTH = 465, + TOK_ACTION_TRANSFORMATION_LOWERCASE = 466, + TOK_ACTION_TRANSFORMATION_PHP_ARGS_NAMES = 467, + TOK_ACTION_TRANSFORMATION_MD5 = 468, + TOK_ACTION_TRANSFORMATION_NONE = 469, + TOK_ACTION_TRANSFORMATION_NORMALISE_PATH = 470, + TOK_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN = 471, + TOK_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT = 472, + TOK_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT = 473, + TOK_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT = 474, + TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS = 475, + TOK_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR = 476, + TOK_ACTION_TRANSFORMATION_REMOVE_NULLS = 477, + TOK_ACTION_TRANSFORMATION_REMOVE_WHITESPACE = 478, + TOK_ACTION_TRANSFORMATION_REPLACE_COMMENTS = 479, + TOK_ACTION_TRANSFORMATION_REPLACE_NULLS = 480, + TOK_ACTION_TRANSFORMATION_SHA1 = 481, + TOK_ACTION_TRANSFORMATION_SQL_HEX_DECODE = 482, + TOK_ACTION_TRANSFORMATION_TRIM = 483, + TOK_ACTION_TRANSFORMATION_TRIM_LEFT = 484, + TOK_ACTION_TRANSFORMATION_TRIM_RIGHT = 485, + TOK_ACTION_TRANSFORMATION_UPPERCASE = 486, + TOK_ACTION_TRANSFORMATION_URL_ENCODE = 487, + TOK_ACTION_TRANSFORMATION_URL_DECODE = 488, + TOK_ACTION_TRANSFORMATION_URL_DECODE_UNI = 489, + TOK_ACTION_TRANSFORMATION_UTF8_TO_UNICODE = 490, + TOK_ACTION_VER = 491, + TOK_ACTION_XMLNS = 492, + TOK_CONFIG_COMPONENT_SIG = 493, + TOK_CONFIG_CONN_ENGINE = 494, + TOK_CONFIG_SEC_ARGUMENT_SEPARATOR = 495, + TOK_CONFIG_SEC_WEB_APP_ID = 496, + TOK_CONFIG_SEC_SERVER_SIG = 497, + TOK_CONFIG_DIR_AUDIT_DIR = 498, + TOK_CONFIG_DIR_AUDIT_DIR_MOD = 499, + TOK_CONFIG_DIR_AUDIT_ENG = 500, + TOK_CONFIG_DIR_AUDIT_FLE_MOD = 501, + TOK_CONFIG_DIR_AUDIT_LOG = 502, + TOK_CONFIG_DIR_AUDIT_LOG2 = 503, + TOK_CONFIG_DIR_AUDIT_LOG_P = 504, + TOK_CONFIG_DIR_AUDIT_STS = 505, + TOK_CONFIG_DIR_AUDIT_TPE = 506, + TOK_CONFIG_DIR_DEBUG_LOG = 507, + TOK_CONFIG_DIR_DEBUG_LVL = 508, + TOK_CONFIG_SEC_CACHE_TRANSFORMATIONS = 509, + TOK_CONFIG_SEC_DISABLE_BACKEND_COMPRESS = 510, + TOK_CONFIG_SEC_HASH_ENGINE = 511, + TOK_CONFIG_SEC_HASH_KEY = 512, + TOK_CONFIG_SEC_HASH_PARAM = 513, + TOK_CONFIG_SEC_HASH_METHOD_RX = 514, + TOK_CONFIG_SEC_HASH_METHOD_PM = 515, + TOK_CONFIG_SEC_CHROOT_DIR = 516, + TOK_CONFIG_DIR_GEO_DB = 517, + TOK_CONFIG_DIR_GSB_DB = 518, + TOK_CONFIG_SEC_GUARDIAN_LOG = 519, + TOK_CONFIG_DIR_PCRE_MATCH_LIMIT = 520, + TOK_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION = 521, + TOK_CONFIG_SEC_CONN_R_STATE_LIMIT = 522, + TOK_CONFIG_SEC_CONN_W_STATE_LIMIT = 523, + TOK_CONFIG_SEC_SENSOR_ID = 524, + TOK_CONFIG_DIR_ARGS_LIMIT = 525, + TOK_CONFIG_DIR_REQ_BODY = 526, + TOK_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT = 527, + TOK_CONFIG_DIR_REQ_BODY_LIMIT = 528, + TOK_CONFIG_DIR_REQ_BODY_LIMIT_ACTION = 529, + TOK_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT = 530, + TOK_CONFIG_DIR_RES_BODY = 531, + TOK_CONFIG_DIR_RES_BODY_LIMIT = 532, + TOK_CONFIG_DIR_RES_BODY_LIMIT_ACTION = 533, + TOK_CONFIG_SEC_RULE_INHERITANCE = 534, + TOK_CONFIG_SEC_RULE_PERF_TIME = 535, + TOK_CONFIG_DIR_RULE_ENG = 536, + TOK_CONFIG_DIR_SEC_ACTION = 537, + TOK_CONFIG_DIR_SEC_DEFAULT_ACTION = 538, + TOK_CONFIG_DIR_SEC_MARKER = 539, + TOK_CONFIG_DIR_UNICODE_MAP_FILE = 540, + TOK_CONFIG_DIR_UNICODE_CODE_PAGE = 541, + TOK_CONFIG_SEC_COLLECTION_TIMEOUT = 542, + TOK_CONFIG_SEC_HTTP_BLKEY = 543, + TOK_CONFIG_SEC_INTERCEPT_ON_ERROR = 544, + TOK_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION = 545, + TOK_CONFIG_SEC_RULE_REMOVE_BY_ID = 546, + TOK_CONFIG_SEC_RULE_REMOVE_BY_MSG = 547, + TOK_CONFIG_SEC_RULE_REMOVE_BY_TAG = 548, + TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG = 549, + TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG = 550, + TOK_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID = 551, + TOK_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID = 552, + TOK_CONFIG_UPDLOAD_KEEP_FILES = 553, + TOK_CONFIG_UPDLOAD_SAVE_TMP_FILES = 554, + TOK_CONFIG_UPLOAD_DIR = 555, + TOK_CONFIG_UPLOAD_FILE_LIMIT = 556, + TOK_CONFIG_UPLOAD_FILE_MODE = 557, + TOK_CONFIG_VALUE_ABORT = 558, + TOK_CONFIG_VALUE_DETC = 559, + TOK_CONFIG_VALUE_HTTPS = 560, + TOK_CONFIG_VALUE_OFF = 561, + TOK_CONFIG_VALUE_ON = 562, + TOK_CONFIG_VALUE_PARALLEL = 563, + TOK_CONFIG_VALUE_PROCESS_PARTIAL = 564, + TOK_CONFIG_VALUE_REJECT = 565, + TOK_CONFIG_VALUE_RELEVANT_ONLY = 566, + TOK_CONFIG_VALUE_SERIAL = 567, + TOK_CONFIG_VALUE_WARN = 568, + TOK_CONFIG_XML_EXTERNAL_ENTITY = 569, + TOK_CONGIG_DIR_RESPONSE_BODY_MP = 570, + TOK_CONGIG_DIR_SEC_ARG_SEP = 571, + TOK_CONGIG_DIR_SEC_COOKIE_FORMAT = 572, + TOK_CONFIG_SEC_COOKIEV0_SEPARATOR = 573, + TOK_CONGIG_DIR_SEC_DATA_DIR = 574, + TOK_CONGIG_DIR_SEC_STATUS_ENGINE = 575, + TOK_CONFIG_SEC_STREAM_IN_BODY_INSPECTION = 576, + TOK_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION = 577, + TOK_CONGIG_DIR_SEC_TMP_DIR = 578, + TOK_DIRECTIVE = 579, + TOK_DIRECTIVE_SECRULESCRIPT = 580, + TOK_FREE_TEXT_QUOTE_MACRO_EXPANSION = 581, + TOK_QUOTATION_MARK = 582, + TOK_RUN_TIME_VAR_BLD = 583, + TOK_RUN_TIME_VAR_DUR = 584, + TOK_RUN_TIME_VAR_HSV = 585, + TOK_RUN_TIME_VAR_REMOTE_USER = 586, + TOK_RUN_TIME_VAR_TIME = 587, + TOK_RUN_TIME_VAR_TIME_DAY = 588, + TOK_RUN_TIME_VAR_TIME_EPOCH = 589, + TOK_RUN_TIME_VAR_TIME_HOUR = 590, + TOK_RUN_TIME_VAR_TIME_MIN = 591, + TOK_RUN_TIME_VAR_TIME_MON = 592, + TOK_RUN_TIME_VAR_TIME_SEC = 593, + TOK_RUN_TIME_VAR_TIME_WDAY = 594, + TOK_RUN_TIME_VAR_TIME_YEAR = 595, + TOK_VARIABLE = 596, + TOK_DICT_ELEMENT = 597, + TOK_DICT_ELEMENT_REGEXP = 598 }; }; - /// (Internal) symbol kind. - typedef symbol_kind::symbol_kind_type symbol_kind_type; + /// (External) token type, as returned by yylex. + typedef token::yytokentype token_type; - /// The number of tokens. - static const symbol_kind_type YYNTOKENS = symbol_kind::YYNTOKENS; + /// Symbol type: an internal symbol number. + typedef int symbol_number_type; + + /// The symbol type number to denote an empty symbol. + enum { empty_symbol = -2 }; + + /// Internal symbol number for tokens (subsumed by symbol_number_type). + typedef short token_number_type; /// A complete symbol. /// - /// Expects its Base type to provide access to the symbol kind - /// via kind (). + /// Expects its Base type to provide access to the symbol type + /// via type_get (). /// /// Provide access to semantic value and location. template @@ -1720,248 +1334,7 @@ namespace yy { #if 201103L <= YY_CPLUSPLUS /// Move constructor. - basic_symbol (basic_symbol&& that) - : Base (std::move (that)) - , value () - , location (std::move (that.location)) - { - switch (this->kind ()) - { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" - value.move< std::string > (std::move (that.value)); - break; - - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init - value.move< std::unique_ptr > (std::move (that.value)); - break; - - case symbol_kind::S_run_time_string: // run_time_string - value.move< std::unique_ptr > (std::move (that.value)); - break; - - case symbol_kind::S_var: // var - value.move< std::unique_ptr > (std::move (that.value)); - break; - - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action - value.move< std::unique_ptr > (std::move (that.value)); - break; - - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted - value.move< std::unique_ptr > > > (std::move (that.value)); - break; - - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted - value.move< std::unique_ptr > > > (std::move (that.value)); - break; - - default: - break; - } - - } + basic_symbol (basic_symbol&& that); #endif /// Copy constructor. @@ -2081,245 +1454,245 @@ namespace yy { void clear () { // User destructor. - symbol_kind_type yykind = this->kind (); + symbol_number_type yytype = this->type_get (); basic_symbol& yysym = *this; (void) yysym; - switch (yykind) + switch (yytype) { default: break; } - // Value type destructor. -switch (yykind) + // Type destructor. +switch (yytype) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" value.template destroy< std::string > (); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init value.template destroy< std::unique_ptr > (); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string value.template destroy< std::unique_ptr > (); break; - case symbol_kind::S_var: // var + case 356: // var value.template destroy< std::unique_ptr > (); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action value.template destroy< std::unique_ptr > (); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted value.template destroy< std::unique_ptr > > > (); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted value.template destroy< std::unique_ptr > > > (); break; @@ -2330,15 +1703,6 @@ switch (yykind) Base::clear (); } - /// The user-facing name of this symbol. - std::string name () const YY_NOEXCEPT - { - return seclang_parser::symbol_name (this->kind ()); - } - - /// Backward compatibility (Bison 3.6). - symbol_kind_type type_get () const YY_NOEXCEPT; - /// Whether empty. bool empty () const YY_NOEXCEPT; @@ -2359,51 +1723,46 @@ switch (yykind) }; /// Type access provider for token (enum) based symbols. - struct by_kind + struct by_type { /// Default constructor. - by_kind (); + by_type (); #if 201103L <= YY_CPLUSPLUS /// Move constructor. - by_kind (by_kind&& that); + by_type (by_type&& that); #endif /// Copy constructor. - by_kind (const by_kind& that); + by_type (const by_type& that); - /// The symbol kind as needed by the constructor. - typedef token_kind_type kind_type; + /// The symbol type as needed by the constructor. + typedef token_type kind_type; /// Constructor from (external) token numbers. - by_kind (kind_type t); + by_type (kind_type t); /// Record that this symbol is empty. void clear (); - /// Steal the symbol kind from \a that. - void move (by_kind& that); + /// Steal the symbol type from \a that. + void move (by_type& that); /// The (internal) type number (corresponding to \a type). /// \a empty when empty. - symbol_kind_type kind () const YY_NOEXCEPT; + symbol_number_type type_get () const YY_NOEXCEPT; - /// Backward compatibility (Bison 3.6). - symbol_kind_type type_get () const YY_NOEXCEPT; - - /// The symbol kind. - /// \a S_YYEMPTY when empty. - symbol_kind_type kind_; + /// The symbol type. + /// \a empty_symbol when empty. + /// An int, not token_number_type, to be able to store empty_symbol. + int type; }; - /// Backward compatibility for a private implementation detail (Bison 3.6). - typedef by_kind by_type; - /// "External" symbols: returned by the scanner. - struct symbol_type : basic_symbol + struct symbol_type : basic_symbol { /// Superclass. - typedef basic_symbol super_type; + typedef basic_symbol super_type; /// Empty symbol. symbol_type () {} @@ -2413,13 +1772,13 @@ switch (yykind) symbol_type (int tok, location_type l) : super_type(token_type (tok), std::move (l)) { - YY_ASSERT (tok == token::TOK_END || tok == token::TOK_YYerror || tok == token::TOK_YYUNDEF || tok == token::TOK_COMMA || tok == token::TOK_CONFIG_CONTENT_INJECTION || tok == token::TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR || tok == token::TOK_PIPE || tok == token::TOK_NEW_LINE || tok == token::TOK_VAR_COUNT || tok == token::TOK_VAR_EXCLUSION || tok == token::TOK_VARIABLE_ARGS || tok == token::TOK_VARIABLE_ARGS_POST || tok == token::TOK_VARIABLE_ARGS_GET || tok == token::TOK_VARIABLE_FILES_SIZES || tok == token::TOK_VARIABLE_FILES_NAMES || tok == token::TOK_VARIABLE_FILES_TMP_CONTENT || tok == token::TOK_VARIABLE_MULTIPART_FILENAME || tok == token::TOK_VARIABLE_MULTIPART_NAME || tok == token::TOK_VARIABLE_MATCHED_VARS_NAMES || tok == token::TOK_VARIABLE_MATCHED_VARS || tok == token::TOK_VARIABLE_FILES || tok == token::TOK_VARIABLE_REQUEST_COOKIES || tok == token::TOK_VARIABLE_REQUEST_HEADERS || tok == token::TOK_VARIABLE_RESPONSE_HEADERS || tok == token::TOK_VARIABLE_GEO || tok == token::TOK_VARIABLE_REQUEST_COOKIES_NAMES || tok == token::TOK_VARIABLE_ARGS_COMBINED_SIZE || tok == token::TOK_VARIABLE_ARGS_GET_NAMES || tok == token::TOK_VARIABLE_RULE || tok == token::TOK_VARIABLE_ARGS_NAMES || tok == token::TOK_VARIABLE_ARGS_POST_NAMES || tok == token::TOK_VARIABLE_AUTH_TYPE || tok == token::TOK_VARIABLE_FILES_COMBINED_SIZE || tok == token::TOK_VARIABLE_FILES_TMP_NAMES || tok == token::TOK_VARIABLE_FULL_REQUEST || tok == token::TOK_VARIABLE_FULL_REQUEST_LENGTH || tok == token::TOK_VARIABLE_INBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_MATCHED_VAR || tok == token::TOK_VARIABLE_MATCHED_VAR_NAME || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE || tok == token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES || tok == token::TOK_VARIABLE_MULTIPART_DATA_AFTER || tok == token::TOK_VARIABLE_MULTIPART_DATA_BEFORE || tok == token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED || tok == token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_PART || tok == token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING || tok == token::TOK_VARIABLE_MULTIPART_LF_LINE || tok == token::TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON || tok == token::TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING || tok == token::TOK_VARIABLE_MULTIPART_STRICT_ERROR || tok == token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY || tok == token::TOK_VARIABLE_OUTBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_PATH_INFO || tok == token::TOK_VARIABLE_QUERY_STRING || tok == token::TOK_VARIABLE_REMOTE_ADDR || tok == token::TOK_VARIABLE_REMOTE_HOST || tok == token::TOK_VARIABLE_REMOTE_PORT || tok == token::TOK_VARIABLE_REQBODY_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR || tok == token::TOK_VARIABLE_REQUEST_BASENAME || tok == token::TOK_VARIABLE_REQUEST_BODY_LENGTH || tok == token::TOK_VARIABLE_REQUEST_BODY || tok == token::TOK_VARIABLE_REQUEST_FILE_NAME || tok == token::TOK_VARIABLE_REQUEST_HEADERS_NAMES || tok == token::TOK_VARIABLE_REQUEST_LINE || tok == token::TOK_VARIABLE_REQUEST_METHOD || tok == token::TOK_VARIABLE_REQUEST_PROTOCOL || tok == token::TOK_VARIABLE_REQUEST_URI_RAW || tok == token::TOK_VARIABLE_REQUEST_URI || tok == token::TOK_VARIABLE_RESOURCE || tok == token::TOK_VARIABLE_RESPONSE_BODY || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE || tok == token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES || tok == token::TOK_VARIABLE_RESPONSE_PROTOCOL || tok == token::TOK_VARIABLE_RESPONSE_STATUS || tok == token::TOK_VARIABLE_SERVER_ADDR || tok == token::TOK_VARIABLE_SERVER_NAME || tok == token::TOK_VARIABLE_SERVER_PORT || tok == token::TOK_VARIABLE_SESSION_ID || tok == token::TOK_VARIABLE_UNIQUE_ID || tok == token::TOK_VARIABLE_URL_ENCODED_ERROR || tok == token::TOK_VARIABLE_USER_ID || tok == token::TOK_VARIABLE_WEB_APP_ID || tok == token::TOK_VARIABLE_STATUS || tok == token::TOK_VARIABLE_STATUS_LINE || tok == token::TOK_VARIABLE_IP || tok == token::TOK_VARIABLE_GLOBAL || tok == token::TOK_VARIABLE_TX || tok == token::TOK_VARIABLE_SESSION || tok == token::TOK_VARIABLE_USER || tok == token::TOK_RUN_TIME_VAR_ENV || tok == token::TOK_RUN_TIME_VAR_XML || tok == token::TOK_ACTION_SETVAR || tok == token::TOK_SETVAR_OPERATION_EQUALS || tok == token::TOK_SETVAR_OPERATION_EQUALS_PLUS || tok == token::TOK_SETVAR_OPERATION_EQUALS_MINUS || tok == token::TOK_NOT || tok == token::TOK_OPERATOR_BEGINS_WITH || tok == token::TOK_OPERATOR_CONTAINS || tok == token::TOK_OPERATOR_CONTAINS_WORD || tok == token::TOK_OPERATOR_DETECT_SQLI || tok == token::TOK_OPERATOR_DETECT_XSS || tok == token::TOK_OPERATOR_ENDS_WITH || tok == token::TOK_OPERATOR_EQ || tok == token::TOK_OPERATOR_FUZZY_HASH || tok == token::TOK_OPERATOR_GEOLOOKUP || tok == token::TOK_OPERATOR_GE || tok == token::TOK_OPERATOR_GSB_LOOKUP || tok == token::TOK_OPERATOR_GT || tok == token::TOK_OPERATOR_INSPECT_FILE || tok == token::TOK_OPERATOR_IP_MATCH_FROM_FILE || tok == token::TOK_OPERATOR_IP_MATCH || tok == token::TOK_OPERATOR_LE || tok == token::TOK_OPERATOR_LT || tok == token::TOK_OPERATOR_PM_FROM_FILE || tok == token::TOK_OPERATOR_PM || tok == token::TOK_OPERATOR_RBL || tok == token::TOK_OPERATOR_RSUB || tok == token::TOK_OPERATOR_RX_CONTENT_ONLY || tok == token::TOK_OPERATOR_RX || tok == token::TOK_OPERATOR_RX_GLOBAL || tok == token::TOK_OPERATOR_STR_EQ || tok == token::TOK_OPERATOR_STR_MATCH || tok == token::TOK_OPERATOR_UNCONDITIONAL_MATCH || tok == token::TOK_OPERATOR_VALIDATE_BYTE_RANGE || tok == token::TOK_OPERATOR_VALIDATE_DTD || tok == token::TOK_OPERATOR_VALIDATE_HASH || tok == token::TOK_OPERATOR_VALIDATE_SCHEMA || tok == token::TOK_OPERATOR_VALIDATE_URL_ENCODING || tok == token::TOK_OPERATOR_VALIDATE_UTF8_ENCODING || tok == token::TOK_OPERATOR_VERIFY_CC || tok == token::TOK_OPERATOR_VERIFY_CPF || tok == token::TOK_OPERATOR_VERIFY_SSN || tok == token::TOK_OPERATOR_VERIFY_SVNR || tok == token::TOK_OPERATOR_WITHIN || tok == token::TOK_CONFIG_DIR_AUDIT_LOG_FMT || tok == token::TOK_JSON || tok == token::TOK_NATIVE || tok == token::TOK_ACTION_CTL_RULE_ENGINE); + YY_ASSERT (tok == token::TOK_END || tok == token::TOK_COMMA || tok == token::TOK_CONFIG_CONTENT_INJECTION || tok == token::TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR || tok == token::TOK_PIPE || tok == token::TOK_NEW_LINE || tok == token::TOK_VAR_COUNT || tok == token::TOK_VAR_EXCLUSION || tok == token::TOK_VARIABLE_ARGS || tok == token::TOK_VARIABLE_ARGS_POST || tok == token::TOK_VARIABLE_ARGS_GET || tok == token::TOK_VARIABLE_FILES_SIZES || tok == token::TOK_VARIABLE_FILES_NAMES || tok == token::TOK_VARIABLE_FILES_TMP_CONTENT || tok == token::TOK_VARIABLE_MULTIPART_FILENAME || tok == token::TOK_VARIABLE_MULTIPART_NAME || tok == token::TOK_VARIABLE_MATCHED_VARS_NAMES || tok == token::TOK_VARIABLE_MATCHED_VARS || tok == token::TOK_VARIABLE_FILES || tok == token::TOK_VARIABLE_REQUEST_COOKIES || tok == token::TOK_VARIABLE_REQUEST_HEADERS || tok == token::TOK_VARIABLE_RESPONSE_HEADERS || tok == token::TOK_VARIABLE_GEO || tok == token::TOK_VARIABLE_REQUEST_COOKIES_NAMES || tok == token::TOK_VARIABLE_ARGS_COMBINED_SIZE || tok == token::TOK_VARIABLE_ARGS_GET_NAMES || tok == token::TOK_VARIABLE_RULE || tok == token::TOK_VARIABLE_ARGS_NAMES || tok == token::TOK_VARIABLE_ARGS_POST_NAMES || tok == token::TOK_VARIABLE_AUTH_TYPE || tok == token::TOK_VARIABLE_FILES_COMBINED_SIZE || tok == token::TOK_VARIABLE_FILES_TMP_NAMES || tok == token::TOK_VARIABLE_FULL_REQUEST || tok == token::TOK_VARIABLE_FULL_REQUEST_LENGTH || tok == token::TOK_VARIABLE_INBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_MATCHED_VAR || tok == token::TOK_VARIABLE_MATCHED_VAR_NAME || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE || tok == token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES || tok == token::TOK_VARIABLE_MULTIPART_DATA_AFTER || tok == token::TOK_VARIABLE_MULTIPART_DATA_BEFORE || tok == token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED || tok == token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_PART || tok == token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING || tok == token::TOK_VARIABLE_MULTIPART_LF_LINE || tok == token::TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON || tok == token::TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING || tok == token::TOK_VARIABLE_MULTIPART_STRICT_ERROR || tok == token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY || tok == token::TOK_VARIABLE_OUTBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_PATH_INFO || tok == token::TOK_VARIABLE_QUERY_STRING || tok == token::TOK_VARIABLE_REMOTE_ADDR || tok == token::TOK_VARIABLE_REMOTE_HOST || tok == token::TOK_VARIABLE_REMOTE_PORT || tok == token::TOK_VARIABLE_REQBODY_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR || tok == token::TOK_VARIABLE_REQUEST_BASENAME || tok == token::TOK_VARIABLE_REQUEST_BODY_LENGTH || tok == token::TOK_VARIABLE_REQUEST_BODY || tok == token::TOK_VARIABLE_REQUEST_FILE_NAME || tok == token::TOK_VARIABLE_REQUEST_HEADERS_NAMES || tok == token::TOK_VARIABLE_REQUEST_LINE || tok == token::TOK_VARIABLE_REQUEST_METHOD || tok == token::TOK_VARIABLE_REQUEST_PROTOCOL || tok == token::TOK_VARIABLE_REQUEST_URI_RAW || tok == token::TOK_VARIABLE_REQUEST_URI || tok == token::TOK_VARIABLE_RESOURCE || tok == token::TOK_VARIABLE_RESPONSE_BODY || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE || tok == token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES || tok == token::TOK_VARIABLE_RESPONSE_PROTOCOL || tok == token::TOK_VARIABLE_RESPONSE_STATUS || tok == token::TOK_VARIABLE_SERVER_ADDR || tok == token::TOK_VARIABLE_SERVER_NAME || tok == token::TOK_VARIABLE_SERVER_PORT || tok == token::TOK_VARIABLE_SESSION_ID || tok == token::TOK_VARIABLE_UNIQUE_ID || tok == token::TOK_VARIABLE_URL_ENCODED_ERROR || tok == token::TOK_VARIABLE_USER_ID || tok == token::TOK_VARIABLE_WEB_APP_ID || tok == token::TOK_VARIABLE_STATUS || tok == token::TOK_VARIABLE_STATUS_LINE || tok == token::TOK_VARIABLE_IP || tok == token::TOK_VARIABLE_GLOBAL || tok == token::TOK_VARIABLE_TX || tok == token::TOK_VARIABLE_SESSION || tok == token::TOK_VARIABLE_USER || tok == token::TOK_RUN_TIME_VAR_ENV || tok == token::TOK_RUN_TIME_VAR_XML || tok == token::TOK_ACTION_SETVAR || tok == token::TOK_SETVAR_OPERATION_EQUALS || tok == token::TOK_SETVAR_OPERATION_EQUALS_PLUS || tok == token::TOK_SETVAR_OPERATION_EQUALS_MINUS || tok == token::TOK_NOT || tok == token::TOK_OPERATOR_BEGINS_WITH || tok == token::TOK_OPERATOR_CONTAINS || tok == token::TOK_OPERATOR_CONTAINS_WORD || tok == token::TOK_OPERATOR_DETECT_SQLI || tok == token::TOK_OPERATOR_DETECT_XSS || tok == token::TOK_OPERATOR_ENDS_WITH || tok == token::TOK_OPERATOR_EQ || tok == token::TOK_OPERATOR_FUZZY_HASH || tok == token::TOK_OPERATOR_GEOLOOKUP || tok == token::TOK_OPERATOR_GE || tok == token::TOK_OPERATOR_GSB_LOOKUP || tok == token::TOK_OPERATOR_GT || tok == token::TOK_OPERATOR_INSPECT_FILE || tok == token::TOK_OPERATOR_IP_MATCH_FROM_FILE || tok == token::TOK_OPERATOR_IP_MATCH || tok == token::TOK_OPERATOR_LE || tok == token::TOK_OPERATOR_LT || tok == token::TOK_OPERATOR_PM_FROM_FILE || tok == token::TOK_OPERATOR_PM || tok == token::TOK_OPERATOR_RBL || tok == token::TOK_OPERATOR_RSUB || tok == token::TOK_OPERATOR_RX_CONTENT_ONLY || tok == token::TOK_OPERATOR_RX || tok == token::TOK_OPERATOR_RX_GLOBAL || tok == token::TOK_OPERATOR_STR_EQ || tok == token::TOK_OPERATOR_STR_MATCH || tok == token::TOK_OPERATOR_UNCONDITIONAL_MATCH || tok == token::TOK_OPERATOR_VALIDATE_BYTE_RANGE || tok == token::TOK_OPERATOR_VALIDATE_DTD || tok == token::TOK_OPERATOR_VALIDATE_HASH || tok == token::TOK_OPERATOR_VALIDATE_SCHEMA || tok == token::TOK_OPERATOR_VALIDATE_URL_ENCODING || tok == token::TOK_OPERATOR_VALIDATE_UTF8_ENCODING || tok == token::TOK_OPERATOR_VERIFY_CC || tok == token::TOK_OPERATOR_VERIFY_CPF || tok == token::TOK_OPERATOR_VERIFY_SSN || tok == token::TOK_OPERATOR_VERIFY_SVNR || tok == token::TOK_OPERATOR_WITHIN || tok == token::TOK_CONFIG_DIR_AUDIT_LOG_FMT || tok == token::TOK_JSON || tok == token::TOK_NATIVE || tok == token::TOK_ACTION_CTL_RULE_ENGINE); } #else symbol_type (int tok, const location_type& l) : super_type(token_type (tok), l) { - YY_ASSERT (tok == token::TOK_END || tok == token::TOK_YYerror || tok == token::TOK_YYUNDEF || tok == token::TOK_COMMA || tok == token::TOK_CONFIG_CONTENT_INJECTION || tok == token::TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR || tok == token::TOK_PIPE || tok == token::TOK_NEW_LINE || tok == token::TOK_VAR_COUNT || tok == token::TOK_VAR_EXCLUSION || tok == token::TOK_VARIABLE_ARGS || tok == token::TOK_VARIABLE_ARGS_POST || tok == token::TOK_VARIABLE_ARGS_GET || tok == token::TOK_VARIABLE_FILES_SIZES || tok == token::TOK_VARIABLE_FILES_NAMES || tok == token::TOK_VARIABLE_FILES_TMP_CONTENT || tok == token::TOK_VARIABLE_MULTIPART_FILENAME || tok == token::TOK_VARIABLE_MULTIPART_NAME || tok == token::TOK_VARIABLE_MATCHED_VARS_NAMES || tok == token::TOK_VARIABLE_MATCHED_VARS || tok == token::TOK_VARIABLE_FILES || tok == token::TOK_VARIABLE_REQUEST_COOKIES || tok == token::TOK_VARIABLE_REQUEST_HEADERS || tok == token::TOK_VARIABLE_RESPONSE_HEADERS || tok == token::TOK_VARIABLE_GEO || tok == token::TOK_VARIABLE_REQUEST_COOKIES_NAMES || tok == token::TOK_VARIABLE_ARGS_COMBINED_SIZE || tok == token::TOK_VARIABLE_ARGS_GET_NAMES || tok == token::TOK_VARIABLE_RULE || tok == token::TOK_VARIABLE_ARGS_NAMES || tok == token::TOK_VARIABLE_ARGS_POST_NAMES || tok == token::TOK_VARIABLE_AUTH_TYPE || tok == token::TOK_VARIABLE_FILES_COMBINED_SIZE || tok == token::TOK_VARIABLE_FILES_TMP_NAMES || tok == token::TOK_VARIABLE_FULL_REQUEST || tok == token::TOK_VARIABLE_FULL_REQUEST_LENGTH || tok == token::TOK_VARIABLE_INBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_MATCHED_VAR || tok == token::TOK_VARIABLE_MATCHED_VAR_NAME || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE || tok == token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES || tok == token::TOK_VARIABLE_MULTIPART_DATA_AFTER || tok == token::TOK_VARIABLE_MULTIPART_DATA_BEFORE || tok == token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED || tok == token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_PART || tok == token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING || tok == token::TOK_VARIABLE_MULTIPART_LF_LINE || tok == token::TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON || tok == token::TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING || tok == token::TOK_VARIABLE_MULTIPART_STRICT_ERROR || tok == token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY || tok == token::TOK_VARIABLE_OUTBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_PATH_INFO || tok == token::TOK_VARIABLE_QUERY_STRING || tok == token::TOK_VARIABLE_REMOTE_ADDR || tok == token::TOK_VARIABLE_REMOTE_HOST || tok == token::TOK_VARIABLE_REMOTE_PORT || tok == token::TOK_VARIABLE_REQBODY_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR || tok == token::TOK_VARIABLE_REQUEST_BASENAME || tok == token::TOK_VARIABLE_REQUEST_BODY_LENGTH || tok == token::TOK_VARIABLE_REQUEST_BODY || tok == token::TOK_VARIABLE_REQUEST_FILE_NAME || tok == token::TOK_VARIABLE_REQUEST_HEADERS_NAMES || tok == token::TOK_VARIABLE_REQUEST_LINE || tok == token::TOK_VARIABLE_REQUEST_METHOD || tok == token::TOK_VARIABLE_REQUEST_PROTOCOL || tok == token::TOK_VARIABLE_REQUEST_URI_RAW || tok == token::TOK_VARIABLE_REQUEST_URI || tok == token::TOK_VARIABLE_RESOURCE || tok == token::TOK_VARIABLE_RESPONSE_BODY || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE || tok == token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES || tok == token::TOK_VARIABLE_RESPONSE_PROTOCOL || tok == token::TOK_VARIABLE_RESPONSE_STATUS || tok == token::TOK_VARIABLE_SERVER_ADDR || tok == token::TOK_VARIABLE_SERVER_NAME || tok == token::TOK_VARIABLE_SERVER_PORT || tok == token::TOK_VARIABLE_SESSION_ID || tok == token::TOK_VARIABLE_UNIQUE_ID || tok == token::TOK_VARIABLE_URL_ENCODED_ERROR || tok == token::TOK_VARIABLE_USER_ID || tok == token::TOK_VARIABLE_WEB_APP_ID || tok == token::TOK_VARIABLE_STATUS || tok == token::TOK_VARIABLE_STATUS_LINE || tok == token::TOK_VARIABLE_IP || tok == token::TOK_VARIABLE_GLOBAL || tok == token::TOK_VARIABLE_TX || tok == token::TOK_VARIABLE_SESSION || tok == token::TOK_VARIABLE_USER || tok == token::TOK_RUN_TIME_VAR_ENV || tok == token::TOK_RUN_TIME_VAR_XML || tok == token::TOK_ACTION_SETVAR || tok == token::TOK_SETVAR_OPERATION_EQUALS || tok == token::TOK_SETVAR_OPERATION_EQUALS_PLUS || tok == token::TOK_SETVAR_OPERATION_EQUALS_MINUS || tok == token::TOK_NOT || tok == token::TOK_OPERATOR_BEGINS_WITH || tok == token::TOK_OPERATOR_CONTAINS || tok == token::TOK_OPERATOR_CONTAINS_WORD || tok == token::TOK_OPERATOR_DETECT_SQLI || tok == token::TOK_OPERATOR_DETECT_XSS || tok == token::TOK_OPERATOR_ENDS_WITH || tok == token::TOK_OPERATOR_EQ || tok == token::TOK_OPERATOR_FUZZY_HASH || tok == token::TOK_OPERATOR_GEOLOOKUP || tok == token::TOK_OPERATOR_GE || tok == token::TOK_OPERATOR_GSB_LOOKUP || tok == token::TOK_OPERATOR_GT || tok == token::TOK_OPERATOR_INSPECT_FILE || tok == token::TOK_OPERATOR_IP_MATCH_FROM_FILE || tok == token::TOK_OPERATOR_IP_MATCH || tok == token::TOK_OPERATOR_LE || tok == token::TOK_OPERATOR_LT || tok == token::TOK_OPERATOR_PM_FROM_FILE || tok == token::TOK_OPERATOR_PM || tok == token::TOK_OPERATOR_RBL || tok == token::TOK_OPERATOR_RSUB || tok == token::TOK_OPERATOR_RX_CONTENT_ONLY || tok == token::TOK_OPERATOR_RX || tok == token::TOK_OPERATOR_RX_GLOBAL || tok == token::TOK_OPERATOR_STR_EQ || tok == token::TOK_OPERATOR_STR_MATCH || tok == token::TOK_OPERATOR_UNCONDITIONAL_MATCH || tok == token::TOK_OPERATOR_VALIDATE_BYTE_RANGE || tok == token::TOK_OPERATOR_VALIDATE_DTD || tok == token::TOK_OPERATOR_VALIDATE_HASH || tok == token::TOK_OPERATOR_VALIDATE_SCHEMA || tok == token::TOK_OPERATOR_VALIDATE_URL_ENCODING || tok == token::TOK_OPERATOR_VALIDATE_UTF8_ENCODING || tok == token::TOK_OPERATOR_VERIFY_CC || tok == token::TOK_OPERATOR_VERIFY_CPF || tok == token::TOK_OPERATOR_VERIFY_SSN || tok == token::TOK_OPERATOR_VERIFY_SVNR || tok == token::TOK_OPERATOR_WITHIN || tok == token::TOK_CONFIG_DIR_AUDIT_LOG_FMT || tok == token::TOK_JSON || tok == token::TOK_NATIVE || tok == token::TOK_ACTION_CTL_RULE_ENGINE); + YY_ASSERT (tok == token::TOK_END || tok == token::TOK_COMMA || tok == token::TOK_CONFIG_CONTENT_INJECTION || tok == token::TOK_CONGIG_DIR_RESPONSE_BODY_MP_CLEAR || tok == token::TOK_PIPE || tok == token::TOK_NEW_LINE || tok == token::TOK_VAR_COUNT || tok == token::TOK_VAR_EXCLUSION || tok == token::TOK_VARIABLE_ARGS || tok == token::TOK_VARIABLE_ARGS_POST || tok == token::TOK_VARIABLE_ARGS_GET || tok == token::TOK_VARIABLE_FILES_SIZES || tok == token::TOK_VARIABLE_FILES_NAMES || tok == token::TOK_VARIABLE_FILES_TMP_CONTENT || tok == token::TOK_VARIABLE_MULTIPART_FILENAME || tok == token::TOK_VARIABLE_MULTIPART_NAME || tok == token::TOK_VARIABLE_MATCHED_VARS_NAMES || tok == token::TOK_VARIABLE_MATCHED_VARS || tok == token::TOK_VARIABLE_FILES || tok == token::TOK_VARIABLE_REQUEST_COOKIES || tok == token::TOK_VARIABLE_REQUEST_HEADERS || tok == token::TOK_VARIABLE_RESPONSE_HEADERS || tok == token::TOK_VARIABLE_GEO || tok == token::TOK_VARIABLE_REQUEST_COOKIES_NAMES || tok == token::TOK_VARIABLE_ARGS_COMBINED_SIZE || tok == token::TOK_VARIABLE_ARGS_GET_NAMES || tok == token::TOK_VARIABLE_RULE || tok == token::TOK_VARIABLE_ARGS_NAMES || tok == token::TOK_VARIABLE_ARGS_POST_NAMES || tok == token::TOK_VARIABLE_AUTH_TYPE || tok == token::TOK_VARIABLE_FILES_COMBINED_SIZE || tok == token::TOK_VARIABLE_FILES_TMP_NAMES || tok == token::TOK_VARIABLE_FULL_REQUEST || tok == token::TOK_VARIABLE_FULL_REQUEST_LENGTH || tok == token::TOK_VARIABLE_INBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_MATCHED_VAR || tok == token::TOK_VARIABLE_MATCHED_VAR_NAME || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_QUOTED || tok == token::TOK_VARIABLE_MULTIPART_BOUNDARY_WHITESPACE || tok == token::TOK_VARIABLE_MULTIPART_CRLF_LF_LINES || tok == token::TOK_VARIABLE_MULTIPART_DATA_AFTER || tok == token::TOK_VARIABLE_MULTIPART_DATA_BEFORE || tok == token::TOK_VARIABLE_MULTIPART_FILE_LIMIT_EXCEEDED || tok == token::TOK_VARIABLE_MULTIPART_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_HEADER_FOLDING || tok == token::TOK_VARIABLE_MULTIPART_INVALID_PART || tok == token::TOK_VARIABLE_MULTIPART_INVALID_QUOTING || tok == token::TOK_VARIABLE_MULTIPART_LF_LINE || tok == token::TOK_VARIABLE_MULTIPART_MISSING_SEMICOLON || tok == token::TOK_VARIABLE_MULTIPART_SEMICOLON_MISSING || tok == token::TOK_VARIABLE_MULTIPART_STRICT_ERROR || tok == token::TOK_VARIABLE_MULTIPART_UNMATCHED_BOUNDARY || tok == token::TOK_VARIABLE_OUTBOUND_DATA_ERROR || tok == token::TOK_VARIABLE_PATH_INFO || tok == token::TOK_VARIABLE_QUERY_STRING || tok == token::TOK_VARIABLE_REMOTE_ADDR || tok == token::TOK_VARIABLE_REMOTE_HOST || tok == token::TOK_VARIABLE_REMOTE_PORT || tok == token::TOK_VARIABLE_REQBODY_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR_MSG || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR_ERROR || tok == token::TOK_VARIABLE_REQBODY_PROCESSOR || tok == token::TOK_VARIABLE_REQUEST_BASENAME || tok == token::TOK_VARIABLE_REQUEST_BODY_LENGTH || tok == token::TOK_VARIABLE_REQUEST_BODY || tok == token::TOK_VARIABLE_REQUEST_FILE_NAME || tok == token::TOK_VARIABLE_REQUEST_HEADERS_NAMES || tok == token::TOK_VARIABLE_REQUEST_LINE || tok == token::TOK_VARIABLE_REQUEST_METHOD || tok == token::TOK_VARIABLE_REQUEST_PROTOCOL || tok == token::TOK_VARIABLE_REQUEST_URI_RAW || tok == token::TOK_VARIABLE_REQUEST_URI || tok == token::TOK_VARIABLE_RESOURCE || tok == token::TOK_VARIABLE_RESPONSE_BODY || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_LENGTH || tok == token::TOK_VARIABLE_RESPONSE_CONTENT_TYPE || tok == token::TOK_VARIABLE_RESPONSE_HEADERS_NAMES || tok == token::TOK_VARIABLE_RESPONSE_PROTOCOL || tok == token::TOK_VARIABLE_RESPONSE_STATUS || tok == token::TOK_VARIABLE_SERVER_ADDR || tok == token::TOK_VARIABLE_SERVER_NAME || tok == token::TOK_VARIABLE_SERVER_PORT || tok == token::TOK_VARIABLE_SESSION_ID || tok == token::TOK_VARIABLE_UNIQUE_ID || tok == token::TOK_VARIABLE_URL_ENCODED_ERROR || tok == token::TOK_VARIABLE_USER_ID || tok == token::TOK_VARIABLE_WEB_APP_ID || tok == token::TOK_VARIABLE_STATUS || tok == token::TOK_VARIABLE_STATUS_LINE || tok == token::TOK_VARIABLE_IP || tok == token::TOK_VARIABLE_GLOBAL || tok == token::TOK_VARIABLE_TX || tok == token::TOK_VARIABLE_SESSION || tok == token::TOK_VARIABLE_USER || tok == token::TOK_RUN_TIME_VAR_ENV || tok == token::TOK_RUN_TIME_VAR_XML || tok == token::TOK_ACTION_SETVAR || tok == token::TOK_SETVAR_OPERATION_EQUALS || tok == token::TOK_SETVAR_OPERATION_EQUALS_PLUS || tok == token::TOK_SETVAR_OPERATION_EQUALS_MINUS || tok == token::TOK_NOT || tok == token::TOK_OPERATOR_BEGINS_WITH || tok == token::TOK_OPERATOR_CONTAINS || tok == token::TOK_OPERATOR_CONTAINS_WORD || tok == token::TOK_OPERATOR_DETECT_SQLI || tok == token::TOK_OPERATOR_DETECT_XSS || tok == token::TOK_OPERATOR_ENDS_WITH || tok == token::TOK_OPERATOR_EQ || tok == token::TOK_OPERATOR_FUZZY_HASH || tok == token::TOK_OPERATOR_GEOLOOKUP || tok == token::TOK_OPERATOR_GE || tok == token::TOK_OPERATOR_GSB_LOOKUP || tok == token::TOK_OPERATOR_GT || tok == token::TOK_OPERATOR_INSPECT_FILE || tok == token::TOK_OPERATOR_IP_MATCH_FROM_FILE || tok == token::TOK_OPERATOR_IP_MATCH || tok == token::TOK_OPERATOR_LE || tok == token::TOK_OPERATOR_LT || tok == token::TOK_OPERATOR_PM_FROM_FILE || tok == token::TOK_OPERATOR_PM || tok == token::TOK_OPERATOR_RBL || tok == token::TOK_OPERATOR_RSUB || tok == token::TOK_OPERATOR_RX_CONTENT_ONLY || tok == token::TOK_OPERATOR_RX || tok == token::TOK_OPERATOR_RX_GLOBAL || tok == token::TOK_OPERATOR_STR_EQ || tok == token::TOK_OPERATOR_STR_MATCH || tok == token::TOK_OPERATOR_UNCONDITIONAL_MATCH || tok == token::TOK_OPERATOR_VALIDATE_BYTE_RANGE || tok == token::TOK_OPERATOR_VALIDATE_DTD || tok == token::TOK_OPERATOR_VALIDATE_HASH || tok == token::TOK_OPERATOR_VALIDATE_SCHEMA || tok == token::TOK_OPERATOR_VALIDATE_URL_ENCODING || tok == token::TOK_OPERATOR_VALIDATE_UTF8_ENCODING || tok == token::TOK_OPERATOR_VERIFY_CC || tok == token::TOK_OPERATOR_VERIFY_CPF || tok == token::TOK_OPERATOR_VERIFY_SSN || tok == token::TOK_OPERATOR_VERIFY_SVNR || tok == token::TOK_OPERATOR_WITHIN || tok == token::TOK_CONFIG_DIR_AUDIT_LOG_FMT || tok == token::TOK_JSON || tok == token::TOK_NATIVE || tok == token::TOK_ACTION_CTL_RULE_ENGINE); } #endif #if 201103L <= YY_CPLUSPLUS @@ -2441,13 +1800,6 @@ switch (yykind) seclang_parser (modsecurity::Parser::Driver& driver_yyarg); virtual ~seclang_parser (); -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - seclang_parser (const seclang_parser&) = delete; - /// Non copyable. - seclang_parser& operator= (const seclang_parser&) = delete; -#endif - /// Parse. An alias for parse (). /// \returns 0 iff parsing succeeded. int operator() (); @@ -2478,10 +1830,6 @@ switch (yykind) /// Report a syntax error. void error (const syntax_error& err); - /// The user-facing name of the symbol whose (internal) number is - /// YYSYMBOL. No bounds checking. - static std::string symbol_name (symbol_kind_type yysymbol); - // Implementation of make_symbol for each symbol type. #if 201103L <= YY_CPLUSPLUS static @@ -2498,36 +1846,6 @@ switch (yykind) return symbol_type (token::TOK_END, l); } #endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_YYerror (location_type l) - { - return symbol_type (token::TOK_YYerror, std::move (l)); - } -#else - static - symbol_type - make_YYerror (const location_type& l) - { - return symbol_type (token::TOK_YYerror, l); - } -#endif -#if 201103L <= YY_CPLUSPLUS - static - symbol_type - make_YYUNDEF (location_type l) - { - return symbol_type (token::TOK_YYUNDEF, std::move (l)); - } -#else - static - symbol_type - make_YYUNDEF (const location_type& l) - { - return symbol_type (token::TOK_YYUNDEF, l); - } -#endif #if 201103L <= YY_CPLUSPLUS static symbol_type @@ -7645,43 +6963,20 @@ switch (yykind) #endif - class context - { - public: - context (const seclang_parser& yyparser, const symbol_type& yyla); - const symbol_type& lookahead () const { return yyla_; } - symbol_kind_type token () const { return yyla_.kind (); } - const location_type& location () const { return yyla_.location; } - - /// Put in YYARG at most YYARGN of the expected tokens, and return the - /// number of tokens stored in YYARG. If YYARG is null, return the - /// number of expected tokens (guaranteed to be less than YYNTOKENS). - int expected_tokens (symbol_kind_type yyarg[], int yyargn) const; - - private: - const seclang_parser& yyparser_; - const symbol_type& yyla_; - }; - private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. + /// This class is not copyable. seclang_parser (const seclang_parser&); - /// Non copyable. seclang_parser& operator= (const seclang_parser&); -#endif - /// Stored state numbers (used for stacks). typedef short state_type; - /// The arguments of the error message. - int yy_syntax_error_arguments_ (const context& yyctx, - symbol_kind_type yyarg[], int yyargn) const; - /// Generate an error message. - /// \param yyctx the context in which the error occurred. - virtual std::string yysyntax_error_ (const context& yyctx) const; + /// \param yystate the state where the error occurred. + /// \param yyla the lookahead token. + virtual std::string yysyntax_error_ (state_type yystate, + const symbol_type& yyla) const; + /// Compute post-reduction state. /// \param yystate the current state /// \param yysym the nonterminal to push on the stack @@ -7698,17 +6993,10 @@ switch (yykind) static const short yypact_ninf_; static const signed char yytable_ninf_; - /// Convert a scanner token kind \a t to a symbol kind. - /// In theory \a t should be a token_kind_type, but character literals + /// Convert a scanner token number \a t to a symbol number. + /// In theory \a t should be a token_type, but character literals /// are valid, yet not members of the token_type enum. - static symbol_kind_type yytranslate_ (int t); - - /// Convert the symbol name \a n to a form suitable for a diagnostic. - static std::string yytnamerr_ (const char *yystr); - - /// For a symbol, its name in clear. - static const char* const yytname_[]; - + static token_number_type yytranslate_ (int t); // Tables. // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -7744,20 +7032,26 @@ switch (yykind) static const signed char yyr2_[]; + /// Convert the symbol name \a n to a form suitable for a diagnostic. + static std::string yytnamerr_ (const char *n); + + + /// For a symbol, its name in clear. + static const char* const yytname_[]; #if YYDEBUG // YYRLINE[YYN] -- Source line where rule number YYN was defined. static const short yyrline_[]; /// Report on the debug stream that the rule \a r is going to be reduced. - virtual void yy_reduce_print_ (int r) const; + virtual void yy_reduce_print_ (int r); /// Print the state stack on the debug stream. - virtual void yy_stack_print_ () const; + virtual void yystack_print_ (); /// Debugging level. int yydebug_; /// Debug stream. std::ostream* yycdebug_; - /// \brief Display a symbol kind, value and location. + /// \brief Display a symbol type, value and location. /// \param yyo The output stream. /// \param yysym The symbol. template @@ -7778,7 +7072,7 @@ switch (yykind) /// Default constructor. by_state () YY_NOEXCEPT; - /// The symbol kind as needed by the constructor. + /// The symbol type as needed by the constructor. typedef state_type kind_type; /// Constructor. @@ -7790,12 +7084,12 @@ switch (yykind) /// Record that this symbol is empty. void clear () YY_NOEXCEPT; - /// Steal the symbol kind from \a that. + /// Steal the symbol type from \a that. void move (by_state& that); - /// The symbol kind (corresponding to \a state). - /// \a symbol_kind::S_YYEMPTY when empty. - symbol_kind_type kind () const YY_NOEXCEPT; + /// The (internal) type number (corresponding to \a state). + /// \a empty_symbol when empty. + symbol_number_type type_get () const YY_NOEXCEPT; /// The state number used to denote an empty symbol. /// We use the initial state, as it does not have a value. @@ -7834,8 +7128,8 @@ switch (yykind) { public: // Hide our reversed order. - typedef typename S::iterator iterator; - typedef typename S::const_iterator const_iterator; + typedef typename S::reverse_iterator iterator; + typedef typename S::const_reverse_iterator const_iterator; typedef typename S::size_type size_type; typedef typename std::ptrdiff_t index_type; @@ -7843,13 +7137,6 @@ switch (yykind) : seq_ (n) {} -#if 201103L <= YY_CPLUSPLUS - /// Non copyable. - stack (const stack&) = delete; - /// Non copyable. - stack& operator= (const stack&) = delete; -#endif - /// Random access. /// /// Index 0 returns the topmost element. @@ -7900,18 +7187,24 @@ switch (yykind) return index_type (seq_.size ()); } + std::ptrdiff_t + ssize () const YY_NOEXCEPT + { + return std::ptrdiff_t (size ()); + } + /// Iterator on top of the stack (going downwards). const_iterator begin () const YY_NOEXCEPT { - return seq_.begin (); + return seq_.rbegin (); } /// Bottom of the stack. const_iterator end () const YY_NOEXCEPT { - return seq_.end (); + return seq_.rend (); } /// Present a slice of the top of a stack. @@ -7935,12 +7228,8 @@ switch (yykind) }; private: -#if YY_CPLUSPLUS < 201103L - /// Non copyable. stack (const stack&); - /// Non copyable. stack& operator= (const stack&); -#endif /// The wrapped container. S seq_; }; @@ -7970,28 +7259,33 @@ switch (yykind) /// Pop \a n symbols from the stack. void yypop_ (int n = 1); + /// Some specific tokens. + static const token_number_type yy_error_token_ = 1; + static const token_number_type yy_undef_token_ = 2; + /// Constants. enum { + yyeof_ = 0, yylast_ = 3276, ///< Last index in yytable_. yynnts_ = 16, ///< Number of nonterminal symbols. - yyfinal_ = 338 ///< Termination state number. + yyfinal_ = 338, ///< Termination state number. + yyntokens_ = 344 ///< Number of tokens. }; // User arguments. modsecurity::Parser::Driver& driver; - }; inline - seclang_parser::symbol_kind_type + seclang_parser::token_number_type seclang_parser::yytranslate_ (int t) { // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to // TOKEN-NUM as returned by yylex. static - const short + const token_number_type translate_table[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -8055,253 +7349,498 @@ switch (yykind) 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343 }; - // Last valid token kind. - const int code_max = 598; + const int user_token_number_max_ = 598; if (t <= 0) - return symbol_kind::S_YYEOF; - else if (t <= code_max) - return YY_CAST (symbol_kind_type, translate_table[t]); + return yyeof_; + else if (t <= user_token_number_max_) + return translate_table[t]; else - return symbol_kind::S_YYUNDEF; + return yy_undef_token_; } // basic_symbol. +#if 201103L <= YY_CPLUSPLUS + template + seclang_parser::basic_symbol::basic_symbol (basic_symbol&& that) + : Base (std::move (that)) + , value () + , location (std::move (that.location)) + { + switch (this->type_get ()) + { + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" + value.move< std::string > (std::move (that.value)); + break; + + case 350: // op + case 351: // op_before_init + value.move< std::unique_ptr > (std::move (that.value)); + break; + + case 359: // run_time_string + value.move< std::unique_ptr > (std::move (that.value)); + break; + + case 356: // var + value.move< std::unique_ptr > (std::move (that.value)); + break; + + case 357: // act + case 358: // setvar_action + value.move< std::unique_ptr > (std::move (that.value)); + break; + + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted + value.move< std::unique_ptr > > > (std::move (that.value)); + break; + + case 348: // actions + case 349: // actions_may_quoted + value.move< std::unique_ptr > > > (std::move (that.value)); + break; + + default: + break; + } + + } +#endif + template seclang_parser::basic_symbol::basic_symbol (const basic_symbol& that) : Base (that) , value () , location (that.location) { - switch (this->kind ()) + switch (this->type_get ()) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" value.copy< std::string > (YY_MOVE (that.value)); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init value.copy< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string value.copy< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_var: // var + case 356: // var value.copy< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action value.copy< std::unique_ptr > (YY_MOVE (that.value)); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted value.copy< std::unique_ptr > > > (YY_MOVE (that.value)); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted value.copy< std::unique_ptr > > > (YY_MOVE (that.value)); break; @@ -8313,18 +7852,11 @@ switch (yykind) - template - seclang_parser::symbol_kind_type - seclang_parser::basic_symbol::type_get () const YY_NOEXCEPT - { - return this->kind (); - } - template bool seclang_parser::basic_symbol::empty () const YY_NOEXCEPT { - return this->kind () == symbol_kind::S_YYEMPTY; + return Base::type_get () == empty_symbol; } template @@ -8332,235 +7864,235 @@ switch (yykind) seclang_parser::basic_symbol::move (basic_symbol& s) { super_type::move (s); - switch (this->kind ()) + switch (this->type_get ()) { - case symbol_kind::S_ACTION_ACCURACY: // "Accuracy" - case symbol_kind::S_ACTION_ALLOW: // "Allow" - case symbol_kind::S_ACTION_APPEND: // "Append" - case symbol_kind::S_ACTION_AUDIT_LOG: // "AuditLog" - case symbol_kind::S_ACTION_BLOCK: // "Block" - case symbol_kind::S_ACTION_CAPTURE: // "Capture" - case symbol_kind::S_ACTION_CHAIN: // "Chain" - case symbol_kind::S_ACTION_CTL_AUDIT_ENGINE: // "ACTION_CTL_AUDIT_ENGINE" - case symbol_kind::S_ACTION_CTL_AUDIT_LOG_PARTS: // "ACTION_CTL_AUDIT_LOG_PARTS" - case symbol_kind::S_ACTION_CTL_BDY_JSON: // "ACTION_CTL_BDY_JSON" - case symbol_kind::S_ACTION_CTL_BDY_XML: // "ACTION_CTL_BDY_XML" - case symbol_kind::S_ACTION_CTL_BDY_URLENCODED: // "ACTION_CTL_BDY_URLENCODED" - case symbol_kind::S_ACTION_CTL_FORCE_REQ_BODY_VAR: // "ACTION_CTL_FORCE_REQ_BODY_VAR" - case symbol_kind::S_ACTION_CTL_REQUEST_BODY_ACCESS: // "ACTION_CTL_REQUEST_BODY_ACCESS" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_ID: // "ACTION_CTL_RULE_REMOVE_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_BY_TAG: // "ACTION_CTL_RULE_REMOVE_BY_TAG" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_ID: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" - case symbol_kind::S_ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" - case symbol_kind::S_ACTION_DENY: // "Deny" - case symbol_kind::S_ACTION_DEPRECATE_VAR: // "DeprecateVar" - case symbol_kind::S_ACTION_DROP: // "Drop" - case symbol_kind::S_ACTION_EXEC: // "Exec" - case symbol_kind::S_ACTION_EXPIRE_VAR: // "ExpireVar" - case symbol_kind::S_ACTION_ID: // "Id" - case symbol_kind::S_ACTION_INITCOL: // "InitCol" - case symbol_kind::S_ACTION_LOG: // "Log" - case symbol_kind::S_ACTION_LOG_DATA: // "LogData" - case symbol_kind::S_ACTION_MATURITY: // "Maturity" - case symbol_kind::S_ACTION_MSG: // "Msg" - case symbol_kind::S_ACTION_MULTI_MATCH: // "MultiMatch" - case symbol_kind::S_ACTION_NO_AUDIT_LOG: // "NoAuditLog" - case symbol_kind::S_ACTION_NO_LOG: // "NoLog" - case symbol_kind::S_ACTION_PASS: // "Pass" - case symbol_kind::S_ACTION_PAUSE: // "Pause" - case symbol_kind::S_ACTION_PHASE: // "Phase" - case symbol_kind::S_ACTION_PREPEND: // "Prepend" - case symbol_kind::S_ACTION_PROXY: // "Proxy" - case symbol_kind::S_ACTION_REDIRECT: // "Redirect" - case symbol_kind::S_ACTION_REV: // "Rev" - case symbol_kind::S_ACTION_SANITISE_ARG: // "SanitiseArg" - case symbol_kind::S_ACTION_SANITISE_MATCHED: // "SanitiseMatched" - case symbol_kind::S_ACTION_SANITISE_MATCHED_BYTES: // "SanitiseMatchedBytes" - case symbol_kind::S_ACTION_SANITISE_REQUEST_HEADER: // "SanitiseRequestHeader" - case symbol_kind::S_ACTION_SANITISE_RESPONSE_HEADER: // "SanitiseResponseHeader" - case symbol_kind::S_ACTION_SETENV: // "SetEnv" - case symbol_kind::S_ACTION_SETRSC: // "SetRsc" - case symbol_kind::S_ACTION_SETSID: // "SetSid" - case symbol_kind::S_ACTION_SETUID: // "SetUID" - case symbol_kind::S_ACTION_SEVERITY: // "Severity" - case symbol_kind::S_ACTION_SKIP: // "Skip" - case symbol_kind::S_ACTION_SKIP_AFTER: // "SkipAfter" - case symbol_kind::S_ACTION_STATUS: // "Status" - case symbol_kind::S_ACTION_TAG: // "Tag" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_ENCODE: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE: // "ACTION_TRANSFORMATION_BASE_64_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_BASE_64_DECODE_EXT: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" - case symbol_kind::S_ACTION_TRANSFORMATION_CMD_LINE: // "ACTION_TRANSFORMATION_CMD_LINE" - case symbol_kind::S_ACTION_TRANSFORMATION_COMPRESS_WHITESPACE: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_CSS_DECODE: // "ACTION_TRANSFORMATION_CSS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_ENCODE: // "ACTION_TRANSFORMATION_HEX_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HEX_DECODE: // "ACTION_TRANSFORMATION_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_HTML_ENTITY_DECODE: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_JS_DECODE: // "ACTION_TRANSFORMATION_JS_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_LENGTH: // "ACTION_TRANSFORMATION_LENGTH" - case symbol_kind::S_ACTION_TRANSFORMATION_LOWERCASE: // "ACTION_TRANSFORMATION_LOWERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_PHP_ARGS_NAMES: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" - case symbol_kind::S_ACTION_TRANSFORMATION_MD5: // "ACTION_TRANSFORMATION_MD5" - case symbol_kind::S_ACTION_TRANSFORMATION_NONE: // "ACTION_TRANSFORMATION_NONE" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH: // "ACTION_TRANSFORMATION_NORMALISE_PATH" - case symbol_kind::S_ACTION_TRANSFORMATION_NORMALISE_PATH_WIN: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ODD_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_NULLS: // "ACTION_TRANSFORMATION_REMOVE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_REMOVE_WHITESPACE: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_COMMENTS: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" - case symbol_kind::S_ACTION_TRANSFORMATION_REPLACE_NULLS: // "ACTION_TRANSFORMATION_REPLACE_NULLS" - case symbol_kind::S_ACTION_TRANSFORMATION_SHA1: // "ACTION_TRANSFORMATION_SHA1" - case symbol_kind::S_ACTION_TRANSFORMATION_SQL_HEX_DECODE: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM: // "ACTION_TRANSFORMATION_TRIM" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_LEFT: // "ACTION_TRANSFORMATION_TRIM_LEFT" - case symbol_kind::S_ACTION_TRANSFORMATION_TRIM_RIGHT: // "ACTION_TRANSFORMATION_TRIM_RIGHT" - case symbol_kind::S_ACTION_TRANSFORMATION_UPPERCASE: // "ACTION_TRANSFORMATION_UPPERCASE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_ENCODE: // "ACTION_TRANSFORMATION_URL_ENCODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE: // "ACTION_TRANSFORMATION_URL_DECODE" - case symbol_kind::S_ACTION_TRANSFORMATION_URL_DECODE_UNI: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" - case symbol_kind::S_ACTION_TRANSFORMATION_UTF8_TO_UNICODE: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" - case symbol_kind::S_ACTION_VER: // "Ver" - case symbol_kind::S_ACTION_XMLNS: // "xmlns" - case symbol_kind::S_CONFIG_COMPONENT_SIG: // "CONFIG_COMPONENT_SIG" - case symbol_kind::S_CONFIG_CONN_ENGINE: // "CONFIG_CONN_ENGINE" - case symbol_kind::S_CONFIG_SEC_ARGUMENT_SEPARATOR: // "CONFIG_SEC_ARGUMENT_SEPARATOR" - case symbol_kind::S_CONFIG_SEC_WEB_APP_ID: // "CONFIG_SEC_WEB_APP_ID" - case symbol_kind::S_CONFIG_SEC_SERVER_SIG: // "CONFIG_SEC_SERVER_SIG" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR: // "CONFIG_DIR_AUDIT_DIR" - case symbol_kind::S_CONFIG_DIR_AUDIT_DIR_MOD: // "CONFIG_DIR_AUDIT_DIR_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_ENG: // "CONFIG_DIR_AUDIT_ENG" - case symbol_kind::S_CONFIG_DIR_AUDIT_FLE_MOD: // "CONFIG_DIR_AUDIT_FLE_MOD" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG: // "CONFIG_DIR_AUDIT_LOG" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG2: // "CONFIG_DIR_AUDIT_LOG2" - case symbol_kind::S_CONFIG_DIR_AUDIT_LOG_P: // "CONFIG_DIR_AUDIT_LOG_P" - case symbol_kind::S_CONFIG_DIR_AUDIT_STS: // "CONFIG_DIR_AUDIT_STS" - case symbol_kind::S_CONFIG_DIR_AUDIT_TPE: // "CONFIG_DIR_AUDIT_TPE" - case symbol_kind::S_CONFIG_DIR_DEBUG_LOG: // "CONFIG_DIR_DEBUG_LOG" - case symbol_kind::S_CONFIG_DIR_DEBUG_LVL: // "CONFIG_DIR_DEBUG_LVL" - case symbol_kind::S_CONFIG_SEC_CACHE_TRANSFORMATIONS: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" - case symbol_kind::S_CONFIG_SEC_DISABLE_BACKEND_COMPRESS: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" - case symbol_kind::S_CONFIG_SEC_HASH_ENGINE: // "CONFIG_SEC_HASH_ENGINE" - case symbol_kind::S_CONFIG_SEC_HASH_KEY: // "CONFIG_SEC_HASH_KEY" - case symbol_kind::S_CONFIG_SEC_HASH_PARAM: // "CONFIG_SEC_HASH_PARAM" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_RX: // "CONFIG_SEC_HASH_METHOD_RX" - case symbol_kind::S_CONFIG_SEC_HASH_METHOD_PM: // "CONFIG_SEC_HASH_METHOD_PM" - case symbol_kind::S_CONFIG_SEC_CHROOT_DIR: // "CONFIG_SEC_CHROOT_DIR" - case symbol_kind::S_CONFIG_DIR_GEO_DB: // "CONFIG_DIR_GEO_DB" - case symbol_kind::S_CONFIG_DIR_GSB_DB: // "CONFIG_DIR_GSB_DB" - case symbol_kind::S_CONFIG_SEC_GUARDIAN_LOG: // "CONFIG_SEC_GUARDIAN_LOG" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT: // "CONFIG_DIR_PCRE_MATCH_LIMIT" - case symbol_kind::S_CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" - case symbol_kind::S_CONFIG_SEC_CONN_R_STATE_LIMIT: // "CONFIG_SEC_CONN_R_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_CONN_W_STATE_LIMIT: // "CONFIG_SEC_CONN_W_STATE_LIMIT" - case symbol_kind::S_CONFIG_SEC_SENSOR_ID: // "CONFIG_SEC_SENSOR_ID" - case symbol_kind::S_CONFIG_DIR_ARGS_LIMIT: // "CONFIG_DIR_ARGS_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY: // "CONFIG_DIR_REQ_BODY" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT: // "CONFIG_DIR_REQ_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_LIMIT_ACTION: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY: // "CONFIG_DIR_RES_BODY" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT: // "CONFIG_DIR_RES_BODY_LIMIT" - case symbol_kind::S_CONFIG_DIR_RES_BODY_LIMIT_ACTION: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_INHERITANCE: // "CONFIG_SEC_RULE_INHERITANCE" - case symbol_kind::S_CONFIG_SEC_RULE_PERF_TIME: // "CONFIG_SEC_RULE_PERF_TIME" - case symbol_kind::S_CONFIG_DIR_RULE_ENG: // "CONFIG_DIR_RULE_ENG" - case symbol_kind::S_CONFIG_DIR_SEC_ACTION: // "CONFIG_DIR_SEC_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_DEFAULT_ACTION: // "CONFIG_DIR_SEC_DEFAULT_ACTION" - case symbol_kind::S_CONFIG_DIR_SEC_MARKER: // "CONFIG_DIR_SEC_MARKER" - case symbol_kind::S_CONFIG_DIR_UNICODE_MAP_FILE: // "CONFIG_DIR_UNICODE_MAP_FILE" - case symbol_kind::S_CONFIG_DIR_UNICODE_CODE_PAGE: // "CONFIG_DIR_UNICODE_CODE_PAGE" - case symbol_kind::S_CONFIG_SEC_COLLECTION_TIMEOUT: // "CONFIG_SEC_COLLECTION_TIMEOUT" - case symbol_kind::S_CONFIG_SEC_HTTP_BLKEY: // "CONFIG_SEC_HTTP_BLKEY" - case symbol_kind::S_CONFIG_SEC_INTERCEPT_ON_ERROR: // "CONFIG_SEC_INTERCEPT_ON_ERROR" - case symbol_kind::S_CONFIG_SEC_REMOTE_RULES_FAIL_ACTION: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_ID: // "CONFIG_SEC_RULE_REMOVE_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_MSG: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_REMOVE_BY_TAG: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" - case symbol_kind::S_CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" - case symbol_kind::S_CONFIG_UPDLOAD_KEEP_FILES: // "CONFIG_UPDLOAD_KEEP_FILES" - case symbol_kind::S_CONFIG_UPDLOAD_SAVE_TMP_FILES: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" - case symbol_kind::S_CONFIG_UPLOAD_DIR: // "CONFIG_UPLOAD_DIR" - case symbol_kind::S_CONFIG_UPLOAD_FILE_LIMIT: // "CONFIG_UPLOAD_FILE_LIMIT" - case symbol_kind::S_CONFIG_UPLOAD_FILE_MODE: // "CONFIG_UPLOAD_FILE_MODE" - case symbol_kind::S_CONFIG_VALUE_ABORT: // "CONFIG_VALUE_ABORT" - case symbol_kind::S_CONFIG_VALUE_DETC: // "CONFIG_VALUE_DETC" - case symbol_kind::S_CONFIG_VALUE_HTTPS: // "CONFIG_VALUE_HTTPS" - case symbol_kind::S_CONFIG_VALUE_OFF: // "CONFIG_VALUE_OFF" - case symbol_kind::S_CONFIG_VALUE_ON: // "CONFIG_VALUE_ON" - case symbol_kind::S_CONFIG_VALUE_PARALLEL: // "CONFIG_VALUE_PARALLEL" - case symbol_kind::S_CONFIG_VALUE_PROCESS_PARTIAL: // "CONFIG_VALUE_PROCESS_PARTIAL" - case symbol_kind::S_CONFIG_VALUE_REJECT: // "CONFIG_VALUE_REJECT" - case symbol_kind::S_CONFIG_VALUE_RELEVANT_ONLY: // "CONFIG_VALUE_RELEVANT_ONLY" - case symbol_kind::S_CONFIG_VALUE_SERIAL: // "CONFIG_VALUE_SERIAL" - case symbol_kind::S_CONFIG_VALUE_WARN: // "CONFIG_VALUE_WARN" - case symbol_kind::S_CONFIG_XML_EXTERNAL_ENTITY: // "CONFIG_XML_EXTERNAL_ENTITY" - case symbol_kind::S_CONGIG_DIR_RESPONSE_BODY_MP: // "CONGIG_DIR_RESPONSE_BODY_MP" - case symbol_kind::S_CONGIG_DIR_SEC_ARG_SEP: // "CONGIG_DIR_SEC_ARG_SEP" - case symbol_kind::S_CONGIG_DIR_SEC_COOKIE_FORMAT: // "CONGIG_DIR_SEC_COOKIE_FORMAT" - case symbol_kind::S_CONFIG_SEC_COOKIEV0_SEPARATOR: // "CONFIG_SEC_COOKIEV0_SEPARATOR" - case symbol_kind::S_CONGIG_DIR_SEC_DATA_DIR: // "CONGIG_DIR_SEC_DATA_DIR" - case symbol_kind::S_CONGIG_DIR_SEC_STATUS_ENGINE: // "CONGIG_DIR_SEC_STATUS_ENGINE" - case symbol_kind::S_CONFIG_SEC_STREAM_IN_BODY_INSPECTION: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" - case symbol_kind::S_CONFIG_SEC_STREAM_OUT_BODY_INSPECTION: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" - case symbol_kind::S_CONGIG_DIR_SEC_TMP_DIR: // "CONGIG_DIR_SEC_TMP_DIR" - case symbol_kind::S_DIRECTIVE: // "DIRECTIVE" - case symbol_kind::S_DIRECTIVE_SECRULESCRIPT: // "DIRECTIVE_SECRULESCRIPT" - case symbol_kind::S_FREE_TEXT_QUOTE_MACRO_EXPANSION: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" - case symbol_kind::S_QUOTATION_MARK: // "QUOTATION_MARK" - case symbol_kind::S_RUN_TIME_VAR_BLD: // "RUN_TIME_VAR_BLD" - case symbol_kind::S_RUN_TIME_VAR_DUR: // "RUN_TIME_VAR_DUR" - case symbol_kind::S_RUN_TIME_VAR_HSV: // "RUN_TIME_VAR_HSV" - case symbol_kind::S_RUN_TIME_VAR_REMOTE_USER: // "RUN_TIME_VAR_REMOTE_USER" - case symbol_kind::S_RUN_TIME_VAR_TIME: // "RUN_TIME_VAR_TIME" - case symbol_kind::S_RUN_TIME_VAR_TIME_DAY: // "RUN_TIME_VAR_TIME_DAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_EPOCH: // "RUN_TIME_VAR_TIME_EPOCH" - case symbol_kind::S_RUN_TIME_VAR_TIME_HOUR: // "RUN_TIME_VAR_TIME_HOUR" - case symbol_kind::S_RUN_TIME_VAR_TIME_MIN: // "RUN_TIME_VAR_TIME_MIN" - case symbol_kind::S_RUN_TIME_VAR_TIME_MON: // "RUN_TIME_VAR_TIME_MON" - case symbol_kind::S_RUN_TIME_VAR_TIME_SEC: // "RUN_TIME_VAR_TIME_SEC" - case symbol_kind::S_RUN_TIME_VAR_TIME_WDAY: // "RUN_TIME_VAR_TIME_WDAY" - case symbol_kind::S_RUN_TIME_VAR_TIME_YEAR: // "RUN_TIME_VAR_TIME_YEAR" - case symbol_kind::S_VARIABLE: // "VARIABLE" - case symbol_kind::S_DICT_ELEMENT: // "Dictionary element" - case symbol_kind::S_DICT_ELEMENT_REGEXP: // "Dictionary element, selected by regexp" + case 146: // "Accuracy" + case 147: // "Allow" + case 148: // "Append" + case 149: // "AuditLog" + case 150: // "Block" + case 151: // "Capture" + case 152: // "Chain" + case 153: // "ACTION_CTL_AUDIT_ENGINE" + case 154: // "ACTION_CTL_AUDIT_LOG_PARTS" + case 155: // "ACTION_CTL_BDY_JSON" + case 156: // "ACTION_CTL_BDY_XML" + case 157: // "ACTION_CTL_BDY_URLENCODED" + case 158: // "ACTION_CTL_FORCE_REQ_BODY_VAR" + case 159: // "ACTION_CTL_REQUEST_BODY_ACCESS" + case 160: // "ACTION_CTL_RULE_REMOVE_BY_ID" + case 161: // "ACTION_CTL_RULE_REMOVE_BY_TAG" + case 162: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" + case 163: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" + case 164: // "Deny" + case 165: // "DeprecateVar" + case 166: // "Drop" + case 167: // "Exec" + case 168: // "ExpireVar" + case 169: // "Id" + case 170: // "InitCol" + case 171: // "Log" + case 172: // "LogData" + case 173: // "Maturity" + case 174: // "Msg" + case 175: // "MultiMatch" + case 176: // "NoAuditLog" + case 177: // "NoLog" + case 178: // "Pass" + case 179: // "Pause" + case 180: // "Phase" + case 181: // "Prepend" + case 182: // "Proxy" + case 183: // "Redirect" + case 184: // "Rev" + case 185: // "SanitiseArg" + case 186: // "SanitiseMatched" + case 187: // "SanitiseMatchedBytes" + case 188: // "SanitiseRequestHeader" + case 189: // "SanitiseResponseHeader" + case 190: // "SetEnv" + case 191: // "SetRsc" + case 192: // "SetSid" + case 193: // "SetUID" + case 194: // "Severity" + case 195: // "Skip" + case 196: // "SkipAfter" + case 197: // "Status" + case 198: // "Tag" + case 199: // "ACTION_TRANSFORMATION_BASE_64_ENCODE" + case 200: // "ACTION_TRANSFORMATION_BASE_64_DECODE" + case 201: // "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" + case 202: // "ACTION_TRANSFORMATION_CMD_LINE" + case 203: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" + case 204: // "ACTION_TRANSFORMATION_CSS_DECODE" + case 205: // "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" + case 206: // "ACTION_TRANSFORMATION_HEX_ENCODE" + case 207: // "ACTION_TRANSFORMATION_HEX_DECODE" + case 208: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" + case 209: // "ACTION_TRANSFORMATION_JS_DECODE" + case 210: // "ACTION_TRANSFORMATION_LENGTH" + case 211: // "ACTION_TRANSFORMATION_LOWERCASE" + case 212: // "ACTION_TRANSFORMATION_PHP_ARGS_NAMES" + case 213: // "ACTION_TRANSFORMATION_MD5" + case 214: // "ACTION_TRANSFORMATION_NONE" + case 215: // "ACTION_TRANSFORMATION_NORMALISE_PATH" + case 216: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" + case 217: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" + case 218: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" + case 219: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" + case 220: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS" + case 221: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" + case 222: // "ACTION_TRANSFORMATION_REMOVE_NULLS" + case 223: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" + case 224: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS" + case 225: // "ACTION_TRANSFORMATION_REPLACE_NULLS" + case 226: // "ACTION_TRANSFORMATION_SHA1" + case 227: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE" + case 228: // "ACTION_TRANSFORMATION_TRIM" + case 229: // "ACTION_TRANSFORMATION_TRIM_LEFT" + case 230: // "ACTION_TRANSFORMATION_TRIM_RIGHT" + case 231: // "ACTION_TRANSFORMATION_UPPERCASE" + case 232: // "ACTION_TRANSFORMATION_URL_ENCODE" + case 233: // "ACTION_TRANSFORMATION_URL_DECODE" + case 234: // "ACTION_TRANSFORMATION_URL_DECODE_UNI" + case 235: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" + case 236: // "Ver" + case 237: // "xmlns" + case 238: // "CONFIG_COMPONENT_SIG" + case 239: // "CONFIG_CONN_ENGINE" + case 240: // "CONFIG_SEC_ARGUMENT_SEPARATOR" + case 241: // "CONFIG_SEC_WEB_APP_ID" + case 242: // "CONFIG_SEC_SERVER_SIG" + case 243: // "CONFIG_DIR_AUDIT_DIR" + case 244: // "CONFIG_DIR_AUDIT_DIR_MOD" + case 245: // "CONFIG_DIR_AUDIT_ENG" + case 246: // "CONFIG_DIR_AUDIT_FLE_MOD" + case 247: // "CONFIG_DIR_AUDIT_LOG" + case 248: // "CONFIG_DIR_AUDIT_LOG2" + case 249: // "CONFIG_DIR_AUDIT_LOG_P" + case 250: // "CONFIG_DIR_AUDIT_STS" + case 251: // "CONFIG_DIR_AUDIT_TPE" + case 252: // "CONFIG_DIR_DEBUG_LOG" + case 253: // "CONFIG_DIR_DEBUG_LVL" + case 254: // "CONFIG_SEC_CACHE_TRANSFORMATIONS" + case 255: // "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" + case 256: // "CONFIG_SEC_HASH_ENGINE" + case 257: // "CONFIG_SEC_HASH_KEY" + case 258: // "CONFIG_SEC_HASH_PARAM" + case 259: // "CONFIG_SEC_HASH_METHOD_RX" + case 260: // "CONFIG_SEC_HASH_METHOD_PM" + case 261: // "CONFIG_SEC_CHROOT_DIR" + case 262: // "CONFIG_DIR_GEO_DB" + case 263: // "CONFIG_DIR_GSB_DB" + case 264: // "CONFIG_SEC_GUARDIAN_LOG" + case 265: // "CONFIG_DIR_PCRE_MATCH_LIMIT" + case 266: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION" + case 267: // "CONFIG_SEC_CONN_R_STATE_LIMIT" + case 268: // "CONFIG_SEC_CONN_W_STATE_LIMIT" + case 269: // "CONFIG_SEC_SENSOR_ID" + case 270: // "CONFIG_DIR_ARGS_LIMIT" + case 271: // "CONFIG_DIR_REQ_BODY" + case 272: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" + case 273: // "CONFIG_DIR_REQ_BODY_LIMIT" + case 274: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" + case 275: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" + case 276: // "CONFIG_DIR_RES_BODY" + case 277: // "CONFIG_DIR_RES_BODY_LIMIT" + case 278: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION" + case 279: // "CONFIG_SEC_RULE_INHERITANCE" + case 280: // "CONFIG_SEC_RULE_PERF_TIME" + case 281: // "CONFIG_DIR_RULE_ENG" + case 282: // "CONFIG_DIR_SEC_ACTION" + case 283: // "CONFIG_DIR_SEC_DEFAULT_ACTION" + case 284: // "CONFIG_DIR_SEC_MARKER" + case 285: // "CONFIG_DIR_UNICODE_MAP_FILE" + case 286: // "CONFIG_DIR_UNICODE_CODE_PAGE" + case 287: // "CONFIG_SEC_COLLECTION_TIMEOUT" + case 288: // "CONFIG_SEC_HTTP_BLKEY" + case 289: // "CONFIG_SEC_INTERCEPT_ON_ERROR" + case 290: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" + case 291: // "CONFIG_SEC_RULE_REMOVE_BY_ID" + case 292: // "CONFIG_SEC_RULE_REMOVE_BY_MSG" + case 293: // "CONFIG_SEC_RULE_REMOVE_BY_TAG" + case 294: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" + case 295: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" + case 296: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" + case 297: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" + case 298: // "CONFIG_UPDLOAD_KEEP_FILES" + case 299: // "CONFIG_UPDLOAD_SAVE_TMP_FILES" + case 300: // "CONFIG_UPLOAD_DIR" + case 301: // "CONFIG_UPLOAD_FILE_LIMIT" + case 302: // "CONFIG_UPLOAD_FILE_MODE" + case 303: // "CONFIG_VALUE_ABORT" + case 304: // "CONFIG_VALUE_DETC" + case 305: // "CONFIG_VALUE_HTTPS" + case 306: // "CONFIG_VALUE_OFF" + case 307: // "CONFIG_VALUE_ON" + case 308: // "CONFIG_VALUE_PARALLEL" + case 309: // "CONFIG_VALUE_PROCESS_PARTIAL" + case 310: // "CONFIG_VALUE_REJECT" + case 311: // "CONFIG_VALUE_RELEVANT_ONLY" + case 312: // "CONFIG_VALUE_SERIAL" + case 313: // "CONFIG_VALUE_WARN" + case 314: // "CONFIG_XML_EXTERNAL_ENTITY" + case 315: // "CONGIG_DIR_RESPONSE_BODY_MP" + case 316: // "CONGIG_DIR_SEC_ARG_SEP" + case 317: // "CONGIG_DIR_SEC_COOKIE_FORMAT" + case 318: // "CONFIG_SEC_COOKIEV0_SEPARATOR" + case 319: // "CONGIG_DIR_SEC_DATA_DIR" + case 320: // "CONGIG_DIR_SEC_STATUS_ENGINE" + case 321: // "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" + case 322: // "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" + case 323: // "CONGIG_DIR_SEC_TMP_DIR" + case 324: // "DIRECTIVE" + case 325: // "DIRECTIVE_SECRULESCRIPT" + case 326: // "FREE_TEXT_QUOTE_MACRO_EXPANSION" + case 327: // "QUOTATION_MARK" + case 328: // "RUN_TIME_VAR_BLD" + case 329: // "RUN_TIME_VAR_DUR" + case 330: // "RUN_TIME_VAR_HSV" + case 331: // "RUN_TIME_VAR_REMOTE_USER" + case 332: // "RUN_TIME_VAR_TIME" + case 333: // "RUN_TIME_VAR_TIME_DAY" + case 334: // "RUN_TIME_VAR_TIME_EPOCH" + case 335: // "RUN_TIME_VAR_TIME_HOUR" + case 336: // "RUN_TIME_VAR_TIME_MIN" + case 337: // "RUN_TIME_VAR_TIME_MON" + case 338: // "RUN_TIME_VAR_TIME_SEC" + case 339: // "RUN_TIME_VAR_TIME_WDAY" + case 340: // "RUN_TIME_VAR_TIME_YEAR" + case 341: // "VARIABLE" + case 342: // "Dictionary element" + case 343: // "Dictionary element, selected by regexp" value.move< std::string > (YY_MOVE (s.value)); break; - case symbol_kind::S_op: // op - case symbol_kind::S_op_before_init: // op_before_init + case 350: // op + case 351: // op_before_init value.move< std::unique_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_run_time_string: // run_time_string + case 359: // run_time_string value.move< std::unique_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_var: // var + case 356: // var value.move< std::unique_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_act: // act - case symbol_kind::S_setvar_action: // setvar_action + case 357: // act + case 358: // setvar_action value.move< std::unique_ptr > (YY_MOVE (s.value)); break; - case symbol_kind::S_variables: // variables - case symbol_kind::S_variables_pre_process: // variables_pre_process - case symbol_kind::S_variables_may_be_quoted: // variables_may_be_quoted + case 353: // variables + case 354: // variables_pre_process + case 355: // variables_may_be_quoted value.move< std::unique_ptr > > > (YY_MOVE (s.value)); break; - case symbol_kind::S_actions: // actions - case symbol_kind::S_actions_may_quoted: // actions_may_quoted + case 348: // actions + case 349: // actions_may_quoted value.move< std::unique_ptr > > > (YY_MOVE (s.value)); break; @@ -8571,62 +8103,56 @@ switch (yykind) location = YY_MOVE (s.location); } - // by_kind. + // by_type. inline - seclang_parser::by_kind::by_kind () - : kind_ (symbol_kind::S_YYEMPTY) + seclang_parser::by_type::by_type () + : type (empty_symbol) {} #if 201103L <= YY_CPLUSPLUS inline - seclang_parser::by_kind::by_kind (by_kind&& that) - : kind_ (that.kind_) + seclang_parser::by_type::by_type (by_type&& that) + : type (that.type) { that.clear (); } #endif inline - seclang_parser::by_kind::by_kind (const by_kind& that) - : kind_ (that.kind_) + seclang_parser::by_type::by_type (const by_type& that) + : type (that.type) {} inline - seclang_parser::by_kind::by_kind (token_kind_type t) - : kind_ (yytranslate_ (t)) + seclang_parser::by_type::by_type (token_type t) + : type (yytranslate_ (t)) {} inline void - seclang_parser::by_kind::clear () + seclang_parser::by_type::clear () { - kind_ = symbol_kind::S_YYEMPTY; + type = empty_symbol; } inline void - seclang_parser::by_kind::move (by_kind& that) + seclang_parser::by_type::move (by_type& that) { - kind_ = that.kind_; + type = that.type; that.clear (); } inline - seclang_parser::symbol_kind_type - seclang_parser::by_kind::kind () const YY_NOEXCEPT + int + seclang_parser::by_type::type_get () const YY_NOEXCEPT { - return kind_; - } - - inline - seclang_parser::symbol_kind_type - seclang_parser::by_kind::type_get () const YY_NOEXCEPT - { - return this->kind (); + return type; } } // yy -#line 8630 "seclang-parser.hh" +#line 8155 "seclang-parser.hh" + diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index 6f49bbe3..99d626be 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -1075,10 +1075,12 @@ expression: | DIRECTIVE variables op actions { std::vector *a = new std::vector(); - std::vector *t = new std::vector(); + std::vector > *t = new std::vector >(); for (auto &i : *$4.get()) { if (dynamic_cast(i.get())) { - t->push_back(dynamic_cast(i.release())); + std::shared_ptr at = std::move(i); + std::shared_ptr t2 = std::static_pointer_cast(std::move(at)); + t->push_back(std::move(t2)); } else { a->push_back(i.release()); } @@ -1124,10 +1126,12 @@ expression: | CONFIG_DIR_SEC_ACTION actions { std::vector *a = new std::vector(); - std::vector *t = new std::vector(); + std::vector > *t = new std::vector >(); for (auto &i : *$2.get()) { if (dynamic_cast(i.get())) { - t->push_back(dynamic_cast(i.release())); + std::shared_ptr at = std::move(i); + std::shared_ptr t2 = std::static_pointer_cast(std::move(at)); + t->push_back(std::move(t2)); } else { a->push_back(i.release()); } @@ -1144,10 +1148,12 @@ expression: { std::string err; std::vector *a = new std::vector(); - std::vector *t = new std::vector(); + std::vector > *t = new std::vector >(); for (auto &i : *$2.get()) { if (dynamic_cast(i.get())) { - t->push_back(dynamic_cast(i.release())); + std::shared_ptr at = std::move(i); + std::shared_ptr t2 = std::static_pointer_cast(std::move(at)); + t->push_back(std::move(t2)); } else { a->push_back(i.release()); } @@ -1219,8 +1225,13 @@ expression: } for (actions::Action *a : checkedActions) { - driver.m_rulesSetPhases[definedPhase]->m_defaultActions.push_back( - std::unique_ptr(a)); + if (dynamic_cast(a)) { + driver.m_rulesSetPhases[definedPhase]->m_defaultTransformations.push_back( + std::shared_ptr( + dynamic_cast(a))); + } else { + driver.m_rulesSetPhases[definedPhase]->m_defaultActions.push_back(std::unique_ptr(a)); + } } delete actions; diff --git a/src/parser/seclang-scanner.cc b/src/parser/seclang-scanner.cc index 5cbf5a62..4ca39376 100644 --- a/src/parser/seclang-scanner.cc +++ b/src/parser/seclang-scanner.cc @@ -1,5 +1,5 @@ -#line 2 "seclang-scanner.cc" +#line 3 "seclang-scanner.cc" #define YY_INT_ALIGNED short int @@ -5160,15 +5160,15 @@ static std::stack YY_PREVIOUS_STATE; #define BEGIN_PREVIOUS() { BEGIN(YY_PREVIOUS_STATE.top()); YY_PREVIOUS_STATE.pop(); } // The location of the current token. -#line 5163 "seclang-scanner.cc" +#line 5164 "seclang-scanner.cc" #define YY_NO_INPUT 1 #line 493 "seclang-scanner.ll" // Code run each time a pattern is matched. # define YY_USER_ACTION driver.loc.back()->columns (yyleng); -#line 5170 "seclang-scanner.cc" #line 5171 "seclang-scanner.cc" +#line 5172 "seclang-scanner.cc" #define INITIAL 0 #define EXPECTING_ACTION_PREDICATE_VARIABLE 1 @@ -5490,7 +5490,7 @@ YY_DECL // Code run each time yylex is called. driver.loc.back()->step(); -#line 5493 "seclang-scanner.cc" +#line 5494 "seclang-scanner.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -8587,7 +8587,7 @@ YY_RULE_SETUP #line 1334 "seclang-scanner.ll" ECHO; YY_BREAK -#line 8590 "seclang-scanner.cc" +#line 8591 "seclang-scanner.cc" case YY_END_OF_BUFFER: { diff --git a/src/parser/stack.hh b/src/parser/stack.hh index 8a74ee5c..c15d84c7 100644 --- a/src/parser/stack.hh +++ b/src/parser/stack.hh @@ -1,4 +1,4 @@ -// A Bison parser, made by GNU Bison 3.7.2. +// A Bison parser, made by GNU Bison 3.5.1. // Starting with Bison 3.2, this file is useless: the structure it // used to define is now defined with the parser itself. diff --git a/src/rule_message.cc b/src/rule_message.cc index eb679554..593c06ad 100644 --- a/src/rule_message.cc +++ b/src/rule_message.cc @@ -26,27 +26,25 @@ namespace modsecurity { std::string RuleMessage::_details(const RuleMessage *rm) { std::string msg; - msg.append(" [file \"" + std::string(*rm->m_ruleFile.get()) + "\"]"); - msg.append(" [line \"" + std::to_string(rm->m_ruleLine) + "\"]"); - msg.append(" [id \"" + std::to_string(rm->m_ruleId) + "\"]"); - msg.append(" [rev \"" + rm->m_rev + "\"]"); + msg.append(" [file \"" + rm->getFileName() + "\"]"); + msg.append(" [line \"" + std::to_string(rm->getLineNumber()) + "\"]"); + msg.append(" [id \"" + std::to_string(rm->getRuleId()) + "\"]"); + msg.append(" [rev \"" + rm->getRev() + "\"]"); msg.append(" [msg \"" + rm->m_message + "\"]"); msg.append(" [data \"" + utils::string::limitTo(200, rm->m_data) + "\"]"); msg.append(" [severity \"" + std::to_string(rm->m_severity) + "\"]"); - msg.append(" [ver \"" + rm->m_ver + "\"]"); - msg.append(" [maturity \"" + std::to_string(rm->m_maturity) + "\"]"); - msg.append(" [accuracy \"" + std::to_string(rm->m_accuracy) + "\"]"); + msg.append(" [ver \"" + rm->getVer() + "\"]"); + msg.append(" [maturity \"" + std::to_string(rm->getMaturity()) + "\"]"); + msg.append(" [accuracy \"" + std::to_string(rm->getAccuracy()) + "\"]"); for (auto &a : rm->m_tags) { msg.append(" [tag \"" + a + "\"]"); } - - msg.append(" [hostname \"" + *rm->m_serverIpAddress.get() \ - + "\"]"); - msg.append(" [uri \"" + utils::string::limitTo(200, *rm->m_uriNoQueryStringDecoded.get()) + "\"]"); - msg.append(" [unique_id \"" + *rm->m_id + "\"]"); - msg.append(" [ref \"" + utils::string::limitTo(200, rm->m_reference) + "\"]"); + msg.append(" [hostname \"" + rm->getServerIpAddress() + "\"]"); + msg.append(" [uri \"" + utils::string::limitTo(200, rm->getUri()) + "\"]"); + msg.append(" [unique_id \"" + rm->getRequestId() + "\"]"); + msg.append(" [ref \"" + rm->m_reference + "\"]"); return msg; } @@ -55,9 +53,9 @@ std::string RuleMessage::_details(const RuleMessage *rm) { std::string RuleMessage::_errorLogTail(const RuleMessage *rm) { std::string msg; - msg.append("[hostname \"" + *rm->m_serverIpAddress.get() + "\"]"); - msg.append(" [uri \"" + utils::string::limitTo(200, *rm->m_uriNoQueryStringDecoded.get()) + "\"]"); - msg.append(" [unique_id \"" + *rm->m_id + "\"]"); + msg.append("[hostname \"" + rm->getServerIpAddress() + "\"]"); + msg.append(" [uri \"" + rm->getUri() + "\"]"); + msg.append(" [unique_id \"" + rm->getRequestId() + "\"]"); return msg; } @@ -68,10 +66,11 @@ std::string RuleMessage::log(const RuleMessage *rm, int props, int code) { msg.reserve(2048); if (props & ClientLogMessageInfo) { - msg.append("[client " + std::string(*rm->m_clientIpAddress.get()) + "] "); + msg.append("[client " + rm->getClientIpAddress() + "] "); } - if (rm->m_isDisruptive) { + if (rm->isDisruptive() + && (rm->m_transaction->getRuleEngineState() == RulesSet::EnabledRuleEngine)) { msg.append("ModSecurity: Access denied with code "); if (code == -1) { msg.append("%d"); @@ -79,7 +78,7 @@ std::string RuleMessage::log(const RuleMessage *rm, int props, int code) { msg.append(std::to_string(code)); } msg.append(" (phase "); - msg.append(std::to_string(rm->m_rule->getPhase() - 1) + "). "); + msg.append(std::to_string(rm->getPhase() - 1) + "). "); } else { msg.append("ModSecurity: Warning. "); } diff --git a/src/rule_script.cc b/src/rule_script.cc index c74497d3..74663a43 100644 --- a/src/rule_script.cc +++ b/src/rule_script.cc @@ -19,23 +19,22 @@ namespace modsecurity { bool RuleScript::init(std::string *err) { - return m_lua.load(m_name, err); + return m_lua->load(m_name, err); } -bool RuleScript::evaluate(Transaction *trans, - std::shared_ptr ruleMessage) { +bool RuleScript::evaluate(Transaction *trans) { ms_dbg_a(trans, 4, " Executing script: " + m_name + "."); bool containsDisruptive = false; executeActionsIndependentOfChainedRuleResult(trans, - &containsDisruptive, ruleMessage); + &containsDisruptive); - bool ret = m_lua.run(trans); + bool ret = m_lua->run(trans); if (ret) { - executeActionsAfterFullMatch(trans, containsDisruptive, ruleMessage); + executeActionsAfterFullMatch(trans, containsDisruptive); } return ret; diff --git a/src/rule_script.h b/src/rule_script.h index 237ad6ab..476e17ff 100644 --- a/src/rule_script.h +++ b/src/rule_script.h @@ -51,17 +51,19 @@ class RuleScript : public RuleWithActions { int lineNumber) : RuleWithActions(actions, t, std::move(fileName), lineNumber), m_name(name), - m_lua() { } + m_lua(std::unique_ptr(new engine::Lua())) { } + + RuleScript(const RuleScript &rs) + : RuleWithActions(rs), + m_name(rs.m_name), + m_lua(rs.m_lua) { } - RuleScript(const RuleWithActions& r) = delete; bool init(std::string *err); - bool evaluate(Transaction *trans, - std::shared_ptr ruleMessage) override; - + bool evaluate(Transaction *trans) override; std::string m_name; - engine::Lua m_lua; + std::shared_ptr m_lua; }; } // namespace modsecurity diff --git a/src/rule_unconditional.cc b/src/rule_unconditional.cc index e6bacd66..22d52d75 100644 --- a/src/rule_unconditional.cc +++ b/src/rule_unconditional.cc @@ -19,9 +19,8 @@ namespace modsecurity { -bool RuleUnconditional::evaluate(Transaction *trans, - std::shared_ptr ruleMessage) { - RuleWithActions::evaluate(trans, ruleMessage); +bool RuleUnconditional::evaluate(Transaction *trans) { + RuleWithActions::evaluate(trans); // FIXME: This needs to be romeved on the runtime exeption review. bool containsBlock = false; @@ -30,11 +29,11 @@ bool RuleUnconditional::evaluate(Transaction *trans, + ") Executing unconditional rule..."); executeActionsIndependentOfChainedRuleResult(trans, - &containsBlock, ruleMessage); + &containsBlock); - executeActionsAfterFullMatch(trans, containsBlock, ruleMessage); + executeActionsAfterFullMatch(trans, containsBlock); - performLogging(trans, ruleMessage); + trans->logMatchLastRuleOnTheChain(this); return true; } diff --git a/src/rule_with_actions.cc b/src/rule_with_actions.cc index 69445e29..e69f9bce 100644 --- a/src/rule_with_actions.cc +++ b/src/rule_with_actions.cc @@ -34,8 +34,13 @@ #include "src/utils/string.h" #include "modsecurity/rule_message.h" #include "modsecurity/rule_with_actions.h" +#include "src/actions/accuracy.h" +#include "src/actions/maturity.h" #include "src/actions/msg.h" +#include "src/actions/log.h" +#include "src/actions/no_log.h" #include "src/actions/log_data.h" +#include "src/actions/rev.h" #include "src/actions/severity.h" #include "src/actions/capture.h" #include "src/actions/multi_match.h" @@ -60,126 +65,182 @@ RuleWithActions::RuleWithActions( std::unique_ptr fileName, int lineNumber) : Rule(std::move(fileName), lineNumber), - m_rev(""), - m_ver(""), - m_accuracy(0), - m_maturity(0), m_ruleId(0), m_chainedRuleChild(nullptr), m_chainedRuleParent(nullptr), m_disruptiveAction(nullptr), m_logData(nullptr), m_msg(nullptr), - m_severity(nullptr), m_actionsRuntimePos(), m_actionsSetVar(), m_actionsTag(), - m_transformations(transformations != NULL ? *transformations : Transformations()), + m_defaultActionDisruptiveAction(nullptr), + m_defaultActionLogData(nullptr), + m_defaultActionMsg(nullptr), + m_defaultActionActionsRuntimePos(), + m_defaultActionActionsSetVar(), + m_defaultActionActionsTag(), + m_transformations(transformations != nullptr ? *transformations : Transformations()), + m_defaultTransformations(), + m_severity(SEVERITY_NOT_SET), + m_revision(""), + m_version(""), + m_accuracy(ACCURACY_NOT_SET), + m_maturity(MATURITY_NOT_SET), m_containsCaptureAction(false), + m_containsLogAction(false), + m_containsNoLogAction(false), m_containsMultiMatchAction(false), m_containsStaticBlockAction(false), + m_defaultSeverity(SEVERITY_NOT_SET), + m_defaultRevision(""), + m_defaultVersion(""), + m_defaultAccuracy(ACCURACY_NOT_SET), + m_defaultMaturity(MATURITY_NOT_SET), + m_defaultContainsCaptureAction(false), + m_defaultContainsLogAction(false), + m_defaultContainsNoLogAction(false), + m_defaultContainsMultiMatchAction(false), + m_defaultContainsStaticBlockAction(false), m_isChained(false) { if (actions) { - for (Action *a : *actions) { - if (a->action_kind == Action::ConfigurationKind) { - a->evaluate(this, NULL); - delete a; - - } else if (a->action_kind == Action::RunTimeOnlyIfMatchKind) { - if (dynamic_cast(a)) { - m_containsCaptureAction = true; - delete a; - } else if (dynamic_cast(a)) { - m_containsMultiMatchAction = true; - delete a; - } else if (dynamic_cast(a)) { - m_severity = dynamic_cast(a); - } else if (dynamic_cast(a)) { - m_logData = dynamic_cast(a); - } else if (dynamic_cast(a)) { - m_msg = dynamic_cast(a); - } else if (dynamic_cast(a)) { - m_actionsSetVar.push_back( - dynamic_cast(a)); - } else if (dynamic_cast(a)) { - m_actionsTag.push_back(dynamic_cast(a)); - } else if (dynamic_cast(a)) { - m_actionsRuntimePos.push_back(a); - m_containsStaticBlockAction = true; - } else if (a->isDisruptive() == true) { - if (m_disruptiveAction != nullptr) { - delete m_disruptiveAction; - m_disruptiveAction = nullptr; - } - m_disruptiveAction = a; - } else { - m_actionsRuntimePos.push_back(a); - } - } else { - delete a; - std::cout << "General failure, action: " << a->m_name; - std::cout << " has an unknown type." << std::endl; - throw std::runtime_error("Unexpected condition. Action without a type.\n"); - } + for (actions::Action *a : *actions) { + addAction(a); } - delete actions; } } -RuleWithActions::~RuleWithActions() { - if (m_severity) { - delete m_severity; - m_severity = nullptr; +void RuleWithActions::addDefaultAction(std::shared_ptr a) { + if (a->action_kind == Action::ConfigurationKind) { + a->evaluate(this, NULL); + return; } - if (m_logData) { - delete m_logData; - m_logData = nullptr; + + if (a->action_kind == Action::ConfigurationKind) { + if (dynamic_cast(a.get())) { + actions::Accuracy *accuracy = dynamic_cast(a.get()); + m_defaultAccuracy = accuracy->getAccuracy(); + } else if (dynamic_cast(a.get())) { + actions::Rev *rev = dynamic_cast(a.get()); + m_defaultRevision = rev->getRevision(); + } else { + a->evaluate(this, NULL); + } + return; } - if (m_msg) { - delete m_msg; - m_msg = nullptr; - } - while (m_transformations.empty() == false) { - auto *a = m_transformations.back(); - m_transformations.pop_back(); - delete a; - } - while (m_actionsRuntimePos.empty() == false) { - auto *a = m_actionsRuntimePos.back(); - m_actionsRuntimePos.pop_back(); - delete a; - } - while (m_actionsSetVar.empty() == false) { - auto *a = m_actionsSetVar.back(); - m_actionsSetVar.pop_back(); - delete a; - } - while (m_actionsTag.empty() == false) { - auto *a = m_actionsTag.back(); - m_actionsTag.pop_back(); - delete a; - } - if (m_disruptiveAction != nullptr) { - delete m_disruptiveAction; - m_disruptiveAction = nullptr; + + if (a->action_kind == Action::RunTimeOnlyIfMatchKind) { + if (dynamic_cast(a.get())) { + m_defaultContainsCaptureAction = true; + } else if (dynamic_cast(a.get())) { + m_defaultContainsMultiMatchAction = true; + } else if (dynamic_cast(a.get())) { + actions::Severity *severity = dynamic_cast(a.get()); + setDefaultActionSeverity(severity->m_severity); + } else if (dynamic_cast(a.get())) { + actions::Maturity *maturity = dynamic_cast(a.get()); + setDefaultActionMaturity(maturity->getMaturity()); + } else if (dynamic_cast(a.get())) { + m_defaultActionLogData = std::static_pointer_cast(a); + } else if (dynamic_cast(a.get())) { + m_defaultActionMsg = std::static_pointer_cast(a); + } else if (dynamic_cast(a.get())) { + m_defaultActionActionsSetVar.push_back(std::static_pointer_cast(a)); + } else if (dynamic_cast(a.get())) { + m_defaultActionActionsTag.push_back(std::static_pointer_cast(a)); + } else if (dynamic_cast(a.get())) { + m_defaultContainsLogAction = true; + } else if (dynamic_cast(a.get())) { + m_defaultContainsNoLogAction = true; + } else if (dynamic_cast(a.get())) { + m_defaultActionActionsRuntimePos.push_back(a); + m_defaultContainsStaticBlockAction = true; + } else if (a->isDisruptive() == true) { + m_defaultActionDisruptiveAction = a; + } else { + m_defaultActionActionsRuntimePos.push_back(a); + } + return; } + + std::cout << "General failure, action: " << *a->m_name; + std::cout << " has an unknown type." << std::endl; + throw std::invalid_argument("action type not found."); + } +void RuleWithActions::addAction(actions::Action *a) { + if (a->action_kind == Action::ConfigurationKind) { + if (dynamic_cast(a)) { + actions::Accuracy *accuracy = dynamic_cast(a); + m_accuracy = accuracy->getAccuracy(); + } else if (dynamic_cast(a)) { + actions::Rev *rev = dynamic_cast(a); + m_revision = rev->getRevision(); + } else { + a->evaluate(this, NULL); + } + delete a; + return; + } + + if (a->action_kind == Action::RunTimeOnlyIfMatchKind) { + if (dynamic_cast(a)) { + m_containsCaptureAction = true; + delete a; + } else if (dynamic_cast(a)) { + m_containsMultiMatchAction = true; + delete a; + } else if (dynamic_cast(a)) { + actions::Severity *severity = dynamic_cast(a); + setSeverity(severity->m_severity); + delete a; + } else if (dynamic_cast(a)) { + m_logData = std::unique_ptr(dynamic_cast(a)); + } else if (dynamic_cast(a)) { + m_msg = std::unique_ptr(dynamic_cast(a)); + } else if (dynamic_cast(a)) { + m_actionsSetVar.push_back(std::unique_ptr(dynamic_cast(a))); + } else if (dynamic_cast(a)) { + actions::Maturity *maturity = dynamic_cast(a); + m_maturity = maturity->getMaturity(); + delete a; + } else if (dynamic_cast(a)) { + m_containsLogAction = true; + delete a; + } else if (dynamic_cast(a)) { + m_containsNoLogAction = true; + delete a; + } else if (dynamic_cast(a)) { + m_actionsTag.push_back(std::unique_ptr(dynamic_cast(a))); + } else if (dynamic_cast(a)) { + m_actionsRuntimePos.push_back(std::unique_ptr(dynamic_cast(a))); + m_containsStaticBlockAction = true; + } else if (a->isDisruptive() == true) { + m_disruptiveAction = std::unique_ptr(a); + } else { + m_actionsRuntimePos.push_back(std::unique_ptr(a)); + } + return; + } + + std::cout << "General failure, action: " << *a->m_name; + std::cout << " has an unknown type." << std::endl; + delete a; + throw std::invalid_argument("action type not found."); + +} + + +RuleWithActions::~RuleWithActions() { } + bool RuleWithActions::evaluate(Transaction *transaction) { - RuleMessage rm(this, transaction); - std::shared_ptr rm2 = std::make_shared(&rm); - return evaluate(transaction, rm2); -} - - -bool RuleWithActions::evaluate(Transaction *transaction, - std::shared_ptr ruleMessage) { /* Rule evaluate is pure virtual. * - * Rule::evaluate(transaction, ruleMessage); + * Rule::evaluate(transaction); */ /* Matched vars needs to be clear at every new rule execution */ @@ -190,9 +251,9 @@ bool RuleWithActions::evaluate(Transaction *transaction, void RuleWithActions::executeActionsIndependentOfChainedRuleResult(Transaction *trans, - bool *containsBlock, std::shared_ptr ruleMessage) { + bool *containsBlock) { - for (actions::SetVar *a : m_actionsSetVar) { + for (actions::SetVar *a : getSetVarsActionsPtr()) { ms_dbg_a(trans, 4, "Running [independent] (non-disruptive) " \ "action: " + *a->m_name.get()); @@ -211,30 +272,31 @@ void RuleWithActions::executeActionsIndependentOfChainedRuleResult(Transaction * } else if (*a->m_name.get() == "setvar") { ms_dbg_a(trans, 4, "Running [independent] (non-disruptive) " \ "action: " + *a->m_name.get()); - a->evaluate(this, trans, ruleMessage); + a->evaluate(this, trans, *trans->messageGetLast()); } } - } void RuleWithActions::executeActionsAfterFullMatch(Transaction *trans, - bool containsBlock, std::shared_ptr ruleMessage) { + bool containsBlock) { bool disruptiveAlreadyExecuted = false; - for (auto &a : trans->m_rules->m_rulesSetPhases[getPhase()]->m_defaultActions) { +#if 0 + for (auto &a : trans->m_rules->m_defaultActions[getPhase()]) { if (a.get()->action_kind != actions::Action::RunTimeOnlyIfMatchKind) { continue; } if (!a.get()->isDisruptive()) { - executeAction(trans, containsBlock, ruleMessage, a.get(), true); + executeAction(trans, containsBlock, a.get(), true); } } +#endif - for (actions::Tag *a : this->m_actionsTag) { + for (actions::Tag *a : getTagsActionPtr()) { ms_dbg_a(trans, 4, "Running (non-disruptive) action: " \ + *a->m_name.get()); - a->evaluate(this, trans, ruleMessage); + a->evaluate(this, trans, *trans->messageGetLast()); } for (auto &b : @@ -243,41 +305,47 @@ void RuleWithActions::executeActionsAfterFullMatch(Transaction *trans, continue; } actions::Action *a = dynamic_cast(b.second.get()); - executeAction(trans, containsBlock, ruleMessage, a, false); + executeAction(trans, containsBlock, a, false); disruptiveAlreadyExecuted = true; } - if (m_severity) { - m_severity->evaluate(this, trans, ruleMessage); - } if (m_logData) { - m_logData->evaluate(this, trans, ruleMessage); + m_logData->evaluate(this, trans, *trans->messageGetLast()); + } else if (m_defaultActionLogData) { + m_defaultActionLogData->evaluate(this, trans, *trans->messageGetLast()); } if (m_msg) { - m_msg->evaluate(this, trans, ruleMessage); + m_msg->evaluate(this, trans, *trans->messageGetLast()); + } else if (m_defaultActionMsg) { + m_defaultActionMsg->evaluate(this, trans, *trans->messageGetLast()); } - for (Action *a : this->m_actionsRuntimePos) { + + for (auto &a : getMatchActionsPtr()) { if (!a->isDisruptive() && !(disruptiveAlreadyExecuted && dynamic_cast(a))) { - executeAction(trans, containsBlock, ruleMessage, a, false); + executeAction(trans, containsBlock, a, false); } } if (!disruptiveAlreadyExecuted && m_disruptiveAction != nullptr) { - executeAction(trans, containsBlock, ruleMessage, - m_disruptiveAction, false); + executeAction(trans, containsBlock, + m_disruptiveAction.get(), false); + } else if (!disruptiveAlreadyExecuted && hasBlockAction() + && m_defaultActionDisruptiveAction != nullptr) { + executeAction(trans, containsBlock, + m_defaultActionDisruptiveAction.get(), false); } } void RuleWithActions::executeAction(Transaction *trans, - bool containsBlock, std::shared_ptr ruleMessage, + bool containsBlock, Action *a, bool defaultContext) { if (a->isDisruptive() == false && *a->m_name.get() != "block") { ms_dbg_a(trans, 9, "Running " \ "action: " + *a->m_name.get()); - a->evaluate(this, trans, ruleMessage); + a->evaluate(this, trans, *trans->messageGetLast()); return; } @@ -290,7 +358,7 @@ void RuleWithActions::executeAction(Transaction *trans, if (trans->getRuleEngineState() == RulesSet::EnabledRuleEngine) { ms_dbg_a(trans, 4, "Running (disruptive) action: " + *a->m_name.get() + \ "."); - a->evaluate(this, trans, ruleMessage); + a->evaluate(this, trans, *trans->messageGetLast()); return; } @@ -339,37 +407,20 @@ void RuleWithActions::executeTransformations( std::shared_ptr value = std::shared_ptr(new std::string(in)); - if (m_containsMultiMatchAction == true) { + if (hasMultimatchAction()) { /* keep the original value */ ret.push_back(std::make_pair( std::shared_ptr(new std::string(*value)), std::shared_ptr(new std::string(path)))); } - for (Action *a : m_transformations) { + for (Action *a : getTransformationPtr()) { if (a->m_isNone) { none++; } } - // Check for transformations on the SecDefaultAction - // Notice that first we make sure that won't be a t:none - // on the target rule. - if (none == 0) { - for (auto &a : trans->m_rules->m_rulesSetPhases[getPhase()]->m_defaultActions) { - if (a->action_kind \ - != actions::Action::RunTimeBeforeMatchAttemptKind) { - continue; - } - - // FIXME: here the object needs to be a transformation already. - Transformation *t = dynamic_cast(a.get()); - executeTransformation(t, &value, trans, &ret, &path, - &transformations); - } - } - - for (Transformation *a : m_transformations) { + for (Transformation *a : getTransformationPtr()) { if (none == 0) { Transformation *t = dynamic_cast(a); executeTransformation(t, &value, trans, &ret, &path, @@ -423,8 +474,8 @@ void RuleWithActions::executeTransformations( } -bool RuleWithActions::containsTag(const std::string& name, Transaction *t) { - for (auto &tag : m_actionsTag) { +bool RuleWithActions::containsTag(const std::string& name, Transaction *t) const { + for (auto &tag : getTagsAction()) { if (tag != NULL && tag->getName(t) == name) { return true; } @@ -441,12 +492,12 @@ bool RuleWithActions::containsMsg(const std::string& name, Transaction *t) { std::vector RuleWithActions::getActionsByName(const std::string& name, Transaction *trans) { std::vector ret; - for (auto &z : m_actionsRuntimePos) { + for (auto &z : getMatchActionsPtr()) { if (*z->m_name.get() == name) { ret.push_back(z); } } - for (auto &z : m_transformations) { + for (auto &z : getTransformationPtr()) { if (*z->m_name.get() == name) { ret.push_back(z); } @@ -474,76 +525,9 @@ std::vector RuleWithActions::getActionsByName(const std::stri return ret; } -void RuleWithActions::performLogging(Transaction *trans, - std::shared_ptr ruleMessage, - bool lastLog, - bool chainedParentNull) { +std::string RuleWithActions::getLogData(Transaction *t) { return m_logData->data(t); } +std::string RuleWithActions::getMessage(Transaction *t) { return m_msg->data(t); } - /* last rule in the chain. */ - bool isItToBeLogged = ruleMessage->m_saveMessage; - - /** - * - * RuleMessage is stacked allocated for the rule execution, - * anything beyond this may lead to invalid pointer access. - * - * In case of a warning, o set of messages is saved to be read - * at audit log generation. Therefore demands a copy here. - * - * FIXME: Study an way to avoid the copy. - * - **/ - if (lastLog) { - if (chainedParentNull) { - isItToBeLogged = (ruleMessage->m_saveMessage && (m_chainedRuleParent == nullptr)); - if (isItToBeLogged && !hasMultimatch()) { - /* warn */ - trans->m_rulesMessages.push_back(*ruleMessage); - - /* error */ - if (!ruleMessage->m_isDisruptive) { - trans->serverLog(ruleMessage); - } - } - } else if (hasBlockAction() && !hasMultimatch()) { - /* warn */ - trans->m_rulesMessages.push_back(*ruleMessage); - /* error */ - if (!ruleMessage->m_isDisruptive) { - trans->serverLog(ruleMessage); - } - } else { - if (isItToBeLogged && !hasMultimatch() - && !ruleMessage->m_message.empty()) { - /* warn */ - trans->m_rulesMessages.push_back(*ruleMessage); - - /* error */ - if (!ruleMessage->m_isDisruptive) { - trans->serverLog(ruleMessage); - } - } - } - } else { - if (hasMultimatch() && isItToBeLogged) { - /* warn */ - trans->m_rulesMessages.push_back(*ruleMessage.get()); - - /* error */ - if (!ruleMessage->m_isDisruptive) { - trans->serverLog(ruleMessage); - } - - RuleMessage *rm = new RuleMessage(this, trans); - rm->m_saveMessage = ruleMessage->m_saveMessage; - ruleMessage.reset(rm); - } - } -} - -std::string RuleWithActions::logData(Transaction *t) { return m_logData->data(t); } -std::string RuleWithActions::msg(Transaction *t) { return m_msg->data(t); } -int RuleWithActions::severity() const { return m_severity->m_severity; } } // namespace modsecurity diff --git a/src/rule_with_operator.cc b/src/rule_with_operator.cc index 8cb322e6..aeb740e8 100644 --- a/src/rule_with_operator.cc +++ b/src/rule_with_operator.cc @@ -58,24 +58,13 @@ RuleWithOperator::RuleWithOperator(Operator *op, std::unique_ptr fileName, int lineNumber) : RuleWithActions(actions, transformations, std::move(fileName), lineNumber), - m_variables(_variables), - m_operator(op) { /* */ } + m_variables(std::unique_ptr(_variables)), + m_operator(std::unique_ptr(op)) { /* */ } + + RuleWithOperator::~RuleWithOperator() { - if (m_operator != NULL) { - delete m_operator; - } - - while (m_variables != NULL && m_variables->empty() == false) { - auto *a = m_variables->back(); - m_variables->pop_back(); - delete a; - } - - if (m_variables != NULL) { - delete m_variables; - } } @@ -101,7 +90,7 @@ void RuleWithOperator::cleanMatchedVars(Transaction *trans) { bool RuleWithOperator::executeOperatorAt(Transaction *trans, const std::string &key, - std::string value, std::shared_ptr ruleMessage) { + std::string value) { #if MSC_EXEC_CLOCK_ENABLED clock_t begin = clock(); clock_t end; @@ -113,7 +102,7 @@ bool RuleWithOperator::executeOperatorAt(Transaction *trans, const std::string & utils::string::toHexIfNeeded(value)) \ + "\" (Variable: " + key + ")"); - ret = this->m_operator->evaluateInternal(trans, this, value, ruleMessage); + ret = m_operator->evaluateInternal(trans, this, value, trans->messageGetLast()); if (ret == false) { return false; @@ -213,10 +202,9 @@ inline void RuleWithOperator::getFinalVars(variables::Variables *vars, } -bool RuleWithOperator::evaluate(Transaction *trans, - std::shared_ptr ruleMessage) { +bool RuleWithOperator::evaluate(Transaction *trans) { bool globalRet = false; - variables::Variables *variables = this->m_variables; + variables::Variables *variables = m_variables.get(); bool recursiveGlobalRet; bool containsBlock = hasBlockAction(); std::string eparam; @@ -224,8 +212,7 @@ bool RuleWithOperator::evaluate(Transaction *trans, vars.reserve(4); variables::Variables exclusion; - RuleWithActions::evaluate(trans, ruleMessage); - + RuleWithActions::evaluate(trans); // FIXME: Make a class runTimeException to handle this cases. for (auto &i : trans->m_ruleRemoveById) { @@ -311,21 +298,21 @@ bool RuleWithOperator::evaluate(Transaction *trans, bool ret; std::string valueAfterTrans = std::move(*valueTemp.first); - ret = executeOperatorAt(trans, key, valueAfterTrans, ruleMessage); + ret = executeOperatorAt(trans, key, valueAfterTrans); if (ret == true) { - ruleMessage->m_match = m_operator->resolveMatchMessage(trans, + trans->messageGetLast()->m_match = m_operator->resolveMatchMessage(trans, key, value); + for (auto &i : v->getOrigin()) { - ruleMessage->m_reference.append(i->toText()); + trans->messageGetLast()->m_reference.append(i->toText()); } - ruleMessage->m_reference.append(*valueTemp.second); + trans->messageGetLast()->m_reference.append(*valueTemp.second); + updateMatchedVars(trans, key, valueAfterTrans); executeActionsIndependentOfChainedRuleResult(trans, - &containsBlock, ruleMessage); - - performLogging(trans, ruleMessage, false); + &containsBlock); globalRet = true; } @@ -344,7 +331,7 @@ bool RuleWithOperator::evaluate(Transaction *trans, } ms_dbg_a(trans, 4, "Rule returned 1."); - if (this->isChained() == false) { + if (this->hasChainAction() == false) { goto end_exec; } @@ -356,7 +343,7 @@ bool RuleWithOperator::evaluate(Transaction *trans, } ms_dbg_a(trans, 4, "Executing chained rule."); - recursiveGlobalRet = m_chainedRuleChild->evaluate(trans, ruleMessage); + recursiveGlobalRet = m_chainedRuleChild->evaluate(trans); if (recursiveGlobalRet == true) { goto end_exec; @@ -366,10 +353,21 @@ end_clean: return false; end_exec: - executeActionsAfterFullMatch(trans, containsBlock, ruleMessage); + executeActionsAfterFullMatch(trans, containsBlock); /* last rule in the chain. */ - performLogging(trans, ruleMessage, true, true); + trans->logMatchLastRuleOnTheChain(this); + + if (hasSeverityAction()) { + ms_dbg_a(trans, 9, "This rule severity is: " + \ + std::to_string(getSeverity()) + " current transaction is: " + \ + std::to_string(trans->m_highestSeverityAction)); + + if (trans->m_highestSeverityAction > getSeverity()) { + trans->m_highestSeverityAction = getSeverity(); + } + } + return true; } diff --git a/src/rules_set.cc b/src/rules_set.cc index 40d26e05..63441869 100644 --- a/src/rules_set.cc +++ b/src/rules_set.cc @@ -31,6 +31,46 @@ using modsecurity::Utils::HttpsClient; namespace modsecurity { + void Rules::fixDefaultActions() { + for (size_t i = 0; i < m_rules.size(); i++) { + auto &rule = m_rules[i]; + + RuleWithActions *r = dynamic_cast(rule.get()); + if (!r) { + continue; + } + + if (dynamic_cast(rule.get())) { + RuleWithOperator *op = new RuleWithOperator(*dynamic_cast(rule.get())); + std::unique_ptr nrp(op); + m_rules[i] = std::move(nrp); + } else if (dynamic_cast(rule.get())) { + RuleUnconditional *un = new RuleUnconditional(*dynamic_cast(rule.get())); + std::unique_ptr nrp(un); + m_rules[i] = std::move(nrp); + } else if (dynamic_cast(rule.get())) { + RuleScript *rs = new RuleScript(*dynamic_cast(rule.get())); + std::unique_ptr nrp(rs); + m_rules[i] = std::move(nrp); + } else { + RuleWithActions *nr = new RuleWithActions(*dynamic_cast(rule.get())); + std::unique_ptr nrp(nr); + m_rules[i] = std::move(nrp); + } + + RuleWithActions *nr = dynamic_cast(m_rules[i].get()); + nr->clearDefaultActions(); + for (auto a : m_defaultActions) { + nr->addDefaultAction(a); + } + for (auto a : m_defaultTransformations) { + nr->addDefaultTransformation(a); + } + + + } + } + /** * @name loadFromUri diff --git a/src/rules_set_phases.cc b/src/rules_set_phases.cc index f0d572cb..e962945e 100644 --- a/src/rules_set_phases.cc +++ b/src/rules_set_phases.cc @@ -62,11 +62,27 @@ int RulesSetPhases::append(RulesSetPhases *from, std::ostringstream *err) { } amount_of_rules = amount_of_rules + res; - std::vector > *actions_from = &from->at(phase)->m_defaultActions; - std::vector > *actions_to = &at(phase)->m_defaultActions; - for (size_t j = 0; j < actions_from->size(); j++) { - actions_to->push_back(actions_from->at(j)); + /** + * An action set in a child will overwrite an action set on a parent. + * + */ + std::vector > *actions_to = &at(phase)->m_defaultActions; + std::vector > *actions_t_to = &at(phase)->m_defaultTransformations; + if (actions_to->size() == 0 || actions_t_to->size() == 0) { + std::vector > *actions_from = &from->at(phase)->m_defaultActions; + + actions_to->clear(); + for (size_t j = 0; j < actions_from->size(); j++) { + actions_to->push_back(actions_from->at(j)); + } + + std::vector > *actions_t_from = &from->at(phase)->m_defaultTransformations; + actions_t_to->clear(); + for (size_t j = 0; j < actions_t_from->size(); j++) { + actions_t_to->push_back(actions_t_from->at(j)); + } + at(phase)->fixDefaultActions(); } } diff --git a/src/transaction.cc b/src/transaction.cc index bae7c4ca..91d73f3e 100644 --- a/src/transaction.cc +++ b/src/transaction.cc @@ -61,6 +61,33 @@ using modsecurity::RequestBodyProcessor::XML; namespace modsecurity { + +RuleMessage *TransactionRuleMessageManagement::messageGetLast() { + return m_rulesMessages.back(); +} + +void TransactionRuleMessageManagement::logMatchLastRuleOnTheChain(RuleWithActions *rule) { + RuleMessage *rm = m_rulesMessages.back(); + + rm->setRule(rule); + + if (rule->hasDisruptiveAction() && + (m_transaction->getRuleEngineState() == RulesSet::DetectionOnlyRuleEngine)) { + /* error */ + // The error goes over the disruptive massage. We don't need it here. + //m_transaction->serverLog(rm); + } else if (rule->hasBlockAction() && (!rule->hasNoLogAction()) || rule->hasLogAction()) { + /* Log as warning. */ + m_transaction->serverLog(rm); + messageNew(); + } +} + +void TransactionRuleMessageManagement::messageNew() { + m_rulesMessages.push_back(new RuleMessage(m_transaction)); +} + + /** * @name Transaction * @brief Represents the inspection on an entire request. @@ -122,7 +149,6 @@ Transaction::Transaction(ModSecurity *ms, RulesSet *rules, void *logCbData) m_ruleRemoveTargetById(), m_requestBodyAccess(RulesSet::PropertyNotSetConfigBoolean), m_auditLogModifier(), - m_rulesMessages(), m_requestBody(), m_responseBody(), /* m_id(), */ @@ -160,7 +186,8 @@ Transaction::Transaction(ModSecurity *ms, RulesSet *rules, void *logCbData) m_variableTimeWDay(""), m_variableTimeYear(""), m_logCbData(logCbData), - TransactionAnchoredVariables(this) { + TransactionAnchoredVariables(this), + TransactionRuleMessageManagement(this) { m_id = std::unique_ptr( new std::string( std::to_string(m_timeStamp))); @@ -195,7 +222,6 @@ Transaction::Transaction(ModSecurity *ms, RulesSet *rules, char *id, void *logCb m_ruleRemoveTargetById(), m_requestBodyAccess(RulesSet::PropertyNotSetConfigBoolean), m_auditLogModifier(), - m_rulesMessages(), m_requestBody(), m_responseBody(), m_id(std::unique_ptr(new std::string(id))), @@ -233,7 +259,8 @@ Transaction::Transaction(ModSecurity *ms, RulesSet *rules, char *id, void *logCb m_variableTimeWDay(""), m_variableTimeYear(""), m_logCbData(logCbData), - TransactionAnchoredVariables(this) { + TransactionAnchoredVariables(this), + TransactionRuleMessageManagement(this) { m_variableUrlEncodedError.set("0", 0); @@ -250,7 +277,7 @@ Transaction::~Transaction() { m_requestBody.str(std::string()); m_requestBody.clear(); - m_rulesMessages.clear(); + messageClear(); intervention::free(&m_it); intervention::clean(&m_it); @@ -1593,8 +1620,8 @@ std::string Transaction::toOldAuditLogFormat(int parts, } if (parts & audit_log::AuditLog::HAuditLogPart) { audit_log << "--" << trailer << "-" << "H--" << std::endl; - for (auto a : m_rulesMessages) { - audit_log << a.log(0, m_httpCodeReturned) << std::endl; + for (auto a : messageGetAll()) { + audit_log << a->log(0, m_httpCodeReturned) << std::endl; } audit_log << std::endl; /** TODO: write audit_log H part. */ @@ -1756,36 +1783,36 @@ std::string Transaction::toJSON(int parts) { reinterpret_cast("messages"), strlen("messages")); yajl_gen_array_open(g); - for (auto a : m_rulesMessages) { + for (auto a : messageGetAll()) { yajl_gen_map_open(g); - LOGFY_ADD("message", a.m_message.c_str()); + LOGFY_ADD("message", a->m_message.c_str()); yajl_gen_string(g, reinterpret_cast("details"), strlen("details")); yajl_gen_map_open(g); - LOGFY_ADD("match", a.m_match.c_str()); - LOGFY_ADD("reference", a.m_reference.c_str()); - LOGFY_ADD("ruleId", std::to_string(a.m_ruleId).c_str()); - LOGFY_ADD("file", a.m_ruleFile->c_str()); - LOGFY_ADD("lineNumber", std::to_string(a.m_ruleLine).c_str()); - LOGFY_ADD("data", a.m_data.c_str()); - LOGFY_ADD("severity", std::to_string(a.m_severity).c_str()); - LOGFY_ADD("ver", a.m_ver.c_str()); - LOGFY_ADD("rev", a.m_rev.c_str()); + LOGFY_ADD("match", a->m_match.c_str()); + LOGFY_ADD("reference", a->m_reference.c_str()); + LOGFY_ADD("ruleId", std::to_string(a->getRuleId()).c_str()); + LOGFY_ADD("file", a->getFileName().c_str()); + LOGFY_ADD("lineNumber", std::to_string(a->getLineNumber()).c_str()); + LOGFY_ADD("data", a->m_data.c_str()); + LOGFY_ADD("severity", std::to_string(a->m_severity).c_str()); + LOGFY_ADD("ver", a->getVer().c_str()); + LOGFY_ADD("rev", a->getRev().c_str()); yajl_gen_string(g, reinterpret_cast("tags"), strlen("tags")); yajl_gen_array_open(g); - for (auto b : a.m_tags) { + for (auto b : a->m_tags) { yajl_gen_string(g, reinterpret_cast(b.c_str()), strlen(b.c_str())); } yajl_gen_array_close(g); - LOGFY_ADD("maturity", std::to_string(a.m_maturity).c_str()); - LOGFY_ADD("accuracy", std::to_string(a.m_accuracy).c_str()); + LOGFY_ADD("maturity", std::to_string(a->getMaturity()).c_str()); + LOGFY_ADD("accuracy", std::to_string(a->getAccuracy()).c_str()); yajl_gen_map_close(g); yajl_gen_map_close(g); } @@ -1814,7 +1841,7 @@ std::string Transaction::toJSON(int parts) { } -void Transaction::serverLog(std::shared_ptr rm) { +void Transaction::serverLog(RuleMessage *rm) { m_ms->serverLog(m_logCbData, rm); } diff --git a/src/variables/rule.h b/src/variables/rule.h index f9e2f989..9667d24a 100644 --- a/src/variables/rule.h +++ b/src/variables/rule.h @@ -42,10 +42,6 @@ class Rule_DictElement : public VariableDictElement { \ std::vector *l) { RuleWithActions *r = rule; - while (r && r->m_ruleId == 0) { - r = r->m_chainedRuleParent; - } - if (!r || r->m_ruleId == 0) { return; } @@ -67,24 +63,22 @@ class Rule_DictElement : public VariableDictElement { \ std::vector *l) { RuleWithActions *r = rule; - while (r && r->m_rev.empty()) { - r = r->m_chainedRuleParent; - } - if (!r) { return; } - std::unique_ptr origin(new VariableOrigin()); - std::string *a = new std::string(r->m_rev); - VariableValue *var = new VariableValue(&m_rule, &m_rule_rev, - a - ); - delete a; - origin->m_offset = 0; - origin->m_length = 0; - var->addOrigin(std::move(origin)); - l->push_back(var); + if (r->hasRevisionAction()) { + std::unique_ptr origin(new VariableOrigin()); + std::string *a = new std::string(r->getRevision()); + VariableValue *var = new VariableValue(&m_rule, &m_rule_rev, + a + ); + delete a; + origin->m_offset = 0; + origin->m_length = 0; + var->addOrigin(std::move(origin)); + l->push_back(var); + } } @@ -93,13 +87,13 @@ class Rule_DictElement : public VariableDictElement { \ std::vector *l) { RuleWithActions *r = rule; - while (r && !r->hasSeverity()) { - r = r->m_chainedRuleParent; + if (!r) { + return; } - if (r && r->hasSeverity()) { + if (r->hasSeverityAction()) { std::unique_ptr origin(new VariableOrigin()); - std::string *a = new std::string(std::to_string(r->severity())); + std::string *a = new std::string(std::to_string(r->getSeverity())); VariableValue *var = new VariableValue(&m_rule, &m_rule_severity, a ); @@ -117,13 +111,13 @@ class Rule_DictElement : public VariableDictElement { \ std::vector *l) { RuleWithActions *r = rule; - while (r && !r->hasLogData()) { - r = r->m_chainedRuleParent; + if (!r) { + return; } - if (r && r->hasLogData()) { + if (r->hasLogDataAction()) { std::unique_ptr origin(new VariableOrigin()); - std::string *a = new std::string(r->logData(t)); + std::string *a = new std::string(r->getLogData(t)); VariableValue *var = new VariableValue(&m_rule, &m_rule_logdata, a ); @@ -140,13 +134,13 @@ class Rule_DictElement : public VariableDictElement { \ std::vector *l) { RuleWithActions *r = rule; - while (r && !r->hasMsg()) { - r = r->m_chainedRuleParent; + if (!r) { + return; } - if (r && r->hasMsg()) { + if (r->hasMessageAction()) { std::unique_ptr origin(new VariableOrigin()); - std::string *a = new std::string(r->msg(t)); + std::string *a = new std::string(r->getMessage(t)); VariableValue *var = new VariableValue(&m_rule, &m_rule_msg, a ); @@ -165,11 +159,11 @@ class Rule_DictElement : public VariableDictElement { \ id(t, rule, l); return; } - if (rule && m_dictElement == "rev") { + if (m_dictElement == "rev") { rev(t, rule, l); return; } - if (rule && m_dictElement == "severity") { + if (m_dictElement == "severity") { severity(t, rule, l); return; } diff --git a/test/cppcheck_suppressions.txt b/test/cppcheck_suppressions.txt index 17509793..66cd89b0 100644 --- a/test/cppcheck_suppressions.txt +++ b/test/cppcheck_suppressions.txt @@ -27,6 +27,8 @@ shiftNegative:src/utils/msc_tree.cc *:src/utils/msc_tree.cc invalidScanfArgType_int:src/rules_set_properties.cc:101 invalidScanfArgType_int:src/rules_set_properties.cc:102 +redundantAssignment:src/operators/pm.cc:94 + // @@ -36,6 +38,7 @@ unmatchedSuppression:src/utils/geo_lookup.cc:82 useInitializationList:src/utils/shared_files.h:87 unmatchedSuppression:src/utils/msc_tree.cc functionStatic:headers/modsecurity/transaction.h:407 +functionStatic:headers/modsecurity/transaction.h:456 duplicateBranch:src/audit_log/audit_log.cc:223 unreadVariable:src/request_body_processor/multipart.cc:435 stlcstrParam:src/audit_log/writer/parallel.cc:145 diff --git a/test/test-cases/regression/config-update-action-by-id.json b/test/test-cases/regression/config-update-action-by-id.json index 4e1a3fc2..6e343be5 100644 --- a/test/test-cases/regression/config-update-action-by-id.json +++ b/test/test-cases/regression/config-update-action-by-id.json @@ -122,7 +122,7 @@ }, "expected":{ "http_code": 200, - "debug_log": "Running action: log" + "debug_log": "Rule returned 1" }, "rules":[ "SecRuleEngine On", @@ -167,7 +167,7 @@ }, "expected":{ "http_code": 200, - "debug_log": "Running action: log" + "debug_log": "Rule returned 1" }, "rules":[ "SecRuleEngine On", diff --git a/test/test-cases/regression/issue-1528.json b/test/test-cases/regression/issue-1528.json index f2257055..74f2c3db 100644 --- a/test/test-cases/regression/issue-1528.json +++ b/test/test-cases/regression/issue-1528.json @@ -31,8 +31,8 @@ }, "rules": [ "SecRuleEngine On", - "SecAction \"id:1, nolog, setvar:tx.bad_value=attack\"", - "SecRule ARGS:param \"@rx ^%{tx.bad_value}$\" \"id:2,block\"" + "SecAction \"id:1, setvar:tx.bad_value=attack\"", + "SecRule ARGS:param \"@rx ^%{tx.bad_value}$\" \"id:2,log\"" ] } ] diff --git a/test/test-cases/regression/issue-1844.json b/test/test-cases/regression/issue-1844.json index 6ccb1f5e..df1a4ec6 100644 --- a/test/test-cases/regression/issue-1844.json +++ b/test/test-cases/regression/issue-1844.json @@ -37,10 +37,12 @@ ] }, "expected":{ - "error_log":"line \"29\"" + "error_log":"line \"29\"", + "http_code": 403 }, "rules":[ "SecRuleEngine On", + "SecDefaultAction \"phase:request,deny\"", "SecRule WEBAPPID \"@contains test1\" \"id:1,phase:3,pass,t:trim\"", "Include test-cases/data/big-file.conf" ] @@ -129,10 +131,12 @@ ] }, "expected":{ - "error_log":"line \"84\"" + "error_log":"line \"84\"", + "http_code": 403 }, "rules":[ "SecRuleEngine On", + "SecDefaultAction \"phase:request,deny\"", "SecRule WEBAPPID \"@contains test3\" \"id:1,phase:3,pass,t:trim\"", "Include test-cases/data/big-file.conf" ] @@ -175,11 +179,13 @@ ] }, "expected":{ - "error_log":"line \"116\"" + "error_log":"line \"116\"", + "http_code":403 }, "rules":[ "SecRuleEngine On", - "SecRule WEBAPPID \"@contains test3\" \"id:1,phase:3,pass,t:trim\"", + "SecDefaultAction \"phase:request,deny\"", + "SecRule WEBAPPID \"@contains test3\" \"id:1,phase:3,deny,t:trim\"", "Include test-cases/data/big-file.conf" ] }, @@ -221,10 +227,12 @@ ] }, "expected":{ - "error_log":"line \"174\"" + "error_log":"line \"174\"", + "http_code":403 }, "rules":[ "SecRuleEngine On", + "SecDefaultAction \"phase:request,deny\"", "SecRule WEBAPPID \"@contains test3\" \"id:1,phase:3,pass,t:trim\"", "Include test-cases/data/big-file.conf" ] @@ -267,10 +275,12 @@ ] }, "expected":{ - "error_log":"line \"174\"" + "error_log":"line \"174\"", + "http_code":403 }, "rules":[ "SecRuleEngine On", + "SecDefaultAction \"phase:request,deny\"", "SecRule WEBAPPID \"@contains test3\" \"id:1,phase:3,pass,t:trim\"", "Include test-cases/data/not-so-big-file.conf" ] diff --git a/test/test-cases/regression/issue-2296.json b/test/test-cases/regression/issue-2296.json index bc64d19b..bfb0356a 100644 --- a/test/test-cases/regression/issue-2296.json +++ b/test/test-cases/regression/issue-2296.json @@ -33,13 +33,13 @@ ] }, "expected":{ - "http_code":200, + "http_code":300, "debug_log":"Target value: \"is a simple test\"", "error_log":"Operator `Rx' with parameter `test' against variable `ARGS:THIS'" }, "rules":[ "SecRuleEngine On", - "SecRule ARGS:/^ThIs$/ \"test\" \"id:1\"" + "SecRule ARGS:/^ThIs$/ \"test\" \"id:1,deny,status:300\"" ] }, { @@ -119,13 +119,13 @@ ] }, "expected":{ - "http_code":200, + "http_code":300, "debug_log":"Target value: \"is a simple test\"", "error_log":"msg \"Testing is a simple test\"" }, "rules":[ "SecRuleEngine On", - "SecRule ARGS:/^ThIs$/ \"test\" \"id:1,msg:'Testing %{ARGS:/^ThIs$/}'\"" + "SecRule ARGS:/^ThIs$/ \"test\" \"id:1,msg:'Testing %{ARGS:/^ThIs$/}',deny,status:300\"" ] }, { @@ -162,13 +162,13 @@ ] }, "expected":{ - "http_code":200, + "http_code":300, "debug_log":"Target value: \"is a simple test\"", "error_log":"msg \"Testing is a simple test\"" }, "rules":[ "SecRuleEngine On", - "SecRule ARGS:/^ThIs$/ \"test\" \"id:1,msg:'Testing %{ARGS:/^ThIs$/}',chain\"", + "SecRule ARGS:/^ThIs$/ \"test\" \"id:1,msg:'Testing %{ARGS:/^ThIs$/}',chain,deny,status:300\"", "SecRule MATCHED_VARS:/thIs/ \"is a simple test\" \"log\"" ] }, diff --git a/test/test-cases/regression/offset-variable.json b/test/test-cases/regression/offset-variable.json index de633167..bd7b3803 100644 --- a/test/test-cases/regression/offset-variable.json +++ b/test/test-cases/regression/offset-variable.json @@ -22,10 +22,12 @@ ] }, "expected":{ - "error_log":"o0,3v23,6t:trim" + "error_log":"o0,3v23,6t:trim", + "http_code": 403 }, "rules":[ - "SecRule ARGS \"@rx val\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS \"@rx val\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny,log\"" ] }, { @@ -51,10 +53,12 @@ ] }, "expected":{ - "error_log":"o3,3v37,6t:trim" + "error_log":"o3,3v37,6t:trim", + "http_code":403 }, "rules":[ - "SecRule ARGS_GET \"@rx ue2\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS_GET \"@rx ue2\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -83,11 +87,13 @@ ] }, "expected":{ - "error_log":"o3,3v142,6t:trim" + "error_log":"o3,3v142,6t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_POST \"@rx ue1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS_POST \"@rx ue1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -116,11 +122,13 @@ ] }, "expected":{ - "error_log":"o3,3v156,6t:trim" + "error_log":"o3,3v156,6t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_POST \"@rx ue2\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS_POST \"@rx ue2\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -149,11 +157,13 @@ ] }, "expected":{ - "error_log":"o0,6v17,6t:trim" + "error_log":"o0,6v17,6t:trim", + "http_code":403 }, "rules":[ + "SecRuleEngine On", "SecRequestBodyAccess On", - "SecRule ARGS_GET_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRule ARGS_GET_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -182,11 +192,13 @@ ] }, "expected":{ - "error_log":"o0,6v31,6t:trim" + "error_log":"o0,6v31,6t:trim", + "http_code":403 }, "rules":[ + "SecRuleEngine On", "SecRequestBodyAccess On", - "SecRule ARGS_GET_NAMES \"@rx param2\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRule ARGS_GET_NAMES \"@rx param2\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -219,7 +231,7 @@ }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_GET_NAMES \"@rx am1 par\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRule ARGS_GET_NAMES \"@rx am1 par\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -252,7 +264,7 @@ }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_GET_NAMES \"@rx am1 param2 par\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRule ARGS_GET_NAMES \"@rx am1 param2 par\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -281,11 +293,13 @@ ] }, "expected":{ - "error_log": "0,6v149,6t:trim" + "error_log": "0,6v149,6t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_POST_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS_POST_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -314,11 +328,13 @@ ] }, "expected":{ - "error_log":"o0,6v17,6t:trim" + "error_log":"o0,6v17,6t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS_NAMES \"@rx param1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -344,11 +360,13 @@ ] }, "expected":{ - "error_log":"v16,6v23,6v30,6v37,6v44,6v51,6t:trim" + "error_log":"v16,6v23,6v30,6v37,6v44,6v51,6t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_COMBINED_SIZE \"@gt 1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS_COMBINED_SIZE \"@gt 1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -374,11 +392,13 @@ ] }, "expected":{ - "error_log":"v16,6v23,6v30,6v37,6v44,6v51,6t:trim" + "error_log":"v16,6v23,6v30,6v37,6v44,6v51,6t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS_COMBINED_SIZE \"@gt 1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule ARGS_COMBINED_SIZE \"@gt 1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -405,11 +425,13 @@ ] }, "expected":{ - "error_log":"o23,6v0,63t:trim" + "error_log":"o23,6v0,63t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_LINE \"value1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_LINE \"value1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -437,11 +459,13 @@ ] }, "expected":{ - "error_log":"o0,3v0,3t:trim" + "error_log":"o0,3v0,3t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_METHOD \"GET\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_METHOD \"GET\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -469,11 +493,13 @@ ] }, "expected":{ - "error_log":"o5,3v58,8t:trim" + "error_log":"o5,3v58,8t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_PROTOCOL \"1.1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_PROTOCOL \"1.1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -501,11 +527,13 @@ ] }, "expected":{ - "error_log":"o1,5v4,11t:trim" + "error_log":"o1,5v4,11t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule PATH_INFO \"index\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule PATH_INFO \"index\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -533,11 +561,13 @@ ] }, "expected":{ - "error_log":"o7,6v16,41t:trim" + "error_log":"o7,6v16,41t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule QUERY_STRING \"value1\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule QUERY_STRING \"value1\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -565,11 +595,13 @@ ] }, "expected":{ - "error_log":"o6,4v5,10t:trim" + "error_log":"o6,4v5,10t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_BASENAME \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_BASENAME \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -597,11 +629,13 @@ ] }, "expected":{ - "error_log":"o7,4v4,59t:trim" + "error_log":"o7,4v4,59t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_URI \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_URI \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -629,11 +663,14 @@ ] }, "expected":{ - "error_log":"o7,4v4,59t:trim" + "error_log":"o7,4v4,59t:trim", + "http_code": 403 + }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_URI_RAW \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_URI_RAW \"html\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, @@ -661,11 +698,13 @@ ] }, "expected":{ - "error_log":"o0,9v89,9t:trim" + "error_log":"o0,9v89,9t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_HEADERS \"localhost\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_HEADERS \"localhost\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, @@ -693,11 +732,13 @@ ] }, "expected":{ - "error_log":"o14,3v163,33t:trim" + "error_log":"o14,3v163,33t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_HEADERS \"www\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_HEADERS \"www\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -724,11 +765,13 @@ ] }, "expected":{ - "error_log":"o0,5v162,5t:trim" + "error_log":"o0,5v162,5t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule AUTH_TYPE \"Basic\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule AUTH_TYPE \"Basic\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -755,11 +798,13 @@ ] }, "expected":{ - "error_log":"o0,5v79,5t:trim" + "error_log":"o0,5v79,5t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule AUTH_TYPE \"Basic\" \"id:1,phase:2,pass,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule AUTH_TYPE \"Basic\" \"id:1,phase:2,pass,t:trim,msg:'ops',deny\"" ] }, { @@ -786,11 +831,13 @@ ] }, "expected":{ - "error_log":"o0,4v64,13t:lowercase" + "error_log":"o0,4v64,13t:lowercase", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_HEADERS_NAMES \"auth\" \"id:1,phase:2,pass,t:lowercase,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_HEADERS_NAMES \"auth\" \"id:1,phase:2,pass,t:lowercase,msg:'ops',deny\"" ] }, { @@ -818,11 +865,13 @@ ] }, "expected":{ - "error_log":"o1,2v216,3t:lowercase" + "error_log":"o1,2v216,3t:lowercase", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_COOKIES \"es\" \"id:1,phase:2,pass,t:lowercase,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_COOKIES \"es\" \"id:1,phase:2,pass,t:lowercase,msg:'ops',deny\"" ] }, { @@ -850,11 +899,13 @@ ] }, "expected":{ - "error_log":"o0,1v223,1t:lowercase" + "error_log":"o0,1v223,1t:lowercase", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_COOKIES \"z\" \"id:1,phase:2,pass,t:lowercase,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_COOKIES \"z\" \"id:1,phase:2,pass,t:lowercase,msg:'ops',deny\"" ] }, { @@ -882,11 +933,13 @@ ] }, "expected":{ - "error_log":"o0,1v228,1t:lowercase,t:trim" + "error_log":"o0,1v228,1t:lowercase", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_COOKIES \"b\" \"id:1,phase:2,pass,t:lowercase,t:trim,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_COOKIES \"b\" \"id:1,phase:2,pass,t:lowercase,msg:'ops',deny\"" ] }, { @@ -914,11 +967,13 @@ ] }, "expected":{ - "error_log":"o0,1v226,1" + "error_log":"o0,1v226,1", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_COOKIES_NAMES \"t\" \"id:1,phase:2,pass,msg:'ops'\"" + "SecRuleEngine On", + "SecRule REQUEST_COOKIES_NAMES \"t\" \"id:1,phase:2,pass,msg:'ops',deny\"" ] }, { @@ -956,11 +1011,12 @@ ] }, "expected":{ - "error_log":"o0,7v198,30t:trim" + "error_log":"o0,7v198,30t:trim", + "http_code":403 }, "rules":[ "SecRuleEngine On", - "SecRule REMOTE_USER \"Aladdin\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRule REMOTE_USER \"Aladdin\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1005,11 +1061,13 @@ ] }, "expected":{ - "error_log":"o45,30v193,516t:trim" + "error_log":"o45,30v193,516t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_BODY \"Content-Disposition: form-data\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule REQUEST_BODY \"Content-Disposition: form-data\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1054,11 +1112,13 @@ ] }, "expected":{ - "error_log":"o45,30v193,516t:trim" + "error_log":"o45,30v193,516t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_BODY \"Content-Disposition: form-data\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule REQUEST_BODY \"Content-Disposition: form-data\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1103,11 +1163,13 @@ ] }, "expected":{ - "error_log":"v193,516t:trim" + "error_log":"v193,516t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_BODY_LENGTH \"@gt 5\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule REQUEST_BODY_LENGTH \"@gt 5\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1152,11 +1214,13 @@ ] }, "expected":{ - "error_log":"o6,5v5,11t:trim" + "error_log":"o6,5v5,11t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_FILENAME \"/file\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule REQUEST_FILENAME \"/file\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1201,11 +1265,13 @@ ] }, "expected":{ - "error_log":"o6,8v5,23t:trim" + "error_log":"o6,8v5,23t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_FILENAME \"/f i l e\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule REQUEST_FILENAME \"/f i l e\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1250,11 +1316,13 @@ ] }, "expected":{ - "error_log":"o6,8v5,23t:trim" + "error_log":"o6,8v5,23t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule REQUEST_FILENAME \"/f i l e\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule REQUEST_FILENAME \"/f i l e\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1299,11 +1367,13 @@ ] }, "expected":{ - "error_log":"o0,4v306,4t:trim" + "error_log":"o0,4v306,4t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS \"test\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule ARGS \"test\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1352,11 +1422,13 @@ ] }, "expected":{ - "error_log":"o0,5v402,5t:trim" + "error_log":"o0,5v402,5t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule ARGS \"test2\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule ARGS \"test2\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1405,11 +1477,13 @@ ] }, "expected":{ - "error_log":"o0,16v680,20t:trim" + "error_log":"o0,16v680,20t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule FILES \"small_text_file2\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule FILES \"small_text_file2\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1458,11 +1532,13 @@ ] }, "expected":{ - "error_log":"o0,16v512,20t:trim" + "error_log":"o0,16v512,20t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule FILES \"small_text_file1\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule FILES \"small_text_file1\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1511,11 +1587,13 @@ ] }, "expected":{ - "error_log":"o0,8o0,8v491,8t:trimo0,16o0,16v709,16t:trim" + "error_log":"o0,8o0,8v491,8t:trimo0,16o0,16v709,16t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule FILES_NAMES \"(fiasdfasdfledata|filedata)\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule FILES_NAMES \"(fiasdfasdfledata|filedata)\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1564,11 +1642,13 @@ ] }, "expected":{ - "error_log":"v560,32t:trim" + "error_log":"v560,32t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule FILES_SIZES:filedata \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule FILES_SIZES:filedata \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1617,11 +1697,13 @@ ] }, "expected":{ - "error_log":"v754,38t:trim" + "error_log":"v754,38t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule FILES_SIZES:fiasdfasdfledata \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule FILES_SIZES:fiasdfasdfledata \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1670,11 +1752,13 @@ ] }, "expected":{ - "error_log":"v560,32v754,38t:trim" + "error_log":"v560,32v754,38t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", - "SecRule FILES_COMBINED_SIZE \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRuleEngine On", + "SecRule FILES_COMBINED_SIZE \"@gt 0\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1723,13 +1807,15 @@ ] }, "expected":{ - "error_log":"o8,7v754,38t:trim" + "error_log":"o8,7v754,38t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", "SecUploadKeepFiles On", + "SecRuleEngine On", "SecUploadDir /tmp", - "SecRule FILES_TMP_CONTENT \"another\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRule FILES_TMP_CONTENT \"another\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1778,13 +1864,15 @@ ] }, "expected":{ - "error_log":"o15,5v560,32t:trim" + "error_log":"o15,5v560,32t:trim", + "http_code": 403 }, "rules":[ "SecRequestBodyAccess On", "SecUploadKeepFiles On", + "SecRuleEngine On", "SecUploadDir /tmp", - "SecRule FILES_TMP_CONTENT:small_text_file1.txt \"small\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRule FILES_TMP_CONTENT:small_text_file1.txt \"small\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1833,13 +1921,15 @@ ] }, "expected":{ - "error_log":"o6,4v5,23t:trim" + "error_log":"o6,4v5,23t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", "SecUploadKeepFiles On", + "SecRuleEngine On", "SecUploadDir /tmp", - "SecRule PATH_INFO \"/f i\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRule PATH_INFO \"/f i\" \"id:1,phase:3,t:trim,msg:'s',deny\"" ] }, { @@ -1888,13 +1978,15 @@ ] }, "expected":{ - "error_log":"o0,20v680,20t:trim" + "error_log":"o0,20v680,20t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", "SecUploadKeepFiles On", + "SecRuleEngine On", "SecUploadDir /tmp", - "SecRule MULTIPART_FILENAME \"small_text_file2.txt\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRule MULTIPART_FILENAME \"small_text_file2.txt\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { @@ -1943,13 +2035,15 @@ ] }, "expected":{ - "error_log":"o0,16v709,16t:trim" + "error_log":"o0,16v709,16t:trim", + "http_code":403 }, "rules":[ "SecRequestBodyAccess On", "SecUploadKeepFiles On", + "SecRuleEngine On", "SecUploadDir /tmp", - "SecRule MULTIPART_NAME \"fiasdfasdfledata\" \"id:1,phase:3,pass,t:trim,msg:'s'\"" + "SecRule MULTIPART_NAME \"fiasdfasdfledata\" \"id:1,phase:3,pass,t:trim,msg:'s',deny\"" ] }, { diff --git a/test/test-cases/regression/operator-rx.json b/test/test-cases/regression/operator-rx.json index d6b9839f..e0771573 100644 --- a/test/test-cases/regression/operator-rx.json +++ b/test/test-cases/regression/operator-rx.json @@ -79,11 +79,12 @@ }, "expected":{ "debug_log":"Executing operator \"Rx\" with param \"\\^0\\$\"", - "error_log":"Matched \"Operator `Rx' with parameter `\\^0\\$'" + "error_log":"Matched \"Operator `Rx' with parameter `\\^0\\$'", + "http_code": 403 }, "rules":[ "SecRuleEngine On", - "SecRule REQUEST_HEADERS:Content-Length \"!^0$\" \"id:1,phase:2,pass,t:trim,block\"" + "SecRule REQUEST_HEADERS:Content-Length \"!^0$\" \"id:1,phase:2,pass,t:trim,deny\"" ] } ] diff --git a/test/test-cases/regression/variable-ARGS_POST_NAMES.json b/test/test-cases/regression/variable-ARGS_POST_NAMES.json index fb0964f3..d6902826 100644 --- a/test/test-cases/regression/variable-ARGS_POST_NAMES.json +++ b/test/test-cases/regression/variable-ARGS_POST_NAMES.json @@ -183,12 +183,13 @@ ] }, "expected":{ + "http_code": 403, "error_log":"o0,5v206,5t:trim" }, "rules":[ "SecRuleEngine On", "SecRequestBodyAccess On", - "SecRule ARGS_POST_NAMES \"@contains name1\" \"id:1,phase:3,pass,t:trim\"" + "SecRule ARGS_POST_NAMES \"@contains name1\" \"id:1,phase:3,pass,t:trim,deny\"" ] } ]