Skip to content

Releases: MarechJ/hll_rcon_tool

v8.2.1 U14.5 Night Map Pictures

22 Nov 17:13
Compare
Choose a tag to compare

This is identical to v8.2.0 but has the map pictures for Driel and El Alamein.

v9.0.0 User Interface Settings

20 Nov 23:04
3a751f6
Compare
Choose a tag to compare

v9.0.0 User Interface Settings

This is a big change, if you don't speak fluent English, please ask someone from your community to help you translate.

⚠️🚨 At least temporarily, I would recommend leaving your config.yml and old .env settings in case you need or want to downgrade. ⚠️🚨

This release moves almost all of the backend configured settings from your .env and config.yml files into the database and allows them to be set/viewed from both the command line interface and through the regular CRCON UI.

The user interface is bad, it's unapologetically bad, but this expands communities ability to change stuff without restarting their entire CRCON or giving people backend access and most importantly, you cannot save these settings if the files don't validate. Gone are the days of having some trailing white space in your config.yml and it blowing the whole thing up.

I will in no way defend the UI, if someone wants to improve it, we would absolutely love/welcome pull requests.

I have been running this on my server for several weeks now in one form or another while I fix bugs/tweak things. I am reasonably sure this works, but we don't use every single feature in CRCON.

If anything is broken, please swing by #tech-support but ⚠️🚨please ⚠️🚨 bring a specific error message, "My CRCON is broken" and a screen shot of your UI showing it not connecting to the backend is completely worthless.

At this point, between coding, manual testing, tidying things up and writing these release notes I've spent well over 100 hours on this, probably closer to 150. This change touched almost every part of CRCON, it should not be a surprise if there are some miscellaneous new bugs with this release.

⚠️🚨 If you write tools ⚠️🚨that consume the CRCON API empty POST requests will no longer work, convert these to GET requests if you are not passing valid JSON with your POST requests.

Auto Settings have not been touched, that remains the same in every way and will not be lost when you upgrade.

