2016-01-31 20:45:35 -07:00
|
|
|
Dirtbags Monarch Of The Hill Server
|
2016-01-31 20:41:22 -07:00
|
|
|
=====================
|
|
|
|
|
2016-01-31 20:45:35 -07:00
|
|
|
This is a set of thingies to run our Monarch-Of-The-Hill contest,
|
|
|
|
which in the past has been called
|
|
|
|
"Tracer FIRE",
|
|
|
|
"Project 2",
|
|
|
|
"HACK",
|
|
|
|
"Queen Of The Hill",
|
2016-10-21 14:38:19 -06:00
|
|
|
"Cyber Spark",
|
|
|
|
and "Cyber Fire".
|
2016-01-31 20:41:22 -07:00
|
|
|
|
2016-01-31 20:45:35 -07:00
|
|
|
Information about these events is at
|
|
|
|
http://dirtbags.net/contest/
|
|
|
|
|
|
|
|
This software serves up puzzles in a manner similar to Jeopardy.
|
2016-10-21 14:38:19 -06:00
|
|
|
It also tracks scores,
|
2016-01-31 20:41:22 -07:00
|
|
|
and comes with a JavaScript-based scoreboard to display team rankings.
|
|
|
|
|
|
|
|
|
2016-01-31 20:45:35 -07:00
|
|
|
How everything works
|
|
|
|
---------------------------
|
2016-01-31 20:41:22 -07:00
|
|
|
|
2016-01-31 20:45:35 -07:00
|
|
|
This section wound up being pretty long.
|
2016-10-21 14:38:19 -06:00
|
|
|
Please check out [the overview](docs/overview.md)
|
2016-01-31 20:45:35 -07:00
|
|
|
for details.
|
2016-01-31 20:41:22 -07:00
|
|
|
|
|
|
|
|
2016-10-20 11:32:21 -06:00
|
|
|
Getting Started Developing
|
|
|
|
-------------------------------
|
|
|
|
|
2016-12-01 16:22:35 -07:00
|
|
|
If you don't have a `puzzles` directory,
|
|
|
|
you can copy the example puzzles as a starting point:
|
|
|
|
|
|
|
|
$ cp -r example-puzzles puzzles
|
|
|
|
|
|
|
|
Then launch the development server:
|
|
|
|
|
2016-10-20 11:32:21 -06:00
|
|
|
$ python3 tools/devel-server.py
|
|
|
|
|
2016-12-01 16:22:35 -07:00
|
|
|
Point a web browser at http://localhost:8080/
|
2016-10-20 11:32:21 -06:00
|
|
|
and start hacking on things in your `puzzles` directory.
|
|
|
|
|
2016-10-21 14:38:19 -06:00
|
|
|
More on how the devel sever works in
|
|
|
|
[the devel server documentation](docs/devel-server.md)
|
|
|
|
|
2016-10-20 11:32:21 -06:00
|
|
|
|
|
|
|
Running A Production Server
|
|
|
|
====================
|
|
|
|
|
|
|
|
XXX: Update this
|
|
|
|
|
2017-02-05 16:42:41 -07:00
|
|
|
How to install it
|
2016-01-31 20:41:22 -07:00
|
|
|
--------------------
|
|
|
|
|
|
|
|
It's made to be virtualized,
|
|
|
|
so you can run multiple contests at once if you want.
|
2017-02-05 16:42:41 -07:00
|
|
|
If you were to want to run it out of `/srv/moth`,
|
2016-01-31 20:41:22 -07:00
|
|
|
do the following:
|
|
|
|
|
2017-02-05 16:42:41 -07:00
|
|
|
$ mothinst=/srv/moth/mycontest
|
|
|
|
$ mkdir -p $mothinst
|
|
|
|
$ install.sh $mothinst
|
2016-01-31 20:41:22 -07:00
|
|
|
|
2017-02-05 16:42:41 -07:00
|
|
|
Yay, you've got it installed.
|
|
|
|
|
|
|
|
How to run a contest
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
`mothd` runs through every contest on your server every few seconds,
|
|
|
|
and does housekeeping tasks that make the contest "run".
|
|
|
|
If you stop `mothd`, people can still play the contest,
|
|
|
|
but their points won't show up on the scoreboard.
|
|
|
|
|
|
|
|
A handy side-effect here is that if you need to meddle with the points log,
|
|
|
|
you can just kill `mothd`,
|
|
|
|
do you work,
|
|
|
|
then bring `mothd` back up.
|
|
|
|
|
|
|
|
$ cp src/mothd /srv/moth
|
|
|
|
$ /srv/moth/mothd
|
|
|
|
|
|
|
|
You're also going to need a web server if you want people to be able to play.
|
|
|
|
|
|
|
|
|
|
|
|
How to run a web server
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
Your web server needs to serve up files for you contest out of
|
|
|
|
`$mothinst/www`.
|
|
|
|
|
|
|
|
If you don't want to fuss around with setting up a full-featured web server,
|
|
|
|
you can use `tcpserver` and `eris`,
|
|
|
|
which is what we use to run our contests.
|
|
|
|
|
|
|
|
`tcpserver` is part of the `uscpi-tcp` package in Ubuntu.
|
|
|
|
You can also use busybox's `tcpsvd` (my preference, but a PITA on Ubuntu).
|
|
|
|
|
|
|
|
`eris` can be obtained at https://woozle.org/neale/g.cgi/net/eris/about/
|
|
|
|
|
|
|
|
$ mothinst=/srv/moth/mycontest
|
|
|
|
$ $mothinst/bin/httpd
|
2016-01-31 20:41:22 -07:00
|
|
|
|
|
|
|
|
|
|
|
Installing Puzzle Categories
|
|
|
|
------------------------------------
|
|
|
|
|
|
|
|
Puzzle categories are distributed in a different way than the server.
|
|
|
|
After setting up (see above), just run
|
|
|
|
|
2017-02-05 16:42:41 -07:00
|
|
|
$ /srv/koth/mycontest/bin/install-category /path/to/my/category
|
2016-01-31 20:41:22 -07:00
|
|
|
|
|
|
|
|
|
|
|
Permissions
|
|
|
|
----------------
|
|
|
|
|
|
|
|
It's up to you not to be a bonehead about permissions.
|
|
|
|
|
|
|
|
Install sets it so the web user on your system can write to the files it needs to,
|
|
|
|
but if you're using Apache,
|
|
|
|
it plays games with user IDs when running CGI.
|
|
|
|
You're going to have to figure out how to configure your preferred web server.
|