peermesh
Version:
Send files peer-to-peer over a mesh network built with WebRTC.
44 lines (30 loc) • 2.18 kB
Markdown
# peermesh
> Start a **fully meshed network** by passing on the generated link and share files **peer-to-peer** and **end-to-end encrypted** powered by WebRTC!
- [x] Works fully in the browser using `WebRTC`.
- [x] Mesh swarms can be started by opening the site. A "mesh URL" is generated to be passed around.
- [x] The mesh URL contains a password. All files mesh will be sent `end-to-end encrypted`.
- [x] Swarms can be joined by opening the mesh URL.
- [x] Swarm form fully meshed networks (n:n) using [`webrtc-swarm`](https://github.com/mafintosh/webrtc-swarm).
- [x] WebRTC signaling data is exchanged via [`signalhub`](https://github.com/mafintosh/signalhub).
- [x] Swarm URLs can be bookmarked and reused. `trust on first use: encryption keys`
- [ ] You see when the source code changes because of [`hyperboot`](https://github.com/substack/hyperboot). `trust on first use: source code`
Files will \*not\* be propagated among peers. The peers that initates a transfer will send the file to every connected peer individually.
Combining trust on first use both for encryption keys \*and\* source code will help you [defeat Sauron](http://holgerkrekel.net/2013/10/26/defating-sauron-with-the-trust-on-first-use-principle/)!
[](https://pguth.github.io/peermesh/)
## Installation
```sh
git clone https://github.com/pguth/peermesh.git
cd peermesh
# You need a signaling server running:
npm install -g signalhub
signalhub listen -p 7000
# Now serve peermesh:
npm run build # and then open `public/index.html` in your browser or
npm start # to start the development server on `http://localhost:9966`
```
## Related
- [`peertransfer`](https://github.com/pguth/peertransfer)
Peertransfer is a (1:n) WebRTC based file transfer tool. Compared to `peermesh` it encodes a authentication code into the "sharing URL" that is passed around and will not initiate WebRTC signaling if the code is missing or wrong.
## Credits
- [Encrypt and decrypt content with Nodejs](http://lollyrock.com/articles/nodejs-encryption/) `crypto`
- [JavaScript File Encrypter](http://tutorialzine.com/2013/11/javascript-file-encrypter/) `design`