o
    Žõ±j'	  ã                	   @   s²   d dl mZ d dlmZ d dlmZ d dlmZ ejej	ej
ejejejejejejg	Zddddd	œZddededee fdd„Zdedefdd„Zdedefdd„Zdd„ Zd
S )é    )ÚSECURITY_DESCRIPTOR)ÚFILE_ACCESS_MASK)ÚEvaluateSidAgainstDescriptor)ÚListÚEveryonezAuthenticated UserszBUILTIN\UserszBUILTIN\Guests)zS-1-1-0zS-1-5-11zS-1-5-32-545zS-1-5-32-546NÚsdÚuser_sidÚuser_groupsc                 C   sx   | j d u rtjS t| j jƒdkrtdƒS |d u rtt ¡ ƒ}n| t ¡ ¡ |d ur/| 	|¡ t
| |d|ƒ\}}t|ƒS )Nr   i   )ÚDaclr   ÚFILE_ALL_ACCESSÚlenÚacesÚlistÚGENERIC_USER_GROUPSÚkeysÚextendÚappendr   )r   r   r	   Ú
has_rightsÚrights© r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/commons/utils/faccess.pyÚfaccess_basic_check   s   

r   ÚaccessÚreturnc                    s   d  ‡ fdd„tD ƒ¡S )Nú	c                 3   s"   � | ]}ˆ |@ r|j nd V  qdS )Ú N)Úname)Ú.0Úfield©r   r   r   Ú	<genexpr>1   s   €  z&faccess_mask_to_tsv.<locals>.<genexpr>)ÚjoinÚORDERED_FIELDSr   r   r   r   Úfaccess_mask_to_tsv0   s   r#   c                 C   s^   d}t j| v r|d7 }n|d7 }t j| v r|d7 }n|d7 }t j| v r)|d7 }|S |d7 }|S )Nr   Úrú-ÚwÚx)r   ÚFILE_READ_DATAÚFILE_WRITE_DATAÚFILE_EXECUTE)r   Úresr   r   r   Úfaccess_mask_to_unix3   s   




ÿr,   c                 C   sh   |  ¡ }d}d|v rtj| v r|tjO }d|v r"tj| v r"|tjO }d|v r0tj| v r0|tjO }t|ƒS )Nr   r$   r&   r'   )Úlowerr   r(   r)   r*   )r   ÚaccessfilterÚmatchesr   r   r   Úfaccess_matchC   s   





r0   )NN)Úwinacl.dtyp.security_descriptorr   Úwinacl.dtyp.acer   Úwinacl.functions.rights_calcr   Útypingr   r(   r)   r*   ÚFILE_READ_ATTRIBUTESÚFILE_WRITE_ATTRIBUTESÚFILE_APPEND_DATAÚFILE_DELETE_CHILDr"   r   Ústrr   r#   r,   r0   r   r   r   r   Ú<module>   s.   ÷ü