/Q3MockServer

Q3/JKA mock server implementing basic UDP commands

Primary LanguagePython

Q3/JKA Mock Server

Quake 3 / Jedi Academy mock server implementing basic UDP commands.

It may be used for testing/debugging purposes, or to replace an existing server with a custom connection message for maintenance/migration purposes.

Usage

Execute the following command to run the server locally:

./Q3MockServer.py

The following arguments are available:

./Q3MockServer.py [-h] [-a ADDRESS] [-p PORT] [-m MESSAGE] [-i INFO] [-s STATUS] [-l LOG_LEVEL]

Optional arguments:
  -h, --help                           Show help message and exit
  -a ADDRESS, --address ADDRESS        Address to bind to (default: 0.0.0.0)
  -p PORT, --port PORT                 Port to listen on (default: 29070)
  -m MESSAGE, --message MESSAGE        Message displayed to connecting players
  -i INFO, --info INFO                 Server info key=value pair (repeatable)
  -s STATUS, --status STATUS           Server status key=value pair (repeatable)
  -l LOG_LEVEL, --log-level LOG_LEVEL  Log level: CRITICAL, ERROR, WARNING, INFO, DEBUG (default: INFO)

For example, you may enable debug logs and customize server info, status and connection message:

./Q3MockServer.py -l DEBUG -i game=rpmod -i hostname="RPMod Server" -s gamename="RPMod 0.5.1c" -s sv_hostname="RPMod Server" -m "Server has moved, please check rpmod.jediholo.net"

A Docker image is also available for amd64 and arm64 architectures:

docker run -it --rm -p 29070:29070/udp ghcr.io/fcrespel/q3mockserver:master [-h] [-a ADDRESS] [-p PORT] [-m MESSAGE] [-i INFO] [-s STATUS] [-l LOG_LEVEL]

You may want to run it in the background using commands such as the following:

# Create and start container
docker run -d --name q3mockserver -p 29070:29070/udp ghcr.io/fcrespel/q3mockserver:master

# Stop server
docker stop q3mockserver

# Start server
docker start q3mockserver

# Show live logs
docker logs -f q3mockserver