U
    ςdG                  6   @   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/dddddddddg	Z0dZ1dZ2dZ3dZ4dZ5dZ6dZ7e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!d0e"d1e#d2e$d3e%d4e&d5iZ8G d6d7 d7e9Z:G d8d9 d9e;Z<G d:d; d;Z=dS )<    N)util)DEBUGbyte_chrbyte_ord)Message      e   j         	   ZSuccesszEnd of filezNo such filezPermission deniedZFailurezBad messagezNo connectionzConnection lostzOperation unsupported                   initversionopenclosereadwritelstatfstatZsetstatZfsetstatZopendirZreaddirremovemkdirrmdirrealpathstatrenamereadlinksymlinkstatushandledatanameattrsextendedZextended_replyc                   @   s   e Zd ZdS )int64N__name__
__module____qualname__ r/   r/   J/var/www/html/myproject/myenv/lib/python3.8/site-packages/paramiko/sftp.pyr*   }   s   r*   c                   @   s   e Zd ZdS )	SFTPErrorNr+   r/   r/   r/   r0   r1      s   r1   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   Z
get_loggerloggersockultra_debug)selfr/   r/   r0   __init__   s    zBaseSFTP.__init__c                 C   sT   t  }|t | t| |  \}}|tkr8tdt	d|d d d }|S )NIncompatible sftp protocol>Ir   r   )
r   add_int_VERSION_send_packetCMD_INIT_read_packetCMD_VERSIONr1   structunpack)r6   mtr&   r   r/   r/   r0   _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 )Nr8   r9   r   r   z
check-filezmd5,sha1)r>   r=   r1   r@   rA   r   r:   r;   addr<   r?   )r6   rC   r&   r   Zextension_pairsmsgr/   r/   r0   _send_server_version   s    

zBaseSFTP._send_server_versionc                 G   s   | j j||f|  d S )N)r3   log)r6   levelrF   argsr/   r/   r0   _log   s    zBaseSFTP._logc                 C   sH   t |dkrD| j|}|dkr&t |t |kr6d S ||d  }q d S )Nr   )lenr4   sendEOFError)r6   outnr/   r/   r0   
_write_all   s    zBaseSFTP._write_allc                 C   s   t  }|dkrt| jtjrTt| jgg g d\}}}t|dkr| j|}q`qn| j|}t|dkrrt ||7 }|t|8 }q|S )Nr   g?)bytes
isinstancer4   socketselectrL   recvrN   )r6   rP   rO   r   r   errxr/   r/   r0   	_read_all   s    zBaseSFTP._read_allc                 C   sP   |  }tdt|d t| | }| jrB| tt	|d | 
| d S )Nr9   r   zOUT: )Zasbytesr@   packrL   r   r5   rK   r   r   format_binaryrQ   )r6   rC   packetrO   r/   r/   r0   r<      s
     zBaseSFTP._send_packetc                 C   s   |  d}t|d rtdtd|d }|  |}| jrR| tt	|d |dkrvt|d }||dd  fS dt
 fS )Nr   r   zGarbage packet receivedr9   zIN: r   )rY   r   r1   r@   rA   r5   rK   r   r   r[   rR   )r6   rX   sizer&   rC   r/   r/   r0   r>      s    

zBaseSFTP._read_packetN)r,   r-   r.   r7   rD   rG   rK   rQ   rY   r<   r>   r/   r/   r/   r0   r2      s   
r2   )>rU   rT   r@   Zparamikor   Zparamiko.commonr   r   r   Zparamiko.messager   ranger=   r?   ZCMD_OPENZ	CMD_CLOSEZCMD_READZ	CMD_WRITEZ	CMD_LSTATZ	CMD_FSTATZCMD_SETSTATZCMD_FSETSTATZCMD_OPENDIRZCMD_READDIRZ
CMD_REMOVEZ	CMD_MKDIRZ	CMD_RMDIRZCMD_REALPATHZCMD_STATZ
CMD_RENAMEZCMD_READLINKZCMD_SYMLINKZ
CMD_STATUSZ
CMD_HANDLEZCMD_DATAZCMD_NAMEZ	CMD_ATTRSZCMD_EXTENDEDZCMD_EXTENDED_REPLYZSFTP_OKZSFTP_EOFZSFTP_NO_SUCH_FILEZSFTP_PERMISSION_DENIEDZSFTP_FAILUREZSFTP_BAD_MESSAGEZSFTP_NO_CONNECTIONZSFTP_CONNECTION_LOSTZSFTP_OP_UNSUPPORTEDZ	SFTP_DESCZSFTP_FLAG_READZSFTP_FLAG_WRITEZSFTP_FLAG_APPENDZSFTP_FLAG_CREATEZSFTP_FLAG_TRUNCZSFTP_FLAG_EXCLr;   Z	CMD_NAMESintr*   	Exceptionr1   r2   r/   r/   r/   r0   <module>   s   
                           %