509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
í«„^.  ã               @   sb   d dl Z d dlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ G dd	„ d	eeƒZdS )
é    N)ÚIPPROTO_TCPÚIPPROTO_UDPé   )ÚMatchContext)ÚPolicyQuery)ÚPortconRangeÚPortconProtocol)Úmatch_rangec                   st   e Zd ZdZdZdZdZdZdZdZ	e
dd„ ƒZejdd„ ƒZe
dd„ ƒZejd	d„ ƒZ‡ fd
d„Zdd„ Z‡  ZS )ÚPortconQuerya_  
    Port context query.

    Parameter:
    policy          The policy to query.

    Keyword Parameters/Class attributes:
    protocol        The protocol to match (socket.IPPROTO_TCP for
                    TCP or socket.IPPROTO_UDP for UDP)

    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 portcon's range.
    ports_overlap   If true, the criteria will match if it overlaps
                    any of the portcon's range.
    ports_superset  If true, the criteria will match if it is a superset
                    of the portcon'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/portconquery.pyÚportsQ   s    zPortconQuery.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   U   s    c             C   s   | j S )N)Ú	_protocol)r   r   r   r   Úprotocolg   s    zPortconQuery.protocolc             C   s   |rt j|ƒ| _nd | _d S )N)r   Úlookupr   )r   r   r   r   r   r   k   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   r   s    zPortconQuery.__init__c             c   sª   | j jdj| ƒƒ | j jdj| ƒƒ | j jdj| ƒƒ | j| j ƒ xb| jjƒ D ]T}| jrzt|j| j| j	| j
| j| jƒ rzqN| jrŽ| j|jkrŽqN| j|jƒsœqN|V  qNW dS )z-Generator which yields all matching portcons.z*Generating portcon results from {0.policy}z~Ports: {0.ports}, overlap: {0.ports_overlap}, subset: {0.ports_subset}, superset: {0.ports_superset}, proper: {0.ports_proper}zProtocol: {0.protocol!r}N)r   Úinfor   ÚdebugZ_match_context_debugr   Zportconsr   r	   Úports_subsetÚports_overlapÚports_supersetÚports_properr   Z_match_contextÚcontext)r   Zportconr   r   r   Úresultsv   s&    

zPortconQuery.results)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r!   r"   r#   r$   Úpropertyr   Úsetterr   r   r&   Ú__classcell__r   r   )r   r   r
      s   ,r
   )r   Zsocketr   r   Zmixinsr   Zqueryr   Z	policyrepr   r   Úutilr	   r
   r   r   r   r   Ú<module>   s   