def _filter_ENDSWITH(self, data): for key in self.key: target = DictQuery(data).get(key, '') if isinstance(target, list): for t in target: if self.__check_endswith(t): return True else: if self.__check_endswith(target): return True return False
def _filter_DOMAIN(self, data): for key in self.key: target = DictQuery(data).get(key, '') if isinstance(target, list): for t in target: if self.__check_domain(t): return True else: if self.__check_domain(target): return True return False
def _filter_REGEXP(self, data): for key in self.key: target = DictQuery(data).get(key, '') if isinstance(target, list): for t in target: if self.__check_regexp(t): return True else: if self.__check_regexp(target): return True return False
def _filter_KEYWORD(self, data): for key in self.key: target = DictQuery(data).get(key, '') if isinstance(target, list): for t in target: if self.__check_keyword(t): return True else: if self.__check_keyword(target): return True return False
def _filter_NETWORK(self, data): if not data: return False for key in self.key: target = DictQuery(data).get(key, '0.0.0.0') if isinstance(target, list): for t in target: if self.__check_network(t): return True else: if self.__check_network(target): return True return False
def _filter_NOT_NETWORK(self, data): if not data: return False for key in self.key: target = DictQuery(data).get(key, '0.0.0.0') if isinstance(target, list): for t in target: # Se fa match anche solo un IP allora ritorno False if not self.__check_not_network(t): return False else: if not self.__check_not_network(target): return False return True
def __number_comparator(self, data, comparator): # Wrapper for filters GREATER, LESS, GREATER_EQ, LESS_EQ for key in self.key: target = DictQuery(data).get(key, '') if not target: return False if isinstance(target, list): for t in target: try: if comparator(float(t)): return True except ValueError: raise ValueError( f"Invalid target in GREATER filter: {t} is not float" ) else: try: if comparator(float(target)): return True except ValueError: raise ValueError( f"Invalid target in GREATER filter: {target} is not float" ) return False
def _filter_NOT_EXISTS(self, data): for key in self.key: if DictQuery(data).get(key) is not None: return False return True