* Scope creep my ass
* why was this shit not pushed????
* gone...
* fix that
* review plus buildd
* asfsafsafsafsafas
* grug
* burber
* I'll fix this later
* shrimply die
* also this
* it's snerf or snuthin
* assaads
* round snend
* aaaa
* fix this shit for real
* actually, don't start GameRules until MapInit now that I think aboot it.
* forgot u
* don't actually need this part nullable
* Deffer comp removal
* one liner
* do that too
* chungus
* Honestly makes more sense here, plus WHY are we doing all that shit on "GameRuleAdded" rather than GameRuleStarted(?)
* deferred removal :V
* aaaaaaaaaaaaaaa
* whhop
* Whoop
* better
* landmine that I placed for myself then forgot about lmao
* cleanup
* FUCKING `!`
* gotovo
* amogus
* please don't check by metadata I beg
* waawsasfdfsasfa
* sfafsasfafsas
* fdsaasffsasfa
* code
* fix
* fasasffasfasfsad
* chungaas
* I may be stupid
* gra
* graaaaaaaaaaaaaaaaa
* comment
* gra
* clearing is not predicted and would require major refactors, so don't cache on client.
* lame shit :P
* last holes
* nukeopsfsafsasafsfafsa
* why was that shit public bruh
* bubrbgwahrghfaka
* dynamic
* revert change that did nothing lmao
* "fixes" it but the logic just needs to be rewritten.
* init commit
* almost there
* commit
* Scrounger
* actually spawn the ghost roles, and better assertion behavior!
* update the warning because I know someone is gonna touch it
* hhng
* fix Traitor assignment
* Prune the list and ignore dummy antags
* game test
* skip dummy antag
* crisaskjfshj
* It's time, it's fucking time
* fixing the secret gamemode bug once and for all.
* docs
* burger
* dssdgdsgds
* so hungry for test fails
* job whitelist
* review
---------
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Ban database refactor (#42495)
* Ban DB refactor seems to work at a basic level for PostgreSQL
* New ban creation API
Supports all the new functionality (multiple players/addresses/hwids/roles/rounds per ban).
* Make the migration irreversible
* Re-implement ban notifications
The server ID check is no longer done as admins may want to place bans spanning multiple rounds irrelevant of the source server.
* Fix some split query warnings
* Implement migration on SQLite
* More comments
* Remove required from ban reason
SS14.Admin changes would like this
* More missing AsSplitQuery() calls
* Fix missing ban type filter
* Fix old CreateServerBan API with permanent time
* Fix department and role ban commands with permanent time
* Re-add banhits navigation property
Dropped this on accident, SS14.Admin needs it.
* More ban API fixes.
* Don't fetch ban exemption info for role bans
Not relevant, reduces query performance
* Regenerate migrations
* Fix adminnotes command for players that never connected
Would blow up handling null player records. Not a new bug introduced by the refactor, but I ran into it.
* Great shame... I accidentally committed submodule update...
* Update GDPR scripts
* Fix sandbox violation
* Fix bans with duplicate info causing DB exceptions
Most notably happened with role bans, as multiple departments may include the same role.
* Add ability for admins to change certain cvars via command.
* Cleanup
* More cleanup.
* Even more cleanup.
* WAITER! WAITER! ONE MORE COMMIT PLEASE!
* Remove requirement for Admin AdminFlag
Not needed as the command checks for the perms.
* Add search function to CVars and help text
* Move to controller instead.
* Add another cvar for testing
* Remove unused comment
* Move to Post Server Initialize
LoC does not work at the earlier stages of server initalization
* Remove unneeded comment
We clear out list so its no longer needed
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.
This code was a mess. Now it's less of a mess and user UserDbDataManager now.
Fixes the following bugs:
* If you connect to a server, restart your client, connect again in the same round, you role bans would not be visible in the client.
* If you role ban somebody who is not connected to the server, then they connect within the round, they will only have the recently-applied ban.
Likely fixes#24781, #27282
* 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>
* Add Prometheus stats for admin count
Fixes#20828
Reports time series for admin count. Counts are separated by state (active, AFK, or deadminned) and admin rank.
* Use static constructor instead of static readonly for the metric
Docs recommend this due to inconsistent execution of C# static constructors.
* Remove static usage, use IoC IMeterFactory.
---------
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
* ogh
* i should save my work
* ogh
* hhcdfhjbghshbxdfhghshc
- lots of bugs in parsing still
- invocation is a stub
* expr parsing works
* awawa
* Saving work
* Improve APIs a bit all around, add shortcuts.
* awa
* awa
* AAAAAA
* save work
* Move shit to engine
* lord
* bql is kill
* forgot the fucking bike rack
* bql is kill for real
* pjb will kill me
* aughfhbdj
* adgddf
* gdsgvfvxshngfgh
* b
* hfsjhghj
* a
* tf you mean i have to document it
* follow C# standards
* Assorted cleanup and documentation pass, minor bugfix in ValueRefParser.
* Start porting old commands, remove that pesky prefix in favor of integrating with the shell.
* bw
* Fix valueref up a bit, improve autocomplete for it.
* awa
* fix tests
* git shut up
* Arithmetic commands.
* parse improvements
* Update engine.
---------
Co-authored-by: moonheart08 <moonheart08@users.noreply.github.com>