File: //usr/local/CyberCP/lib64/python3.10/site-packages/paramiko/__pycache__/sftp_server.cpython-310.pyc
o
�h$L � @ s\ d Z ddlZddlZddlZddlmZmZ ddlmZ ddl m
Z
mZmZm
Z
mZmZ ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddl mZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> eed�Z?G d
d� de
e�Z@ddlAmBZB dS )z
Server-mode SFTP support.
� N)�md5�sha1)�util)�BaseSFTP�Message�SFTP_FAILURE�SFTP_PERMISSION_DENIED�SFTP_NO_SUCH_FILE�int64)�SFTPServerInterface)�SFTPAttributes)�DEBUG)�SubsystemHandler)�b)%�
CMD_HANDLE� SFTP_DESC�
CMD_STATUS�SFTP_EOF�CMD_NAME�SFTP_BAD_MESSAGE�CMD_EXTENDED_REPLY�SFTP_FLAG_READ�SFTP_FLAG_WRITE�SFTP_FLAG_APPEND�SFTP_FLAG_CREATE�SFTP_FLAG_TRUNC�SFTP_FLAG_EXCL� CMD_NAMES�CMD_OPEN� CMD_CLOSE�SFTP_OK�CMD_READ�CMD_DATA� CMD_WRITE�
CMD_REMOVE�
CMD_RENAME� CMD_MKDIR� CMD_RMDIR�CMD_OPENDIR�CMD_READDIR�CMD_STAT� CMD_ATTRS� CMD_LSTAT� CMD_FSTAT�CMD_SETSTAT�CMD_FSETSTAT�CMD_READLINK�CMD_SYMLINK�CMD_REALPATH�CMD_EXTENDED�SFTP_OP_UNSUPPORTED)r r c s� e Zd ZdZefdd�Z� fdd�Zdd� Z� fdd �Ze d
d� �Z
e dd
� �Zdd� Zd dd�Z
d!dd�Zdd� Zdd� Zdd� Zdd� Zdd� Z� ZS )"�
SFTPServerz�
Server-side SFTP subsystem support. Since this is a `.SubsystemHandler`,
it can be (and is meant to be) set as the handler for ``"sftp"`` requests.
Use `.Transport.set_subsystem_handler` to activate this class.
c O sn t �| � t�| |||� |�� }t�|�� d �| _|�� | _ d| _
i | _i | _||g|�R i |��| _
dS )a�
The constructor for SFTPServer is meant to be called from within the
`.Transport` as a subsystem handler. ``server`` and any additional
parameters or keyword parameters are passed from the original call to
`.Transport.set_subsystem_handler`.
:param .Channel channel: channel passed from the `.Transport`.
:param str name: name of the requested subsystem.
:param .ServerInterface server:
the server object associated with this channel and subsystem
:param sftp_si:
a subclass of `.SFTPServerInterface` to use for handling individual
requests.
z.sftp� N)r �__init__r �
get_transportr �
get_logger�get_log_channel�logger�get_hexdump�ultra_debug�next_handle�
file_table�folder_table�server)�self�channel�namerA �sftp_si�args�kwargs� transport� rI �G/usr/local/CyberCP/lib/python3.10/site-packages/paramiko/sftp_server.pyr7 _ s
zSFTPServer.__init__c s` t t|�t�r|D ]}t� �|d| j�� d | � q d S t� �|d| j�� d | � d S )Nz[chan z] )�
issubclass�type�list�super�_log�sock�get_name)rB �level�msg�m�� __class__rI rJ rO � s
"�$zSFTPServer._logc
C s. || _ | �td�|�� | �� | j�� z| �� \}}W n4 ty. | �td� Y d S t yR } z| �tdt
|� � | �tt�� � W Y d }~d S d }~ww t
|�}|�� }z | �|||� W n1 t y� } z%| �tdt
|� � | �tt�� � z| �|t� W n Y W Y d }~nd }~ww q)Nz#Started sftp server on channel {!r}TzEOF -- end of sessionzException on channel: z Exception in server processing: )rP rO r
�format�_send_server_versionrA �session_started�_read_packet�EOFError� Exception�strr �
tb_stringsr �get_int�_process�_send_statusr ) rB rD rH rC �t�data�erS �request_numberrI rI rJ �start_subsystem� s<