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   G/var/www/html/api-tag/env/lib/python3.10/site-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   
	
%