This repository was made to allow for simple and fast filetransfer without needing to upload or pay for any third party service. Since this is just used for file transfer, a peer will only connect to at most one other peer. All filetransfer logic was done using google's quic protocol and more specifically https://github.com/lucas-clemente/quic-go.
*note - as of right now, the rendevousz server that is responsible for connecting peers is hosted on an EC2 instance.
- Check out the releases and download the correct version for your operating system!
- Clone the repository
git@github.com:Fattouche/FileFleet.git
- I recommend using VSCode for golang, however, any terminal will do.
- Download quic
go get "github.com/lucas-clemente/quic-go"
- Download the GUI bundler
go get -u github.com/asticode/go-astilectron-bundler/...
- Build the application
astilectron-bundler -v
- You might get golang errors, just run
go get <url>
for any errors
- Rendevousz Server - The peers communicate through this to find eachother and excahnge initial information.
- Peer - These will communicate on behalf of the user to transfer the file.
- The peers will connect to the rendevousz server and exchange information.
- The peers will attempt to punch a hole through eachothers NAT by sending udp packets to the peers public ip.
- If the peers can recieve eachothers udp packets, they can establish a quic connection using the other peers public ip.
- If they cannot recieve eachothers udp packets, they will attempt to establish a quic connection using their private IPs.
- If once again they cannot connect privately, maybe due to access point isolation, they peers will once again connect to the server and transfer through the server.
This project is licensed under the GNU General Public License v3.0 License - see the LICENSE.md file for details