# xdfcgi A common gateway inferface (CGI) program written in C to display Race CTS leaderboards of Xonotic servers. It can also be a static page generator. ## Requirements sqlite-devel python3 python-sqlite The first is only needed for compilation of the C program. The latter two are only for the auxiliary script `allmaps.py`. ## Compiling `make` makes a static page generator. `make cgi` makes a CGI program. ## Usage: Import data from Xonotic This program uses an sqlite3 database file created from `~/.xonotic/data/data/server.db` (text). sqlite3 my-new.db sqlite > .read schema.sql python scripts/import-from-xon.py my-new.db ~/.xonotic/data/data/server.db ## Usage: (CGI) Queries * `(none)` - file: `queries/mranks.sql` - Requests the map list of the server, the best times scored per map and by which player. * `?fastest-players` - file: `queries/fastest-players.sql` - Requests the map list of the server, the highest velocities attained per map and by which player. * `?map=[map name]` - file: `queries/mleaderboard-ojoin.sql` - Requests the leaderboard of the map. * `?player=[clientid]` - file: `queries/rplayers.sql` - Requests a player's ranks for all maps leaderboards s/he is present on. `queries/fastest-player-of-map.sql` is used exclusively by the python script `scripts/allmaps.py`. ## Usage: Static Page Generation python scripts/allmaps.py The files `allmaps.py`, `output/leaderboard.css`, `overview.html`, `map.html` produce the output. Before executing `allmaps.py`, copy and modify the templates. cp templates/overview.html . cp templates/map.html . `allmaps.py` outputs an html file for all distinct maps in the database. The leaderboards for each map (equivalent to `?map=[map name]`) are in `output/maps/`. ## Game Versions Used Under: * Xonotic 0.8.1 * Xonotic 0.8.2 ## Compilers * gcc (GCC) 10.2.1 * MinGW, GCC 4.7.1 __________________ The script `scripts/import-from-xon.py` is based on `https://git.teknik.io/antares/xonotic-py-sqlite3-defrag2db` by [Antares](https://antares.neocities.org/).