Skip to content

WebRTC based P2P multi-threaded filesharing CLI app written in Golang.

License

Notifications You must be signed in to change notification settings

spectre10/fs-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Reference Go Report Card

fs-cli

fs-cli is multi-threaded CLI app written in Golang to transfer multiple files concurrently via WebRTC.

It is peer-to-peer (P2P), so there are no servers in middle. However, Google's STUN server is used to retrieve information about public address and the type of NAT clients are behind. (Transfer of files does not happen through Google servers.)

This information is used to setup a Peer Connection between clients. After connecting, each file is assigned a WebRTC Data-Channel for streaming. And the transfer happens concurrently over all Data-Channels.

You can also find your public IP address via WebRTC. (See Usage Below)

fileshare.mp4

Currently only tested on Linux.

Architecture

WebRTC

Installation

If you have Go installed, (Install from here)

Add $GOPATH/bin to your $PATH. And then,

if you want the latest release version, then run this command,

go install github.com/spectre10/fs-cli@latest

or

if you want a specific release version, then run this command,

go install github.com/spectre10/fs-cli@vX.X.X

Alternatively, you can also download from GitHub Releases.

Usage

To send a file,

fs-cli send <filepath1> <filepath2> ... 

To receive a file,

fs-cli receive

To find your IP address,

fs-cli findip

Future Steps

  • (On-going) Add a web UI which can be hosted locally. (Single Binary.)

References