circus-manager
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
},
...
]
}