relay

package module
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2022 License: AGPL-3.0 Imports: 0 Imported by: 0

README

Relay

alt text

alt text alt text

Relay is a set of tools and services to let you to host remote lab experiments, without opening firewall ports.

  • Secure websocket relay and host adapter for sharing video and data, with read/write permissions
  • Secure login shell relay, host adapter and client for end-to-end encrypted admin access without a jumpserver
  • Booking server for connecting users to experiments
  • Works with experiments behind firewalls and NAT because all communications are relayed
  • No need to open firewall ports, or get public IPv4 addresses.

Background

Relay is the new core of the practable.io remote laboratory ecosystem. Some of the educational thinking behind this ecosystem can be found here [1].

Status

The system is currently suitable for single-tenacy operations, with a single administrative "zone". Additional automation of experiment and system provision has been developed and will be released once secret-handling has been separated out.

We've successfully used this code to run assessed coursework for over 250 students during Q1/Q2 of 2021, alongside some student recruitment events [2].

We've got over 50 experiments under management at the present time - with some of our latest in our new 1:6 scale ISO containers:

One-sixth scale model containers holding spinner experiments

Overview

This repo contains a system for running experiments behind firewalls, including

  1. session host runs on the experiment to connect to the session relay to stream data and receive commands
  2. session relay runs in the cloud to connect experiments and users.
  3. book serve runs in the cloud (to handle bookings)
  4. shell host runs on the experiment to connect to the shell relay to provide secured ssh connections to the experiment
  5. shell relay runs in the cloud (to connect experiments and administrators)
  6. shell client runs on the administrators' systems to connect to the shell relay
data flow diagram of the relay system
Dataflow diagram of the `session host` to `session relay` connection, reproduced from [2] under CC-BY-4.0 license
More information

Additonal documentation (in various states of completeness) can be found on the following components here:

  1. booking
  2. booking client
  3. session relay
  4. session host
  5. shell relay
  6. shell host

References

[1] Timothy D. Drysdale (corresponding author), Simon Kelley, Anne-Marie Scott, Victoria Dishon, Andrew Weightman, Richard James Lewis & Stephen Watts (2020) Opinion piece: non-traditional practical work for traditional campuses, Higher Education Pedagogies, 5:1, 210-222, DOI: 10.1080/23752696.2020.1816845

[2] David P. Reid, Joshua Burridge, David B. Lowe, and Timothy D. Drysdale (corresponding author), Open-source remote laboratory experiments for controls engineering education, International Journal of Mechanical Engineering Education, Accepted 22 Jan 2022.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
book command
session command
shell command
internal
access/restapi
Package restapi Crossbar API for accessing github.com/timdrysdale/crossbar websocket relay Schemes: http Host: localhost BasePath: / Version: 0.3 Contact: Timothy Drysdale<timothy.d.drysdale@gmail.com> https://github.com/timdrysdale Consumes: - application/json Produces: - application/json swagger:meta
Package restapi Crossbar API for accessing github.com/timdrysdale/crossbar websocket relay Schemes: http Host: localhost BasePath: / Version: 0.3 Contact: Timothy Drysdale<timothy.d.drysdale@gmail.com> https://github.com/timdrysdale Consumes: - application/json Produces: - application/json swagger:meta
agg
booking
Package booking provides an API for booking experiments
Package booking provides an API for booking experiments
booking/restapi
Package restapi Booking User API for booking experiments Schemes: http Host: book.practable.io BasePath: /api/v1 Version: 0.5 Contact: Tim Drysdale<timothy.d.drysdale@gmail.com> https://practable.io Consumes: - application/json Produces: - application/json swagger:meta
Package restapi Booking User API for booking experiments Schemes: http Host: book.practable.io BasePath: /api/v1 Version: 0.5 Contact: Tim Drysdale<timothy.d.drysdale@gmail.com> https://practable.io Consumes: - application/json Produces: - application/json swagger:meta
crossbar
Package crossbar provides a message broker with topics
Package crossbar provides a message broker with topics
hub
limit
Package limit supports enforcing the maximum number of simultaneous time-limited resources by user
Package limit supports enforcing the maximum number of simultaneous time-limited resources by user
manifest
Package manifest provides an alternative data format for representing poolstores that is easier to edit by hand, because default options can be specified for activities within a given pool, where usually the details are similar except for the stream details
Package manifest provides an alternative data format for representing poolstores that is easier to edit by hand, because default options can be specified for activities within a given pool, where usually the details are similar except for the stream details
rwc
shellaccess
Package shellaccess provides an API for accessing shellbar.
Package shellaccess provides an API for accessing shellbar.
shellaccess/restapi
Package restapi Shellaccess API for accessing github.com/practable/relay/internal/shellbar websocket relay Schemes: http Host: localhost BasePath: / Version: 0.3 Contact: Timothy Drysdale<timothy.d.drysdale@gmail.com> https://github.com/timdrysdale Consumes: - application/json Produces: - application/json swagger:meta
Package restapi Shellaccess API for accessing github.com/practable/relay/internal/shellbar websocket relay Schemes: http Host: localhost BasePath: / Version: 0.3 Contact: Timothy Drysdale<timothy.d.drysdale@gmail.com> https://github.com/timdrysdale Consumes: - application/json Produces: - application/json swagger:meta
shellclient
Package shellclient provides a client which listens on a local tcp port and for each incoming connection makes a unique connection to a remote shellrelay
Package shellclient provides a client which listens on a local tcp port and for each incoming connection makes a unique connection to a remote shellrelay
shellhost
Package shellhost manages connections between a shellrelay and a host machine accepting login shell connections, such as sshd.
Package shellhost manages connections between a shellrelay and a host machine accepting login shell connections, such as sshd.
tcpconnect
Package tcpconnect provides a tcp dialer with a two-channel []byte{} interface (In, Out)
Package tcpconnect provides a tcp dialer with a two-channel []byte{} interface (In, Out)
uicfg
Package uicfg holds models of the json format config files for ui
Package uicfg holds models of the json format config files for ui
vw

Jump to

Keyboard shortcuts

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