File: //usr/lib/python3/dist-packages/samba/__pycache__/ntacls.cpython-310.pyc
o
�/a�] � @ st d Z ddlZddlZddlZddlZddlZddlZddlZddl m
Z ddlm
Z
mZmZ ddlmZmZ ddl mZ ddl mZ ddlmZ dd lmZ dd
lmZ ejejB ejB ejB Ze
j e
j!B e
j"B e
j#B Z$G dd� de%�Z&d
d� Z'dd� Z( d)dd�Z) d*dd�Z*dd� Z+d+dd�Z,G dd� d�Z-G dd� d�Z.dd � Z/d!d"� Z0d#d$� Z1d%d&� Z2d'd(� Z3dS ),zNT Acls.� N)�param)�security�xattr�idmap)�ndr_pack�
ndr_unpack)�smbd)�libsmb_samba_internal)�get_samba_logger)�
NTSTATUSError)�system_session_unixc @ s e Zd ZdZdS )�XattrBackendErrorzA generic xattr backend error.N)�__name__�
__module__�__qualname__�__doc__� r r �./usr/lib/python3/dist-packages/samba/ntacls.pyr
2 s r
c C s� |du r(| � d�}|durtj| � d�fS | � d�}|dur&tj| � d�fS dS |dkr.dS |dkrL|dur;tj|fS tjtj�tj�| � d�d��fS |d krn|durYtj|fS | � d
�}tj�tj�|d��}tj|fS td| ��)
z$return the path to the eadb, or NoneNzxattr_tdb:filez
posix:eadb�NN�native�eadbzprivate dirzeadb.tdb�tdbzstate directoryz xattr.tdbzInvalid xattr backend choice %s) �get�samba� xattr_tdb�
posix_eadb�os�path�abspath�joinr
)�lp�backend�eadbfiler r � state_dir�db_pathr r r �checkset_backend6 s*
"
r% c C s6 z
t j�|tj�}W n
ty Y d S w ttj|�S �N)r �xattr_native�
wrap_getxattrr �XATTR_DOSATTRIB_NAME_S3� Exceptionr � DOSATTRIB)r �file� attributer r r �
getdosinfoR s ��r. Tc C s� |rct | ||�\}}|d ur0z
|�||tj�} W n ty/ td| � tj�|tj�} Y n w tj�|tj�} ttj | �}
|
j
dkrF|
jS |
j
dkrO|
jjS |
j
dkrX|
jjS |
j
dkra|
jjS d S t
j|t||d�S )N�Fail to open %s� � � � ��service)r% r( r �XATTR_NTACL_NAMEr* �printr r'