
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
^                 @   sN   d dl Z ddlmZ ddlmZ ddlmZ ddlmZ G dd deeZ	dS )	    N   )MatchContext)IoportconRange)PolicyQuery)match_rangec                   sV   e Zd ZdZdZdZdZdZdZe	dd Z
e
jdd Z
 fddZd	d
 Z  ZS )IoportconQuerya  
    Ioportcon context query.

    Parameter:
    policy          The policy to query.

    Keyword Parameters/Class attributes:
    ports           A 2-tuple of the port range to match. (Set both to
                    the same value for a single port)
    ports_subset    If true, the criteria will match if it is a subset
                    of the ioportcon's range.
    ports_overlap   If true, the criteria will match if it overlaps
                    any of the ioportcon's range.
    ports_superset  If true, the criteria will match if it is a superset
                    of the ioportcon's range.
    ports_proper    If true, use proper superset/subset operations.
                    No effect if not using set operations.

    user            The criteria to match the context's user.
    user_regex      If true, regular expression matching
                    will be used on the user.

    role            The criteria to match the context's role.
    role_regex      If true, regular expression matching
                    will be used on the role.

    type_           The criteria to match the context's type.
    type_regex      If true, regular expression matching
                    will be used on the type.

    range_          The criteria to match the context's range.
    range_subset    If true, the criteria will match if it is a subset
                    of the context's range.
    range_overlap   If true, the criteria will match if it overlaps
                    any of the context's range.
    range_superset  If true, the criteria will match if it is a superset
                    of the context's range.
    range_proper    If true, use proper superset/subset operations.
                    No effect if not using set operations.
    NFc             C   s   | j S )N)_ports)self r
   &/usr/lib64/python3.6/ioportconquery.pyportsL   s    zIoportconQuery.portsc             C   s^   t | }t|rT|jdk s$|jdk r2tdj||j|jkrLtdj||| _nd | _d S )Nr   z/Port numbers must be positive: {0.low}-{0.high}zAThe low port must be smaller than the high port: {0.low}-{0.high})r   allZlowZhigh
ValueErrorformatr   )r	   valueZpending_portsr
   r
   r   r   P   s    c                s$   t t| j|f| tjt| _d S )N)superr   __init__loggingZ	getLogger__name__log)r	   policykwargs)	__class__r
   r   r   b   s    zIoportconQuery.__init__c             c   s   | j jdj|  | j jdj|  | j| j  xN| jj D ]@}| jrht|j| j| j	| j
| j| j rhq<| j|jsvq<|V  q<W dS )z/Generator which yields all matching ioportcons.z"Generating results from {0.policy}zPorts: {0.ports!r}, overlap: {0.ports_overlap}, subset: {0.ports_subset}, superset: {0.ports_superset}, proper: {0.ports_proper}N)r   infor   debugZ_match_context_debugr   Z
ioportconsr   r   ports_subsetports_overlapports_supersetports_properZ_match_contextcontext)r	   Z	ioportconr
   r
   r   resultsf   s     

zIoportconQuery.results)r   
__module____qualname____doc__r   r   r   r   r   propertyr   setterr   r    __classcell__r
   r
   )r   r   r      s   )r   )
r   Zmixinsr   Z	policyrepr   Zqueryr   utilr   r   r
   r
   r
   r   <module>   s
   