Commit Graph

58 Commits

Author SHA1 Message Date
beck-thompson f1f8bccb23 After getting banned, you now have to re-read the rules! (#33270)
* first commit

* opps

* Reset cooldown instead

* Added ccvar

* Not replicated!
2025-02-14 16:09:49 +00:00
Pieter-Jan Briers e4fc8c2ec5 Add system to kick people if they connect to multiple servers at once. (#34563) 2025-01-28 04:31:31 +00:00
Pieter-Jan Briers 6f6888d339 Persist deadmin to database, add admin suspension system (#34048) 2025-01-28 04:31:22 +00:00
Myra c97e784a08 Add IPIntel API support. (#33339)
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
2025-01-28 03:18:23 +00:00
Pieter-Jan Briers 26b36db09d Integrate Modern HWID into content
This should be the primary changes for the future-proof "Modern HWID" system implemented into Robust and the auth server.

HWIDs in the database have been given an additional column representing their version, legacy or modern. This is implemented via an EF Core owned entity. By manually setting the column name of the main value column, we can keep DB compatibility and the migration is just adding some type columns.

This new HWID type has to be plumbed through everywhere, resulting in some breaking changes for the DB layer and such.

New bans and player records are placed with the new modern HWID. Old bans are still checked against legacy HWIDs.

Modern HWIDs are presented with a "V2-" prefix to admins, to allow distinguishing them. This is also integrated into the parsing logic for placing new bans.

There's also some code cleanup to reduce copy pasting around the place from my changes.

Requires latest engine to support ImmutableArray<byte> in NetSerializer.
2024-11-29 19:18:11 +01:00
Simon f9f2549746 Automated whitelists (#23985)
* Beginnings of making the breadmemes jobs easier

* stuff

* stuff pt. 2

* Stuff pt.3

* Stuff I forgot last time

* Basic whitelist

Only people that are added to the whitelist with the addwhitelist command will be able to join. I call this the "legacy" whitelist

* Remove always deny condition in favor of just breaking if playtime check fails

* Change default whitelist

Default whitelist is now the "legacy" whitelist.

* localization

* Admin check

* minor spelling change

* Fix build

* Whitelist message

* Fix vars not being datafield and spelling mistakes

* Minor spelling mistake

* Change config for salamander

* Reviews and stuff

* Add summaries

* Fix whitelists

* Forgot to add a datafield

* Fixing stuff I guess

* Reuse admin remarks to reduce load when connecting.

* Update log messages to be verbose instead of debug

* Reviews

* whoops

* Explain a bit more how whitelist checking works

* Apply CE's review

* Append Membership to Blacklist and Whitelist conditions

* Fix review comments

* Uncapitalize playerConnectionWhitelist, add to ignored client prototypes

* Make note count field work

* Fix cvar for thingy

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2024-08-30 05:37:15 +01:00
Julian Giebel 0ba5b81a6a Kick on ban for entire server group (#28649)
* Start work on PostgresNotificationManager
Implement initial version of init and listening code

* Finish implementing PostgresNotificationManager
Implement ban insert trigger

* Implement ignoring notifications if the ban was from the same server

* Address reviews

* Fixes and refactorings

Fix typo in migration SQL

Pull new code in BanManager out into its own partial file.

Unify logic to kick somebody with that when a new ban is placed directly on the server.

New bans are now checked against all parameters (IP, HWID) instead of just user ID.

Extracted SQLite ban matching code into a new class so that it can mostly be re-used by the ban notification code. No copy-paste here.

Database notifications are now not implicitly sent to the main thread, this means basic checks will happen in the thread pool beforehand.

Bans without user ID are now sent to servers. Bans are rate limited to avoid undue work from mass ban imports, beyond the rate limit they are dropped.

Improved error handling and logging for the whole system.

Matching bans against connected players requires knowing their ban exemption flags. These are now cached when the player connects.

ServerBanDef now has exemption flags, again to allow matching full ban details for ban notifications.

Made database notifications a proper struct type to reduce copy pasting a tuple.

Remove copy pasted connection string building code by just... passing the string into the constructor.

Add lock around _notificationHandlers just in case.

Fixed postgres connection wait not being called in a loop and therefore spamming LISTEN commands for every received notification.

Added more error handling and logging to notification listener.

Removed some copy pasting from SQLite database layer too while I was at it because god forbid we expect anybody else to do all the work in this project.

Sorry Julian

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2024-08-21 16:16:41 +01:00
DrSmugleaf eed9c58386
Add job whitelist system (#28085)
* Add job whitelist system

* Address reviews

* Fix name

* Apply suggestions from code review

Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>

* cancinium

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
2024-06-01 18:02:43 +02:00
Pieter-Jan Briers 8689c7f90d
Fix preference loading bugs (#27742)
First bug: if an error occured during pref loading code, it would fail. If the person then readied up, it would likely cause the round to fail to start.

Why could they ready up? The code only checks that the prefs finished loading, not that they finished loading *successfully*. Whoops.

Anyways, now people get kicked if their prefs fail to load. And I improved the error handling.

Second bug: if a user disconnected while their prefs were loading, it would cause an exception. This exception would go unobserved on lobby servers or raise through gameticker on non-lobby servers.

This happened even on a live server once and then triggered the first bug, but idk how.

Fixed this by properly plumbing through cancellation into the preferences loading code. The stuff is now cancelled properly.

Third bug: if somebody has a loadout item with a playtime requirement active, load-time sanitization of player prefs could run into a race condition because the sanitization can happen *before* play time was loaded.

Fixed by moving pref sanitizations to a later stage in the load process.
2024-05-18 13:30:09 +02:00
Pieter-Jan Briers 16c7c2882d
Improve admin message seen/dismiss state. (#26223)
Fixes #26211

Admin messages now have separate "seen" and "dismissed" fields. The idea is that an admin should be able to tell whether a user pressed the "dismiss for now" button. Instead of using "seen" as "show this message to players when they join", "dismissed" is now used for this.

Existing notes in the database will automatically be marked as dismissed on migration. A note cannot be dismissed without being seen (enforced via constraint in the database too, aren't I fancy).

As part of this, it has become impossible for a player to play without dismissing the message in some form. Instead of a shitty popup window, the popup is now a fullscreen overlay that blocks clicks behind it, making the game unplayable. Also, if a user somehow has multiple messages they will be combined into one popup.

Also I had enough respect for the codebase to make it look better and clean up the code somewhat. Yippee.

(cherry picked from commit d776c4b392a082dba7539d77cfa20fc904ed4091)
2024-03-24 00:08:01 +01:00
Pieter-Jan Briers 837272c745
Fix admin notes and database time nonsense. (#25280)
God bloody christ. There's like three layers of shit here.

So firstly, apparently we were still using Npgsql.EnableLegacyTimestampBehavior. This means that time values (which are stored UTC in the database) were converted to local time when read out. This meant they were passed around as kind Local to clients (instead of UTC in the case of SQLite). That's easy enough to fix just turn off the flag and fix the couple spots we're passing a local DateTime ez.

Oh but it turns out there's a DIFFERENT problem with SQLite: See SQLite we definitely store the DateTimes as UTC, but when Microsoft.Data.Sqlite reads them it reads them as Kind Unspecified instead of Utc.

Why are these so bad? Because the admin notes system passes DateTime instances from EF Core straight to the rest of the game code. And that means it's a PAIN IN THE ASS to run the necessary conversions to fix the DateTime instances. GOD DAMNIT now I have to make a whole new set of "Record" entities so we avoid leaking the EF Core model entities. WAAAAAAA.

Fixes #19897

(cherry picked from commit 2e6eaa45c57c7f5ba561d1fb1ef6712d2432a8fa)
2024-02-21 04:03:44 +01:00
Pieter-Jan Briers 33e3e8b321 High-latency DB testing stuff (#22282) 2023-12-16 19:39:24 +01:00
Pieter-Jan Briers f648007c8c Log server ID in connection logs table (#21911) 2023-12-16 19:27:08 +01:00
Debug fd2cc8570d
Sync master up to 1/10 (#74)
* Automatic changelog update

* Make NPC names proper nouns & fix some genders (#20534)

* Proper names & genders

* Uppercase proper names

* Make Smile female

* fix bingus wrinkly head (#20531)

* rouny meat and steak (#20526)

* lost friendship flavor

* add rouny steak

* rouny special meat

* rouny meat textures

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Automatic changelog update

* Wearable Wet Floor Sign and 'Janitorial Suicide Vest' (#20311)

* Explosive wet floor sign & janitorial suicide vest

* fix attributions

* Remove name & desc from explosive wet floor sign

* Make wet floor sign chameleonable

* Automatic changelog update

* Minor slippery stuff (#20535)

* Update submodule to 162.2.0 (#20570)

* Predicted armor (#20560)

* clean up some lines in smile the slime prototype (#20552)

* Revert "Use full file path for temp replays (#19002)" (#20545)

* Add EyesGlasses into ClothesMate (#20523)

* Automatic changelog update

* Fix Punpun crew monitor sensor (#20484)

* Automatic changelog update

* EasyPry airlocks for arrivals. Now also prying refactor I guess (#19394)

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* Make arcades hackable again (#20555)

* Automatic changelog update

* Health alert tweaks (#20557)

* Automatic changelog update

* Add active and ended game rule components, generic TryRoundStartAttempt and minPlayers field (#20564)

* Improve active game rule querying, add generic try round start attempt method, move minPlayers to GameRuleComponent

* Nukeops todo and cleanup

* Remove Active field

* Add EndedGameRuleComponent

* bartender suit (#20521)

* give me a drink bartender

* guh

* aARG

* Necropolis and mine walls (#20578)

* Automatic changelog update

* archaic accent tweaks (#20567)

* Automatic changelog update

* Add confirmation to kick and respawn in the admin player actions panel (#20542)

* Remove windows-latest CI runs, remove unused build-test-release.yml (#20540)

* Change .editorconfig to keep existing attribute arrangement (#20538)

* Automatic changelog update

* Catch replay start and end errors on round restarts (#20565)

* Update trivial components to use auto comp states (#20539)

* Fix role unbans not applying in real time (#20547)

* Disable AHelp buttons when no player is selected, update button styling (#20568)

* Automatic changelog update

* Added a toggle fullscreen button (default F11) (#20272)

* Added a toggle fullscreen button (default F11)

* Removed un-needed comments

* Review Requested Changes

* Fixed Acidental Spacing Change

* bwoink, removed extraneous code

* nothing, litterally

* Automatic changelog update

* Fix not networking markings (#20588)

* Automatic changelog update

* Update RobustToolbox to v162.2.1 (#20590)

* Automatic changelog update

* Glorfcode (force say on damage/stun/crit) (#20562)

* Automatic changelog update

* Fix AHelp progressively showing more AHelp panels (#20591)

* Automatic changelog update

* caninsert entitystorage tweaks (#20589)

* Automatic changelog update

* Fix mapping actions crashing on load (#20592)

* Fix loading a map with a ThirstComponent crashing the game (#20594)

* Fix electrocution displaying real name of disguised players (#20603)

* Organ fixes (#20488)

* Automatic changelog update

* Kettle medical rework (#20435)

* Initial try at medical rework for kettle

* Re-add decal decorations to Kettle's medical

* Add more lockers to kettle's med

* Actually upload kettle's map, not its proto

* Automatic changelog update

* Added blocked visuals to volumetric pump (#20610)

* Automatic changelog update

* Move TimedDespawn to engine (#20515)

* Update submodule to 163.0.0 (#20616)

* Remove v0.1 version number from local main menu screen (#20617)

* Remove cloneData parameter from AutoNetworkedField (#20596)

* Update submodule to 164.0.0 (#20618)

* fix cognizine ghost role (#20632)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Automatic changelog update

* Move ID layer one pixel to correct alignment (#20630)

* Update nukie hardsuit descriptions (#20529)

* Make holofans destructable (#20445)

* Automatic changelog update

* bowl is open (#20453)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Add TestPair.WaitCommand() (#20615)

* Rename ThreatPrototype and mark fields as required (#20611)

* Adjust hard bomb shape (#20608)

* dragon refactor, objectives and use GenericAntag (#20201)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Automatic changelog update

* Added generic empty liquids tank (#20563)

* Move view variables verb to the top of the list with no category and localize it (#20546)

* saltern update (#20325)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Fix followers leaking (#20643)

* Add Winter Boots (#20622)

* add

* fix prototype

* Add QM mantle (#20621)

* add

* fix prototype

* Automatic changelog update

* Slime mobs breathe nitrogen and resprite their organs (#20577)

* Slimes breathe nitrogen and resprite their organs

* ups

* mmm

* Automatic changelog update

* Fix the new lizard horn's consistency + issue (#20620)

* fix

* add

* Revert "add"

This reverts commit a054a3204a8f185a94ceb80b1bd3bc9f30423711.

* Add RandomHumanoidAppearance component to for space ninjas (#20605)

* Automatic changelog update

* Space cat breathes space (#20550)

* Space cat breathes space

Made Space Cat lungs ROBUST

* Made Space Cat's lungs ROBUST 2.0

* Automatic changelog update

* Wide anomaly locator (#20581)

* Add files via upload

* Add files via upload

* Add files via upload

* Add files via upload

* add textures

* fix encoding

* fix 2

* Automatic changelog update

* Fixed Telescopic Shield Lighting (#20650)

* Fixed Telescopic Shield Lighting Bug fix #20199

* no need for these at all

---------

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>

* Automatic changelog update

* Add a special hardsuit for nukie medic (#20471)

* Automatic changelog update

* Carry over other mutations when doing species mutation (#20551)

* Automatic changelog update

* Add Spanish accent to poncho and sombrero (#20377)

---------

Co-authored-by: PJBot <pieterjan.briers+bot@gmail.com>
Co-authored-by: Psychpsyo <60073468+Psychpsyo@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Co-authored-by: ravage <142820619+ravage123321@users.noreply.github.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: LEVELcat <68501903+LEVELcat@users.noreply.github.com>
Co-authored-by: Repo <47093363+Titian3@users.noreply.github.com>
Co-authored-by: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
Co-authored-by: Doru991 <75124791+Doru991@users.noreply.github.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: Skarletto <122584947+Skarletto@users.noreply.github.com>
Co-authored-by: NULL882 <104377798+NULL882@users.noreply.github.com>
Co-authored-by: lunarcomets <140772713+lunarcomets@users.noreply.github.com>
Co-authored-by: Miro Kavaliou <miraslauk@gmail.com>
Co-authored-by: Kara <lunarautomaton6@gmail.com>
Co-authored-by: Kacper Urbańczyk <kacperjaroslawurbanczyk@gmail.com>
Co-authored-by: TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com>
Co-authored-by: daerSeebaer <61566539+daerSeebaer@users.noreply.github.com>
Co-authored-by: Fluffiest Floofers <thebluewulf@gmail.com>
Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com>
Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Co-authored-by: Kevin Zheng <kevinz5000@gmail.com>
Co-authored-by: drteaspoon420 <87363733+drteaspoon420@users.noreply.github.com>
Co-authored-by: Ubaser <134914314+UbaserB@users.noreply.github.com>
Co-authored-by: Nim <128169402+Nimfar11@users.noreply.github.com>
Co-authored-by: Kacper Urbańczyk <mikrel071204@gmail.com>
Co-authored-by: Tox Cruize <141375638+TexCruize@users.noreply.github.com>
Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
Co-authored-by: Michael Cu <43478115+michaelcu@users.noreply.github.com>
2023-10-03 14:15:46 -05:00
Visne c7b21b631b
Remove unused dependencies (#19490) 2023-08-24 09:55:15 -08:00
Pieter-Jan Briers 9507520e40
Better synchronous IAsyncEnumerable<T> handling. (#18296) 2023-07-26 10:03:41 +10:00
Pieter-Jan Briers 978887bf03
(Probably) fix random integration test failures. (#18270) 2023-07-25 11:10:50 +10:00
Riggle 579913b617
Better notes and bans (#14228)
Co-authored-by: Chief-Engineer <119664036+Chief-Engineer@users.noreply.github.com>
2023-07-21 13:38:52 +02:00
Pieter-Jan Briers 50257c3bd7
Limit postgres database concurrency (#17246) 2023-06-10 21:52:08 +10:00
DrSmugleaf b5fe408baf
Fix "Next" never sending admin logs for rounds outside the cache, show a round's total logs on the UI (#16531)
* Fix next never sending logs for rounds outside the cache

* Show round's total log count on the ui

* Disable next button when waiting for a next response

* Cleanup AdminLogsEui.CurrentRoundId

* Fix popout window width
2023-05-17 06:04:28 -05:00
DrSmugleaf d072cb6144
Fix admin logs duplicate id error when running tests (#16203) 2023-05-07 20:14:23 +10:00
Pieter-Jan Briers 1c4a2594ce
Database thread pool use (#14498)
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2023-05-02 10:36:39 +10:00
metalgearsloth 3dc0908151
Revert "Show ban and note count in ahelp window" (#15347) 2023-04-12 19:43:33 +10:00
DrSmugleaf 26cd16eeaa
Show ban and note count in ahelp window (#15328) 2023-04-12 10:34:25 +10:00
Pieter-Jan Briers c8e90e561b
Server ban exemption system (#15076) 2023-04-03 10:24:55 +10:00
Kevin Zheng 76d632a7df
Respect USE_SYSTEM_SQLITE (#11758) 2022-10-08 00:41:16 -05:00
Pieter-Jan Briers e852ada6c8
Play time tracking: Job timers 3: more titles: when the (#9978)
Co-authored-by: Veritius <veritiusgaming@gmail.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2022-08-07 16:00:42 +10:00
DrSmugleaf 5227d1a023
Admin notes (#7259)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2022-04-16 20:57:50 +02:00
DrSmugleaf ca0fb3c6a2
Track rule reading in database, don't show popup locally (#7278) 2022-03-26 20:16:57 +01:00
Vera Aguilera Puerto eb54f4b224
Adds Network Resource Uploading for admins. (#6904)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2022-03-26 12:46:37 +01:00
Julian Giebel 414d226ec5
Server names and admin log full-text search (#6327)
Co-authored-by: Julian Giebel <j.giebel@netrocks.info>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2022-03-13 18:36:48 +01:00
ShadowCommander 4825142210
Role bans (#6703) 2022-02-21 23:11:39 +01:00
Pieter-Jan Briers 4da56becab Fix DbContext configuration nightmares.
Thanks to julian figuring out IDesignTimeDbContextFactory exists in #6327.

All this DbContext configuration and options setup stuff is insane. Microsoft should be absolutely ashamed for coming up with this load of garbage.
2022-02-03 03:13:34 +01:00
Pieter-Jan Briers 5091c6aa9d
Revert "Revert "Log ban hits in DB. ( (#6361) 2022-02-02 22:57:11 +01:00
Pieter-Jan Briers 764010fea0
Revert "Log ban hits in DB. (#6337)" (#6357)
This reverts commit b75f005bb4.
2022-01-28 19:33:09 +01:00
Pieter-Jan Briers b75f005bb4
Log ban hits in DB. (#6337) 2022-01-28 19:10:44 +01:00
mirrorcult af785f873f
Optional server whitelists (#5979) 2022-01-05 00:37:06 +11:00
DrSmugleaf 1f8152cb02 Cache the last 3 rounds of admin logs in memory
Reduces send logs time from 2/10/45 seconds to 2 milliseconds
Not thread safe
Removes LogRecord
2021-12-25 02:07:12 +01:00
DrSmugleaf c3fe5909ad THE RETURN OF THE KING
This reverts commit c18d07538a.
2021-11-22 19:08:27 +01:00
DrSmugleaf c18d07538a Revert "Admin logs (#5419)"
This reverts commit 319aec109d.
2021-11-22 18:55:17 +01:00
Javier Guardia Fernández 319aec109d
Admin logs (#5419)
* Add admin logging, models, migrations

* Add logging damage changes

* Add Log admin flag, LogFilter, Logs admin menu tab, message
Refactor admin logging API

* Change admin log get method names

* Fix the name again

* Minute amount of reorganization

* Reset Postgres db snapshot

* Reset Sqlite db snapshot

* Make AdminLog have a composite primary key of round, id

* Minute cleanup

* Change admin system to do a type check instead of index check

* Make admin logs use C# 10 interpolated string handlers

* Implement UI on its own window
Custom controls
Searching
Add admin log converters

* Implement limits into the query

* Change logs to be put into an OutputPanel instead for text wrapping

* Add log <-> player m2m relationship back

* UI improvements, make text wrap, add separators

* Remove entity prefix from damaged log

* Add explicit m2m model, fix any players filter

* Add debug command to test bulk adding logs

* Admin logs now just kinda go

* Add histogram for database update time

* Make admin log system update run every 5 seconds

* Add a cap to the log queue and a metric for how many times it has been reached

* Add metric for logs sent in a round

* Make cvars out of admin logs queue send delay and cap

* Merge fixes

* Reset some changes

* Add test for adding and getting a single log

* Add tests for bulk adding logs

* Add test for querying logs

* Add CallerArgumentExpression to LogStringHandler methods and test

* Improve UI, fix SQLite, add searching by round

* Add entities to admin logs

* Move distinct after orderby

* Add migrations

* ef core eat my ass

* Add cvar for client logs batch size

* Sort logs from newest to oldest by default

* Merge fixes

* Reorganize tests and add one for date ordering

* Add note to log types to not change their numeric values

* Add impacts to logs, better UI filtering

* Make log add callable from shared for convenience

* Get current round id directly from game ticker

* Revert namespace change for DamageableSystem
2021-11-22 18:49:26 +01:00
Javier Guardia Fernández af579b15cc
Update to .NET 6 and C# 10 (#5233)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2021-11-09 15:05:07 +01:00
Saphire Lattice eb567dc0bb
DB QOL stuff, but not breaking the migrations now (#5086) 2021-10-31 15:18:01 +01:00
Pieter-Jan Briers 5c5534de9a Revert "A bit of DB model cleanup (#5016)"
This reverts commit 8a3cee9a10.
2021-10-29 16:10:58 +02:00
Saphire Lattice 8a3cee9a10
A bit of DB model cleanup (#5016) 2021-10-29 15:41:13 +02:00
Visne b7dc3c81ae
Remove redundant #nullable enable (#4275) 2021-07-16 17:37:09 -07:00
DrSmugleaf f878f353e4
Move some files out of Content.Shared root because I forgot (#4182) 2021-06-13 22:52:40 +10:00
Pieter-Jan Briers a321b4302e Use HWIDs for bans. 2021-03-22 01:32:09 +01:00
DrSmugleaf 22d06ff6a0
Fix missing interpolation with unknown database engines error 2021-03-13 03:04:19 +01:00
Leo a3d0e3f6a7
OOC sent by an admin will have a different color (#3117)
* Admin OOC is sent with a different color than regular OOC

- Also adds the OOC color to the database

* Command to set the color

* Ooc -> OOC

* Change default color to Red (`#ff0000`)

* Outdated namespace
2021-02-14 15:59:56 +01:00