enowars / EnoEngine

MIT License
13 stars 2 forks source link

Documentation #140

Open DanielHabenicht opened 3 years ago

DanielHabenicht commented 3 years ago
gehaxelt commented 3 years ago

:+1: for more details in the README :-)

DanielHabenicht commented 3 years ago

Also, some information on how to run all of the projects would be appreciated. E.g. in EnoChecker you are loading an assembly (where from?) and ~there is a multitude of errors:~ I had an old IDE

ldruschk commented 3 years ago

I can't really give a complete overview, but as far as getting the Engine running locally is concerned, the usage instructions from the Readme should be sufficient. Note that starting the EnoFlagSink before the EnoEngine will fail at the moment, this is a known bug tracked in #124

EnoLauncher waits for tasks to be added to the database by the EnoEngine and sends them to the checkers via HTTP and stores the results once it receives them. EnoFlagSink listens for flag submissions by the teams and adds them to the database. EnoEngine is responsible for creating the tasks for EnoLauncher at the beginning of each round as well as calculating the points at the end of each round, based on the submitted flags from EnoFlagSink and checker results from EnoLauncher.

EnoCore and EnoDatabase are just some common classes and the database project (I think).

EnoChecker is a checker library written in C#, although that does not really fit into this repository as it is not related to the Engine itself. https://github.com/enowars/enowars4-service-gamemaster might be a good reference on the usage. I assume DummyChecker and SampleChaker are somehow related to this.

FlagShooter was used in the past to stress test the flag submission endpoint, but I don't think this was used/maintained in quite some time.

Testsetup looks like it should probably be deleted, at least I don't think this is working.

@Trolldemorted and @Savallator should be able to correct me if I'm wrong somewhere and are probably able to create a more detailed Readme

ldruschk commented 3 years ago

I have also added the most recent ctf.json from the last Bambi CTF, the older sample ctf.jsons might no longer work since we changed stuff in the ctf.json spec quite a lot

https://github.com/enowars/EnoEngine/blob/master/ctf.bambi5.json

Savallator commented 3 years ago

Flagshooter was working after Enowars 4 at least, i am quite confident it should work without needing to change much. DummyChecker is a Checker that always returns ok, you can use that for performance testing. It is made to be super fast, so it does not use JSON Serialization but constant result strings. In contrast, SampleChecker is kind of the same, but has the standard procedure a checker should use. This one might need some more polish to adhere to the recent changes. Testchecker is gone now, that was old stuff. In EnoCore is basically the Classes for JSON stuff, e.g. Scoreboard, Config, Checkertaskmessage, Logging. EnoDatabase contains the models for the Postgres Database. The Startup Instructions in the Readme should be up to date. For dev, i would recommend either Visual Studio 2019 (recommended if debugging is needed, although a local setup is a bit more complicated, and you of course also need the Database then) or Visual Studio Code.

Trolldemorted commented 3 years ago

EnoDatabase contains the models for the Postgres Database.

The db models are in EnoCore too, EnoDatabase contains all functions the other projects (Engine, Launcher, FlagShooter) need to interact with the postgres

DanielHabenicht commented 3 years ago

just a reminder for myself: https://mrin9.github.io/RapiDoc/examples/themes.html#post-/pet