booster

module
Version: v0.5.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2018 License: AGPL-3.0

README

booster

Build Status Snap Status GoDoc Go Report Card

Table of Contents

Overview

At my parent's home we have a slow Internet connection. I noticed that we also have four smartphones, all of them 4G enabled. This made me think about this configuration a bit. We have four fast network interfaces, all of them with a limited Internet usage per month, and a slow Internet connection.

Even if in need, we always use just one device at once, and usually it is the slowest one.

This is were booster comes into play. Its aim is to create a network of peer nodes, each of them with an active Internet connection, that balance the network usage between their interfaces.

Each booster-node is actually composed by a transparent forward proxy and a booster instance. Both parts will be described in detail later on, but, in summary, the former one is a SOCKS5 proxy that keeps track of the number of open channels of data that is proxing. When we want to enable booster on a device, we just have to make it exploit the booster-proxy when networking, and use the booster instance to connect nodes to it, and manage them. This way we can use our device as always, while transparently in the background booster will balance the network usage between each node, with all the consequences that come along with it.

My current configuration: I have a booster instance on my mac always running, using the advanced settings in the network section of system preferences, I set the proxy setting to use the SOCKS5 booster-proxy, so all my network traffic passes through it. I have another booster instance running on a Nexus 5X (thanks to termux), which is connected to my mac's (step described later). With just this simple steps, my network traffic is balanced between our slow home's Internet connection and the NEXUS 5X's 4G!

When I need a further boost, I even connect my brother's phone, my mum's, and the phone of whoever wants to boost me! 🎉

Installation

From source:

With a correctly configured Go installation,

get the repo with:

go get -u github.com/danielmorandini/booster/booster

build the executable:

cd $GOPATH/src/github.com/danielmorandini/booster
go build -o booster cmd/booster/main.go

With Makefile (thanks to Filippo's hellogopher),

clone the repo:

git clone https://github.com/danielmorandini/booster.git

test & build:

cd booster
make setup
make test
make

a bin folder will be produced inside the repo.

Homebrew:

Add tap (has only to be done once):

brew tap danielmorandini/tap

Install booster:

brew install danielmorandini/tap/booster
Snap:

For linux based users, snappy is provided:

snap install booster --beta
Binary:

Pick your release!

Usage

Booster comes with a great CLI powered by cobra.

Find more with booster help

Directories

Path Synopsis
Package booster provides the higher interface for dealing with booster instances that follow the booster protocol.
Package booster provides the higher interface for dealing with booster instances that follow the booster protocol.
cmd
Package log implements a simple leveled logging interface.
Package log implements a simple leveled logging interface.
Package network provides a portable interface for network I/O, constraining its usage allowing only to send & receive data in a packet format.
Package network provides a portable interface for network I/O, constraining its usage allowing only to send & receive data in a packet format.
packet
Package packet provides functionalities for building, encoding and decoding data.
Package packet provides functionalities for building, encoding and decoding data.
Package node provides functionalities for handling remote nodes and dispatching connections through them.
Package node provides functionalities for handling remote nodes and dispatching connections through them.
Package protocol provides functionalities to create payloads and compose packet that conform to the booster protocol.
Package protocol provides functionalities to create payloads and compose packet that conform to the booster protocol.
Package pubsub provides the core functionalities to handle publication/subscription pipelines.
Package pubsub provides the core functionalities to handle publication/subscription pipelines.
Package socks5 provides a SOCKS5 server implementation.
Package socks5 provides a SOCKS5 server implementation.
Package tracer provides basic functionalities to monitor a network address until it is online.
Package tracer provides basic functionalities to monitor a network address until it is online.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL