3 �^� � @ sV d dl Z d dlZddlmZ ddlmZ ddlmZ ddlm Z G dd� dee�Z dS ) � N� )�CriteriaSetDescriptor)� MatchName)�PolicyQuery)�match_regex_or_setc s: e Zd ZdZedd�ZdZdZ� fdd�Zdd� Z � Z S ) � RoleQuerya� Query SELinux policy roles. Parameter: policy The policy to query. Keyword Parameters/Class attributes: name The role name to match. name_regex If true, regular expression matching will be used on the role names. types The type to match. types_equal If true, only roles with type sets that are equal to the criteria will match. Otherwise, any intersection will match. types_regex If true, regular expression matching will be used on the type names instead of set logic. �types_regexZlookup_typeFc s$ t t| �j|f|� tjt�| _d S )N)�superr �__init__�loggingZ getLogger�__name__�log)�self�policy�kwargs)� __class__� �!/usr/lib64/python3.6/rolequery.pyr 6 s zRoleQuery.__init__c c s� | j jdj| �� | j| j � | j jdj| �� xJ| jj� D ]<}| j|�sLq<| jrrt t |j� �| j| j| j� rrq<|V q<W dS )z*Generator which yields all matching roles.z'Generating role results from {0.policy}z?Types: {0.types!r}, regex: {0.types_regex}, eq: {0.types_equal}N) r �info�formatZ_match_name_debug�debugr ZrolesZ_match_name�typesr �set�types_equalr )r �rr r r �results: s zRoleQuery.results)r � __module__�__qualname__�__doc__r r r r r r � __classcell__r r )r r r s r )r �reZdescriptorsr Zmixinsr Zqueryr �utilr r r r r r �<module> s