Skip to content

Releases: MarechJ/hll_rcon_tool

v9.8.1 Docker Compose Bug Fixes

18 Apr 18:26
225b67e
Compare
Choose a tag to compare

This is just a bug fix for v9.8.0, please refer to https://github.com/MarechJ/hll_rcon_tool/releases/tag/v9.8.0 for release notes and upgrade instructions.

If you tried v9.8.0 you will need to manually fix your .env and compose.yaml files if they still have the old values.

Your .env should have:

BACKEND_DOCKER_REPOSITORY=cericmathey/hll_rcon_tool
FRONTEND_DOCKER_REPOSITORY=cericmathey/hll_rcon_tool_frontend

and your compose.yaml file should have the supervisor container using the backend image and Dockerfile instead of the frontend one:

x-supervisor: &supervisor
  build:
    context: .
    dockerfile: Dockerfile
  image: ${BACKEND_DOCKER_REPOSITORY}:${TAGGED_VERSION}

What's Changed

Full Changelog: v9.8.0...v9.8.1

v9.8.0 Docker Hub / Docker Compose Changes

17 Apr 21:00
4953724
Compare
Choose a tag to compare

⚠️ 🚨This release has some broken files in it, please use v9.8.1 instead, but the release notes are correct, just substitute in v9.8.1 when you do your git checkout🚨 ⚠️

v9.8.0 Docker Hub / Docker Compose Changes

⚠️ 🚨 If you have made manual changes to your compose files, you should back these up before starting the upgrade process because we have removed docker-compose.yml (and the other architecture versions) from the repository 🚨 ⚠️

🐛 Bug Fixes

  • Fixes an issue where matches could be recorded with bla_ as the map name which would break the match scoreboard

Why the changes?

It is just better for everyone and only requires a small amount of work to upgrade.

The compose files are now simpler which makes it easier for people to add/remove game servers (especially because we only provided a config for up to 3 servers before)

You will no longer see Docker errors about unhealthy containers for servers you aren't using.

You now have the freedom to run server 2 or 3, etc. without server 1 being configured.

You no longer have to worry about git conflicts with your compose files.

You can now choose to use alternate redis and/or postgres images if you know what you're doing without manually editing your compose files.

We can build and host images for other architectures such as linux/arm64 which is great for anyone running a Raspberry Pi for instance.

Building images is now easier if you build your own regardless of architecture.

We can track the status of builds from github and retry failed builds, only Maresh had access to the Docker Hub account.

Maresh' Docker Hub subscription lapses in August so we are switching over to mine. I have builds from v9.5.3 and forward on my repository, if for some reason you really want to use a build older than that you'll either have to pull them from Maresh's repository or build the images manually.

Docker Compose Command Changes

If you want to build your own images, it is now as simple as running docker compose build from your root CRCON directory.

If you are on any architecture besides linux/amd64 or linux/arm64 there is no guarantee all of the upstream dependencies will work properly.

Docker Compose Templates

We now provide a docker compose template for both a single game server and one for up to 10 game servers in the docker-templates/ directory.

If you only run a single game server and it is server1 in your .env then you can simply copy docker-templates/one-server.yaml and rename it compose.yaml in the root CRCON directory.

It should be much easier for you guys to add extra servers even if you go beyond 10 game servers in a single CRCON install.

If you use a tool with a visual compare option (such as Visual Studio Code) it is very easy to make these changes, otherwise you can simply copy and paste between files: insert gif

⚠️ 🚨 We removed docker-compose.yml from the repository, you will need to make a new compose file, I recommend compose.yaml because this is the default name that docker compose will search for and we have set git to ignore this file so you will never have any git conflicts with it while upgrading to future releases. 🚨 ⚠️

networks

Each game server needs a network defined in the networks section at the top of the compose file.

Do not remove the one labeled common, just add one for each game server you have set up (mirroring the services section), so if you use server1 and server2, include those.

example with 3 game servers:

networks:
  common:
  server1:
  server2:
  server3:

services

Each game server needs a service defined in the services section at the bottom of the compose file or docker compose will not start your containers.

Each game server uses different environment variables from your .env file, so it is very important that you copy and paste these sections correctly or things aren't going to work properly.

For each game server you want to use server1, server2, etc. you just need to copy and paste the relevant section from docker-templates/ten-servers.yaml

Upgrade Instructions

⚠️ 🚨 Please read this thoroughly, you must make some manual changes to your .env and compose files to upgrade 🚨 ⚠️

.env Changes

