Ejemplo n.º 1
0
 def writeChunk(self, offset, data):
     self.bytesReceived += len(data)
     if self.bytesReceivedLimit and self.bytesReceived > self.bytesReceivedLimit:
         raise filetransfer.SFTPError(filetransfer.FX_FAILURE,
                                      "Quota exceeded")
     self.sftpserver.fs.lseek(self.fd, offset, os.SEEK_SET)
     self.sftpserver.fs.write(self.fd, data)
Ejemplo n.º 2
0
 def writeChunk(self, offset, data):
     """
     """
     self.bytes_written += len(data)
     if self.bytesReceivedLimit and self.bytes_written > self.bytesReceivedLimit:
         log.msg(eventid='KIPP0015', format='Data upload limit reached')
         raise filetransfer.SFTPError( filetransfer.FX_FAILURE, "Quota exceeded" )
     self.sftpserver.fs.lseek(self.fd, offset, os.SEEK_SET)
     self.sftpserver.fs.write(self.fd, data)
Ejemplo n.º 3
0
 def open(self, event, data):
     transfer_type = server.detect_transfer_type(data['flags'])
     if (transfer_type == 'upload'):
         if not (data['filename'].endswith('gpg')
                 or data['filename'].endswith('pgp')):
             raise filetransfer.SFTPError(
                 filetransfer.FX_OP_UNSUPPORTED,
                 "Uploaded files *must* be GPG/PGP-encrypted")
     else:
         print 'download'
Ejemplo n.º 4
0
 def writeChunk(self, offset, data):
     """See `ISFTPFile`."""
     if not self._shouldWrite():
         raise filetransfer.SFTPError(
             filetransfer.FX_PERMISSION_DENIED,
             "%r was opened read-only." % self._unescaped_relpath)
     if self._shouldTruncate():
         deferred = self._truncateFile()
     else:
         deferred = defer.succeed(None)
     self._written = True
     if self._shouldAppend():
         deferred.addCallback(lambda ignored: self.transport.append_bytes(
             self._escaped_path, data))
     else:
         deferred.addCallback(lambda ignored: self.transport.writeChunk(
             self._escaped_path, offset, data))
     return deferred
Ejemplo n.º 5
0
 def translateError(failure, func_name):
     """Translate Bazaar errors to `filetransfer.SFTPError` instances."""
     types_to_codes = {
         bzr_errors.PermissionDenied: filetransfer.FX_PERMISSION_DENIED,
         bzr_errors.TransportNotPossible: filetransfer.FX_PERMISSION_DENIED,
         bzr_errors.NoSuchFile: filetransfer.FX_NO_SUCH_FILE,
         bzr_errors.FileExists: filetransfer.FX_FILE_ALREADY_EXISTS,
         bzr_errors.DirectoryNotEmpty: filetransfer.FX_FAILURE,
         bzr_errors.TransportError: filetransfer.FX_FAILURE,
         FileIsADirectory: filetransfer.FX_FILE_IS_A_DIRECTORY,
     }
     # Bazaar expects makeDirectory to fail with exactly the string "mkdir
     # failed".
     names_to_messages = {
         'makeDirectory': 'mkdir failed',
     }
     try:
         sftp_code = types_to_codes[failure.type]
     except KeyError:
         failure.raiseException()
     message = names_to_messages.get(func_name, failure.getErrorMessage())
     raise filetransfer.SFTPError(sftp_code, message)
Ejemplo n.º 6
0
 def open_file(stat_result):
     if stat.S_ISDIR(stat_result.st_mode):
         return TransportSFTPFile(self.transport, path, flags, self)
     else:
         raise filetransfer.SFTPError(filetransfer.FX_NO_SUCH_FILE,
                                      directory)