#ifndef __SIMPLE_PROTECTION_H__ #define __SIMPLE_PROTECTION_H__ #include #include "ips_signatures.h" #include "i_keywords_rule.h" class SimpleProtection { class Impl : public IPSSignatureSubTypes::BaseSignature { public: Impl( const std::string &sig_name, const std::string &ssm, const std::string &keyword, const std::vector &context ); const std::string & getSigId() const override { return sig_name; } MatchType getMatch(const std::set &matched) const override; std::set patternsInSignature() const override; const std::vector & getContext() const override { return context; } private: std::string sig_name; std::vector context; std::shared_ptr rule; PMPattern pattern; }; public: template static std::shared_ptr get(const std::string &sig_name, Archive &ar) { std::string ssm, keyword; std::vector context; ar( cereal::make_nvp("SSM", ssm), cereal::make_nvp("keywords", keyword), cereal::make_nvp("context", context) ); return std::make_shared(sig_name, ssm, keyword, context); } }; #endif // __SIMPLE_PROTECTION_H__