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
120KB
2K
SLoC
Note: this project is still in early-development, so expect breaking changes.
gday
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.
Installation
To run the executable directly:
- Go to releases and download the correct file for your platform.
- Extract it (on Linux:
tar xf <file>
). - 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
- gday - Command line tool for sending files.
- gday_server - Server that lets two peers share their socket addresses.
- gday_hole_punch - Library for establishing peer-to-peer TCP connection.
- gday_file_transfer - Library for transferring files over a connection.
- gday_encryption - Library for encrypting an IO stream.
- gday_contact_exchange_protocol - Library with protocol for two peers to share their socket addresses via a server.
Dependencies
~19–29MB
~532K SLoC