Simple encrypted file transfer service
GPL-3.0 License
Simple encrypted file transfer service
Expedite is a simple encrypted file transfer service that allows for people to share synchronously assets among each other without having to rely on third party file sharing services (and constantly worrying about how their data might be used) or feeling the need of having publicly visible IP addresses (and constantly worrying about script kiddies attacking your computer).
Expedite Server can be deployed on a virtual private server having an IP address that is discoverable by the Expedite Client users to broker file contents. The transfers facilitated using WebSockets are end-to-end encrypted with the use of 128-bit Advanced Encryption Standard and the server is restricted to logging only unidentifiable activities to the volatile memory.
Expedite is currently in BETA phase and if you like to direction the project is heading towards, kindly consider helping me out by starring the project repository, filing issue tickets for software errors or feature requests, contributing to the codebase of the project or sponsoring me to help maintain the servers and to help me keep working on more FOSS projects like these.
You can either deploy your own Expedite Server to broker file contents from your group of Expedite Client users or you can use the following publicly available servers setup by me instead. Picking the server that is closer to your group of users can help with improving performance and reliability of the transfer. Please open up a pull request if you wish to list your server here.
It is recommended for using the unsecured WebSockets connection only for testing and debugging purposes.
Mumbai, MH
ws://expedite-mumb.apexaltruism.net:6969
Atlanta, GA
ws://expedite-atla.apexaltruism.net:6969
It is recommended for using the secured WebSockets connection for all kinds of general file sharing purposes.
Mumbai, MH
wss://expedite-mumb.apexaltruism.net
or wss://expedite-mumb.apexaltruism.net:443
Grade A - Qualys
Test Result
Atlanta, GA
wss://expedite-atla.apexaltruism.net
or wss://expedite-atla.apexaltruism.net:443
Grade A - Qualys
Test Result
$ sudo dnf install python3 python3-virtualenv python3-pip git poetry
$ git clone [email protected]:$(whoami)/expedite.git
$ cd expedite
$ virtualenv venv
$ source venv/bin/activate
(venv) $ poetry install
$ sudo dnf install python3 python3-virtualenv python3-pip
$ virtualenv venv
$ source venv/bin/activate
(venv) $ pip3 install expedite
https://github.com/gridhead/expedite/actions
https://github.com/gridhead/expedite/actions/workflows/gnul.yml
https://github.com/gridhead/expedite/actions/workflows/mswn.yml
https://github.com/gridhead/expedite/issues
$ source venv/bin/activate
(venv) $ ed-server --help
Usage: ed-server [OPTIONS]
Options:
-a, --addr TEXT Set the interface for the service endpoint
[default: 127.0.0.1]
-p, --port INTEGER RANGE Set the port value for the service endpoint
[default: 8080; 64<=x<=65535]
--version Show the version and exit.
--help Show this message and exit.
(venv) $ ed-server --addr 0.0.0.0 --p 9090
0.0.0.0
) and on a specific port (i.e. 9090
).Ctrl
+ C
) when done.ip a
$ source venv/bin/activate
(venv) $ ed-server --help
Usage: ed-client [OPTIONS] COMMAND [ARGS]...
Options:
-h, --host TEXT Set the address for the service endpoint
[required]
-t, --time INTEGER RANGE Set the expiry period for participants [default:
15; 5<=x<=30]
-e, --endo TEXT Set the identity of the opposing client
--version Show the version and exit.
--help Show this message and exit.
Commands:
recv Collect file through an encrypted transfer
send Deliver file through an encrypted transfer
SEND
subcommand.
(venv) $ ed-client send --help
Usage: ed-client send [OPTIONS]
Deliver file through an encrypted transfer
Options:
-p, --pswd TEXT Set the password for delivering encryption
[default: 123972B4]
-f, --file PATH Set the filepath for delivering to network
[required]
-s, --size INTEGER RANGE Set the unit size for file chunking (in B)
[default: 262144; 1024<=x<=524288]
--help Show this message and exit.
(venv) $ ed-client --host ws://localhost:9090 --time 30 send --file /path/to/file.extn --pswd expedite --size 131072
[2024-07-06 11:52:10] Expedite Client v0.1.0a2
[2024-07-06 11:52:10] Addr. ws://localhost:9090
[2024-07-06 11:52:10] Pass. expedite
[2024-07-06 11:52:10] Plan. DELIVERING
[2024-07-06 11:52:10] Wait. 30 seconds
[2024-07-06 11:52:10] Please share your acquired identity to begin interaction.
[2024-07-06 11:52:10] Attempting to connect to the network.
[2024-07-06 11:52:10] Successfully connected to the network.
[2024-07-06 11:52:10] You are now identified as 01276D06 in the network.
ws://localhost:9090
.30 seconds
beyond which it will automatically disconnect.01276D06
which can be used by the collecting client for discovery.file.extn
from the location /path/to/file.extn
.expedite
to encrypt the file contents with 128-bit AES encryption.131072 byte
or 128KiB
at a time for delivering.01276D06
and password to start delivering process.(venv) $ ed-client --host ws://localhost:9090 --time 30 --endo DEADCAFE send --file /path/to/file.extn --pswd expedite --size 131072
[2024-07-06 12:02:09] Expedite Client v0.1.0a2
[2024-07-06 12:02:09] Addr. ws://localhost:9090
[2024-07-06 12:02:09] Pass. expedite
[2024-07-06 12:02:09] Plan. DELIVERING
[2024-07-06 12:02:09] Wait. 30 seconds
[2024-07-06 12:02:09] Please wait for DEADCAFE to begin interaction.
[2024-07-06 12:02:09] Attempting to connect to the network.
[2024-07-06 12:02:09] Successfully connected to the network.
[2024-07-06 12:02:09] You are now identified as BA40BB0F in the network.
ws://localhost:9090
.30 seconds
beyond which it will automatically disconnect.BA40BB0F
which can be used by the collecting client for discovery.file.extn
from the location /path/to/file.extn
.expedite
to encrypt the file contents with 128-bit AES encryption.131072 byte
or 128KiB
at a time for delivering.DEADCAFE
to start interaction.Ctrl
+ C
).RECV
subcommand.
Usage: ed-client recv [OPTIONS]
Collect file through an encrypted transfer
Options:
-p, --pswd TEXT Set the password for collecting encryption [required]
--help Show this message and exit.
(venv) $ ed-client --host ws://localhost:8080 --time 30 recv --pswd expedite
[2024-07-06 12:57:43] Expedite Client v0.1.0a2
[2024-07-06 12:57:43] Addr. ws://localhost:8080
[2024-07-06 12:57:43] Pass. expedite
[2024-07-06 12:57:43] Plan. COLLECTING
[2024-07-06 12:57:43] Wait. 30 seconds
[2024-07-06 12:57:43] Please share your acquired identity to begin interaction.
[2024-07-06 12:57:43] Attempting to connect to the network.
[2024-07-06 12:57:43] Successfully connected to the network.
[2024-07-06 12:57:43] You are now identified as 13755346 in the network.
ws://localhost:9090
.30 seconds
beyond which it will automatically disconnect.13755346
which can be used by the delivering client for discovery.expedite
to decrypt the file contents with 128-bit AES encryption.13755346
and password to start collecting process.(venv) $ ed-client --host ws://localhost:8080 --time 30 --endo DEADCAFE recv --pswd expedite
[2024-07-06 12:55:30] Expedite Client v0.1.0a2
[2024-07-06 12:55:30] Addr. ws://localhost:8080
[2024-07-06 12:55:30] Pass. expedite
[2024-07-06 12:55:30] Plan. COLLECTING
[2024-07-06 12:55:30] Wait. 30 seconds
[2024-07-06 12:55:30] Please wait for DEADCAFE to begin interaction.
[2024-07-06 12:55:30] Attempting to connect to the network.
[2024-07-06 12:55:30] Successfully connected to the network.
[2024-07-06 12:55:30] You are now identified as 13AA7DB2 in the network.
ws://localhost:9090
.30 seconds
beyond which it will automatically disconnect.13AA7DB2
which can be used by the delivering client for discovery.expedite
to decrypt the file contents with 128-bit AES encryption.13AA7DB2
and password to start collecting process.Ctrl
+ C
).