o
    ç÷¡gG  ã                   @   s¢  d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
 eddƒ\ZZZZZZZZZZZZZZZZZZZZeddƒ\Z Z!Z"Z#Z$ed	d
ƒ\Z%Z&d Z'eddƒ\Z(Z)Z*Z+Z,Z-Z.Z/g d¢Z0dZ1dZ2dZ3dZ4dZ5dZ6dZ7i ed“ed“ed“ed“ed“ed“ed“ed“ed“ed“ed“ed“ed“ed “ed!“ed"“ed#“ed$ed%ed&e d'e!d(e"d)e#d*e$d+e%d,e&d-i
¥Z8G d.d/„ d/e9ƒZ:G d0d1„ d1e;ƒZ<G d2d3„ d3ƒZ=dS )4é    N)Úutil)ÚDEBUGÚbyte_chrÚbyte_ord)ÚMessageé   é   ée   éj   éÈ   éÊ   é	   )	ÚSuccesszEnd of filezNo such filezPermission deniedÚFailurezBad messagezNo connectionzConnection lostzOperation unsupportedé   é   é   é   é    é   ÚinitÚversionÚopenÚcloseÚreadÚwriteÚlstatÚfstatÚsetstatÚfsetstatÚopendirÚreaddirÚremoveÚmkdirÚrmdirÚrealpathÚstatÚrenameÚreadlinkÚsymlinkÚstatusÚhandleÚdataÚnameÚattrsÚextendedÚextended_replyc                   @   ó   e Zd ZdS )Úint64N©Ú__name__Ú
__module__Ú__qualname__© r7   r7   ú8/usr/local/lib/python3.10/dist-packages/paramiko/sftp.pyr2   }   ó    r2   c                   @   r1   )Ú	SFTPErrorNr3   r7   r7   r7   r8   r:   �   r9   r:   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚBaseSFTPc                 C   s   t  d¡| _d | _d| _d S )Nzparamiko.sftpF)r   Ú
get_loggerÚloggerÚsockÚultra_debug)Úselfr7   r7   r8   Ú__init__†   s   
zBaseSFTP.__init__c                 C   sT   t ƒ }| t¡ |  t|¡ |  ¡ \}}|tkrtdƒ‚t 	d|d d… ¡d }|S )NúIncompatible sftp protocolú>Ir   r   )
r   Úadd_intÚ_VERSIONÚ_send_packetÚCMD_INITÚ_read_packetÚCMD_VERSIONr:   ÚstructÚunpack)r@   ÚmÚtr,   r   r7   r7   r8   Ú_send_version�   s   
zBaseSFTP._send_versionc                 C   sf   |   ¡ \}}|tkrtdƒ‚t d|d d… ¡d }ddg}tƒ }| t¡ |j|Ž  |  	t
|¡ |S )NrB   rC   r   r   z
check-filezmd5,sha1)rH   rG   r:   rJ   rK   r   rD   rE   ÚaddrF   rI   )r@   rM   r,   r   Úextension_pairsÚmsgr7   r7   r8   Ú_send_server_version™   s   

zBaseSFTP._send_server_versionc                 G   s   | j j||g|¢R Ž  d S )N)r=   Úlog)r@   ÚlevelrQ   Úargsr7   r7   r8   Ú_log¨   s   zBaseSFTP._logc                 C   sR   t |ƒdkr'| j |¡}|dkrtƒ ‚|t |ƒkrd S ||d … }t |ƒdksd S )Nr   )Úlenr>   ÚsendÚEOFError)r@   ÚoutÚnr7   r7   r8   Ú
_write_all«   s   úzBaseSFTP._write_allc                 C   s”   t ƒ }|dkrHt| jtjƒr+	 t | jgg g d¡\}}}t|ƒdkr)| j |¡}nqn| j |¡}t|ƒdkr:tƒ ‚||7 }|t|ƒ8 }|dks|S )Nr   Tgš™™™™™¹?)ÚbytesÚ
isinstancer>   ÚsocketÚselectrW   ÚrecvrY   )r@   r[   rZ   r   r   ÚerrÚxr7   r7   r8   Ú	_read_allµ   s"   üîzBaseSFTP._read_allc                 C   sP   |  ¡ }t dt|ƒd ¡t|ƒ | }| jr!|  tt 	|d¡¡ |  
|¡ d S )NrC   r   zOUT: )ÚasbytesrJ   ÚpackrW   r   r?   rV   r   r   Úformat_binaryr\   )r@   rM   ÚpacketrZ   r7   r7   r8   rF   Ì   s
    zBaseSFTP._send_packetc                 C   s€   |   d¡}t|d ƒrtdƒ‚t d|¡d }|   |¡}| jr)|  tt 	|d¡¡ |dkr;t|d ƒ}||dd … fS dt
ƒ fS )Nr   r   zGarbage packet receivedrC   zIN: r   )rd   r   r:   rJ   rK   r?   rV   r   r   rg   r]   )r@   rc   Úsizer,   rM   r7   r7   r8   rH   Ó   s   


zBaseSFTP._read_packetN)r4   r5   r6   rA   rN   rR   rV   r\   rd   rF   rH   r7   r7   r7   r8   r;   …   s    
r;   )>r`   r_   rJ   Úparamikor   Úparamiko.commonr   r   r   Úparamiko.messager   ÚrangerG   rI   ÚCMD_OPENÚ	CMD_CLOSEÚCMD_READÚ	CMD_WRITEÚ	CMD_LSTATÚ	CMD_FSTATÚCMD_SETSTATÚCMD_FSETSTATÚCMD_OPENDIRÚCMD_READDIRÚ
CMD_REMOVEÚ	CMD_MKDIRÚ	CMD_RMDIRÚCMD_REALPATHÚCMD_STATÚ
CMD_RENAMEÚCMD_READLINKÚCMD_SYMLINKÚ
CMD_STATUSÚ
CMD_HANDLEÚCMD_DATAÚCMD_NAMEÚ	CMD_ATTRSÚCMD_EXTENDEDÚCMD_EXTENDED_REPLYÚSFTP_OKÚSFTP_EOFÚSFTP_NO_SUCH_FILEÚSFTP_PERMISSION_DENIEDÚSFTP_FAILUREÚSFTP_BAD_MESSAGEÚSFTP_NO_CONNECTIONÚSFTP_CONNECTION_LOSTÚSFTP_OP_UNSUPPORTEDÚ	SFTP_DESCÚSFTP_FLAG_READÚSFTP_FLAG_WRITEÚSFTP_FLAG_APPENDÚSFTP_FLAG_CREATEÚSFTP_FLAG_TRUNCÚSFTP_FLAG_EXCLrE   Ú	CMD_NAMESÚintr2   Ú	Exceptionr:   r;   r7   r7   r7   r8   Ú<module>   sÄ   ë
÷ÿþýüûúùø	÷
öõôóòñðïå%