Exemple #1
0
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