File: //lib64/python3.9/site-packages/setools/__pycache__/defaultquery.cpython-39.pyc
a
    q�qe$	  �                   @   sz   d dl Z d dlZd dlmZmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlm
Z
mZmZmZmZ G dd	� d	ee�ZdS )
�    N)�cast�Iterable�   )�PolicyQuery)�CriteriaDescriptor�CriteriaSetDescriptor)�
MatchObjClass)�
AnyDefault�DefaultRange�DefaultRuletype�DefaultValue�DefaultRangeValuec                       sV   e Zd ZdZeed�Zeed�Z	ee
d�Zdd�� fdd�Ze
e d�dd�Z�  ZS )	�DefaultQuerya#  
    Query default_* statements.
    Parameter:
    policy          The policy to query.
    Keyword Parameters/Class attributes:
    ruletype        The rule type(s) to match.
    tclass          The object class(es) to match.
    tclass_regex    If true, use a regular expression for
                    matching the rule's object class.
    default         The default to base new contexts (e.g. "source" or "target")
    default_range   The range to use on new context, default_range only
                    ("low", "high", "low_high")
    )�
enum_classN)�returnc                    s(   t t| �j|fi |�� t�t�| _d S )N)�superr   �__init__�loggingZ	getLogger�__name__�log)�self�policy�kwargs��	__class__� �:/usr/lib64/python3.9/site-packages/setools/defaultquery.pyr   %   s    zDefaultQuery.__init__c              	   c   s�   | j �d�| �� | j �d�| �� | �| j � | j �d�| �� | j �d�| �� | j�� D ]v}| jrv|j| jvrvq^| �|�s�q^| j	r�|j	| j	kr�q^| j
r�ztt|�j
| j
kr�W q^W n t
y�   Y q^Y n0 |V  q^dS )z9Generator which yields all matching default_* statements.z,Generating default_* results from {0.policy}zRuletypes: {0.ruletype!r}zDefault: {0.default!r}zRange: {0.default_range!r}N)r   �info�format�debugZ_match_object_class_debugr   �defaults�ruletypeZ_match_object_class�default�
default_ranger   r
   �AttributeError)r   �dr   r   r   �results)   s&