#

aft
![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/dd-dreams/aft/.github%2Fworkflows%2Frust.yml)![GitHub release (with filter)](https://img.shields.io/github/v/release/dd-dreams/aft) aft (Advanced File Transfer) is a minimal and secure tool for sharing files between two parties easily and efficiently. Works in Windows, Linux and macOS. # Features - Encryption. - Fast. - Lightweight (on RAM and storage). - Security is top priority. - Peer to Peer mode. - Relay mode. - Blocking senders. - No IP self-lookup. - fail2ban support. # Modes There are a couple of modes to use with this program: ## Peer to Peer The sender is directly connected to the receiver, and the transfer process is happening directly. ## Relay Allows using a relay instead of two devices connecting to each other directly. It allows a few benefits such as: - No port forward needed on the receiver's end; - No direct contact between the receiver and the sender; - Better privacy - no IP sharing; - Ability to block senders. # Usage ``` aft - file transfer done easily Usage: aft sender [--address

] [--port ] [--identifier ] aft receiver [-p ] aft download -a
[-p ] [-i ] aft relay [-p ] aft [options ...] Positional arguments: mode Optional arguments: -a --address ADDRESS Address. -p --port PORT Port. -i --identifier IDENTIFIER Identifier to find the receiver. Used only when its not P2P. -v --verbose VERBOSE Verbose level. Default is 1 (warnings only). Range 1-3. -c --config CONFIG Config location. -v --version Show version. -e --encryption ALGORITHM Possible values: [AES128, AES256]. -t --threads THREADS Number of threads to use. -s --checksum Check checksum at the end. Only relevant if mode == sender. ``` # Installation ## Install using cargo Run `cargo install aft`, and you should be able to run the program immediately. ## Automatic install Run the following command to install aft: `curl --proto '=https' -sf https://raw.githubusercontent.com/dd-dreams/aft/master/install.sh | sudo sh -s -- install`. If you want to modify the config, you can create a new file at your home directory (`%USERPROFILE%` for Windows and `~/` for Unix) within `.aft` directory, named: "config". Look into `docs/CONFIG.md` to see more. Run the following command to uninstall aft: `curl --proto '=https' -sf https://raw.githubusercontent.com/dd-dreams/aft/master/install.sh | sudo sh -s -- uninstall`. ## Manual install Navigate to the [releases](https://github.com/dd-dreams/aft/releases) page and choose your platform. For Windows you can export the archive contents by double clicking. For Linux and macOS you can use `gzip` for extracting the contents. `gzip` should be included by default in the OS. Run: `gzip -dN `. You can export the program anywhere you like, but make sure you add it to PATH so you can easily access it. ### Systemd setup - Copy the `aft` program into `/usr/local/bin/`. - Copy `aft-relay.service` into `/etc/systemd/system/`. - Start the program with: `sudo systemctl start aft-relay`. Notice that the service requires a new user called `aft`. If you want the service to be ran with root, remove the `User=aft` line, though it's not recommended for security reasons. This service only runs the relay mode. ## fail2ban setup - Copy `assets/fail2ban/aft-relay-filter.conf` into `/etc/fail2ban/filter.d/`. - Copy `assets/fail2ban/aft-relay.conf` into `/etc/fail2ban/jail.d/` - Restart the service: `sudo systemctl restart fail2ban` You can modify the bantime and maxretries in `aft-relay.conf`. ### Notice fail2ban only works on relay mode. fail2ban doesn't work on Windows. # Building Building is really simple: `cargo build --release` and the output will be at `target/release/aft`. ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.