Releases: MarechJ/hll_rcon_tool
v8.2.1 U14.5 Night Map Pictures
This is identical to v8.2.0 but has the map pictures for Driel and El Alamein.
v9.0.0 User Interface Settings
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.
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
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.
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_
anddescribe_
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
- The old settings page is now under
- 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 someconfig.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
(formerlyRCONWEB_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
- These were moved from
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
andset_hooks
endpoints - Removed the
get_timed_logs
endpoint - Removed the
get_standard_messages
andset_standard_messages
endpoints - Removed the
get_camera_config
andset_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
config.yml
and old .env
settings in case you need or want to downgrade.
- Backup your broadcasts
- Backup your standard messages (punitions, welcome, broadcasts)
- Backup your UI set webhooks (camera/watchlist)
- Perform a standard upgrade:
git fetch --tags
git checkout v9.0.0
docker compose pull
docker compose up -d --force-recreate --remove-orphans
- Set all of the settings, either through the UI, CLI, manual POST requests to the API, whatever that you backed up previously.
- 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 theSettings > CRCON Settings
page underserver_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...
v8.2.0
v8.2.0
🚀 Features
- Reduced some automod log calls from
info
todebug
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
orFoy Night
but will instead record asunknown
- Added an
unknown
map image for the scoreboard/scorebot
- Added an
- 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 beingbearer: <api token>
orbearer <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 asuperuser
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
tologger.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 togitignore
- 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
- git fetch --tags
- git checkout v8.2.0
- docker compose pull
- docker compose up -d --force-recreate --remove-orphans
Full Changelog: v8.1.1...v8.2.0
- Feat/api keys by @cemathey in #295
- Update rcon.py by @ElGuillermo in #337
- Short votemap chat command by @ElGuillermo in #333
- Automod logs less verbose by @ElGuillermo in #323
- Update .gitignore by @cemathey in #334
- Fix mock patching class name by @cemathey in #331
- Add server number to get_status endpoint by @cemathey in #327
- Add an endpoint to show a user their permissions by @cemathey in #326
- Always use local time zone in frontend by @FlorianSW in #324
- Add night map images, don't default recorded map names to Foy by @cemathey in #325
- Add previous map endpoint by @cemathey in #328
- Hotfix/unicode decode errors by @cemathey in #341
- Fix key errors when authorization headers are missing by @cemathey in #329
- Use fixed indefinite date, prevent integrity errors by @cemathey in #335
- Maint/bump versions by @cemathey in #330
- Maint/bump sqlalchemy by @cemathey in #336
- Bump redis and discord.py versions by @cemathey in #339
- Create dependabot.yml by @cemathey in #338
- Capture new kick type, handle future new kick types by @cemathey in #344
- Bump alembic from 1.12.0 to 1.12.1 by @dependabot in #347
- Bad logger call + better error handling by @ElGuillermo in #340
- Bump requests from 2.21.0 to 2.31.0 by @dependabot in #342
- Bump sqlalchemy from 2.0.22 to 2.0.23 by @dependabot in #346
- Bump rq from 1.14.0 to 1.15.1 by @dependabot in #345
- Bump django from 4.2.0 to 4.2.7 by @dependabot in #343
- Downgrade rq, re-add missing rq-scheduler by @cemathey in #349
- Hotfix/sqlaclhemy relationship by @cemathey in #348
v8.1.1 Docker Compose Inconsistencies / Change Map Permission
- Changing the current map now only requires the
can_change_current_map
permission- It used to require
can_add_map_to_rotation
andcan_remove_map_from_rotation
permissions as well
- It used to require
- 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
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 .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
⚠️ 🚨 Backup your.env
just in case⚠️ 🚨git fetch --tags
get checkout v8.1.0
- Add the
NOSOLOTANK_AUTO_MOD
key to yourconfig.yml
file(s) ⚠️ 🚨 Update your.env
with the new variables (see the .env section)⚠️ 🚨docker compose pull
docker compose up -d --force-recreate --remove-orphans
v8.0.3 Missing Sessions / Fix Missing Player Cache Invalidator
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
Fixes the missing player cache invalidator the handle_on_connect
hook uses.
v8.0.1 Working Endpoint Permissions
v8.0.1 Working Endpoint Permissions
.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.
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.
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
to4.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
andrecorded_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 ofget_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
- @MartijnHols made their first contribution in #296
Full Changelog: v8.0.0...v8.0.1
v8.0.0 Endpoint Permissions
v8.0.0
.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.
v7.1.0
) then your users will not be able to do anything until you assign permissions
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.
- Checkout the version you want to downgrade to
git checkout v7.2.1
- In your
.env
, updateTAGGED_VERSION
to the version you want to downgrade to.
For example:
TAGGED_VERSION=7.2.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. -
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
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
Fix the bug Steam VAC ban feature I broke when checking for whitelisted VAC banned players.