Opened 13 years ago

Closed 13 years ago

#133 closed enhancement (fixed)

open file remotely without using ssh channel

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: critical Milestone: 0.12
Component: Global Keywords:

Description (last modified by Antoine Martin)

The sftp code was removed with paramiko, what we can do to restore the functionality is to define a new message type for file transfers and send the file through the normal client-server channel.

  • new accept_files option for servers (defaults to off?)
  • keep file pointer + index in server connection
  • send first chunk of data, below the max_line limit and also taking into account the link speed
  • server creates a temporary file in configurable download location (default to ~/Download)
  • server sends an ack after each packet is received (potential small delay here to ensure we prioritize other packets ahead of file transfers)
  • client fire progress_update callbacks registered with the file transfer
  • client sends the next chunk (potential delay here - same reason as above), taking into account how long the first previous took (so we can keep UI updates regular - say 1 second target)
  • if the server (or client) does not ack (or send the next chunk) within a certain amount of time (tbd - dynamic?), we cancel the whole thing and tell the other end. The server can delete the temporary file.
  • When the transfer is complete, we ask the server to open it.
  • Ensure file data is encrypted over the wire

Change History (4)

comment:1 Changed 13 years ago by Antoine Martin

Owner: changed from Antoine Martin to Antoine Martin
Status: newaccepted
  • added "allow_file_transfers" option in r3522

comment:2 Changed 13 years ago by Antoine Martin

Description: modified (diff)

comment:3 Changed 13 years ago by Antoine Martin

part2 in r3523:

  • can send multiple files
  • shows progress using existing progress bar code
  • stores data in a secure temp file

comment:4 Changed 13 years ago by Antoine Martin

Resolution: fixed
Status: acceptedclosed

This will do for now.

Not doing:

  • max size for file transfers, user can cancel if it takes too long
  • delays between receiving and acking, seems ok without it

Not done yet:

  • encrypt file data: #138

May do later:

  • show which files are being sent
  • only send up to N files in parallel
Last edited 13 years ago by Antoine Martin (previous) (diff)
Note: See TracTickets for help on using tickets.