Simple and secure file transfer CLI
Project description
Bestow
Simple and secure file transfer CLI.
Table of Contents
Description
This Python program facilitates fast encrypted file transfers over a TCP connection. I made this project because I needed peace of mind when sending data on an untrusted network.
Features
- Straightforward command-line interface.
- Secured with modern encryption standards.
- Capable of handling large files efficiently.
- Speed benefits due to asynchronous design.
- Supports multiple client connections concurrently.
Installation
This project supports CPython v3.10 and later. The latest version can be installed at https://python.org/download/.
Using uv
This is the recommended installation method because it isolates the package environment from the system.
- Install
uv
if you haven't already:
python3 -m pip install --user uv
uv tool update-shell
- Install the package:
uv tool install bestow
- Update the package:
uv tool upgrade bestow
Make sure to restart the shell before using bestow
.
Using pip
:warning: This installation method is not recommended, as the package will be installled in the global environment. This is not ideal because it can lead to dependency conflicts or potentially break packages needed by the system.
python3 -m pip install bestow
Using Termux
If you have issues with the recommended install method
on Termux, you can build
PyNaCl
using the system installation of
libsodium
.
The solution is was taken from a PyNaCl
GitHub issue.
pkg install clang python libffi openssl libsodium
SODIUM_INSTALL=system python -m pip install pynacl
python3 install bestow
Usage
The file transfer model involves two components: the server, who provides the file, and the client, who receives the file. This model ensures that the server can control who will receive the data and helps to mitigate malicious actors.
Sending a File
This will make it possible for a client to connect to the server's IP address on a specific port (by default it is 50222).
bestow start file.txt
Receiving a File
bestow connect 192.168.0.1
License
This project is licensed under the GNU Affero General Public License version 3.0 or later. See the LICENSE file for more details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.