🚀 Features

  • Each new user setting has a get_, set_, validate_ and describe_ endpoint.
    • Get/set endpoints are obvious, set endpoints will not work unless the configuration validates
    • Validate endpoints allows you to safely check a configuration without saving it to the database
    • Describe endpoints return the Pydantic schema, this is primarily for people who consume the CRCON API
  • The Settings link in the RCON header menu is now a drop down
    • The old settings page is now under Settings > Settings
    • The new UI settings now have their own pages under this menu
  • Each new UI setting page has the editor on top, errors (if any, once you've tried to save or validate) in the middle, an example under that, and at the very bottom the Pydantic schema for the model of anyone who is curious.
  • New command line interface commands
    • get_user_settings
    • set_user_settings
  • You can now force CRCON to reconnect to the game server without a full restart! (Reconnect to Gameserver button on the bottom of the settings page where you clear the cache)
  • Scorebot has some improved error messages when it is misconfigured
  • All server settings are now per server, some .env settings used to apply across all CRCONs installed together and some config.yml features would impact multiple servers or could configure multiple servers in the same file (scorebot for example)
  • All UI settings endpoints will audit changed values to Discord to avoid spam (if your audit webhook is set), some models are very verbose and this reduces audit spam
  • Some UI settings that contain sensitive information (such as Discord webhooks) are censored before being sent to Discord
  • The History > Audit Log view and associated endpoints do not censor this information, adjust your user permissions as required to block users from this part of CRCON if you want to hide this information
  • The API will no longer silently fail when you pass it invalid JSON, you will get an explicit failure with an error message
  • server_url (formerly RCONWEB_SERVER_URL) can now be entered either with a trailing / or not (this must be set to avoid Django CSRF errors when using the admin site)
  • Admin pings no longer go to the chat webhook if an admin ping webhook isn't configured

🐛 Bug Fixes

  • Empty (empty string "") welcome messages no longer break the get_welcome_message endpoint
  • Fixed miscellaneous spelling errors
  • You must explicitly set Discord webhooks for the various automod settings, the config file said that it would default to the general audit webbhook, but that wasn't how it ever worked

When do setting changes take effect?

Previously you would have to restart your CRCON to make many changes take effect. With these setings being moved, it depends on exactly what you have changed:

  • Auto broadcasts refresh after a complete message cycle
  • Auto vote kick refreshes after every loop (30 seconds)
  • Auto mods refresh after every loop (5 seconds)
  • Ban TK on connect refreshes every TK
  • Camera notification refreshes every camera enter
  • Expired VIPs refreshes every loop (hourly by default)
  • GTX name change refreshes every request
  • Log line webhooks refresh on service startup (log event loop) and every 5 minutes
  • Name kicks refreshes every player connection
  • RCON connection settings, only on restart?
  • RCON server settings, used all over the place, best to restart to be sure
  • Real VIP, refreshes every player connect/disconnect
  • Scorebot refreshes every loop (1 second)
  • Standard messages refreshes every request
  • Steam refreshed each use, but the individual requests are * cached
  • VAC/game bans, refreshes every player connect
  • Vote map refreshes throughout
  • Web hooks are cached (5 minute) and refreshed on log event loop start

.env Changes

Added:

  • GTX_SERVER_NAME_CHANGE_USERNAME
  • GTX_SERVER_NAME_CHANGE_PASSWORD
    • These were moved from config.yml, they are not in the UI since it is your GSP credentials and those are very sensitive
    • To use the server rename feature with GTX you must also configure the SFTP port on Settings > GTX Server Name Change

Removed (and the server 2, server 3 variants):

  • SERVER_SHORT_NAME
  • RCONWEB_SERVER_URL
  • DISCORD_WEBHOOK_AUDIT_LOG
  • DISCORD_CHAT_WEBHOOK
  • DISCORD_CHAT_WEBHOOK_ALLOW_MENTIONS
  • DISCORD_PING_TRIGGER_WORDS
  • DISCORD_PING_TRIGGER_ROLES
  • DISCORD_PING_TRIGGER_WEBHOOK
  • DISCORD_KILLS_WEBHOOK
  • DISCORD_SEND_KILL_UPDATES
  • DISCORD_SEND_TEAM_KILL_UPDATES

Miscellaneous

  • Caught up the ARM dockerfiles as they had fallen behind.
    • I don't have access to any ARM hardware, so I cannot test these but they should work
  • Some of the existing user config settings that were stored in the database were split amongst multiple roles (vote map for example)
    • All settings associated with a single model are now stored in a single JSON blob in the database
  • Removed the get_hooks and set_hooks endpoints
  • Removed the get_timed_logs endpoint
  • Removed the get_standard_messages and set_standard_messages endpoints
  • Removed the get_camera_config and set_camera_config endpoints

Using the command line to change/view settings

You run these commands (get_user_settings/set_user_settings) like any other RCON CLI command.

These output JSON and only accept JSON. You can only get or set for a single server at a time.

The input/output files are JSON and the top level key for each setting is the server number, and the name of the Pydantic model (ex: 1_AutoModNoSoloTankUserConfig).

For example, to get all your settings for server 1:

docker exec -it hll_rcon_tool_backend_1_1 bash 
python -m rcon.cli get_user_settings 1 example.json

Getting help:

python -m rcon.cli get_user_settings --help
python -m rcon.cli set_user_settings --help

Upgrade Instructions

⚠️🚨 Backup all settings as noted below, once upgraded the old values will not be accessible unlesss you manually query your database ⚠️🚨

⚠️🚨 At least temporarily, I would recommend leaving your config.yml and old .env settings in case you need or want to downgrade. ⚠️🚨

  1. Backup your broadcasts
  2. Backup your standard messages (punitions, welcome, broadcasts)
  3. Backup your UI set webhooks (camera/watchlist)
  4. Perform a standard upgrade:
  git fetch --tags
  git checkout v9.0.0
  docker compose pull
  docker compose up -d --force-recreate --remove-orphans
  1. Set all of the settings, either through the UI, CLI, manual POST requests to the API, whatever that you backed up previously.

⚠️🚨Please note ⚠️🚨 that you will have to re-input important settings post upgrade through the new method, including but not limited to:

  • All of your webhooks
  • Your server URL (formerly RCONWEB_SERVER_URL, this must be set to avoid Django CSRF errors when using the admin site) and is on the Settings > CRCON Settings page under server_url

Downgrade Instructions

If you need to downgrade, as long as you haven't removed the old values from your .env and haven't deleted your config.yml you should be able to downgrade no problem following the normal steps.

Obviously if you set anything with the new method that was different than the old one, that would be gone.

New Permissions

  • can_view_auto_mod_level_config
  • can_change_auto_mod_level_config
  • can_view_auto_mod_no_leader_config
  • can_change_auto_mod_no_leader_config
  • can_view_auto_mod_seeding_config
  • can_change_auto_mod_seeding_config
  • can_view_auto_mod_solo_tank_config
  • can_change_auto_mod_solo_tank_config
  • can_view_tk_ban_on_connect_config
  • can_change_tk_ban_on_connect_config
  • can_view_expired_vip_config
  • can_change_expired_vip_config
  • can_view_server_name_change_config
  • can_change_server_name_change_config
  • can_view_log_line_discord...
Read more

v8.2.0

10 Nov 21:26
a56e803
Compare
Choose a tag to compare

v8.2.0

🚀 Features

  • Reduced some automod log calls from info to debug to cut down on log spam (Thanks to @ElGuillermo)
  • Indefinite VIP expiration dates are now fixed at 3000-01-01T00:00:00+00:00 instead of being an arbitrary 200 years from the timestamp it was added (Thanks to @ajaxnine)
  • 🌛 Added night map images for the scoreboard, scorebot and the map rotation tool
  • New maps that CRCON is unaware of will no longer record as Foy or Foy Night but will instead record as unknown
    • Added an unknown map image for the scoreboard/scorebot
  • When new KICK/BAN reasons are added, they will be automatically parsed into the ADMIN MISC action type
  • Added support for short !vm versus long !votemap commands (Thanks to @ElGuillermo)
    • These are not case sensitive, and both long and short commands work
  • You can now make API calls with API keys instead of having to login, and then include the sessionid cookie on every request.
    • API keys are generated in the Django admin site
    • Each API key must be unique across users
    • API keys are hashed, so once you generate it, you will not be able to access the key again unless you save it elsewhere
    • To use the API key, when making HTTP requests to the API, include a HTTP Authorization header, with the value being bearer: <api token> or bearer <api token>
  • Adds an endpoint get_own_user_permissions to allow a logged in user to see what permissions they have, and if they are a superuser or not
  • Adds an endpoint get_previous_map to show the previous map
  • The get_status endpoint will now include the server number

🐛 Bug Fixes

  • Reduced (eliminated?!) the unicode decode errors we would get when a portion of a transaction with the game server would end in the middle of a code point. (Thanks to @ABUUUUUUU and myself)
    • You should see across the board better results, especially any hook related things like votemap
    • If you still see errors similar to: UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 1458-1459: unexpected end of data after upgrading, please let us know
  • Fixed an issue where the expiring VIP service would try to sometimes insert duplicate records
  • Added log parsing for this style of kick: KICK: [Some Dude] has been kicked. [Kicked for failing auth]
  • Fixed some error messages that were not being generated when using the Steam API (Thanks to @ElGuillermo)
  • Reduced some error messages from logger.exception to logger.error calls to cut down on log spam (Thanks to @ElGuillermo)
  • The UI across the board should show you localized time stamps if it was showing you UTC before (Thanks to @FlorianSW )
  • The UI will no longer throw javascript errors during map changes and get_status did not return results to update the browser title

Miscellaneous

  • Removed the option to run without redis, redis has been mandatory for some time now to allow things like the workers to do tasks
  • Added the db_data/ directory to gitignore
  • Updated most of the python package dependencies to their newest, or highest compatible version with other packages
  • Down sized some of the very large map images we were using to smaller files

Upgrade Instructions

This is a standard upgrade

  1. git fetch --tags
  2. git checkout v8.2.0
  3. docker compose pull
  4. docker compose up -d --force-recreate --remove-orphans

Full Changelog: v8.1.1...v8.2.0

v8.1.1 Docker Compose Inconsistencies / Change Map Permission

23 Oct 15:58
65ea47d
Compare
Choose a tag to compare
  • Changing the current map now only requires the can_change_current_map permission
    • It used to require can_add_map_to_rotation and can_remove_map_from_rotation permissions as well
  • Fixes some inconsistencies with quoted values in the compose files and .env between v1 and v2 of docker compose

v8.1.0 Night Maps / Miscellaneous

18 Oct 19:03
f5ad868
Compare
Choose a tag to compare

v8.1.0

Changelog

  • Adds the new night map names for the next several releases (Thanks to Abu for collecting them) (https://discord.com/channels/337451974549307392/590220724451409942/1160553891742617720)
  • Adds an auto mod for solo tankers (Thanks to ElGuillermo)
  • The auto mod service will no longer crash when punishing a player fails (Thanks to ElGuillermo)
  • The auto mod service will no longer send failed player punishes to Discord to reduce spam (Thanks to ElGuillermo)
  • The backend/frontend containers will not start until the redis/postgres containers have started
    • This should cut down on the number of bogus errors you see in log files and make troubleshooting problems a little easier
  • Cache times have been reduced across the board since many people use multiple RCONs/tools (CRCON, Battlemetrics, etc.) so information will be less stale (Thanks to Abu)
  • Vote map will no longer message a player who tries to vote when vote map is disabled in CRCON (Thanks to Abu)
  • The database password now supports more types of characters (? for example)
  • get_connection_info endpoint now includes the server number
  • The stats page now fits your screen better (Thanks to MartijnHols)
  • Some wording was changed in config files/the UI to make things gender neutral
  • set_map_shuffle_enabled was added to the example section for auto settings (Thanks to LordofAgents)
  • A players ban status (temp, perma or both) now shows on the player cards under History > Players
  • The VIP icon (star) is now colored correctly (blue for VIP, plain for non VIP) again on the player cards under History > Players

.env changes

The following environment variables were added to support the change that allow more characters in your database password.

You ⚠️ 🚨 must ⚠️ 🚨 add the following variables to your .env, if you aren't sure what you are doing, backup your .env, and start fresh with a new .env using default.env as your template.

You should not change these from the default values unless you know what you are doing.

HLL_DB_NAME='rcon'
HLL_DB_USER='rcon'
HLL_DB_HOST='postgres'
HLL_REDIS_HOST='redis'

Docker Compose Files

If you have manually edited your compose files, you will have to update them to expose the new .env variables properly.

If you haven't changed your compose files no action is required.

Upgrade Instructions

  1. ⚠️ 🚨 Backup your .env just in case ⚠️ 🚨
  2. git fetch --tags
  3. get checkout v8.1.0
  4. Add the NOSOLOTANK_AUTO_MOD key to your config.yml file(s)
  5. ⚠️ 🚨 Update your .env with the new variables (see the .env section) ⚠️ 🚨
  6. docker compose pull
  7. docker compose up -d --force-recreate --remove-orphans

v8.0.3 Missing Sessions / Fix Missing Player Cache Invalidator

30 Aug 16:53
a630736
Compare
Choose a tag to compare

Fix Missing Gameview Player Sessions / Correctly Fix Missing Player Cache Invalidator

  • the get_team_view endpoint was missing player sessions (whoops)
  • correctly fixes the cache invalidation for players when a new player connects

v8.0.2 Fix Missing Player Cache Invalidator

29 Aug 18:46
7a5ef57
Compare
Choose a tag to compare

Fixes the missing player cache invalidator the handle_on_connect hook uses.

v8.0.1 Working Endpoint Permissions

28 Aug 18:13
8b05928
Compare
Choose a tag to compare

v8.0.1 Working Endpoint Permissions

⚠️ ⚠️ ⚠️ If you are upgrading from an older release than the latest, review all the previous release instructions to make sure you upgrade correctly. Especially because .env is no longer part of the repo, make sure you make a copy if you're on an older version ⚠️⚠️⚠️

Endpoint permissions are applied as of this release, and the bug that was causing kicks/bans/etc. to not work correctly has been fixed.

⚠️ If you are upgrading from v7.2.1 and you haven't applied permissions to your users, review the previous release announcements. ⚠️

Upgrade instructions

.env is no longer part of the repo, so now upgrading is very easy!

⚠️ ⚠️ ⚠️ RCONWEB_SERVER_URL must be set for EACH of your servers in your .env or the admin site will throw CSRF errors because we upgraded Django versions. ⚠️ ⚠️ ⚠️

⚠️ If you changed your TAGGED_VERSION in your .env to downgrade, change it back to latest ⚠️

git fetch --tags
git checkout v8.0.1
docker compose pull
docker compose up -d --force-recreate --remove-orphans

Change Notes

  • Upgraded from Django 3.2 to 4.2
  • RCONWEB_SERVER_URL is now a mandatory .env setting due to upgrading Django versions
  • Redis and Postgres images now use their alpine images for reduced disk space usage
  • extended_commands.py and recorded_rcon.py have been merged into one class/file (rcon.py)
  • Due to limitations in the RCON protocol, we have increased the buffer size of requested data on game server requests, if your players have names that use multi byte unicode characters, you should see somewhat fewer failed requests
  • New endpoint get_api_documentation which will show you all of the available API endpoints and what information it can automatically generate from the source code
  • The get_next_map endpoint now uses the result of get_gamestate instead of trying to guess it (legacy from before the gamestate RCON command was available)
  • Thanks to @MartijnHols scores (combat effectiveness, support, etc) now show on the stats page and the scoreboards will always generate a valid link to the players steam profile

New Contributors

Full Changelog: v8.0.0...v8.0.1

v8.0.0 Endpoint Permissions

16 Jul 21:11
246ac53
Compare
Choose a tag to compare

v8.0.0

⚠️ ⚠️ ⚠️ If you are upgrading from an older release than the latest, review all the previous release instructions to make sure you upgrade correctly. Especially because .env is no longer part of the repo, make sure you make a copy if you're on an older version ⚠️⚠️⚠️

Endpoint Permissions

Endpoint permissions are now applied as of this release.

⚠️ If you did not assign groups or permissions to your users (available as of v7.1.0) then your users will not be able to do anything until you assign permissions ⚠️

⚠️ Permissions will not be checked for any user that has superuser activated, this is just part of how Django implements permissions and I am not going to try to work around it, just please be aware ⚠️

Deprecated Permissions

These permissions have been removed, the endpoints had already been removed, just not on the development branch. You should remove them from any groups they are in on your CRCON.

can_view_scoreboard
can_view_teamkills_boards

Upgrade instructions

.env is no longer part of the repo, so now upgrading is very easy!

git fetch --tags
git checkout v8.0.0
docker compose pull
docker compose up -d --force-recreate --remove-orphans

Downgrading

In the event that I messed something up with the permissions and you want to downgrade, downgrading is very simple now.

  1. Checkout the version you want to downgrade to
git checkout v7.2.1
  1. In your .env, update TAGGED_VERSION to the version you want to downgrade to.

For example:
TAGGED_VERSION=7.2.1

  1. It does not apply in this case, but you would also need to undo any config file or .env file changes that were made that no longer apply to the previous version.

  2. pull the docker images and restart your containers

docker compose pull
docker compose up -d --force-recreate --remove-orphans

Future Permission Maintenance

Any future permissions changes (adding and removing permissions) will require ⚠️ you ⚠️ to update your groups as necessary (and users if you are assigning individual permissions to users). This is not ideal, but this is the only way we can do it while still respecting your local modifications to the default groups. It is not hard, if you need help please use #tech-support and we can give you advice.

Miscellaneous

I know many of you do not speak English as a first language, and some of you may not be fluent. Please ask around if you need translations, there are many people in this Discord who speak multiple languages, they might help you. If something confuses you, I can rephrase it so your translation software might do a better job.

v7.2.1 Steam VAC Bans

13 Jul 19:11
9290d1f
Compare
Choose a tag to compare

Fix the bug Steam VAC ban feature I broke when checking for whitelisted VAC banned players.