dash

module
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2022 License: BSD-3-Clause

README

Neubot DASH Go client and server

GoDoc Golang Status Coverage Status Go Report Card

This repository contains an implementation of Neubot's DASH experiment client and server, both written in Go.

Server

The server is meant to be deployed at Measurement Lab. For this reason the release procedure for the server, described below, uses Docker. Images will be available as neubot/dash.

Build
docker build -t neubot/dash .
docker tag neubot/dash neubot/dash:`git describe --tags --dirty`-`date -u +%Y%m%d%H%M%S`
Test locally

The following command should work on a Linux system:

rm -f ./certs/cert.pem ./certs/key.pem &&    \
./mkcerts.bash &&                            \
sudo chown root:root ./certs/*.pem &&        \
docker run --network=bridge                  \
           --publish=80:8888                 \
           --publish=443:4444                \
           --publish=9990:9999               \
           --volume `pwd`/certs:/certs:ro    \
           --volume `pwd`/datadir:/datadir   \
           --read-only                       \
           --cap-drop=all                    \
           neubot/dash                       \
           -datadir /datadir                 \
           -http-listen-address :8888        \
           -https-listen-address :4444       \
           -prometheusx.listen-address :9999 \
           -tls-cert /certs/cert.pem         \
           -tls-key /certs/key.pem

This command will run dash-server in a container as the root user, with no capabilities, limiting access to the file system and exposing all the relevant ports: 80 for HTTP based tests, 443 for HTTPS tests, and 9990 to access prometheus metrics.

Release
docker push neubot/dash

Client

Build using:

go build -v ./cmd/dash-client

Make sure you read PRIVACY.md before running. The command will anyway refuse to run unless you acknowledge the privacy policy by passing the -y command line flag.

Directories

Path Synopsis
Package client implements the DASH client
Package client implements the DASH client
cmd
dash-client
dash-client is the dash command line client.
dash-client is the dash command line client.
dash-server
dash-server is the dash command line server.
dash-server is the dash command line server.
Package model contains the data model
Package model contains the data model
Package server implements the DASH server
Package server implements the DASH server
Package spec contains constants
Package spec contains constants

Jump to

Keyboard shortcuts

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