/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace NetworkFirewall { namespace Model { /** *

The stateless or stateful rules definitions for use in a single rule group. * Each rule group requires a single RulesSource. You can use an * instance of this for either stateless rules or stateful rules.

See * Also:

AWS * API Reference

*/ class RulesSource { public: AWS_NETWORKFIREWALL_API RulesSource(); AWS_NETWORKFIREWALL_API RulesSource(Aws::Utils::Json::JsonView jsonValue); AWS_NETWORKFIREWALL_API RulesSource& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_NETWORKFIREWALL_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline const Aws::String& GetRulesString() const{ return m_rulesString; } /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline bool RulesStringHasBeenSet() const { return m_rulesStringHasBeenSet; } /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline void SetRulesString(const Aws::String& value) { m_rulesStringHasBeenSet = true; m_rulesString = value; } /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline void SetRulesString(Aws::String&& value) { m_rulesStringHasBeenSet = true; m_rulesString = std::move(value); } /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline void SetRulesString(const char* value) { m_rulesStringHasBeenSet = true; m_rulesString.assign(value); } /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline RulesSource& WithRulesString(const Aws::String& value) { SetRulesString(value); return *this;} /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline RulesSource& WithRulesString(Aws::String&& value) { SetRulesString(std::move(value)); return *this;} /** *

Stateful inspection criteria, provided in Suricata compatible intrusion * prevention system (IPS) rules. Suricata is an open-source network IPS that * includes a standard rule-based language for network traffic inspection.

*

These rules contain the inspection criteria and the action to take for * traffic that matches the criteria, so this type of rule group doesn't have a * separate action setting.

*/ inline RulesSource& WithRulesString(const char* value) { SetRulesString(value); return *this;} /** *

Stateful inspection criteria for a domain list rule group.

*/ inline const RulesSourceList& GetRulesSourceList() const{ return m_rulesSourceList; } /** *

Stateful inspection criteria for a domain list rule group.

*/ inline bool RulesSourceListHasBeenSet() const { return m_rulesSourceListHasBeenSet; } /** *

Stateful inspection criteria for a domain list rule group.

*/ inline void SetRulesSourceList(const RulesSourceList& value) { m_rulesSourceListHasBeenSet = true; m_rulesSourceList = value; } /** *

Stateful inspection criteria for a domain list rule group.

*/ inline void SetRulesSourceList(RulesSourceList&& value) { m_rulesSourceListHasBeenSet = true; m_rulesSourceList = std::move(value); } /** *

Stateful inspection criteria for a domain list rule group.

*/ inline RulesSource& WithRulesSourceList(const RulesSourceList& value) { SetRulesSourceList(value); return *this;} /** *

Stateful inspection criteria for a domain list rule group.

*/ inline RulesSource& WithRulesSourceList(RulesSourceList&& value) { SetRulesSourceList(std::move(value)); return *this;} /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline const Aws::Vector& GetStatefulRules() const{ return m_statefulRules; } /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline bool StatefulRulesHasBeenSet() const { return m_statefulRulesHasBeenSet; } /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline void SetStatefulRules(const Aws::Vector& value) { m_statefulRulesHasBeenSet = true; m_statefulRules = value; } /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline void SetStatefulRules(Aws::Vector&& value) { m_statefulRulesHasBeenSet = true; m_statefulRules = std::move(value); } /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline RulesSource& WithStatefulRules(const Aws::Vector& value) { SetStatefulRules(value); return *this;} /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline RulesSource& WithStatefulRules(Aws::Vector&& value) { SetStatefulRules(std::move(value)); return *this;} /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline RulesSource& AddStatefulRules(const StatefulRule& value) { m_statefulRulesHasBeenSet = true; m_statefulRules.push_back(value); return *this; } /** *

An array of individual stateful rules inspection criteria to be used together * in a stateful rule group. Use this option to specify simple Suricata rules with * protocol, source and destination, ports, direction, and rule options. For * information about the Suricata Rules format, see Rules Format.

*/ inline RulesSource& AddStatefulRules(StatefulRule&& value) { m_statefulRulesHasBeenSet = true; m_statefulRules.push_back(std::move(value)); return *this; } /** *

Stateless inspection criteria to be used in a stateless rule group.

*/ inline const StatelessRulesAndCustomActions& GetStatelessRulesAndCustomActions() const{ return m_statelessRulesAndCustomActions; } /** *

Stateless inspection criteria to be used in a stateless rule group.

*/ inline bool StatelessRulesAndCustomActionsHasBeenSet() const { return m_statelessRulesAndCustomActionsHasBeenSet; } /** *

Stateless inspection criteria to be used in a stateless rule group.

*/ inline void SetStatelessRulesAndCustomActions(const StatelessRulesAndCustomActions& value) { m_statelessRulesAndCustomActionsHasBeenSet = true; m_statelessRulesAndCustomActions = value; } /** *

Stateless inspection criteria to be used in a stateless rule group.

*/ inline void SetStatelessRulesAndCustomActions(StatelessRulesAndCustomActions&& value) { m_statelessRulesAndCustomActionsHasBeenSet = true; m_statelessRulesAndCustomActions = std::move(value); } /** *

Stateless inspection criteria to be used in a stateless rule group.

*/ inline RulesSource& WithStatelessRulesAndCustomActions(const StatelessRulesAndCustomActions& value) { SetStatelessRulesAndCustomActions(value); return *this;} /** *

Stateless inspection criteria to be used in a stateless rule group.

*/ inline RulesSource& WithStatelessRulesAndCustomActions(StatelessRulesAndCustomActions&& value) { SetStatelessRulesAndCustomActions(std::move(value)); return *this;} private: Aws::String m_rulesString; bool m_rulesStringHasBeenSet = false; RulesSourceList m_rulesSourceList; bool m_rulesSourceListHasBeenSet = false; Aws::Vector m_statefulRules; bool m_statefulRulesHasBeenSet = false; StatelessRulesAndCustomActions m_statelessRulesAndCustomActions; bool m_statelessRulesAndCustomActionsHasBeenSet = false; }; } // namespace Model } // namespace NetworkFirewall } // namespace Aws