Internet file transfer command

Solution 1:

A very simple tool which handles the ”not knowing IPs” situation seamlessly (uses temporary passwords for transfer authentication) and gzips the transfer is portal.

(NOTE: I wrote this!)

How to use it

Alice wants to send <folder1> and <file.txt> to Bob, who can be behind the same NAT for direct transfer or anywhere on the internet for relayed transfer. Portal will use direct transfer if it's possible.

Alice initializes the file transfer by executing the following in her shell:

portal send <folder1> <file.txt>

This outputs a temporary password, which Alice communicates to Bob via some other secure channel.

# the output of the send command, use this password to receive the files 
> 1-supernova-gamma-ray

Bob executes the following command to receive folder1 and file.txt:

portal receive 1-supernova-gamma-ray

The file transfer will now begin!

Pros

  • e2e encryption
  • fast gzip (de)compression
  • simple protocol aids transfer speed
  • handles folders of any sort and depth
  • direct communication if ports are open or behind same NAT

Cons

  • does not do NAT traversal so transfer goes through a relay if direct communication cannot be established
  • it's a new tool so it is untried in different systems and might have weird bugs