Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Antonito/gfile
Direct file transfer over WebRTC
https://github.com/Antonito/gfile
file-sharing go golang peer-to-peer peer2peer webassembly webrtc
Last synced: 4 months ago
JSON representation
Direct file transfer over WebRTC
- Host: GitHub
- URL: https://github.com/Antonito/gfile
- Owner: Antonito
- License: mit
- Created: 2019-03-08T06:02:16.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-25T02:39:13.000Z (almost 2 years ago)
- Last Synced: 2024-10-13T12:31:59.766Z (4 months ago)
- Topics: file-sharing, go, golang, peer-to-peer, peer2peer, webassembly, webrtc
- Language: Go
- Homepage: https://github.com/Antonito/gfile
- Size: 157 KB
- Stars: 742
- Watchers: 16
- Forks: 51
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-pion - Antonito/gfile - Direct file transfer over WebRTC (DataChannel)
- awesome-repositories - Antonito/gfile - Direct file transfer over WebRTC (Go)
- awesome-webrtc - GFile - Direct file transfer over WebRTC. (Projects / File Transfer)
- awesome-golang-repositories - gfile
- awesome-go-extra - gfile - 03-08T06:02:16Z|2021-02-23T09:43:17Z| (Go Tools / Other Software)
README
[](https://travis-ci.org/Antonito/gfile)
[](https://goreportcard.com/report/github.com/Antonito/gfile)
[](https://www.codacy.com/app/Antonito/gfile?utm_source=github.com&utm_medium=referral&utm_content=Antonito/gfile&utm_campaign=Badge_Grade)
[](https://coveralls.io/github/Antonito/gfile?branch=master)
[](https://opensource.org/licenses/MIT)
[](https://github.com/avelino/awesome-go)# GFile
gfile is a WebRTC based file exchange software.
It allows to share a file directly between two computers, without the need of a third party.

## Note
This project is still in its early stage.
## How does it work ?

The [STUN server](https://en.wikipedia.org/wiki/STUN) is only used to retrieve informations metadata (how to connect the two clients). The data you transfer with `gfile` **does not transit through it**.
> More informations [here](https://webrtc.org/)
## Usage
### Sender
```bash
gfile send --file filename
```- Run the command
- A base64 encoded [SDP](https://tools.ietf.org/html/rfc4566) will appear, send it to the remote client
- Follow the instructions to send the client's SDP to your process
- The file transfer should start### Receiver
```bash
# SDP being the base64 SDP gotten from the other client
echo "$SDP" | gfile receive -o filename
```- Pipe the other client's SDP to gfile
- A base64 encoded SDP will appear, send it to the remote client
- The file transfer should start### Benchmark
`gfile` is able to benchmark the network speed between 2 clients (1 _master_ and 1 _slave_) with the `bench` command.
For detailed instructions, see `Sender` and `Receiver` instructions.This feature is still an experiment.
```bash
# Run as 'master'
gfile bench -m# Run as 'slave'
echo "$SDP" | gfile bench
```### Web Interface
A web interface is being developed via WebAssembly. It is currently **not** working.
### Debug
In order to obtain a more verbose output, it is possible to define the logging level via the `GFILE_LOG` environment variable.
> Example: `export GFILE_LOG="TRACE"`
> See function `setupLogger` in `main.go` for more information## Contributors
- Antoine Baché ([https://github.com/Antonito](https://github.com/Antonito)) **Original author**
Special thanks to [Sean DuBois](https://github.com/Sean-Der) for his help with [pion/webrtc](https://github.com/pion/webrtc) and [Yutaka Takeda](https://github.com/enobufs) for his work on [pion/sctp](https://github.com/pion/sctp)