I would recommend just making a new .env file by copying default.env (after backing up your old one) and re-populating it with the details from your old .env, but if you want to update your existing one, this is what has changed:

We have added two new .env variables that you need to add to your .env, you can copy and paste directly out of default.env

These two new variables need to be added to your .env:

REDIS_IMAGE=redis:alpine
POSTGRES_IMAGE=postgres:12-alpine

These two variables have changed and you need to update them to point at my docker hub account or you ⚠️ 🚨 are going to get old images from Maresh's docker hub account 🚨 ⚠️

BACKEND_DOCKER_REPOSITORY=cericmathey/hll_rcon
FRONTEND_DOCKER_REPOSITORY=cericmathey/hll_rcon_frontend

Each game server now has two new variables for each game server, for each game server you need to include these and make sure that they are named correctly, for example SERVER_NUMBER_2 for server 2 and so on.

SERVER_NUMBER=1
HLL_REDIS_DB=1

You can change the server/redis database numbers but unless you know what you're doing I would leave them as the default.

Upgrade Steps

  1. Backup your .env
  2. Backup your docker-compose.yml
  3. git fetch --tags
  4. git checkout v9.8.0
  5. Update your .env with changes from default.env (see the .env changes section)
  6. Create a new compose file (compose.yml) from a template in docker-templates/
  7. Update your compose.yml file if you use 2+ game servers see the compose changes section
  8. Shutdown your containers: docker compose down
  9. Pull new images docker compose pull
  10. Clear the redis cache (because the redis database numbers changed):
docker compose up -d redis
docker compose exec redis redis-cli flushall
  1. Create your containers docker compose up -d

Downgrading

If you need to downgrade to an older release after upgrading you'll need to essentially follow these instructions in reverse and replace your old .env and docker-compose.yml files.

What's Changed

Full Changelog: v9.7.0...v9.8.0

v9.7.0 Streaming Logs

12 Apr 19:27
0729dc9
Compare
Choose a tag to compare

v9.7.0 Streaming Logs

Please see the wiki for a detailed write up on how this feature is implemented and how to use it.

tl;dr this adds an optional service that allows API consumers to use web sockets to have log events pushed to them rather than having to constantly poll one of the HTTP endpoints and re-process old logs looking for new ones.

A big thanks to the fine people over at The Circle who both asked for the feature and helped test it out for a few months and provided feedback, as well as Craven

🚀 Features

  • Adds a new endpoint to support pushing new logs as they're received from the game server

🐛 Bug Fixes

  • The ChatCommandsUserConfig could not be get/set from the CLI

New Permissions

  • can_view_log_stream_config
  • can_change_log_stream_config

Upgrade Instructions

git fetch --tags
git checkout v9.7.0
docker compose pull
docker compose up -d --remove-orphans

What's Changed

Full Changelog: v9.6.3...v9.7.0

v9.6.3 Bug Fixes

11 Apr 20:28
ac2c4e2
Compare
Choose a tag to compare

v9.6.3 Bug Fixes

🚀 Features

  • The version tag will now show in both log files and API responses to make troubleshooting easier
    • The server name shown in log files will now show the locally configured short name and not the game server name
    • The server name will now show in all log files and not just the API log files

🐛 Bug Fixes

  • Fixes the remaining issues with votemap endpoints that were caused by us changing how we treat maps internally
  • Steam API calls will only be attempted when a Steam API key is set
  • Fixes persisting steam info to the database for new player records
  • Fixes the ChatCommandsUserConfig not seeding the database on startup
  • Seeds all user config records to the database before any other startup tasks are performed to eliminate unnecessary log errors

Upgrade Instructions

git fetch --tags
git checkout v9.6.3
docker compose pull
docker compose up -d --remove-orphans

Full Changelog: v9.6.2...v9.6.3

v9.6.1 Votemap Fix

05 Apr 03:06
013b0b0
Compare
Choose a tag to compare

v9.6.1

What's Changed

Full Changelog: v9.6.0...v9.6.1

v9.6.0

02 Apr 17:30
024c817
Compare
Choose a tag to compare

v9.6.0 U14.8 Bug Fixes & Miscellaneous Bug Fixes

🚀 Features

  • The UI for managing map rotations has been updated for skirmish maps
  • The UI has been updated for vote map to reflect some configuration changes to support skirmish maps
  • The drop down player name list on Game View now lists player names alphabetically (@caranci)
  • The level enforcement auto mod can now optionally only announce the rules to players who would be impacted by them (@caranci)
    • See the only_announce_impacted_players setting in your config

