Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emiago/sharef
Sharef command line tool for sending streaming files over webrtc
https://github.com/emiago/sharef
Last synced: 3 months ago
JSON representation
Sharef command line tool for sending streaming files over webrtc
- Host: GitHub
- URL: https://github.com/emiago/sharef
- Owner: emiago
- License: apache-2.0
- Created: 2020-07-12T16:15:39.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-07-27T17:42:34.000Z (over 3 years ago)
- Last Synced: 2024-07-27T15:14:57.562Z (7 months ago)
- Language: Go
- Size: 2.35 MB
- Stars: 16
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-pion - emiraganov/sharef - Sharef command line tool for sending streaming files (DataChannel)
README
# Sharef
Sharef is Command Line Tool for easy sharing files.
Focus is to have tool that can sync/stream securely file between two machines/containers easily.
It can help to avoid:
- uploading files to webservice, just to download them on different machine
- downloading file just to upload on different machine
- making important files publicIt uses WebRTC technology underneath.
Webrtc makes encrypted and p2p communication which makes sharing files and streaming highly secure. There is no third-party dependency.
It is totally written in GO language using pion/webrtc library.### Features list:
- Sending files
- Sending directories
- Sending multiple files in one command
- Sending and streaming changes of file/directory from sender
- Making connection once send files on the fly**NOTE:** It is experimental right now. Code should be improved.
# Install
For now only linux users :)
```
sudo wget -P /usr/bin https://github.com/emiraganov/sharef/releases/download/v0.3/sharef
sudo chmod +x /usr/bin/sharef
```# Usage
Before file streaming can begin, SDP offer and answer must be exchanged. This encoded string
will establish **p2p** connection and it is unique for each session.## > Send files/directories
![SENDDEMO](docs/SharefSendDemo.gif)**Sender:**
```
sharef push file1 file2 dir1 dir2 ...
```**Receiver:**
You just call pull in directory where you want to get files from sender.
```
sharef pull
```## >> Keep Us Synced
#### #DEMOYou can make sender to listen for file/dir changes after inital sending. Sender will listen for any changes under file/directory and automaticaly resend changed file. This will keep sender and receiver in sync.
This is useful if you are working on some directory and you want
those changes to be sent to receiver automatically.*Probably this will be improved but for now do not use this on large files*
**Sender:**
```
sharef push -f file/dir
```## >|> Make connection once and send on the fly
After exchanching SDP, all sending will be done by deamon running in background.
![SENDDEMO](docs/SharefDeamonDemo.gif)
**Sender:**
Calling this will deamonize sender
```
sharef push -d
```After making connection with receiver, you send same as:
```
sharef push file
sharef push dir
sharef push file1 file2
...
```Sharef will detect deamon is running and it will just tell deamon to do the job.
Deamon is listening on 9876 port by default, using HTTP2 protocol.
BE AWARE receiver will put everything in same directory where it is run.# Feedback
Any feedback is welcome!
# Contribute
Prereqs
- [Golang](https://golang.org/)
- [proto-lens](https://google.github.io/proto-lens/)
- [Go support for Protocol Buffers](https://github.com/golang/protobuf)Building sharef
```
make //build sharef
make test //run unit tests
make integrationtest //run integration tests
```# References
- https://github.com/pion/webrtc
- https://github.com/Antonito/gfile