gday

Crates.iogday
lib.rsgday
version0.2.0
sourcesrc
created_at2024-06-07 23:13:55.22987
updated_at2024-07-12 05:09:59.059019
descriptionCommand line tool to securely send files (without a relay or port forwarding).
homepagehttps://github.com/manforowicz/gday/tree/main/gday
repositoryhttps://github.com/manforowicz/gday/
max_upload_size
id1265310
size52,959
Marcin Anforowicz (manforowicz)

documentation

README

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.

Related

Commit count: 78

cargo fmt