🐛 Bug Fixes

  • Seeding cap fight enforcement will no longer apply to skirmish maps
  • Using multiple webhooks with scorebot will now work properly
  • Skirmish maps will now work properly with vote map
  • Simultaneous database migrations will no longer occur causing issues for people running many game servers in the same CRCON install

New Docker Container

We've added another Docker container, maintenance that you will see running once per CRCON alongside the redis and postgres containers.

We added this to perform the database migrations in (both django and alembic) because previously these were performed once per backend container and could intermittently cause issues for people running many game servers.

⚠️ docker-compose.yml has changed because of this please review the upgrade instructions ⚠️

Vote Map Changes

As part of the bug fix for votemap and skirmish maps we changed the vote map configuration slightly.

ratio_of_offensives and number_of_options are both gone.

These were replaced with num_warfare_options, num_offensive_options and num_skirmish_control_options and you now specify the number of options for each type of map.

consider_skirmishes_as_same_map, allow_consecutive_skirmishes and allow_default_to_skirmish are also new.

⚠️ You may want to back up your votemap config before updating and should review your config after ⚠️

Feature Requests

We now have a feature request forum in Discord to replace the text channel to make it easier for us to keep track of them.

Community Tools

We now have a community tool forum in Discord, if you have a Hell Let Loose tool (whether it works with CRCON or is a stand alone one) that you would like to share, please come by and make a forum post about it!

If it's something that you actively maintain and do releases for we can also add Discord roles for them so you can ping people about it.

Future API Changes

Thanks to @timraay we now have some much more organized code for working with maps, game modes and environments (night, day, etc.).

In a future release we will start returning JSON objects that represent maps instead of plain map names like elalamein_offensive_CW so the frontend and people who write tools that use the API do not have to maintain their own look up tables.

⚠️ This hasn't happened yet, this is just an advanced warning that a future release will involve some breaking API changes so you can start thinking about how you want to update your tools ⚠️

These examples may change, but two samples of what you can expect the new output to look like:

{
    "id": "stmereeglise_warfare",
    "map": {
        "id": "stmereeglise",
        "name": "SAINTE-MÈRE-ÉGLISE",
        "tag": "SME",
        "prettyname": "St. Mere Eglise",
        "shortname": "SME",
        "allies": "us",
        "axis": "ger"
    },
    "gamemode": "warfare",
    "attackers": null,
    "environment": "Day"
}
{
    "id": "stmereeglise_offensive_us",
    "map": {
        "id": "stmereeglise",
        "name": "SAINTE-MÈRE-ÉGLISE",
        "tag": "SME",
        "prettyname": "St. Mere Eglise",
        "shortname": "SME",
        "allies": "us",
        "axis": "ger"
    },
    "gamemode": "offensive",
    "attackers": "Allies",
    "environment": "Day"
}'

Upgrade Instructions

⚠️⚠️ ⚠️ We made changes to docker-compose.yml (because of the maintenance container bug fix) if you have manually modified this file, you may want to make a backup, reset your changes use the new file as a template. ⚠️⚠️⚠️

⚠️⚠️⚠️ Please read the above, for real, nobody wants to see #tech-support channel posts if you didn't read this ⚠️⚠️⚠️

⚠️ The vote map config has changes, please see its section above ⚠️

Aside from the above it's a standard upgrade

git fetch --tags
git checkout v9.6.0
docker compose pull
docker compose up -d --remove-orphans

What's Changed

Full Changelog: v9.5.1...v9.6.0

v9.5.1

27 Feb 19:46
66005d7
Compare
Choose a tag to compare

v9.5.1 U14.8 Maps / Miscellaneous Changes / Bugfixes

There is a bug where the new U14.8 skirmish map names will be reported in the game logs incorrectly as warfare maps.

Docker Changes

We've made some changes to the Docker Compose files to be more explicit about container start order and require that containers be healthy before later containers can start.

This means that both the redis and postgres containers must be started/running properly before the backend containers can start and the frontend and supervisor containers depend on the backend.

Because of these changes and depending on your docker/docker-compose/docker compose versions you may see varying error messages, for instance if you use server 1 and server 2 but not server 3, you may ⚠️ see errors about the containers failing to start which is 100% fine if those servers aren't configured ⚠️

As a reminder docker-compose has been deprecated since July 2023, all examples in the README/update instructions use docker compose and I don't make any effort to test with docker-compose, please upgrade if it causes you issues

