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",
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-01-31 20:41:22 -07:00
It also track scores,
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.
Please check out [the overview ](doc/overview.md )
for details.
2016-01-31 20:41:22 -07:00
2016-02-16 09:25:45 -07:00
Dependencies
--------------------
2016-02-22 01:12:24 -07:00
If you're using Xubuntu 14.04 LTS, you should have everything you need except
2016-02-23 12:13:38 -07:00
[LUA ](http://lua.org ) and [Markdown ](https://daringfireball.net/projects/markdown/ ).
2016-02-16 09:25:45 -07:00
2016-02-23 12:13:38 -07:00
$ sudo apt-get install lua5.2 markdown -y
2016-02-16 09:25:45 -07:00
2016-01-31 20:41:22 -07:00
How to set it up
--------------------
It's made to be virtualized,
so you can run multiple contests at once if you want.
2016-02-23 12:13:38 -07:00
If you want to run it out of `/opt/moth` ,
2016-01-31 20:41:22 -07:00
do the following:
2016-02-16 09:25:45 -07:00
$ mkdir -p /opt/moth/mycontest
$ ./install /opt/moth/mycontest
$ cp mothd /opt/moth
2016-02-22 01:12:24 -07:00
2016-01-31 20:41:22 -07:00
Yay, you've got it set up.
Installing Puzzle Categories
------------------------------------
Puzzle categories are distributed in a different way than the server.
After setting up (see above), just run
2016-02-23 12:13:38 -07:00
2016-02-16 09:25:45 -07:00
$ /opt/moth/mycontest/bin/install-category /path/to/my/category
2016-02-22 01:12:24 -07:00
2016-02-23 12:13:38 -07:00
If you want to create puzzles, also check out [How to Create Puzzle Categories ](doc/writing-puzzles.md ).
2016-01-31 20:41:22 -07:00
Running It
-------------
2016-02-23 12:13:38 -07:00
Get your web server to serve up your contest. In addition to static files, it'll need to do CGI. Here's one way to do it
2016-02-22 22:13:41 -07:00
on Xubuntu 14.04 LTS with [lighttpd ](https://lighttpd.net ) where the contest is at `/opt/moth/mycontest` and `mothd` is running as user `moth` :
First, install lighttpd and backup the configuration:
$ sudo apt-get install lighttpd -y
$ cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
2016-02-23 12:13:38 -07:00
Add `mod_cgi` to the `ServerModules` section, an alias to point to your contest, and CGI handling for your contest files to `/etc/lighttpd/lighttpd.conf` :
2016-02-22 22:13:41 -07:00
alias.url = ("/moth" => "/opt/moth/mycontest/www")
$HTTP["url"] =~ "/moth/" {
cgi.assign = (".cgi" => "/usr/bin/lua")
}
Restart your server:
$ sudo service lighttpd restart
* Stopping web server lighttpd [ OK ]
* Starting web server lighttpd [ OK ]
2016-01-31 20:41:22 -07:00
2016-02-23 12:13:38 -07:00
Make sure user `moth` can access your content and run the daemon.
2016-01-31 20:41:22 -07:00
2016-02-22 22:13:41 -07:00
$ sudo chown -R moth:moth /opt/moth/mycontest
$ sudo -u moth /opt/moth/mothd
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.
2016-02-23 12:13:38 -07:00
Everything Else
---------------
If anything is missing in this documentation, create an issue/PR or email somebody.