#relay #file-transfer #relay-server #command-line-tool

app gday

Command line tool to securely send files (without a relay or port forwarding)

3 unstable releases

0.2.1 Jul 12, 2024
0.2.0 Jul 8, 2024
0.1.1 Jun 7, 2024

#311 in Network programming

MIT license

120KB
2K SLoC

Note: this project is still in early-development, so expect breaking changes.

gday

Crates.io Version

Command line tool to securely send files (without a relay or port forwarding).

peer_1: gday send image.jpg folder
<Asks for confirmation>
Tell your mate to run "gday get 1.1C30.C71E.A".
Transfer complete.
peer_2: gday get 1.1C30.C71E.A
<Asks for confirmation>
Transfer complete.

asciicast

Installation

To run the executable directly:

  1. Go to releases and download the correct file for your platform.
  2. Extract it (on Linux: tar xf <file>).
  3. Run it: ./gday

To install with cargo:

$ cargo install gday

To install with brew:

$ brew install manforowicz/tap/gday

Features

  • File transfer is always direct, without relay servers. A server is only used to exchange socket addresses at the beginning.
  • No limit on the size of files and folders sent.
  • Doesn't require port forwarding. Instead, uses TCP Hole Punching to traverse NATs. Note: this may not work on very restrictive NATs.
  • Server connection encrypted with TLS and file transfer encrypted with ChaCha20Poly1305.
  • Automatically tries both IPv4 and IPv6.
  • Immune to malicious servers impersonating your peer. Uses SPAKE2 password authenticated key exchange to derive an encryption key from a shared secret.
  • No unsafe Rust in this repository.

Usage

Usage: gday [OPTIONS] <COMMAND>

Commands:
  send  Send files and/or directories
  get   Receive files
  help  Print this message or the help of the given subcommand(s)

Options:
  -s, --server <SERVER>        Use a custom gday server with this domain name
  -p, --port <PORT>            Connect to a custom server port
  -u, --unencrypted            Use raw TCP without TLS
  -v, --verbosity <VERBOSITY>  Verbosity. (trace, debug, info, warn, error) [default: warn]
  -h, --help                   Print help
  -V, --version                Print version

Similar Projects

No relays Works beyond LAN Works through very strict NATs No port forwarding Encrypted Can resume interrupted transfers
gday
magic-wormhole
croc
p2pcopy
iwant
zget
sharedrop
filepizza
Personal SSH or HTTPS
Personal FTP
Dropbox, Google Drive, etc.
Delivering a USB drive

Open an issue to add more projects to this list.

Dependencies

~19–29MB
~532K SLoC