HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib64/python3.10/site-packages/paramiko/__pycache__/sftp_server.cpython-310.pyc
o

�h$L�@s\dZddlZddlZddlZddlmZmZddlmZddl	m
Z
mZmZm
Z
mZmZddlmZddlmZddlmZdd	lmZdd
lmZddl	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?Gd
d�de
e�Z@ddlAmBZBdS)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)rrcs�eZdZdZefdd�Z�fdd�Zdd�Z�fdd	�Ze	d
d��Z
e	dd
��Zdd�Zd 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.
    cOsnt�|�t�||||�|��}t�|��d�|_|��|_	d|_
i|_i|_||g|�Ri|��|_
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__cs`tt|�t�r|D]}t��|d|j��d|�q	dSt��|d|j��d|�dS)Nz[chan z] )�
issubclass�type�list�super�_log�sock�get_name)rB�level�msg�m��	__class__rIrJrO�s
"�$zSFTPServer._logc	
Cs.||_|�td�|��|��|j��	z|��\}}Wn4ty.|�td�YdSt	yR}z|�tdt
|��|�tt���WYd}~dSd}~wwt
|�}|��}z	|�|||�Wn1t	y�}z%|�tdt
|��|�tt���z|�|t�WnYWYd}~nd}~wwq)Nz#Started sftp server on channel {!r}TzEOF -- end of sessionzException on channel: z Exception in server processing: )rPrOr
�format�_send_server_versionrA�session_started�_read_packet�EOFError�	Exception�strr�
tb_stringsr�get_int�_process�_send_statusr)	rBrDrHrC�t�data�erS�request_numberrIrIrJ�start_subsystem�s<
�����zSFTPServer.start_subsystemcsT|j��t���|j��D]}|��q|j��D]}|��qi|_i|_dS�N)rA�
session_endedrN�finish_subsystemr?�values�closer@)rB�frUrIrJri�s




zSFTPServer.finish_subsystemcCs*|tjkrtS|tjks|tjkrtStS)au
        Convert an errno value (as from an ``OSError`` or ``IOError``) into a
        standard SFTP result code.  This is a convenience function for trapping
        exceptions in server code and returning an appropriate result.

        :param int e: an errno code, as from ``OSError.errno``.
        :return: an `int` SFTP error code like ``SFTP_NO_SUCH_FILE``.
        )�errno�EACCESr�ENOENT�ENOTDIRr	r)rdrIrIrJ�
convert_errno�s


zSFTPServer.convert_errnocCs�tjdkr!|j|j@rt�||j�|j|j@r!t�||j	|j
�|j|j@r1t�||j
|jf�|j|j@rUt|d��}|�|j�Wd�dS1sNwYdSdS)a:
        Change a file's attributes on the local filesystem.  The contents of
        ``attr`` are used to change the permissions, owner, group ownership,
        and/or modification & access time of the file, depending on which
        attributes are present in ``attr``.

        This is meant to be a handy helper function for translating SFTP file
        requests into local file operations.

        :param str filename:
            name of the file to alter (should usually be an absolute path).
        :param .SFTPAttributes attr: attributes to change.
        �win32zw+N)�sys�platform�_flags�FLAG_PERMISSIONS�os�chmod�st_mode�FLAG_UIDGID�chown�st_uid�st_gid�FLAG_AMTIME�utime�st_atime�st_mtime�	FLAG_SIZE�open�truncate�st_size)�filename�attrrlrIrIrJ�
set_file_attr�s
"��zSFTPServer.set_file_attrcGs�t�}|�|�|D]:}t|t�r|�|�q
t|t�r"|�|�q
t|ttf�r/|�|�q
t	|�t
ur;|�|�q
td�
|t	|����|�||�dS)Nzunknown type for {!r} type {!r})r�add_int�
isinstancer
�	add_int64�intr]�bytes�
add_stringrLr�_packr\rW�_send_packet)rBrerbrFrS�itemrIrIrJ�	_response�s


�zSFTPServer._responseFcCsztt|�t�s|�||�dS|�td�|j���|jd7_|r+||j|�	�<n||j
|�	�<|�|t|�	��dS)Nzhx{:d}r6)
rKrL�
SFTPHandlera�	_set_namerrWr>r@�	_get_namer?r�r)rBre�handle�folderrIrIrJ�_send_handle_response�sz SFTPServer._send_handle_responseNcCsB|durzt|}Wntyd}Ynw|�|t||d�dS)N�Unknown�)r�
IndexErrorr�r)rBre�code�descrIrIrJras�zSFTPServer._send_statuscCsL|j�|�}tt|�t�rt�}|�|�|�||d�dS|�||�dS)NT)	rA�list_folderrKrLrMr��
_set_filesr�ra)rBre�path�respr�rIrIrJ�_open_folder
s
zSFTPServer._open_foldercCs||��}t|�dkr|�|t�dSt�}|�|�|�t|��|D]}|�|j�|�|�|�|�q#|�	t
|�dS)Nr)�_get_next_files�lenrarrr�r�r�r�r�r)rBrer��flistrSr�rIrIrJ�_read_folders

zSFTPServer._read_foldercCs�|��}|��}|��}|��}|��}||jvr"|�|td�dS|j|}|D]}	|	tvr7|	}
t|	}n
q)|�|td�dS|dkr^|�	�}t
t|�t�sY|�||d�dS|j
|}|dkrd|}|dkrq|�|td�dSt�}
|}|||kr�t||||�}t|d�}d}|�}||kr�|�||�}t|t�s�|�||d�dS|�|�|t|�7}||7}||ks�|
|��7}
|||ks|t�}|�|�|�d	�|�|
�|�|
�|�t|�dS)
N�Invalid handlezNo supported hash types foundrzUnable to stat file�zBlock size too smallizUnable to hash file�
check-file)�
get_binary�get_list�	get_int64r_r?rar�_hash_classr�statrKrLrr�r��min�readr��updater��digestrr�r��	add_bytesr�r)rBrerSr��alg_list�start�length�
block_sizerl�x�algname�alg�st�sum_out�offset�blocklen�chunklen�count�hash_objrcrIrIrJ�_check_file#sx
�
��
�

�
�
�



zSFTPServer._check_filecCsz|t@r|t@rtj}n|t@rtj}ntj}|t@r |tjO}|t@r)|tj	O}|t
@r2|tjO}|t@r;|tj
O}|S)z;convert SFTP-style open() flags to Python's os.open() flags)rrrw�O_RDWR�O_WRONLY�O_RDONLYr�O_APPENDr�O_CREATr�O_TRUNCr�O_EXCL)rB�pflags�flagsrIrIrJ�_convert_pflagsfs



zSFTPServer._convert_pflagscCs�|�td�t|��|tkr-|��}|�|���}t�	|�}|�
||j�|||��dS|t
krg|��}||jvrF|j|=|�|t�dS||jvr^|j|��|j|=|�|t�dS|�|td�dS|tkr�|��}|��}|��}	||jvr�|�|td�dS|j|�||	�}
t|
ttf�r�t|
�dkr�|�|t�dS|�|t|
�dS|�||
�dS|tkr�|��}|��}|��}
||jvr�|�|td�dS|�||j|� ||
��dS|t!kr�|��}|�||j�"|��dS|t#k�r|��}|��}|�||j�$||��dS|t%k�r*|��}t�	|�}|�||j�&||��dS|t'k�r?|��}|�||j�(|��dS|t)k�rP|��}|�*||�dS|t+k�ru|��}||jv�rh|�|td�dS|j|}
|�,||
�dS|t-k�r�|��}|j�.|�}t/t0|�t��r�|�|t1|�dS|�||�dS|t2k�r�|��}|j�3|�}t/t0|�t��r�|�|t1|�dS|�||�dS|t4k�r�|��}||jv�r�|�|td�dS|j|�.�}t/t0|�t��r�|�|t1|�dS|�||�dS|t5k�r|��}t�	|�}|�||j�6||��dS|t7k�rC|��}t�	|�}||jv�r5|�|td�dS|�||j|�6|��dS|t8k�ro|��}|j�9|�}t|ttf��rg|�|t:d|dt��dS|�||�dS|t;k�r�|��}|��}|�||j�<||��dS|t=k�r�|��}|j�>|�}|�|t:d|dt��dS|t?k�r�|��}|dk�r�|�@||�dS|dk�r�|��}|��}|�||j�A||��dS|�|tB�dS|�|tB�dS)NzRequest: {}r�rr6r�r�zposix-rename@openssh.com)CrOr
rWrr�get_textr�r_r�	_from_msgr�rAr�rr�r@rar r?rkrr!r�r�r�r�r]r�rr�r"r#�writer$�remover%�renamer&�mkdirr'�rmdirr(r�r)r�r*r�rKrLr+r,�lstatr-r.�chattrr/r0�readlinkrr1�symlinkr2�canonicalizer3r��posix_renamer4)rBrbrerSr�r�r�r�r�r�rc�oldpath�newpathr�r��target_path�rpath�tagrIrIrJr`xs(
�

�
�
��
�




�



�



��
�
�
�


�zSFTPServer._process)Frg)�__name__�
__module__�__qualname__�__doc__rr7rOrfri�staticmethodrqr�r�r�rar�r�r�r�r`�
__classcell__rIrIrUrJr5Xs&
�"





Cr5)r�)Cr�rwrmrs�hashlibrr�paramikor�
paramiko.sftprrrrr	r
�paramiko.sftp_sir�paramiko.sftp_attrr�paramiko.commonr
�paramiko.serverr�
paramiko.utilrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r�r5�paramiko.sftp_handler�rIrIrIrJ�<module>s& �
(D