Integrate the possible usage of Cyber Sandbox Creator with KYPO head
The problem of KYPO and Cloud services behind that (e.g., OpenStack) is that it is a resource expensive solution. For that, it cannot be used to teach hundreds or thousands of students.
Currently, the teachers teaching hundreds or thousands of students use Cyber Sandbox Creator (CSC) with CTFd (not KYPO..).
**The goal:** Use CSC with KYPO head, for instance, web interface, logging infrastructure, visualizations.
**Designed proposals @441048:**
Untouched services:
* SD/Pool management will stay untouched
* User management services
Touched services:
* TD will contain a new type of level (access level). It will define two types of content - for let's say **Cloud** and **Local** environment.
* TI will contain a new attribute that indicates if TI is intended for Cloud or Local environment.
* When a training run is accessed, it will be checked if TI is intended for Cloud or Local. On the backend, it will ignore sandbox assignment actions accordingly, etc.
* Front-end will also check the TI intended for Cloud or Local and show essential visualizations based on that.
* For visualizations, only minor adjustments in their data retrieval and display should suffice. More details are linked in the related issue https://gitlab.ics.muni.cz/muni-kypo-crp/kypo-crp-issues/-/issues/259.
**Designed workflow @98724 :**
Trainee's perspective:
1. Trainee is provided with a sandbox repo, such as https://gitlab.ics.muni.cz/muni-kypo-trainings/games/secret-laboratory
1. Trainee logs into KYPO web portal using his/her UČO or local login
1. Trainee enter access code provided by the instructor
1. Training definition contains access level/phase with instructions (content for local) on how to start the provided sandbox locally using Vagrant
1. Trainee is instructed to start the sandbox locally with his/her unique **ID (email)** and **access token**, **KYPO Head IP** (where to send logs) passed to provisioning for setting up logging from the sandbox
* The first alternative to this step is that command to start local sandbox will be generated with all necessary information and displayed in the access level/phase. A trainee will copy it and past it to the terminal.
* The second alternative is that the trainee will download the script which they will use to start the local sandbox.
1. Trainee waits for sandbox deployment at own host, then enters the passkey in the access level/phase to complete it.
1. Trainee completes the training and sees progress visualizations and statistics.
Instructor's perspective:
1. Instructor shares the sandbox repo with all trainees, instructor does NOT touch KYPO sandbox agenda at all
1. Instructor creates a training instance in KYPO and click on the checkbox for Local usage
1. Instructor shares unique access code with all trainees
1. Instructor sees the progress of all trainees during and after the training instance
epic