a
   yj*                6   @   sz  d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ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/Z0Z1g dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9e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Z:G d/d0 d0e;Z<G d1d2 d2e=Z>dS )3    N)util)asbytesDEBUG)Message)byte_chrbyte_ord      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statusZhandledatanameattrsZextendedZextended_replyc                   @   s   e Zd ZdS )	SFTPErrorN)__name__
__module____qualname__ r-   r-   1/usr/lib/python3.9/site-packages/paramiko/sftp.pyr)   x   s   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   Z
get_loggerloggersockultra_debug)selfr-   r-   r.   __init__}   s    zBaseSFTP.__init__c                 C   sL   |  ttdt |  \}}|tkr0tdtd|d d d }|S )N>IIncompatible sftp protocolr   r   )	_send_packetCMD_INITstructpack_VERSION_read_packetCMD_VERSIONr)   unpack)r3   tr&   r   r-   r-   r.   _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 )Nr6   r5   r   r   z
check-filezmd5,sha1)r<   r8   r)   r9   r>   r   Zadd_intr;   addr7   r=   )r3   r?   r&   r   Zextension_pairsmsgr-   r-   r.   _send_server_version   s    

zBaseSFTP._send_server_versionc                 G   s   | j j||g|R   d S )N)r0   log)r3   levelrB   argsr-   r-   r.   _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   )lenr1   sendEOFError)r3   outnr-   r-   r.   
_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
isinstancer1   socketselectrH   ZrecvrJ   )r3   rL   rK   r   r   errxr-   r-   r.   	_read_all   s    zBaseSFTP._read_allc                 C   sP   t |}tdt|d t| | }| jrB| tt	|d | 
| d S )Nr5   r   zOUT: )r   r9   r:   rH   r   r2   rG   r   r   format_binaryrM   )r3   r?   ZpacketrK   r-   r-   r.   r7      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 receivedr5   zIN: r   )rT   r   r)   r9   r>   r2   rG   r   r   rU   rN   )r3   rS   sizer&   r?   r-   r-   r.   r<      s    

zBaseSFTP._read_packetN)r*   r+   r,   r4   r@   rC   rG   rM   rT   r7   r<   r-   r-   r-   r.   r/   |   s   

r/   )?rQ   rP   r9   Zparamikor   Zparamiko.commonr   r   Zparamiko.messager   Zparamiko.py3compatr   r   ranger8   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	Exceptionr)   objectr/   r-   r-   r-   r.   <module>   s   
