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.   