Is your feature request related to a problem? Please describe.
Create an instancer that can be used for contest/regular problems
Describe the solution you'd like
[x] Add an optional challenge spec to each problem
[x] If configured, will query an external server for a problem instance (problem id, challenge id, user id, auth token, time limit, flag, CTFOJ version)
[x] Return the problem instance to the user
External server (CTFOJ-Instancer) or something like that:
[x] Query database of active instances to see if there is one active
[x] If so, return instance details (host, port, connection, global?, end time)
[x] Rate limit each user to 4 non-global instances at once
[x] Create images through web interface
[x] Edit/delete images through web interface
[x] Robust error handling
[x] Create an instance if doesn't exist and user hasn't passed limit using docker-compose
[x] Set up a task to destroy the instance in the set amount of time
[x] API Documentation
Describe alternatives you've considered
No
Additional context
External endpoints:
[x] Query
[x] Create
[x] Destroy
CTFOJ to-do:
[x] DB boolean whether it has an instance?
[x] Settings entry for the instancer auth token
[x] If enabled, display a query/create/destroy instance interface on problems
Is your feature request related to a problem? Please describe.
Create an instancer that can be used for contest/regular problems
Describe the solution you'd like
External server (CTFOJ-Instancer) or something like that:
Describe alternatives you've considered
No
Additional context
External endpoints:
CTFOJ to-do:
New API Documentationdeferred to #108