File: //usr/lib/python3.9/site-packages/ipalib/__pycache__/aci.cpython-39.pyc
a
}�f+ � @ sd d dl Z d dlZd dlZe�dej�Ze�dej�Ze�dej�ZddgZg d�Z G dd � d �Z
dS )
� Nz<\(version\s+3.0\s*;\s*ac[li]\s+\"([^\"]*)\"\s*;\s*(.*);\s*\)z(\w+)\s*\(([^()]*)\)\s*(.*)z+\(?([a-zA-Z0-9;\.]+)\s*(\!?=)\s*\"(.*)\"\)?�allowZdeny) �read�write�add�delete�searchZcompareZ selfwrite�proxy�allc @ s� e Zd ZdZdZd*dd�Zdd� Zdd� Zd d
� Zdd� Z d
d� Z
dd� Zdd� Zdd� Z
dd� Zd+dd�Zd,dd�Zd-dd�Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� ZeZd(d)� ZdS ).�ACIz�
Holds the basic data for an ACI entry, as stored in the cn=accounts
entry in LDAP. Has methods to parse an ACI string and export to an
ACI String.
Nc C sH d | _ d | _d | _|| _i | _d| _dg| _i | _|d urD| �|� d S )Nr r ) �name�source_group�
dest_groupZorig_acistr�target�action�permissions�bindrule�
_parse_acistr)�self�acistr� r �./usr/lib/python3.9/site-packages/ipalib/aci.py�__init__4 s zACI.__init__c C s: |dkr| j S |dkr| jS |dkr*| jS td| ��dS )z*Fake getting attributes by key for sortingr � � zUnknown key value %sN)r r r
� TypeError)r �keyr r r �__getitem__@ s zACI.__getitem__c C s | � � S )zAn alias for export_to_string())�export_to_string)r r r r �__repr__J s zACI.__repr__c C s� | � � d}t| j�� �D ]~\}}|d }t|d �ttfv r�d}| �|d �D ]}|| d }qP|dd� }|d|||f }q|d|||d f }q|d| j| j d �
| j�| jd
| jd | jd f d }|S )z/Output a Directory Server-compatible ACI string� �operator�
expressionz || N���z(%s %s "%s")z((version 3.0;acl "%s";%s (%s) %s %s "%s"�,�keywordz;))
�validate�sortedr �items�type�tuple�list�_unique_listr r �joinr r )r �aci�t�v�opr �lr r r r N s :zACI.export_to_stringc C s$ g }|D ]}||vr|� |� q|S )a
A set() doesn't maintain order so make a list unique ourselves.
The number of entries in our lists are always going to be
relatively low and this code will be called infrequently
anyway so the overhead will be small.
)�append)r r1 �unique�itemr r r r+ _ s
zACI._unique_listc C s0 |� d�r|dd � }|�d�r,|d d� }|S )N�"r ���)�
startswith�endswith)r �sr r r �_remove_quotesm s
zACI._remove_quotesc
C s t jr|�d�}t�|�}|jd |_d}d}|D ]�}|dkr�t|��� }t|�}|dvrz|t|� }|dvrztd| ��|}t|��� }| �|�}t|�}|dkr�td | ��|d
kr�t �
d|�} i | j|<