Skip to content

Fully secure and scallable remote command executor and manager

License

Notifications You must be signed in to change notification settings

szymonwieloch/rust-teleport

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust-teleport

Fully secure and scallable remote command executor and manager

rust-teleport is a project created with intention to be a proof of my skills. It can also be used as a solid project template for Rust-based secure and efficient servers. It has MIT license and your free to use parts of the code in your projects.

Challenge

Create a fully secure and scallable server and command line client with the capability to:

  • Remotely start a task on the server. The task is any bash-like command.
  • Query the task status.
  • Connect to the server and obtain logs (stout and stderr) - both past outputs and a live stream of logs being generated by the process.
  • Stop the task.
  • List all pending tasks.

In addition to the functional requirements there are also several quality requirements:

  • Create automated tests of the API.
  • Limit task resources to make sure that processes run by one user do not affect other users.
  • Use microservice-like architecture and assume existence of an authorization service.
  • Use fully reproducible build system.
  • Containerize the application.

Design

Full design document can be found here.

It contains all major decisons for this application and explains why they should be implemented in the given way.

Build and run

To bild the application using docker:

docker build -t teleport .

To run the application:

docker run -it --rm teleport /bin/bash

Then you can use commands teleport ad telecli to run the server and client apps. For help run:

teleport --help
telecli --help

About

Fully secure and scallable remote command executor and manager

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages