shell bypass 403
3
�^� � @ sV d dl Z d dlZddlmZ ddlmZ ddlmZ ddlm Z G dd� dee�Z
dS ) � N� )�MatchContext)�IbpkeyconRange)�PolicyQuery)�match_rangec st e Zd ZdZdZdZdZdZdZdZ � fdd�Z
edd� �Zej
dd� �Zed d
� �Zej
dd
� �Zdd
� Z� ZS )�IbpkeyconQuerya
Infiniband pkey context query.
Parameter:
policy The policy to query.
Keyword Parameters/Class attributes:
subnet_prefix A subnet prefix to match.
pkeys A 2-tuple of the pkey range to match. (Set both to
the same value for a single pkey)
pkeys_subset If true, the criteria will match if it is a subset
of the ibpkeycon's range.
pkeys_overlap If true, the criteria will match if it overlaps
any of the ibpkeycon's range.
pkeys_superset If true, the criteria will match if it is a superset
of the ibpkeycon's range.
pkeys_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 s$ t t| �j|f|� tjt�| _d S )N)�superr �__init__�loggingZ getLogger�__name__�log)�self�policy�kwargs)� __class__� �&/usr/lib64/python3.6/ibpkeyconquery.pyr K s zIbpkeyconQuery.__init__c C s | j S )N)�_pkeys)r
r r r �pkeysO s zIbpkeyconQuery.pkeysc C s� |d k rvt |� }|jdk s$|jdk r2tdj|���|jdksF|jdkrTtdj|���|j|jkrntdj|���|| _nd | _d S )Nr z.Pkeys must be positive: {0.low:#x}-{0.high:#x}i�� z/Pkeys maximum is 0xffff: {0.low:#x}-{0.high:#x}zGThe low pkey must be smaller than the high pkey: {0.low:#x}-{0.high:#x})r ZlowZhigh�
ValueError�formatr )r
�valueZ
pending_pkeysr r r r S s c C s | j S )N)�_subnet_prefix)r
r r r �
subnet_prefixi s zIbpkeyconQuery.subnet_prefixc C s |rt j|�| _nd | _d S )N)� ipaddressZIPv6Addressr )r
r r r r r m s c c s� | j jdj| �� | j jdj| �� | j jdj| �� | j| j � xf| jj� D ]X}| jdk rj| j|jkrjqN| jr�t |j| j| j
| j| j| j
� r�qN| j|j�s�qN|V qNW dS )z/Generator which yields all matching ibpkeycons.z,Generating ibpkeycon results from {0.policy}z Subnet Prefix: {0.subnet_prefix}z~Pkeys: {0.pkeys}, overlap: {0.pkeys_overlap}, subset: {0.pkeys_subset}, superset: {0.pkeys_superset}, proper: {0.pkeys_proper}N)r �infor �debugZ_match_context_debugr Z
ibpkeyconsr r r �pkeys_subset�
pkeys_overlap�pkeys_superset�pkeys_properZ_match_context�context)r
Zpkr r r �resultst s&