about summary refs log tree commit diff

circus-manager Go Report Card

This container will provide the challenges for the companion container making it possible to dynamically change challenges and host the circus in docker-swarm. It will serve as a central manager making it possible to controll the challenge properties such as name, desription, flag, container to run, points and other.

Function

The challenge-manager is part of the docker swarm providing the challenges for the individual companion containers. The spawned companion containers access the challenge-manager, requesting the challenges, recieving them and hosting them for the users.

In order to not transfer the flag over a possibly insecure connection, the sha256 sum of the flag is transmitted. The companion containers can verify the flag by hashing it (sha256), comparing the hashes and so defining if a challenge is solved or not.

api

pad with sequence diagrams

The manager exposes the challenges for the companion containers to use. The endpoint for this is /api/getChallenges returning some json in the following form:

{
  "categories": {
    "guess": 1,
    "misc": 2,
    "pwn": 1
  },
  "challenges": [
    {
      "name": "random challenge name",
      "description": "some bad description",
      "flaghash": "6a1e963371a64b32aff302ef7f3a7d6df8df903fce10f3db6ee918f18ac11f2a",
      "container": "container-randomchallenge",
      "category": "guess",
      "points": 100,
      "static": false
    },
    {
      "name": "challenge 3",
      "description": "This is a rather long description describing how the challenge works, what might be helpful and other boring stuff...",
      "flaghash": "f87f2dc623bb1896707c68532993e434e3484c2316629814e8919dfeb5993a0a",
      "container": "container-challengethree",
      "category": "misc",
      "points": 300,
      "static": true
    },
    ...
  ]
}