def get_rules(rule_ids=None, offset=0, limit=common.database_limit, sort_by=None, select=None, sort_ascending=True, search_text=None, complementary_search=False, search_in_fields=None): """Return information from all the security rules. It does not return information from its associated roles. Parameters ---------- rule_ids : list List of rule ids (None for all rules) offset : int First item to return limit : int, optional Maximum number of items to return sort_by : dict Fields to sort the items by. Format: {"fields":["field1","field2"],"order":"asc|desc"} sort_ascending : bool Sort in ascending (true) or descending (false) order search_text : str Text to search select : str Select which fields to return (separated by comma) complementary_search : bool Find items without the text to search search_in_fields : list Fields to search in Returns ------- Rules information """ affected_items = list() result = AffectedItemsWazuhResult( none_msg='No security rule was returned', some_msg='Some security rules were not returned', all_msg='All specified security rules were returned') with RulesManager() as rum: for ru_id in rule_ids: rule = rum.get_rule(int(ru_id)) if rule != SecurityError.RULE_NOT_EXIST: affected_items.append(rule) else: # Rule id does not exist result.add_failed_item(id_=ru_id, error=WazuhError(4022)) data = process_array(affected_items, search_text=search_text, search_in_fields=search_in_fields, select=select, complementary_search=complementary_search, sort_by=sort_by, sort_ascending=sort_ascending, offset=offset, limit=limit, allowed_sort_fields=SORT_FIELDS, required_fields=REQUIRED_FIELDS) result.affected_items = data['items'] result.total_affected_items = data['totalItems'] return result