Requests Forum

We have added a feature requests forum in the Discord, I'm leaving the #feature-requests channel (I turned off new messages) so we have all the old stuff, but please put stuff in the forum from now on, it will be much more organized.

Github issues are welcome as well, but I know most people don't have github accounts.

Wiki / README

  • The README is now much more up to date (@ElGuillermo)
  • We have a Chinese README now thanks to @BrycePPM
  • @dapriest_og has been investing time updating the Wiki and any and all contributions are welcome, to include simply translating the current content (README and Wiki) to other languages.
    • Translating CRCON itself is not trivial, but translating documentation would help and there are a lot of CRCON users who are not native English speakers or may not speak English at all.

⚠️ I don't speak anything but English, but if you want to translate stuff and have questions about how CRCON works please come by the Discord and we would be happy to help your translation efforts ⚠️

Other Community Tools

There are a lot of private tools (Discord bots, etc.) that exist, some rely on CRCON and some don't. There is a lot of appetite in the community for this kind of stuff, please consider sharing your stuff, even if you've written it specifically for you and your communities needs by open sourcing it you may help people write their own tools.

🚀 Features

  • Added some basic highlighting to the logs portion of the live view for different log types (Thanks to @ajaxnine)
  • The front end will now show windows store icons for windows store players (steam players will still show the steam icon) and link to https://xboxgamertag.com instead of a non existent steam profile (Thanks to @ajaxnine)
  • T17 made changes to the map rotation commands (Thanks for noticing @ABUUUUUUU) and we no longer have to include the /Game/Maps prefix in the rotation file.
    • No action is required on your part, your MapRotation.ini file should automatically fix itself from what I was able to determine
  • Discord audit webhooks will now automatically retry when rate limited so they should no longer just silently fail (Thanks to @ajaxnine)
  • Adding a map to the votemap whitelist will now explicitly fail if the map name is not valid as reported by the game server but if you are controlling this with Auto Settings you would have to look in your auto settings log to see the errors
  • Turning vote map on will now immediately apply (reducing the rotation to a single map)

