Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fruit-testbed/p2p-update
Peer to Peer Secure Update project
https://github.com/fruit-testbed/p2p-update
bittorrent iot nat peer-to-peer stun system-update
Last synced: about 14 hours ago
JSON representation
Peer to Peer Secure Update project
- Host: GitHub
- URL: https://github.com/fruit-testbed/p2p-update
- Owner: fruit-testbed
- License: cc-by-sa-4.0
- Created: 2017-06-14T09:21:16.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-06-14T12:24:35.000Z (over 6 years ago)
- Last Synced: 2024-06-20T12:42:00.171Z (5 months ago)
- Topics: bittorrent, iot, nat, peer-to-peer, stun, system-update
- Language: Go
- Homepage: https://fruit-testbed.org
- Size: 8.07 MB
- Stars: 4
- Watchers: 4
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Peer-to-Peer Secure Update
This project aims to provide a framework to securely distribute system update
using peer-to-peer procotol that works in heterogeneous network environment,
in the presence of NATs and firewalls, where there is no necessarily direct
access from a management node to the devices being updated.The framework combines several key techniques:
1. STUN-based UDP hole punching to discover and open NAT bindings
2. A gossip protocol to deliver short messages to distribute update notifications
3. BitTorrent to securely distribute the software updateThis project is part of Federated RaspberryPi micro-Infrastructure Testbed - [FRuIT](https://fruit-testbed.org).
## To build
Requirements:
- Go version >=1.9
- dep (https://github.com/golang/dep)```
cd p2p-update
dep ensure
./build
```This generates an executable binary file: `p2pupdate`.
## To run
The application can run on any Linux operating system.
### Server mode
The server mode runs a lightweight STUN service to bootstrap a new peer and advertise
its session to existing peers. Both the update notification and file are distributed
using peer-to-peer protocols.To run in server mode, invoke:
```
./p2pupdate server
```## Agent mode
The agent mode performs peer-to-peer communications with other agents to send/receive
update notifications, use it to download/serve the update files, and deploy the updates
on local node.To run in agent mode, invoke:
```
./p2pupdate agent
```There are two options
- `--config-file`, is used to pass a custom config file.
- `--default-config`, prints default configuration to standard output.## License
Apache Version 2.0.