o
    Žõ±jr  ã                   @   s€   d dl Z d dlZd dlT G dd„ dejƒZG dd„ dƒZG dd„ dejƒZG d	d
„ d
ejƒZG dd„ dejƒZ	G dd„ dƒZ
dS )é    N)Ú*c                   @   ó   e Zd ZdZdZdZdS )ÚTreeConnectFlagé   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú(SMB2_TREE_CONNECT_FLAG_CLUSTER_RECONNECTÚ(SMB2_TREE_CONNECT_FLAG_REDIRECT_TO_OWNERÚ(SMB2_TREE_CONNECT_FLAG_EXTENSION_PRESENT© r   r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/aiosmb/protocol/smb2/commands/tree_connect.pyr      ó    r   c                   @   ó<   e Zd Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZd	d
„ ZdS )ÚTREE_CONNECT_REQc                 C   s(   d| _ d | _d | _d | _d | _d | _d S )Né	   )ÚStructureSizeÚFlagsÚ
PathOffsetÚ
PathLengthÚBufferÚPath©Úselfr   r   r   Ú__init__   s   
zTREE_CONNECT_REQ.__init__c                 C   sˆ   | j r
| j  d¡| _t| jƒ| _d| _| jjdddd�}|| jjdddd�7 }|| jjdddd�7 }|| jjdddd�7 }|| j7 }|S )Nú	utf-16-leéH   r   ÚlittleF)Ú	byteorderÚsigned)	r   Úencoder   Úlenr   r   r   Úto_bytesr   ©r   Útr   r   r   r$      s   
zTREE_CONNECT_REQ.to_bytesc                 C   ó   t  t | ¡¡S ©N)r   Úfrom_bufferÚioÚBytesIO©Úbbuffr   r   r   Ú
from_bytes'   ó   zTREE_CONNECT_REQ.from_bytesc                 C   s    t ƒ }tj|  d¡dd�|_|jdksJ ‚ttj|  d¡dd�ƒ|_tj|  d¡dd�|_tj|  d¡dd�|_|  	|jt
j¡ |  |j¡|_|j d¡|_|S )Nr   r   ©r    r   r   )r   Úintr.   Úreadr   r   r   r   r   Úseekr*   ÚSEEK_SETr   Údecoder   ©ÚbuffÚmsgr   r   r   r)   +   s   zTREE_CONNECT_REQ.from_bufferc                 C   sR   d}|d| j  7 }|dt| jƒ 7 }|d| j 7 }|d| j 7 }|d| j 7 }|S )Nz!==== SMB2 TREE CONNECT REQ ====
úStructureSize: %s
zFlags: %s
zPathOffset: %s
zPathLength: %s
z
Path: %s
)r   Úreprr   r   r   r   r%   r   r   r   Ú__repr__:   s   zTREE_CONNECT_REQ.__repr__N©	r   r	   r
   r   r$   Ústaticmethodr.   r)   r;   r   r   r   r   r      s    


r   c                   @   r   )Ú	ShareTyper   r   é   N)r   r	   r
   ÚDISKÚPIPEÚPRINTr   r   r   r   r>   D   r   r>   c                   @   sH   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdS )Ú
ShareFlagsr   é   é    é0   r   r   é   i   i   i   i   i    i @  i €  i   N)r   r	   r
   ÚSMB2_SHAREFLAG_MANUAL_CACHINGÚSMB2_SHAREFLAG_AUTO_CACHINGÚSMB2_SHAREFLAG_VDO_CACHINGÚSMB2_SHAREFLAG_NO_CACHINGÚSMB2_SHAREFLAG_DFSÚSMB2_SHAREFLAG_DFS_ROOTÚ'SMB2_SHAREFLAG_RESTRICT_EXCLUSIVE_OPENSÚ"SMB2_SHAREFLAG_FORCE_SHARED_DELETEÚ&SMB2_SHAREFLAG_ALLOW_NAMESPACE_CACHINGÚ*SMB2_SHAREFLAG_ACCESS_BASED_DIRECTORY_ENUMÚ#SMB2_SHAREFLAG_FORCE_LEVELII_OPLOCKÚSMB2_SHAREFLAG_ENABLE_HASH_V1ÚSMB2_SHAREFLAG_ENABLE_HASH_V2ÚSMB2_SHAREFLAG_ENCRYPT_DATAÚ SMB2_SHAREFLAG_IDENTITY_REMOTINGr   r   r   r   rC   I   s     rC   c                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	ÚTreeCapabilitiesr   é   rD   rE   é@   é€   rG   N)
r   r	   r
   ÚSMB2_SHARE_CAP_NONEÚSMB2_SHARE_CAP_DFSÚ&SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITYÚSMB2_SHARE_CAP_SCALEOUTÚSMB2_SHARE_CAP_CLUSTERÚSMB2_SHARE_CAP_ASYMMETRICÚ SMB2_SHARE_CAP_REDIRECT_TO_OWNERr   r   r   r   rW   Z   s    rW   c                   @   r   )ÚTREE_CONNECT_REPLYc                 C   s(   d| _ d | _d| _d | _d | _d | _d S )NrD   r   )r   r>   ÚReservedrC   ÚCapabilitiesÚMaximalAccessr   r   r   r   r   f   s   
zTREE_CONNECT_REPLY.__init__c                 C   s€   | j jddd�}|| jjjddd�7 }|| jjddd�7 }|| jjjddd�7 }|| jjjddd�7 }|| jjjddd�7 }|S )Nr   r   r0   r   r   )r   r$   r>   Úvaluerc   rC   rd   re   r%   r   r   r   r$   n   s   zTREE_CONNECT_REPLY.to_bytesc                 C   r'   r(   )rb   r)   r*   r+   r,   r   r   r   r.   w   r/   zTREE_CONNECT_REPLY.from_bytesc                 C   s¬   t ƒ }tj|  d¡dd�|_|jdksJ ‚ttj|  d¡dd�ƒ|_tj|  d¡dd�|_ttj|  d¡dd�ƒ|_ttj|  d¡dd�ƒ|_	t
tj|  d¡dd�ƒ|_|S )Nr   r   r0   rD   r   r   )rb   r1   r.   r2   r   r>   rc   rC   rW   rd   ÚFileAccessMaskre   r6   r   r   r   r)   {   s   zTREE_CONNECT_REPLY.from_bufferc                 C   sP   d}|d| j  7 }|d| jj 7 }|d| j 7 }|d| j 7 }|d| j 7 }|S )Nz#==== SMB2 TREE CONNECT REPLY ====
r9   zShareType: %s
zShareFlags: %s
zCapabilities: %s
zMaximalAccess: %s
)r   r>   rf   rC   rd   re   r%   r   r   r   r;   ˆ   s   zTREE_CONNECT_REPLY.__repr__Nr<   r   r   r   r   rb   e   s    	

rb   )r*   ÚenumÚaiosmb.wintypes.access_maskÚIntFlagr   r   ÚEnumr>   rC   rW   rb   r   r   r   r   Ú<module>   s    6