1 /***** 2 * 3 * Copyright (C) 2008-2015 CS-SI. All Rights Reserved. 4 * Author: Yoann Vandoorselaere <yoann@prelude-ids.com> 5 * 6 * This file is part of the Prelude library. 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2, or (at your option) 11 * any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License along 19 * with this program; if not, write to the Free Software Foundation, Inc., 20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 21 * 22 *****/ 23 24 #ifndef _LIBPRELUDE_IDMEF_CRITERIA_HXX 25 #define _LIBPRELUDE_IDMEF_CRITERIA_HXX 26 27 #include <string> 28 #include "prelude.h" 29 #include "idmef.hxx" 30 31 namespace Prelude { 32 class IDMEFCriterion { 33 public: 34 enum IDMEFCriterionOperatorEnum { 35 OPERATOR_NOT = IDMEF_CRITERION_OPERATOR_NOT, 36 OPERATOR_NOCASE = IDMEF_CRITERION_OPERATOR_NOCASE, 37 38 OPERATOR_EQUAL = IDMEF_CRITERION_OPERATOR_EQUAL, 39 OPERATOR_EQUAL_NOCASE = IDMEF_CRITERION_OPERATOR_EQUAL_NOCASE, 40 OPERATOR_NOT_EQUAL = IDMEF_CRITERION_OPERATOR_NOT_EQUAL, 41 OPERATOR_NOT_EQUAL_NOCASE = IDMEF_CRITERION_OPERATOR_NOT_EQUAL_NOCASE, 42 43 OPERATOR_LESSER = IDMEF_CRITERION_OPERATOR_LESSER, 44 OPERATOR_LESSER_OR_EQUAL = IDMEF_CRITERION_OPERATOR_LESSER_OR_EQUAL, 45 46 OPERATOR_GREATER = IDMEF_CRITERION_OPERATOR_GREATER, 47 OPERATOR_GREATER_OR_EQUAL = IDMEF_CRITERION_OPERATOR_GREATER_OR_EQUAL, 48 49 OPERATOR_SUBSTR = IDMEF_CRITERION_OPERATOR_SUBSTR, 50 OPERATOR_SUBSTR_NOCASE = IDMEF_CRITERION_OPERATOR_SUBSTR_NOCASE, 51 OPERATOR_NOT_SUBSTR = IDMEF_CRITERION_OPERATOR_NOT_SUBSTR, 52 OPERATOR_NOT_SUBSTR_NOCASE = IDMEF_CRITERION_OPERATOR_NOT_SUBSTR_NOCASE, 53 54 OPERATOR_REGEX = IDMEF_CRITERION_OPERATOR_REGEX, 55 OPERATOR_REGEX_NOCASE = IDMEF_CRITERION_OPERATOR_REGEX_NOCASE, 56 OPERATOR_NOT_REGEX = IDMEF_CRITERION_OPERATOR_NOT_REGEX, 57 OPERATOR_NOT_REGEX_NOCASE = IDMEF_CRITERION_OPERATOR_NOT_REGEX_NOCASE, 58 59 OPERATOR_NULL = IDMEF_CRITERION_OPERATOR_NULL, 60 OPERATOR_NOT_NULL = IDMEF_CRITERION_OPERATOR_NOT_NULL 61 }; 62 }; 63 64 class IDMEFCriteria { 65 private: 66 idmef_criteria_t *_criteria; 67 68 public: 69 ~IDMEFCriteria(); 70 IDMEFCriteria(); 71 IDMEFCriteria(const IDMEFCriteria &criteria); 72 IDMEFCriteria(const char *criteria); 73 IDMEFCriteria(const std::string &criteria); 74 IDMEFCriteria(idmef_criteria_t *criteria); 75 76 int match(Prelude::IDMEF *message) const; 77 IDMEFCriteria clone() const; 78 void andCriteria(const IDMEFCriteria &criteria); 79 void orCriteria(const IDMEFCriteria &criteria); 80 const std::string toString() const; 81 82 operator const std::string() const; 83 operator idmef_criteria_t *() const; 84 IDMEFCriteria &operator=(const IDMEFCriteria &criteria); 85 }; 86 }; 87 88 #endif 89