🐛 Bug Fixes

  • I broke the ability to use most of the RCON commands from the command line in a previous release, this is fixed now
  • The has_at_least_n_sessions field in Settings > TK Ban On Connect is now properly checked (@ElGuillermo)
  • Content sent to the Discord audit webhook is now markdown escaped so characters in players names/messages shouldn't change the formatting (@ajaxnine)
  • Fixes an issue causing exceptions when checking for VAC/game bans on player connect
  • Fixes an issue causing SQL integrity errors when updating steam info on player connect
  • Vote map now uses the available maps as reported by the game server instead of a hard coded list (⚠️ this means you'll have to clear your cache after an update that includes new maps ⚠️)
  • We now make case insensitive comparisons for map names because the map names are inconsistent
  • Fixed some typos in permission descriptions
  • Uploading VIP lists that contain windows store IDs should now work properly (@ajaxnine)

Maintenance/Miscellaneous

  • If you have not set a HLL_DB_PASSWORD environment variable the backend container will explicitly not start
    • You will only see this if you've unset it, because you will receive an error from the postgres container if it was never set

Upgrade Instructions

This is a standard upgrade.

git fetch --tags
git checkout v9.5.1
docker compose pull
docker compose up -d --remove-orphans

What's Changed

New Contributors

Full Changelog: v9.5.0...v9.5.1

v9.4.1 Bug Fixes

23 Jan 01:59
92aea0f
Compare
Choose a tag to compare

What's Changed

🐛 Bug Fixes

  • Fixes a caching issue
  • Chat commands will now validate message variables properly, v9.4.0 would let you pass in invalid message variables
  • Some message variables weren't being populated properly

Upgrade Instructions

This is a standard upgrade, but your config may get reset if it contains invalid message variables you probably want to copy/paste your chat commands config into something prior to upgrading as it may get reset

git fetch --tags
git checkout v9.4.1
docker compose pull
docker compose up -d --remove-orphans

Full Changelog: v9.4.0...v9.4.1

v9.4.0

22 Jan 22:04
a272dbc
Compare
Choose a tag to compare

v9.4.0 Chat Commmands / Bug Fixes

🚀 Features

  • The Level Auto Mod has a new option (levelbug_enabled); since the player info command is the only way to determine a players level, and that can fail for various reasons, this auto mod used to skip level checks for level 1 players. (elguillermo)
    • You can opt out of this behavior by setting levelbug_enabled to false in your config
    • This is enabled by default to match the previous behavior
  • Settings > CRCON Settings has a new option (discord_invite_url) to support Chat Commands, see below!

🐛 Bug Fixes

  • enrich_db_users (updates old/missing steam profiles in the database) was running twice a day despite what the comments said, it now runs once a day at 1000 system time (elguillermo)
  • enrich_db_users was only querying the steam API for the first 100 player profiles it pulled from the database
  • Steam ban information was not being persisted in the database despite there being a column for it
  • CRCON API keys could not be generated for any user with $ character(s) in their RCONWEB_API_SECRET
  • Forwarding commands/requests that authenticated via API key was not working properly (ajax excuseme sourcecode)

New User Permissions

  • can_view_chat_commands_config
  • can_change_chat_commands_config

Chat Commands

We've got an exciting new feature for you, you can now create your own custom chat commands (from a limited but will grow in the future set of info)

  • They're configured under Settings > Chat Commands
  • Command words must start with either the ! or @ commands
    • ? is automatically available and will describe the command when triggered

Chat commmands are in the form below, the message is what will be sent to the player in game and the description will be used when the command is described with either ? or one of the configured describe_words.

The message variables must be enclosed in brackets like {last_nemesis_weapon} and you can only use ones from the list below.

{
      "words": [
        "!wkm",
        "@wkm"
      ],
      "message": "You were last killed by {last_nemesis_name} with {last_nemesis_weapon}",
      "description": "Who killed me"
    }
  • If you configure one or more describe_words (these also must start with either ! or @), and you have set a description for each of your command_words, it will message the player with all of your configured commands and their descriptions.

What variables are available?

At the moment you can use any of these and this will be expanded in the future

player_name 
player_steam_id_64
last_victim_steam_id_64
last_victim_name
last_nemesis_steam_id_64
last_nemesis_name
last_victim_weapon
last_nemesis_weapon
last_tk_victim_steam_id_64
last_tk_victim_name
last_tk_victim_weapon
last_tk_nemesis_steam_id_64
last_tk_nemesis_name
last_tk_nemesis_weapon
vip_status
vip_expiration
server_name
server_short_name
discord_invite_url
admin_ping_trigger_words
num_online_mods
num_ingame_mods
next_map
map_rotation
top_kills_player_name
top_kills_player_score
top_kill_streak_player_name
top_kill_streak_player_score

Maintenance

  • We've refactored our steam API usage (and have more plans in the future) to try to reduce how often an API key might be rate limited
  • If a steam key is set, the player's profile and bans are pulled when they connect (no more often than every 12 hours per game server unless the redis cache is cleared)
  • Player profiles/bans are now pulled from the database when they're needed through out CRCON instead of making steam API calls
    • If you don't have a steam API key, you should get one it enables extra features like VAC ban checks, etc: https://steamcommunity.com/dev/apikey
    • It is entered per server Settings > Steam API
  • The PlayerSteamID model now includes player flags in the to_dict method
    • This includes anywhere it's used, such as the player endpoint
  • CRCON now tracks (on a per match or 2.5 hour basis, the cache is expired for whichever comes first) by player ID (steam ID, windows store ID) the last kill, victim, weapon, etc. to support the chat commands feature, but if you run a fork this is available for whatever your heart desires
  • Admin ping trigger words are sorted to enable consistent unit test results

Upgrade Instructions

This is a standard upgrade, but please do read the complete release notes for some of the changed configuration values

git fetch --tags
git checkout v9.4.0
docker compose pull
docker compose up -d --remove-orphans

What's Changed

Full Changelog: v9.3.3...v9.4.0

v9.3.3 Fix server forwarding / API key generation

12 Jan 18:23
e4d4d43
Compare
Choose a tag to compare

v9.3.3 Fix server forwarding / API key generation

🐛 Bug Fixes

  • Users with a $ key in their RCONWEB_API_SECRET could not generate API keys (thanks to @koba_yashi for the bug report)
  • Forwarding between servers (temp bans, VIP additions, etc.) has been broken for a little bit but is now fixed (thanks to @glow for the bug report)
  • The describe_votemap_config endpoint had the wrong command name in the results

Upgrade Instructions

This is a standard upgrade, if for some reason it doesn't use the correct images when you recreate your containers, just do a docker compose down and then a docker compose up -d and it should work properly.

git fetch --tags
git checkout v9.3.3
docker compose pull
docker compose up -d --remove-orphans

What's Changed

Full Changelog: v9.3.2...v9.3.3