|
1 | 1 | Sheetcode |
2 | 2 | ==================== |
3 | | -Sheetcode is a service which allows users to create, edit and solve programming tasks and challange each other. |
| 3 | +ShetCode is a LeetCode-like platform built with Symfony and PostgreSQL. It supports public/private coding problems, sandboxed Python execution, and feedback submission. It is designed as a CTF service with multiple flagstores and intended vulnerabilities. |
4 | 4 | ----------------------------------------------- |
5 | 5 |
|
6 | | -# Usage |
| 6 | +# Installation and Setup |
| 7 | +## Service |
| 8 | +The service is located in the `service` directory. |
7 | 9 |
|
8 | | -Use this repository as the base structure for your service. Please keep the directory structure and the following required files: |
| 10 | +## Checker |
| 11 | +The checker is located in the `checker` directory. |
9 | 12 |
|
10 | | -- `README.md` with a description of your vulnerabilities and exploits. |
11 | | -- `LICENSE` with the MIT |
12 | | -- `.gitignore` files exclude directories or files from being committed. |
13 | | -- `.dockerignore` files exclude directories or files from being tracked by the docker daemon. |
14 | | -- `.env` files used by docker-compose to assign a unique project-name. |
15 | | -- `docker-compose.yml` files to manage your service or checker containers |
16 | | -- `Dockerfile` with commands to build your service |
17 | | - |
18 | | -# Checking your service |
19 | | - |
20 | | -You will have to implement a checker script, which periodically interacts with your service to store and retrieve flags and checks if it still behaves correctly. The game engine will call your checker during a CTF. Use the web interface or `enochecker_cli` to call your different checker methods. |
21 | | - |
22 | | -## Manually |
23 | | -However, you can also perform all game engine call manually in your local development environment. |
24 | | - |
25 | | -- First, start your service with `cd service` and `docker-compose up --build`. |
26 | | -- Next, start your checker with `cd checker` and `docker-compose up --build`. |
27 | | - |
28 | | -### Web interface |
29 | | -The checker launches a web interface on the port configured in its `docker-compose.yml`. |
30 | | - |
31 | | -- Browse to `http://localhost:<checker-port>` to reach the checker interface. |
32 | | - |
33 | | -### enochecker_cli |
34 | | - |
35 | | -Install `enochecker_cli` using `pip install --user enochecker_cli`. Provide the needed checker URL (`http://localhost:8000`), service IP address (i.e. `192.168.2.112`) and the checker methods to call: |
36 | | - |
37 | | -``` |
38 | | -$> enochecker_cli -A http://localhost:8000/ -a 192.168.2.112 putflag |
39 | | -OK |
40 | | -$> enochecker_cli -A http://localhost:8000/ -a 192.168.2.112 getflag |
41 | | -OK |
42 | | -$> enochecker_cli -A http://localhost:8000/ -a 192.168.2.112 putnoise |
43 | | -OK |
44 | | -$> enochecker_cli -A http://localhost:8000/ -a 192.168.2.112 getnoise |
45 | | -OK |
46 | | -$> enochecker_cli -A http://localhost:8000/ -a 192.168.2.112 -v 2 havoc |
47 | | -OK |
48 | | -``` |
49 | | - |
50 | | -## Automatically |
51 | | -You will use CI/CD to continuously check the checker and service. |
52 | | - |
53 | | -- First, install `enochecker_test`. |
54 | | -- Wipe your checker's and service's `./data/` directories as `enochecker_test` requires a clean state. |
55 | | -- Run `enochecker_test`: |
56 | | - |
57 | | -``` |
58 | | -ENOCHECKER_TEST_CHECKER_ADDRESS='localhost' ENOCHECKER_TEST_CHECKER_PORT='8000' ENOCHECKER_TEST_SERVICE_ADDRESS='192.168.2.112' enochecker_test |
59 | | -``` |
| 13 | +# Documentation |
| 14 | +Detailed documentation is stored in `documentation` directory. It contains all the information about functionality, architecture, vulnerabilities and other aspects of the application. |
0 commit comments