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.
- file:
-
?fastest-players- file:
queries/fastest-players.sql - Requests the map list of the server, the highest velocities attained per map and by which player.
- file:
-
?map=[map name]- file:
queries/mleaderboard-ojoin.sql - Requests the leaderboard of the map.
- file:
-
?player=[clientid]- file:
queries/rplayers.sql - Requests a player's ranks for all maps leaderboards s/he is present on.
- file:
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.