U
vù¾f$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;mZ> 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 sh t | ¡ t | |||¡ | ¡ }t | ¡ d ¡| _| ¡ | _ d| _
i | _i | _||f|ž|Ž| _
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 Z
get_transportr Z
get_loggerZget_log_channelÚloggerZget_hexdumpZultra_debugÚnext_handleÚ
file_tableÚfolder_tableÚserver)ÚselfÚchannelÚnamer<