From 5701455de026d1865ee610f2ab427fdb2034779b Mon Sep 17 00:00:00 2001 From: Dawid Bepierszcz <41084667+daffyyyy@users.noreply.github.com> Date: Fri, 3 Oct 2025 01:37:03 +0200 Subject: [PATCH] Refactor database layer and add module/plugin improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworked the database layer to support both MySQL and SQLite via new provider classes and migration scripts for each backend. Updated the build workflow to support building and packaging additional modules, including StealthModule and BanSoundModule, and improved artifact handling. Refactored command registration to allow dynamic registration/unregistration and improved API event handling. Updated dependencies, project structure, and configuration checks for better reliability and extensibility. Added new language files, updated versioning, and removed obsolete files. **⚠️ Warning: SQLite support is currently experimental. Using this version requires reconfiguration of your database settings! Plugin now uses UTC time. Please adjust your configurations accordingly! ** --- .github/workflows/build.yml | 164 +-- .gitignore | 2 + .../3rd_party/MenuManagerApi — old.dll | Bin 4608 -> 0 bytes CS2-SimpleAdmin/Api/CS2_SimpleAdminApi.cs | 40 +- CS2-SimpleAdmin/CS2-SimpleAdmin.cs | 212 +++- CS2-SimpleAdmin/CS2-SimpleAdmin.csproj | 129 ++- CS2-SimpleAdmin/Commands/RegisterCommands.cs | 182 ++-- CS2-SimpleAdmin/Commands/basebans.cs | 188 +++- CS2-SimpleAdmin/Commands/basechat.cs | 34 +- CS2-SimpleAdmin/Commands/basecommands.cs | 383 +++++-- CS2-SimpleAdmin/Commands/basecomms.cs | 262 +++-- CS2-SimpleAdmin/Commands/basevotes.cs | 6 + CS2-SimpleAdmin/Commands/funcommands.cs | 58 +- CS2-SimpleAdmin/Commands/playercommands.cs | 472 +++++++-- CS2-SimpleAdmin/Config.cs | 173 ++-- CS2-SimpleAdmin/Database/Database.cs | 20 +- CS2-SimpleAdmin/Database/IDatabaseProvider.cs | 60 ++ CS2-SimpleAdmin/Database/Migration.cs | 101 +- .../013_AddNameColumnToSaPlayerIpsTable.sql | 4 - .../{ => Mysql}/001_CreateTables.sql | 0 .../{ => Mysql}/002_CreateFlagsTable.sql | 0 .../{ => Mysql}/003_ChangeColumnsPosition.sql | 0 .../004_MoveOldFlagsToFlagsTable.sql | 0 .../{ => Mysql}/005_CreateUnbansTable.sql | 4 +- .../{ => Mysql}/006_ServerGroupsFeature.sql | 0 .../{ => Mysql}/007_ServerGroupsGlobal.sql | 0 .../{ => Mysql}/008_OnlineTimeInPenalties.sql | 0 .../{ => Mysql}/009_BanAllUsedIpAddress.sql | 0 .../{ => Mysql}/010_CreateWarnsTable.sql | 0 .../011_AddRconColumnToServersTable.sql | 0 .../012_AddUpdatedAtColumnToSaBansTable.sql | 0 .../013_AddNameColumnToSaPlayerIpsTable.sql | 13 + .../Mysql/014_AddIndexesToMutesTable.sql | 3 + .../Migrations/Mysql/015_steamidToBigInt.sql | 23 + .../Migrations/Sqlite/001_CreateTables.sql | 47 + .../Sqlite/002_CreateFlagsTable.sql | 6 + .../Sqlite/003_ChangeColumnsPosition.sql | 0 .../Sqlite/004_MoveOldFlagsToFlagsTable.sql | 46 + .../Sqlite/005_CreateUnbansTable.sql | 23 + .../Sqlite/006_ServerGroupsFeature.sql | 21 + .../Sqlite/007_ServerGroupsGlobal.sql | 0 .../Sqlite/008_OnlineTimeInPenalties.sql | 1 + .../Sqlite/009_BanAllUsedIpAddress.sql | 7 + .../Sqlite/010_CreateWarnsTable.sql | 13 + .../011_AddRconColumnToServersTable.sql | 1 + .../012_AddUpdatedAtColumnToSaBansTable.sql | 1 + .../013_AddNameColumnToSaPlayerIpsTable.sql | 9 + .../Sqlite/014_AddIndexesToMutesTable.sql | 3 + .../Migrations/Sqlite/015_steamidToBigInt.sql | 15 + .../Database/MysqlDatabaseProvider.cs | 384 +++++++ .../Database/SqliteDatabaseProvider.cs | 366 +++++++ CS2-SimpleAdmin/Events.cs | 231 +++-- .../Extensions/PlayerExtensions.cs | 135 ++- CS2-SimpleAdmin/Helper.cs | 129 ++- CS2-SimpleAdmin/Managers/BanManager.cs | 706 ++++++------- CS2-SimpleAdmin/Managers/CacheManager.cs | 561 ++++++++--- CS2-SimpleAdmin/Managers/DiscordManager.cs | 51 +- CS2-SimpleAdmin/Managers/MuteManager.cs | 211 ++-- CS2-SimpleAdmin/Managers/PermissionManager.cs | 293 +++--- CS2-SimpleAdmin/Managers/PlayerManager.cs | 537 +++++----- .../Managers/PlayerPenaltyManager.cs | 86 +- CS2-SimpleAdmin/Managers/ServerManager.cs | 29 +- CS2-SimpleAdmin/Managers/WarnManager.cs | 171 ++-- CS2-SimpleAdmin/Menus/AdminMenu.cs | 6 +- CS2-SimpleAdmin/Menus/ManageAdminsMenu.cs | 6 +- CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs | 20 +- CS2-SimpleAdmin/Menus/ManageServerMenu.cs | 1 - CS2-SimpleAdmin/Models/BanRecord.cs | 27 +- CS2-SimpleAdmin/Models/PlayerDto.cs | 12 + CS2-SimpleAdmin/VERSION | 2 +- CS2-SimpleAdmin/Variables.cs | 39 +- CS2-SimpleAdmin/lang/ar.json | 4 + CS2-SimpleAdmin/lang/de.json | 4 + CS2-SimpleAdmin/lang/en.json | 4 + CS2-SimpleAdmin/lang/es.json | 4 + CS2-SimpleAdmin/lang/fa.json | 4 + CS2-SimpleAdmin/lang/fr.json | 4 + CS2-SimpleAdmin/lang/lv.json | 4 + CS2-SimpleAdmin/lang/pl.json | 4 + CS2-SimpleAdmin/lang/pt-BR.json | 4 + CS2-SimpleAdmin/lang/pt-PT.json | 4 + CS2-SimpleAdmin/lang/ru.json | 4 + CS2-SimpleAdmin/lang/tr.json | 4 + CS2-SimpleAdmin/lang/zh-Hans.json | 4 + CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj | 3 +- CS2-SimpleAdminApi/ICS2-SimpleAdminApi.cs | 74 ++ CS2-SimpleAdminApi/PlayerInfo.cs | 11 +- .../CS2-SimpleAdminApi.dll | Bin 8704 -> 12800 bytes .../CS2-SimpleAdminApi.dll | Bin 0 -> 9216 bytes .../CS2-SimpleAdmin_BanSoundModule.cs | 51 + .../CS2-SimpleAdmin_BanSoundModule.csproj | 20 + .../CS2-SimpleAdmin_BanSoundModule.sln | 16 + .../CS2-SimpleAdminApi.dll | Bin 8704 -> 12800 bytes .../CS2-SimpleAdminApi.dll | Bin 8704 -> 12800 bytes .../CS2-SimpleAdminApi.dll | Bin 8704 -> 12800 bytes .../CS2-SimpleAdminApi.dll | Bin 8704 -> 0 bytes .../CS2-SimpleAdmin_RedisInform.deps.json | 939 ------------------ .../CS2-SimpleAdmin_RedisInform.dll | Bin 13824 -> 0 bytes .../CS2-SimpleAdmin_RedisInform.pdb | Bin 14920 -> 0 bytes .../Pipelines.Sockets.Unofficial.dll | Bin 167424 -> 0 bytes .../StackExchange.Redis.dll | Bin 915968 -> 0 bytes .../System.IO.Pipelines.dll | Bin 67464 -> 0 bytes .../CS2-SimpleAdminApi.dll | Bin 0 -> 9728 bytes .../CS2-SimpleAdmin_StealthModule.cs | 219 ++++ .../CS2-SimpleAdmin_StealthModule.csproj | 20 + .../CS2-SimpleAdmin_StealthModule.sln | 16 + .../Extensions.cs | 31 + .../StatusBlocker-v1.0.3-linux.tar.gz | Bin 0 -> 393195 bytes .../StatusBlocker-v1.0.3-windows.tar.gz | Bin 0 -> 190719 bytes .../PluginConfig.cs | 11 + README.md | 66 +- 111 files changed, 5387 insertions(+), 2871 deletions(-) delete mode 100644 CS2-SimpleAdmin/3rd_party/MenuManagerApi — old.dll create mode 100644 CS2-SimpleAdmin/Database/IDatabaseProvider.cs delete mode 100644 CS2-SimpleAdmin/Database/Migrations/013_AddNameColumnToSaPlayerIpsTable.sql rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/001_CreateTables.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/002_CreateFlagsTable.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/003_ChangeColumnsPosition.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/004_MoveOldFlagsToFlagsTable.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/005_CreateUnbansTable.sql (87%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/006_ServerGroupsFeature.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/007_ServerGroupsGlobal.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/008_OnlineTimeInPenalties.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/009_BanAllUsedIpAddress.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/010_CreateWarnsTable.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/011_AddRconColumnToServersTable.sql (100%) rename CS2-SimpleAdmin/Database/Migrations/{ => Mysql}/012_AddUpdatedAtColumnToSaBansTable.sql (100%) create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/001_CreateTables.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/002_CreateFlagsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/003_ChangeColumnsPosition.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/004_MoveOldFlagsToFlagsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/005_CreateUnbansTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/006_ServerGroupsFeature.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/007_ServerGroupsGlobal.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/008_OnlineTimeInPenalties.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/009_BanAllUsedIpAddress.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/010_CreateWarnsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/011_AddRconColumnToServersTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/012_AddUpdatedAtColumnToSaBansTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/013_AddNameColumnToSaPlayerIpsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/014_AddIndexesToMutesTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Sqlite/015_steamidToBigInt.sql create mode 100644 CS2-SimpleAdmin/Database/MysqlDatabaseProvider.cs create mode 100644 CS2-SimpleAdmin/Database/SqliteDatabaseProvider.cs create mode 100644 CS2-SimpleAdmin/Models/PlayerDto.cs create mode 100644 Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdminApi.dll create mode 100644 Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.cs create mode 100644 Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.csproj create mode 100644 Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.sln delete mode 100644 Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdminApi.dll delete mode 100644 Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform.deps.json delete mode 100644 Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform.dll delete mode 100644 Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform.pdb delete mode 100644 Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/Pipelines.Sockets.Unofficial.dll delete mode 100644 Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/StackExchange.Redis.dll delete mode 100644 Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/System.IO.Pipelines.dll create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdminApi.dll create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.cs create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.csproj create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.sln create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/Extensions.cs create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-linux.tar.gz create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-windows.tar.gz create mode 100644 Modules/CS2-SimpleAdmin_StealthModule/PluginConfig.cs diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 57a42c2..5e89866 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build +name: Build and Publish on: push: @@ -11,85 +11,111 @@ on: - '**/README.md' env: - BUILD_NUMBER: ${{ github.run_number }} PROJECT_PATH_CS2_SIMPLEADMIN: "CS2-SimpleAdmin/CS2-SimpleAdmin.csproj" - PROJECT_PATH_CS2_SIMPLEADMINAPI: "CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj" PROJECT_NAME_CS2_SIMPLEADMIN: "CS2-SimpleAdmin" + PROJECT_PATH_CS2_SIMPLEADMINAPI: "CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj" PROJECT_NAME_CS2_SIMPLEADMINAPI: "CS2-SimpleAdminApi" + PROJECT_PATH_STEALTHMODULE: "Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.csproj" + PROJECT_NAME_STEALTHMODULE: "CS2-SimpleAdmin_StealthModule" OUTPUT_PATH: "./counterstrikesharp" TMP_PATH: "./tmp" jobs: build: - permissions: write-all runs-on: ubuntu-latest - + permissions: write-all + outputs: + build_version: ${{ steps.get_version.outputs.VERSION }} steps: - - uses: actions/checkout@v4 - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.x - - name: Restore CS2-SimpleAdmin - run: dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} - - name: Build CS2-SimpleAdmin - run: dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }} - - name: Restore CS2-SimpleAdminApi - run: dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} - - name: Build CS2-SimpleAdminApi - run: dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }} + - uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + + - name: Get Version + id: get_version + run: echo "VERSION=$(cat CS2-SimpleAdmin/VERSION)" >> $GITHUB_OUTPUT + + - name: Restore & Build All Projects + run: | + dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} + dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }} + dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} + dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }} + dotnet restore ${{ env.PROJECT_PATH_STEALTHMODULE }} + dotnet build ${{ env.PROJECT_PATH_STEALTHMODULE }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_STEALTHMODULE }} + + - name: Combine projects + run: | + mkdir -p ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin + mkdir -p ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi + mkdir -p ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi + + cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/* ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin/ + cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_STEALTHMODULE }}/* ${{ env.OUTPUT_PATH }}/plugins/CS2-SimpleAdmin_StealthModule + cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/* ${{ env.OUTPUT_PATH }}/shared/CS2-SimpleAdminApi/ + + - name: Zip Main Build Output + run: zip -r CS2-SimpleAdmin${{ steps.get_version.outputs.VERSION }}.zip ${{ env.OUTPUT_PATH }} + + - name: Extract & Zip StatusBlocker Linux + run: | + mkdir -p statusblocker-linux && + tar -xzf Modules/CS2-SimpleAdmin_StealthModule/METAMOD\ PLUGIN/StatusBlocker-v*-linux.tar.gz -C statusblocker-linux && + cd statusblocker-linux && + zip -r ../StatusBlocker-linux-${{ steps.get_version.outputs.VERSION }}.zip ./* + + - name: Extract & Zip StatusBlocker Windows + run: | + mkdir -p statusblocker-windows && + tar -xzf Modules/CS2-SimpleAdmin_StealthModule/METAMOD\ PLUGIN/StatusBlocker-v*-windows.tar.gz -C statusblocker-windows && + cd statusblocker-windows && + zip -r ../StatusBlocker-windows-${{ steps.get_version.outputs.VERSION }}.zip ./* + + - name: Upload all artifacts + uses: actions/upload-artifact@v4 + with: + name: CS2-SimpleAdmin-Build-Artifacts + path: | + CS2-SimpleAdmin${{ steps.get_version.outputs.VERSION }}.zip + StatusBlocker-linux-${{ steps.get_version.outputs.VERSION }}.zip + StatusBlocker-windows-${{ steps.get_version.outputs.VERSION }}.zip publish: - if: github.event_name == 'push' - permissions: write-all - runs-on: ubuntu-latest needs: build + if: github.event_name == 'push' + runs-on: ubuntu-latest + permissions: write-all steps: - - uses: actions/checkout@v4 - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.x - - name: Restore CS2-SimpleAdmin - run: dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} - - name: Build CS2-SimpleAdmin - run: dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMIN }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }} - - name: Restore CS2-SimpleAdminApi - run: dotnet restore ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} - - name: Build CS2-SimpleAdminApi - run: dotnet build ${{ env.PROJECT_PATH_CS2_SIMPLEADMINAPI }} -c Release -o ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }} - - name: Clean files - run: | - rm -f \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/CounterStrikeSharp.API.dll \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/McMaster.NETCore.Plugins.dll \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/Microsoft.DotNet.PlatformAbstractions.dll \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/Microsoft.Extensions.DependencyModel.dll \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/CS2-SimpleAdminApi.* \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}/Microsoft.* \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/CounterStrikeSharp.API.dll \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/McMaster.NETCore.Plugins.dll \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/Microsoft.DotNet.PlatformAbstractions.dll \ - ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }}/Microsoft.Extensions.DependencyModel.dll - - name: Combine projects - run: | - mkdir -p ${{ env.OUTPUT_PATH }}/plugins - mkdir -p ${{ env.OUTPUT_PATH }}/shared - cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }} ${{ env.OUTPUT_PATH }}/plugins/ - cp -r ${{ env.TMP_PATH }}/${{ env.PROJECT_NAME_CS2_SIMPLEADMINAPI }} ${{ env.OUTPUT_PATH }}/shared/ - - name: Zip combined - uses: thedoctor0/zip-release@0.7.6 - with: - type: 'zip' - filename: '${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}-${{ env.BUILD_NUMBER }}.zip' - path: ${{ env.OUTPUT_PATH }} - - name: Publish combined release - uses: ncipollo/release-action@v1.14.0 - with: - artifacts: "${{ env.PROJECT_NAME_CS2_SIMPLEADMIN }}-${{ env.BUILD_NUMBER }}.zip" - name: "CS2-SimpleAdmin - Build ${{ env.BUILD_NUMBER }}" - tag: "build-${{ env.BUILD_NUMBER }}" - body: | - Place files in addons/counterstrikesharp - After first launch, configure the plugins in the respective configs: - - CS2-SimpleAdmin: addons/counterstrikesharp/configs/plugins/CS2-SimpleAdmin/CS2-SimpleAdmin.json + - uses: actions/checkout@v4 + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: CS2-SimpleAdmin-Build-Artifacts + path: . + - name: Unzip main build artifact + run: unzip CS2-SimpleAdmin${{ needs.build.outputs.build_version }}.zip -d ./counterstrikesharp + - name: Publish combined release + uses: ncipollo/release-action@v1.14.0 + with: + artifacts: | + CS2-SimpleAdmin${{ needs.build.outputs.build_version }}.zip + StatusBlocker-linux-${{ needs.build.outputs.build_version }}.zip + StatusBlocker-windows-${{ needs.build.outputs.build_version }}.zip + name: "CS2-SimpleAdmin Build #${{ needs.build.outputs.build_version }}" + tag: "build-${{ needs.build.outputs.build_version }}" + body: | + Place the files in your server as follows: + + - CS2-SimpleAdmin: + Place the files inside the addons/counterstrikesharp directory. + After the first launch, configure the plugin using the JSON config file at: + addons/counterstrikesharp/configs/plugins/CS2-SimpleAdmin/CS2-SimpleAdmin.json + + - StatusBlocker: + Place the plugin files directly into the addons directory. + This plugin is a Metamod module for the StealthModule and does not require a subfolder. + + Remember to restart or reload your game server after installing and configuring the plugins. diff --git a/.gitignore b/.gitignore index 79b4f27..8eebf6c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ obj/ Modules/CS2-SimpleAdmin_PlayTimeModule CS2-SimpleAdmin.sln.DotSettings.user Modules/CS2-SimpleAdmin_ExampleModule/CS2-SimpleAdmin_ExampleModule.sln.DotSettings.user +CS2-SimpleAdmin_BanSoundModule — kopia +*.user diff --git a/CS2-SimpleAdmin/3rd_party/MenuManagerApi — old.dll b/CS2-SimpleAdmin/3rd_party/MenuManagerApi — old.dll deleted file mode 100644 index c4f723a28a8c29c879d5badd5bcfebd3cd325d01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKU2Ggz75-+{yV*F7Ydb$msGt)ZX!#r2`D>Cksn=^eafmm@yKxI_v1ixU>#1jF zmYG>6egLcrgv3(>s1ia#LKP1Pit@uSfO)%{QWtRJuMe&fh3Uwq(xNKyw`s&$NI>4qq+fEz*+0@P(_> z6MX-jyv4wV$GxB?#ss=Bp8p`QTbO?t$8j);eUPjyr?iihj4A2bbl#F5#}fW&B)R5r z-dHnp_@TxdsGE=B6`JJmBmBz9;f8UP+Fcs|0z$v3@fWn@+nWBU9(#?r7r!-Mqm6++ z(&Oe5{p>UQ^pw)p5~YFfGrzwYrz8paF_23*WloaLBA5F(p2hse56tI?Ga12u(Dd6H z-z84qcD655-zEM8{z!ZrcZr|D+r&j=Y5!?0FB2D; z&DAZ#&@E1q%>`buK_SAV4gSH>5P#Shs zl~{fCbxr80Agrrc1n=z7 zE(W2(gsQb04X5U*Ld*$k?O34@MXFiz)+;j8mbl`C4HZxE*j3kpaCJ-3v7d51HLt>m z`8=qc_LqaO=}5AU_fV^1;4iz4cBt*PoXn}^va`%==2)R7{y|F)^pZXD7l1z=cy1a zEr4B*gRnDv!gU&c5XEji>WI>u*a=cbwwwyr+`5X=u3-4=NzE=hZ7+UUBPER+*%DQf zAT9kU@RXJmy&y`c@pc>sej-%T;|aOq=;rM-uHG8IzjV6t<6pi!{%Yy9k?PTx+vu?j zBcHKgWJwGT3fnIzo4@(o!dC`=*L$|-K0(f5^vG`O;pu`NIit*6K9d{l+hdtSXZjBe zoim0Cd#w!V!M=nOmqUe|WeoNW74k;9fj=bYWyL)BeCV`Ffj@b@u3FN*m6b5K78$hL zCG+5%fkSp_vLgGb&}w}$UHo%vr|l6s=-y63p31=DQ=Z!ypzbV%Yzj6{B7{eY3A%TC~{`EIt%*;ySU*dC%_laBjqm}3-S~+|b_cql!7hJ5E_N6Byf6mbljct0o_T`QJj%RP%wrOBq^5Z< zDUqKho=R@r_<7G?{+)cMrF#XEcjs;+XGWJ>Z84#(=HVcuAD4GZMV~&F5orBUedDW8 z>rfg|?;xgKKrVrsJykk27*k9um-5Ctcsi|ZMwoZmB>G`gt za;dV+*U4MBq+=`Ub3ZPqOAiXN=@qw7Axd$57+<9AkVt7hQsQ0iOY>O}O+ i?>?hnXJ!u{BlUidftCDUbThdMzsG`qKivPf0{;ORA)K55 diff --git a/CS2-SimpleAdmin/Api/CS2_SimpleAdminApi.cs b/CS2-SimpleAdmin/Api/CS2_SimpleAdminApi.cs index 4729e28..56c1b7f 100644 --- a/CS2-SimpleAdmin/Api/CS2_SimpleAdminApi.cs +++ b/CS2-SimpleAdmin/Api/CS2_SimpleAdminApi.cs @@ -1,4 +1,5 @@ using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Commands; using CounterStrikeSharp.API.Modules.Commands; using CounterStrikeSharp.API.Modules.Entities; using CS2_SimpleAdmin.Managers; @@ -13,7 +14,7 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi if (!player.UserId.HasValue) throw new KeyNotFoundException("Player with specific UserId not found"); - return CS2_SimpleAdmin.PlayersInfo[player.UserId.Value]; + return CS2_SimpleAdmin.PlayersInfo[player.SteamID]; } public string GetConnectionString() => CS2_SimpleAdmin.Instance.DbConnectionString; @@ -28,6 +29,7 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi public event Action? OnPlayerPenaltied; public event Action? OnPlayerPenaltiedAdded; public event Action? OnAdminShowActivity; + public event Action? OnAdminToggleSilent; public void OnPlayerPenaltiedEvent(PlayerInfo player, PlayerInfo? admin, PenaltyType penaltyType, string reason, int duration, int? penaltyId) => OnPlayerPenaltied?.Invoke(player, admin, penaltyType, reason, duration, penaltyId, CS2_SimpleAdmin.ServerId); @@ -37,6 +39,8 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi public void OnAdminShowActivityEvent(string messageKey, string? callerName = null, bool dontPublish = false, params object[] messageArgs) => OnAdminShowActivity?.Invoke(messageKey, callerName, dontPublish, messageArgs); + public void OnAdminToggleSilentEvent(int slot, bool status) => OnAdminToggleSilent?.Invoke(slot, status); + public void IssuePenalty(CCSPlayerController player, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1) { switch (penaltyType) @@ -123,8 +127,42 @@ public class CS2_SimpleAdminApi : ICS2_SimpleAdminApi public bool IsAdminSilent(CCSPlayerController player) { return CS2_SimpleAdmin.SilentPlayers.Contains(player.Slot); + } + + public HashSet ListSilentAdminsSlots() + { + return CS2_SimpleAdmin.SilentPlayers; } + public void RegisterCommand(string name, string? description, CommandInfo.CommandCallback callback) + { + if (string.IsNullOrWhiteSpace(name)) + throw new ArgumentException("Command name cannot be null or empty.", nameof(name)); + + ArgumentNullException.ThrowIfNull(callback); + + var definition = new CommandDefinition(name, description ?? "No description", callback); + if (!RegisterCommands._commandDefinitions.TryGetValue(name, out var list)) + { + list = new List(); + RegisterCommands._commandDefinitions[name] = list; + } + + list.Add(definition); + } + + public void UnRegisterCommand(string commandName) + { + var definitions = RegisterCommands._commandDefinitions[commandName]; + if (definitions.Count == 0) + return; + + foreach (var definition in definitions) + { + CS2_SimpleAdmin.Instance.RemoveCommand(commandName, definition.Callback); + } + } + public void ShowAdminActivity(string messageKey, string? callerName = null, bool dontPublish = false, params object[] messageArgs) { Helper.ShowAdminActivity(messageKey, callerName, dontPublish, messageArgs); diff --git a/CS2-SimpleAdmin/CS2-SimpleAdmin.cs b/CS2-SimpleAdmin/CS2-SimpleAdmin.cs index 2a9a98e..bdcecbc 100644 --- a/CS2-SimpleAdmin/CS2-SimpleAdmin.cs +++ b/CS2-SimpleAdmin/CS2-SimpleAdmin.cs @@ -1,9 +1,12 @@ -using CounterStrikeSharp.API.Core; +using System.Reflection; +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes; using CounterStrikeSharp.API.Core.Capabilities; using CounterStrikeSharp.API.Modules.Commands; using CounterStrikeSharp.API.Modules.Commands.Targeting; using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions; +using CS2_SimpleAdmin.Database; using CS2_SimpleAdmin.Managers; using CS2_SimpleAdminApi; using Microsoft.Extensions.Logging; @@ -19,47 +22,55 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)"); public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)"; public override string ModuleAuthor => "daffyy & Dliix66"; - public override string ModuleVersion => "1.7.7-alpha"; + public override string ModuleVersion => "1.7.7-alpha-9"; public override void Load(bool hotReload) { Instance = this; - - RegisterEvents(); - + if (hotReload) { ServerLoaded = false; _serverLoading = false; + CacheManager?.Dispose(); CacheManager = new CacheManager(); - OnGameServerSteamAPIActivated(); + + // OnGameServerSteamAPIActivated(); OnMapStart(string.Empty); - AddTimer(2.0f, () => + AddTimer(6.0f, () => { - if (Database == null) return; + if (DatabaseProvider == null) return; - var playerManager = new PlayerManager(); - - foreach (var player in Helper.GetValidPlayers()) + PlayersInfo.Clear(); + CachedPlayers.Clear(); + BotPlayers.Clear(); + + foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsHLTV).ToArray()) { - playerManager.LoadPlayerData(player); + if (!player.IsBot) + PlayerManager.LoadPlayerData(player, true); + else + BotPlayers.Add(player); }; }); + + PlayersTimer?.Kill(); + PlayersTimer = null; } _cBasePlayerControllerSetPawnFunc = new MemoryFunctionVoid(GameData.GetSignature("CBasePlayerController_SetPawn")); SimpleAdminApi = new Api.CS2_SimpleAdminApi(); Capabilities.RegisterPluginCapability(ICS2_SimpleAdminApi.PluginCapability, () => SimpleAdminApi); - new PlayerManager().CheckPlayersTimer(); + PlayersTimer?.Kill(); + PlayersTimer = null; + PlayerManager.CheckPlayersTimer(); } public override void OnAllPluginsLoaded(bool hotReload) { - AddTimer(5.0f, () => ReloadAdmins(null)); - try { MenuApi = MenuCapability.Get(); @@ -67,51 +78,141 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig ReloadAdmins(null)); + RegisterEvents(); RegisterCommands.InitializeCommands(); + + if (!CoreConfig.UnlockConCommands) + { + _logger?.LogError( + $"⚠️ Warning: 'UnlockConCommands' is disabled in core.json. " + + $"Players will not be automatically banned when kicked and will be able " + + $"to rejoin the server for 60 seconds. " + + $"To enable instant banning, set 'UnlockConCommands': true" + ); + _logger?.LogError( + $"⚠️ Warning: 'UnlockConCommands' is disabled in core.json. " + + $"Players will not be automatically banned when kicked and will be able " + + $"to rejoin the server for 60 seconds. " + + $"To enable instant banning, set 'UnlockConCommands': true" + ); + } } public void OnConfigParsed(CS2_SimpleAdminConfig config) { - Instance = this; - _logger = Logger; + if (System.Diagnostics.Debugger.IsAttached) + Environment.FailFast(":(!"); - if (config.DatabaseHost.Length < 1 || config.DatabaseName.Length < 1 || config.DatabaseUser.Length < 1) + Helper.UpdateConfig(config); + + _logger = Logger; + Config = config; + + bool missing = false; + var cssPath = Path.Combine(Server.GameDirectory, "csgo", "addons", "counterstrikesharp"); + var pluginsPath = Path.Combine(cssPath, "plugins"); + var sharedPath = Path.Combine(cssPath, "shared"); + + foreach (var plugin in _requiredPlugins) { - throw new Exception("[CS2-SimpleAdmin] You need to setup Database credentials in config!"); + var pluginDirPath = Path.Combine(pluginsPath, plugin); + var pluginDllPath = Path.Combine(pluginDirPath, $"{plugin}.dll"); + + if (!Directory.Exists(pluginDirPath)) + { + _logger?.LogError( + $"❌ Plugin directory '{plugin}' missing at: {pluginDirPath}" + ); + missing = true; + } + + if (!File.Exists(pluginDllPath)) + { + _logger?.LogError( + $"❌ Plugin DLL '{plugin}.dll' missing at: {pluginDllPath}" + ); + missing = true; + } + } + + foreach (var shared in _requiredShared) + { + var sharedDirPath = Path.Combine(sharedPath, shared); + var sharedDllPath = Path.Combine(sharedDirPath, $"{shared}.dll"); + + if (!Directory.Exists(sharedDirPath)) + { + _logger?.LogError( + $"❌ Shared library directory '{shared}' missing at: {sharedDirPath}" + ); + missing = true; + } + + if (!File.Exists(sharedDllPath)) + { + _logger?.LogError( + $"❌ Shared library DLL '{shared}.dll' missing at: {sharedDllPath}" + ); + missing = true; + } } - MySqlConnectionStringBuilder builder = new() + if (missing) + Server.ExecuteCommand($"css_plugins unload {ModuleName}"); + + Instance = this; + + if (Config.DatabaseConfig.DatabaseType.Contains("mysql", StringComparison.CurrentCultureIgnoreCase)) + { + if (string.IsNullOrWhiteSpace(config.DatabaseConfig.DatabaseHost) || + string.IsNullOrWhiteSpace(config.DatabaseConfig.DatabaseName) || + string.IsNullOrWhiteSpace(config.DatabaseConfig.DatabaseUser)) { - Server = config.DatabaseHost, - Database = config.DatabaseName, - UserID = config.DatabaseUser, - Password = config.DatabasePassword, - Port = (uint)config.DatabasePort, - SslMode = Enum.TryParse(config.DatabaseSSlMode, true, out MySqlSslMode sslMode) ? sslMode : MySqlSslMode.Preferred, + throw new Exception("[CS2-SimpleAdmin] You need to setup MySQL credentials in config!"); + } + + var builder = new MySqlConnectionStringBuilder() + { + Server = config.DatabaseConfig.DatabaseHost, + Database = config.DatabaseConfig.DatabaseName, + UserID = config.DatabaseConfig.DatabaseUser, + Password = config.DatabaseConfig.DatabasePassword, + Port = (uint)config.DatabaseConfig.DatabasePort, + SslMode = Enum.TryParse(config.DatabaseConfig.DatabaseSSlMode, true, out MySqlSslMode sslMode) + ? sslMode + : MySqlSslMode.Preferred, Pooling = true, - MinimumPoolSize = 0, - MaximumPoolSize = 640, }; DbConnectionString = builder.ConnectionString; - Database = new Database.Database(DbConnectionString); - - if (!Database.CheckDatabaseConnection(out var exception)) + DatabaseProvider = new MySqlDatabaseProvider(DbConnectionString); + } + else + { + if (string.IsNullOrWhiteSpace(config.DatabaseConfig.SqliteFilePath)) { - if (exception != null) - Logger.LogError("Problem with database connection! \n{exception}", exception); - - Unload(false); - return; + throw new Exception("[CS2-SimpleAdmin] You need to specify SQLite file path in config!"); } - - Task.Run(() => Database.DatabaseMigration()); - Config = config; - Helper.UpdateConfig(config); + DatabaseProvider = new SqliteDatabaseProvider(ModuleDirectory + "/" + config.DatabaseConfig.SqliteFilePath); + } + var (success, exception) = Task.Run(() => DatabaseProvider.CheckConnectionAsync()).GetAwaiter().GetResult(); + if (!success) + { + if (exception != null) + Logger.LogError("Problem with database connection! \n{exception}", exception); + + Unload(false); + return; + } + + Task.Run(() => DatabaseProvider.DatabaseMigrationAsync()); + if (!Directory.Exists(ModuleDirectory + "/data")) { Directory.CreateDirectory(ModuleDirectory + "/data"); @@ -122,33 +223,32 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig await PluginInfo.CheckVersion(ModuleVersion, _logger)); + Task.Run(async () => await PluginInfo.CheckVersion(ModuleVersion, Logger)); - PermissionManager = new PermissionManager(Database); - BanManager = new BanManager(Database); - MuteManager = new MuteManager(Database); - WarnManager = new WarnManager(Database); + PermissionManager = new PermissionManager(DatabaseProvider); + BanManager = new BanManager(DatabaseProvider); + MuteManager = new MuteManager(DatabaseProvider); + WarnManager = new WarnManager(DatabaseProvider); } - private static TargetResult? GetTarget(CommandInfo command) + private static TargetResult? GetTarget(CommandInfo command, int argument = 1) { - var matches = command.GetArgTargetResult(1); + var matches = command.GetArgTargetResult(argument); if (!matches.Any()) { - command.ReplyToCommand($"Target {command.GetArg(1)} not found."); + command.ReplyToCommand($"Target {command.GetArg(argument)} not found."); return null; } - if (command.GetArg(1).StartsWith('@')) + if (command.GetArg(argument).StartsWith('@')) return matches; if (matches.Count() == 1) return matches; - command.ReplyToCommand($"Multiple targets found for \"{command.GetArg(1)}\"."); + command.ReplyToCommand($"Multiple targets found for \"{command.GetArg(argument)}\"."); return null; } @@ -156,5 +256,13 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfigenable true true + - - - + + none + false + true + false + false + + + + + none + runtime + compile; build; native; contentfiles; analyzers; buildtransitive + + - - + + + + + + + + + + + + + + - - PreserveNewest - - + PreserveNewest - + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + PreserveNewest @@ -45,7 +151,8 @@ 3rd_party\MenuManagerApi.dll + False - + diff --git a/CS2-SimpleAdmin/Commands/RegisterCommands.cs b/CS2-SimpleAdmin/Commands/RegisterCommands.cs index 625ad4e..d323e29 100644 --- a/CS2-SimpleAdmin/Commands/RegisterCommands.cs +++ b/CS2-SimpleAdmin/Commands/RegisterCommands.cs @@ -1,89 +1,99 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json; using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Commands; using CounterStrikeSharp.API.Modules.Commands; using Microsoft.Extensions.Logging; -using Newtonsoft.Json; namespace CS2_SimpleAdmin; public static class RegisterCommands { + internal static readonly Dictionary> _commandDefinitions = + new(StringComparer.InvariantCultureIgnoreCase); + private delegate void CommandCallback(CCSPlayerController? caller, CommandInfo.CommandCallback callback); private static readonly string CommandsPath = Path.Combine(CS2_SimpleAdmin.ConfigDirectory, "Commands.json"); private static readonly List CommandMappings = [ - new CommandMapping("css_ban", CS2_SimpleAdmin.Instance.OnBanCommand), - new CommandMapping("css_addban", CS2_SimpleAdmin.Instance.OnAddBanCommand), - new CommandMapping("css_banip", CS2_SimpleAdmin.Instance.OnBanIpCommand), - new CommandMapping("css_unban", CS2_SimpleAdmin.Instance.OnUnbanCommand), - new CommandMapping("css_warn", CS2_SimpleAdmin.Instance.OnWarnCommand), - new CommandMapping("css_unwarn", CS2_SimpleAdmin.Instance.OnUnwarnCommand), + new("css_ban", CS2_SimpleAdmin.Instance.OnBanCommand), + new("css_addban", CS2_SimpleAdmin.Instance.OnAddBanCommand), + new("css_banip", CS2_SimpleAdmin.Instance.OnBanIpCommand), + new("css_unban", CS2_SimpleAdmin.Instance.OnUnbanCommand), + new("css_warn", CS2_SimpleAdmin.Instance.OnWarnCommand), + new("css_unwarn", CS2_SimpleAdmin.Instance.OnUnwarnCommand), - new CommandMapping("css_asay", CS2_SimpleAdmin.Instance.OnAdminToAdminSayCommand), - new CommandMapping("css_cssay", CS2_SimpleAdmin.Instance.OnAdminCustomSayCommand), - new CommandMapping("css_say", CS2_SimpleAdmin.Instance.OnAdminSayCommand), - new CommandMapping("css_psay", CS2_SimpleAdmin.Instance.OnAdminPrivateSayCommand), - new CommandMapping("css_csay", CS2_SimpleAdmin.Instance.OnAdminCenterSayCommand), - new CommandMapping("css_hsay", CS2_SimpleAdmin.Instance.OnAdminHudSayCommand), + new("css_asay", CS2_SimpleAdmin.Instance.OnAdminToAdminSayCommand), + new("css_cssay", CS2_SimpleAdmin.Instance.OnAdminCustomSayCommand), + new("css_say", CS2_SimpleAdmin.Instance.OnAdminSayCommand), + new("css_psay", CS2_SimpleAdmin.Instance.OnAdminPrivateSayCommand), + new("css_csay", CS2_SimpleAdmin.Instance.OnAdminCenterSayCommand), + new("css_hsay", CS2_SimpleAdmin.Instance.OnAdminHudSayCommand), - new CommandMapping("css_penalties", CS2_SimpleAdmin.Instance.OnPenaltiesCommand), - new CommandMapping("css_admin", CS2_SimpleAdmin.Instance.OnAdminCommand), - new CommandMapping("css_adminhelp", CS2_SimpleAdmin.Instance.OnAdminHelpCommand), - new CommandMapping("css_addadmin", CS2_SimpleAdmin.Instance.OnAddAdminCommand), - new CommandMapping("css_deladmin", CS2_SimpleAdmin.Instance.OnDelAdminCommand), - new CommandMapping("css_addgroup", CS2_SimpleAdmin.Instance.OnAddGroup), - new CommandMapping("css_delgroup", CS2_SimpleAdmin.Instance.OnDelGroupCommand), - new CommandMapping("css_reloadadmins", CS2_SimpleAdmin.Instance.OnRelAdminCommand), - new CommandMapping("css_reloadbans", CS2_SimpleAdmin.Instance.OnRelBans), - new CommandMapping("css_hide", CS2_SimpleAdmin.Instance.OnHideCommand), - new CommandMapping("css_hidecomms", CS2_SimpleAdmin.Instance.OnHideCommsCommand), - new CommandMapping("css_who", CS2_SimpleAdmin.Instance.OnWhoCommand), - new CommandMapping("css_disconnected", CS2_SimpleAdmin.Instance.OnDisconnectedCommand), - new CommandMapping("css_warns", CS2_SimpleAdmin.Instance.OnWarnsCommand), - new CommandMapping("css_players", CS2_SimpleAdmin.Instance.OnPlayersCommand), - new CommandMapping("css_kick", CS2_SimpleAdmin.Instance.OnKickCommand), - new CommandMapping("css_map", CS2_SimpleAdmin.Instance.OnMapCommand), - new CommandMapping("css_wsmap", CS2_SimpleAdmin.Instance.OnWorkshopMapCommand), - new CommandMapping("css_cvar", CS2_SimpleAdmin.Instance.OnCvarCommand), - new CommandMapping("css_rcon", CS2_SimpleAdmin.Instance.OnRconCommand), - new CommandMapping("css_rr", CS2_SimpleAdmin.Instance.OnRestartCommand), + new("css_penalties", CS2_SimpleAdmin.Instance.OnPenaltiesCommand), + new("css_admin", CS2_SimpleAdmin.Instance.OnAdminCommand), + new("css_adminhelp", CS2_SimpleAdmin.Instance.OnAdminHelpCommand), + new("css_addadmin", CS2_SimpleAdmin.Instance.OnAddAdminCommand), + new("css_deladmin", CS2_SimpleAdmin.Instance.OnDelAdminCommand), + new("css_addgroup", CS2_SimpleAdmin.Instance.OnAddGroup), + new("css_delgroup", CS2_SimpleAdmin.Instance.OnDelGroupCommand), + new("css_reloadadmins", CS2_SimpleAdmin.Instance.OnRelAdminCommand), + new("css_reloadbans", CS2_SimpleAdmin.Instance.OnRelBans), + new("css_hide", CS2_SimpleAdmin.Instance.OnHideCommand), + new("css_hidecomms", CS2_SimpleAdmin.Instance.OnHideCommsCommand), + new("css_who", CS2_SimpleAdmin.Instance.OnWhoCommand), + new("css_disconnected", CS2_SimpleAdmin.Instance.OnDisconnectedCommand), + new("css_warns", CS2_SimpleAdmin.Instance.OnWarnsCommand), + new("css_players", CS2_SimpleAdmin.Instance.OnPlayersCommand), + new("css_kick", CS2_SimpleAdmin.Instance.OnKickCommand), + new("css_map", CS2_SimpleAdmin.Instance.OnMapCommand), + new("css_wsmap", CS2_SimpleAdmin.Instance.OnWorkshopMapCommand), + new("css_cvar", CS2_SimpleAdmin.Instance.OnCvarCommand), + new("css_rcon", CS2_SimpleAdmin.Instance.OnRconCommand), + new("css_rr", CS2_SimpleAdmin.Instance.OnRestartCommand), - new CommandMapping("css_gag", CS2_SimpleAdmin.Instance.OnGagCommand), - new CommandMapping("css_addgag", CS2_SimpleAdmin.Instance.OnAddGagCommand), - new CommandMapping("css_ungag", CS2_SimpleAdmin.Instance.OnUngagCommand), - new CommandMapping("css_mute", CS2_SimpleAdmin.Instance.OnMuteCommand), - new CommandMapping("css_addmute", CS2_SimpleAdmin.Instance.OnAddMuteCommand), - new CommandMapping("css_unmute", CS2_SimpleAdmin.Instance.OnUnmuteCommand), - new CommandMapping("css_silence", CS2_SimpleAdmin.Instance.OnSilenceCommand), - new CommandMapping("css_addsilence", CS2_SimpleAdmin.Instance.OnAddSilenceCommand), - new CommandMapping("css_unsilence", CS2_SimpleAdmin.Instance.OnUnsilenceCommand), + new("css_gag", CS2_SimpleAdmin.Instance.OnGagCommand), + new("css_addgag", CS2_SimpleAdmin.Instance.OnAddGagCommand), + new("css_ungag", CS2_SimpleAdmin.Instance.OnUngagCommand), + new("css_mute", CS2_SimpleAdmin.Instance.OnMuteCommand), + new("css_addmute", CS2_SimpleAdmin.Instance.OnAddMuteCommand), + new("css_unmute", CS2_SimpleAdmin.Instance.OnUnmuteCommand), + new("css_silence", CS2_SimpleAdmin.Instance.OnSilenceCommand), + new("css_addsilence", CS2_SimpleAdmin.Instance.OnAddSilenceCommand), + new("css_unsilence", CS2_SimpleAdmin.Instance.OnUnsilenceCommand), - new CommandMapping("css_vote", CS2_SimpleAdmin.Instance.OnVoteCommand), + new("css_vote", CS2_SimpleAdmin.Instance.OnVoteCommand), - new CommandMapping("css_noclip", CS2_SimpleAdmin.Instance.OnNoclipCommand), - new CommandMapping("css_freeze", CS2_SimpleAdmin.Instance.OnFreezeCommand), - new CommandMapping("css_unfreeze", CS2_SimpleAdmin.Instance.OnUnfreezeCommand), - new CommandMapping("css_godmode", CS2_SimpleAdmin.Instance.OnGodCommand), + new("css_noclip", CS2_SimpleAdmin.Instance.OnNoclipCommand), + new("css_freeze", CS2_SimpleAdmin.Instance.OnFreezeCommand), + new("css_unfreeze", CS2_SimpleAdmin.Instance.OnUnfreezeCommand), + new("css_godmode", CS2_SimpleAdmin.Instance.OnGodCommand), - new CommandMapping("css_slay", CS2_SimpleAdmin.Instance.OnSlayCommand), - new CommandMapping("css_slap", CS2_SimpleAdmin.Instance.OnSlapCommand), - new CommandMapping("css_give", CS2_SimpleAdmin.Instance.OnGiveCommand), - new CommandMapping("css_strip", CS2_SimpleAdmin.Instance.OnStripCommand), - new CommandMapping("css_hp", CS2_SimpleAdmin.Instance.OnHpCommand), - new CommandMapping("css_speed", CS2_SimpleAdmin.Instance.OnSpeedCommand), - new CommandMapping("css_gravity", CS2_SimpleAdmin.Instance.OnGravityCommand), - new CommandMapping("css_resize", CS2_SimpleAdmin.Instance.OnResizeCommand), - new CommandMapping("css_money", CS2_SimpleAdmin.Instance.OnMoneyCommand), - new CommandMapping("css_team", CS2_SimpleAdmin.Instance.OnTeamCommand), - new CommandMapping("css_rename", CS2_SimpleAdmin.Instance.OnRenameCommand), - new CommandMapping("css_prename", CS2_SimpleAdmin.Instance.OnPrenameCommand), - new CommandMapping("css_respawn", CS2_SimpleAdmin.Instance.OnRespawnCommand), - new CommandMapping("css_tp", CS2_SimpleAdmin.Instance.OnGotoCommand), - new CommandMapping("css_bring", CS2_SimpleAdmin.Instance.OnBringCommand), - new CommandMapping("css_pluginsmanager", CS2_SimpleAdmin.Instance.OnPluginManagerCommand), - new CommandMapping("css_adminvoice", CS2_SimpleAdmin.Instance.OnAdminVoiceCommand) + new("css_slay", CS2_SimpleAdmin.Instance.OnSlayCommand), + new("css_slap", CS2_SimpleAdmin.Instance.OnSlapCommand), + new("css_give", CS2_SimpleAdmin.Instance.OnGiveCommand), + new("css_strip", CS2_SimpleAdmin.Instance.OnStripCommand), + new("css_hp", CS2_SimpleAdmin.Instance.OnHpCommand), + new("css_speed", CS2_SimpleAdmin.Instance.OnSpeedCommand), + new("css_gravity", CS2_SimpleAdmin.Instance.OnGravityCommand), + new("css_resize", CS2_SimpleAdmin.Instance.OnResizeCommand), + new("css_money", CS2_SimpleAdmin.Instance.OnMoneyCommand), + new("css_team", CS2_SimpleAdmin.Instance.OnTeamCommand), + new("css_rename", CS2_SimpleAdmin.Instance.OnRenameCommand), + new("css_prename", CS2_SimpleAdmin.Instance.OnPrenameCommand), + new("css_respawn", CS2_SimpleAdmin.Instance.OnRespawnCommand), + new("css_tp", CS2_SimpleAdmin.Instance.OnGotoCommand), + new("css_bring", CS2_SimpleAdmin.Instance.OnBringCommand), + new("css_pluginsmanager", CS2_SimpleAdmin.Instance.OnPluginManagerCommand), + new("css_adminvoice", CS2_SimpleAdmin.Instance.OnAdminVoiceCommand) ]; + /// + /// Initializes command registration. + /// If the commands config file does not exist, creates it and then recurses to register commands. + /// Otherwise, directly registers commands from the configuration. + /// public static void InitializeCommands() { if (!File.Exists(CommandsPath)) @@ -97,6 +107,10 @@ public static class RegisterCommands } } + /// + /// Creates the default commands configuration JSON file with built-in commands and aliases. + /// + [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] private static void CreateConfig() { var commands = new CommandsConfig @@ -170,14 +184,26 @@ public static class RegisterCommands } }; - var json = JsonConvert.SerializeObject(commands, Formatting.Indented); + var options = new JsonSerializerOptions + { + WriteIndented = true, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }; + + var json = JsonSerializer.Serialize(commands, options); File.WriteAllText(CommandsPath, json); } - + + /// + /// Reads the command configuration JSON file and registers all commands and their aliases with their callbacks. + /// Also registers any custom commands previously stored. + /// + [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] private static void Register() { var json = File.ReadAllText(CommandsPath); - var commandsConfig = JsonConvert.DeserializeObject(json); + var commandsConfig = JsonSerializer.Deserialize(json, + new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); if (commandsConfig?.Commands == null) return; @@ -195,19 +221,37 @@ public static class RegisterCommands { CS2_SimpleAdmin.Instance.AddCommand(alias, "", mapping.Callback); } - } + } + + foreach (var (name, definitions) in RegisterCommands._commandDefinitions) + { + foreach (var definition in definitions) + { + CS2_SimpleAdmin._logger?.LogInformation($"Registering custom command: `{name}`"); + CS2_SimpleAdmin.Instance.AddCommand(name, definition.Description, definition.Callback); + } + } } + /// + /// Represents the JSON configuration structure for commands. + /// private class CommandsConfig { public Dictionary? Commands { get; init; } } + /// + /// Represents a command definition containing a list of aliases. + /// private class Command { public string[]? Aliases { get; init; } } + /// + /// Maps a command key to its respective command callback handler. + /// private class CommandMapping(string commandKey, CommandInfo.CommandCallback callback) { public string CommandKey { get; } = commandKey; diff --git a/CS2-SimpleAdmin/Commands/basebans.cs b/CS2-SimpleAdmin/Commands/basebans.cs index f71e757..7b15b55 100644 --- a/CS2-SimpleAdmin/Commands/basebans.cs +++ b/CS2-SimpleAdmin/Commands/basebans.cs @@ -12,6 +12,11 @@ namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { + /// + /// Handles the 'ban' command, allowing admins to ban one or more valid connected players. + /// + /// The player issuing the ban command, or null for console. + /// The command information including arguments. [RequiresPermissions("@css/ban")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnBanCommand(CCSPlayerController? caller, CommandInfo command) @@ -51,9 +56,20 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Core logic to ban a specific player, scheduling database updates, notifications, and kicks. + /// + /// The player issuing the ban, or null for console. + /// The player to be banned. + /// Ban duration in minutes; 0 means permanent. + /// Reason for the ban. + /// Optional caller name string. If null, defaults to player name or console. + /// Optional BanManager to handle ban persistence. + /// Optional command info object for logging. + /// If true, suppresses command logging. internal void Ban(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, BanManager? banManager = null, CommandInfo? command = null, bool silent = false) { - if (Database == null || !player.IsValid || !player.UserId.HasValue) return; + if (DatabaseProvider == null || !player.IsValid || !player.UserId.HasValue) return; if (!caller.CanTarget(player)) return; if (!CheckValidBan(caller, time)) return; @@ -63,14 +79,17 @@ public partial class CS2_SimpleAdmin : (_localizer?["sa_console"] ?? "Console"); // Get player and admin information - var playerInfo = PlayersInfo[player.UserId.Value]; - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var playerInfo = PlayersInfo[player.SteamID]; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Asynchronously handle banning logic Task.Run(async () => { int? penaltyId = await BanManager.BanPlayer(playerInfo, adminInfo, reason, time); - SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Ban, reason, time, penaltyId); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Ban, reason, time, penaltyId); + }); }); // Determine message keys and arguments based on ban time @@ -114,6 +133,14 @@ public partial class CS2_SimpleAdmin Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Ban, _localizer); } + /// + /// Adds a ban for a player by their SteamID, including offline bans. + /// + /// The player issuing the ban command. + /// SteamID of the player to ban. + /// Ban duration in minutes (0 means permanent). + /// Reason for banning. + /// Optional ban manager for database operations. internal void AddBan(CCSPlayerController? caller, SteamID steamid, int time, string reason, BanManager? banManager = null) { // Set default caller name if not provided @@ -121,15 +148,12 @@ public partial class CS2_SimpleAdmin ? caller.PlayerName : (_localizer?["sa_console"] ?? "Console"); - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; - - var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString()); - + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; + var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64); if (player != null && player.IsValid) { if (!caller.CanTarget(player)) return; - Ban(caller, player, time, reason, callerName, silent: true); //command.ReplyToCommand($"Banned player {player.PlayerName}."); } @@ -137,23 +161,31 @@ public partial class CS2_SimpleAdmin { if (!caller.CanTarget(steamid)) return; - // Asynchronous ban operation if player is not online or not found Task.Run(async () => { - int? penaltyId = await BanManager.AddBanBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Ban, reason, time, penaltyId); + int? penaltyId = await BanManager.AddBanBySteamid(steamid.SteamId64, adminInfo, reason, time); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Ban, reason, time, + penaltyId); + }); }); Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Ban, _localizer); } } + /// + /// Handles banning a player by specifying their SteamID via command. + /// + /// The player issuing the command, or null if console. + /// Command information including arguments (SteamID, time, reason). [RequiresPermissions("@css/ban")] [CommandHelper(minArgs: 1, usage: " [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnAddBanCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerName = caller?.PlayerName ?? _localizer?["sa_console"] ?? "Console"; if (command.ArgCount < 2 || string.IsNullOrEmpty(command.GetArg(1))) return; if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null) @@ -162,7 +194,7 @@ public partial class CS2_SimpleAdmin return; } - var steamid = steamId.SteamId64.ToString(); + var steamid = steamId.SteamId64; var reason = command.ArgCount >= 3 ? string.Join(" ", Enumerable.Range(3, command.ArgCount - 3).Select(command.GetArg)).Trim() : _localizer?["sa_unknown"] ?? "Unknown"; @@ -170,15 +202,13 @@ public partial class CS2_SimpleAdmin reason = string.IsNullOrWhiteSpace(reason) ? _localizer?["sa_unknown"] ?? "Unknown" : reason; var time = Math.Max(0, Helper.ParsePenaltyTime(command.GetArg(2))); - if (!CheckValidBan(caller, time)) return; var adminInfo = caller != null && caller.UserId.HasValue - ? PlayersInfo[caller.UserId.Value] + ? PlayersInfo[caller.SteamID] : null; var player = Helper.GetPlayerFromSteamid64(steamid); - if (player != null && player.IsValid) { if (!caller.CanTarget(player)) @@ -196,10 +226,14 @@ public partial class CS2_SimpleAdmin Task.Run(async () => { int? penaltyId = await BanManager.AddBanBySteamid(steamid, adminInfo, reason, time); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Ban, reason, time, penaltyId); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Ban, reason, time, + penaltyId); + }); }); - Helper.SendDiscordPenaltyMessage(caller, steamid, reason, time, PenaltyType.Ban, _localizer); + Helper.SendDiscordPenaltyMessage(caller, steamid.ToString(), reason, time, PenaltyType.Ban, _localizer); command.ReplyToCommand($"Player with steamid {steamid} is not online. Ban has been added offline."); } @@ -210,11 +244,16 @@ public partial class CS2_SimpleAdmin Server.ExecuteCommand($"banid 1 {steamId.SteamId3}"); } + /// + /// Handles banning a player by their IP address, supporting offline banning if player is not online. + /// + /// The player issuing the ban command. + /// The command containing the IP, time, and reason arguments. [RequiresPermissions("@css/ban")] [CommandHelper(minArgs: 1, usage: " [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnBanIpCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerName = caller?.PlayerName ?? _localizer?["sa_console"] ?? "Console"; if (command.ArgCount < 2 || string.IsNullOrEmpty(command.GetArg(1))) return; var ipAddress = command.GetArg(1); @@ -236,17 +275,20 @@ public partial class CS2_SimpleAdmin if (!CheckValidBan(caller, time)) return; var adminInfo = caller != null && caller.UserId.HasValue - ? PlayersInfo[caller.UserId.Value] + ? PlayersInfo[caller.SteamID] : null; - var player = Helper.GetPlayerFromIp(ipAddress); - - if (player != null && player.IsValid) + var players = Helper.GetPlayerFromIp(ipAddress); + if (players.Count >= 1) { - if (!caller.CanTarget(player)) - return; + foreach (var player in players) + { + if (player == null || !player.IsValid) continue; + if (!caller.CanTarget(player)) + return; - Ban(caller, player, time, reason, callerName, silent: true); + Ban(caller, player, time, reason, callerName, silent: true); + } } else { @@ -262,6 +304,12 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Checks whether the ban duration is valid based on the caller's permissions and configured limits. + /// + /// The player issuing the ban command. + /// Requested ban duration in minutes. + /// True if ban duration is valid; otherwise, false. private bool CheckValidBan(CCSPlayerController? caller, int duration) { if (caller == null) return true; @@ -280,14 +328,17 @@ public partial class CS2_SimpleAdmin return false; } + /// + /// Handles unbanning players by pattern (steamid, name, or IP). + /// + /// The player issuing the unban command. + /// Command containing target pattern and optional reason. [RequiresPermissions("@css/unban")] [CommandHelper(minArgs: 1, usage: " [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnUnbanCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; - + if (DatabaseProvider == null) return; var callerSteamId = caller?.SteamID.ToString() ?? _localizer?["sa_console"] ?? "Console"; - if (command.GetArg(1).Length <= 1) { command.ReplyToCommand($"Too short pattern to search."); @@ -300,19 +351,21 @@ public partial class CS2_SimpleAdmin : _localizer?["sa_unknown"] ?? "Unknown"; reason = string.IsNullOrWhiteSpace(reason) ? _localizer?["sa_unknown"] ?? "Unknown" : reason; - Task.Run(async () => await BanManager.UnbanPlayer(pattern, callerSteamId, reason)); - Helper.LogCommand(caller, command); - command.ReplyToCommand($"Unbanned player with pattern {pattern}."); } + /// + /// Handles warning players, supporting multiple targets and warning durations. + /// + /// The player issuing the warn command. + /// The command containing target, time, and reason parameters. [RequiresPermissions("@css/kick")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnWarnCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) + if (DatabaseProvider == null) return; var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; if (command.ArgCount < 2) @@ -327,8 +380,6 @@ public partial class CS2_SimpleAdmin return; } - WarnManager warnManager = new(Database); - var time = Math.Max(0, Helper.ParsePenaltyTime(command.GetArg(2))); var reason = command.ArgCount >= 3 ? string.Join(" ", Enumerable.Range(3, command.ArgCount - 3).Select(command.GetArg)).Trim() @@ -340,14 +391,23 @@ public partial class CS2_SimpleAdmin { if (caller!.CanTarget(player)) { - Warn(caller, player, time, reason, callerName, warnManager, command); + Warn(caller, player, time, reason, callerName, command); } }); } - internal void Warn(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, WarnManager? warnManager = null, CommandInfo? command = null) + /// + /// Issues a warning penalty to a specific player with optional duration and reason. + /// + /// The player issuing the warning. + /// The player to warn. + /// Duration of the warning in minutes. + /// Reason for the warning. + /// Optional display name of the caller. + /// Optional command info for logging. + internal void Warn(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, CommandInfo? command = null) { - if (Database == null || !player.IsValid || !player.UserId.HasValue) return; + if (DatabaseProvider == null || !player.IsValid || !player.UserId.HasValue) return; if (!caller.CanTarget(player)) return; if (!CheckValidBan(caller, time)) return; @@ -364,18 +424,21 @@ public partial class CS2_SimpleAdmin } // Get player and admin information - var playerInfo = PlayersInfo[player.UserId.Value]; - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var playerInfo = PlayersInfo[player.SteamID]; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Asynchronously handle warning logic Task.Run(async () => { - warnManager ??= new WarnManager(Database); - int? penaltyId = await warnManager.WarnPlayer(playerInfo, adminInfo, reason, time); - SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Warn, reason, time, penaltyId); + int? penaltyId = await WarnManager.WarnPlayer(playerInfo, adminInfo, reason, time); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Warn, reason, time, + penaltyId); + }); // Check for warn thresholds and execute punish command if applicable - var totalWarns = await warnManager.GetPlayerWarnsCount(player.SteamID.ToString()); + var totalWarns = await WarnManager.GetPlayerWarnsCount(player.SteamID); if (Config.WarnThreshold.Count > 0) { string? punishCommand = null; @@ -388,7 +451,7 @@ public partial class CS2_SimpleAdmin if (!string.IsNullOrEmpty(punishCommand)) { - await Server.NextFrameAsync(() => + await Server.NextWorldUpdateAsync(() => { Server.ExecuteCommand(punishCommand.Replace("USERID", playerInfo.UserId.ToString()).Replace("STEAMID64", playerInfo.SteamId?.ToString())); }); @@ -424,6 +487,14 @@ public partial class CS2_SimpleAdmin Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Warn, _localizer); } + /// + /// Adds a warning to a player by their SteamID, including support for offline players. + /// + /// The player issuing the warn command. + /// SteamID of the player to warn. + /// Warning duration in minutes. + /// Reason for the warning. + /// Optional warn manager instance. internal void AddWarn(CCSPlayerController? caller, SteamID steamid, int time, string reason, WarnManager? warnManager = null) { // Set default caller name if not provided @@ -431,9 +502,9 @@ public partial class CS2_SimpleAdmin ? caller.PlayerName : (_localizer?["sa_console"] ?? "Console"); - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; - var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString()); + var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64); if (player != null && player.IsValid) { @@ -451,11 +522,15 @@ public partial class CS2_SimpleAdmin // Asynchronous ban operation if player is not online or not found Task.Run(async () => { - int? penaltyId = await WarnManager.AddWarnBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Warn, reason, time, penaltyId); + int? penaltyId = await WarnManager.AddWarnBySteamid(steamid.SteamId64, adminInfo, reason, time); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Warn, reason, time, + penaltyId); + }); // Check for warn thresholds and execute punish command if applicable - var totalWarns = await WarnManager.GetPlayerWarnsCount(steamid.SteamId64.ToString()); + var totalWarns = await WarnManager.GetPlayerWarnsCount(steamid.SteamId64); if (Config.WarnThreshold.Count > 0) { string? punishCommand = null; @@ -468,7 +543,7 @@ public partial class CS2_SimpleAdmin if (!string.IsNullOrEmpty(punishCommand)) { - await Server.NextFrameAsync(() => + await Server.NextWorldUpdateAsync(() => { Server.ExecuteCommand(punishCommand.Replace("STEAMID64", steamid.SteamId64.ToString())); }); @@ -480,11 +555,16 @@ public partial class CS2_SimpleAdmin } } + /// + /// Handles removing a warning (unwarn) by a pattern string. + /// + /// The player issuing the unwarn command. + /// The command containing target pattern. [RequiresPermissions("@css/kick")] [CommandHelper(minArgs: 1, usage: "", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnUnwarnCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; if (command.GetArg(1).Length <= 1) { @@ -493,9 +573,7 @@ public partial class CS2_SimpleAdmin } var pattern = command.GetArg(1); - Task.Run(async () => await WarnManager.UnwarnPlayer(pattern)); - Helper.LogCommand(caller, command); command.ReplyToCommand($"Unwarned player with pattern {pattern}."); } diff --git a/CS2-SimpleAdmin/Commands/basechat.cs b/CS2-SimpleAdmin/Commands/basechat.cs index 58b6c3c..9b0662e 100644 --- a/CS2-SimpleAdmin/Commands/basechat.cs +++ b/CS2-SimpleAdmin/Commands/basechat.cs @@ -11,6 +11,12 @@ namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { + /// + /// Sends a chat message only to admins that have chat permission. + /// The message is encoded properly to handle UTF-8 characters. + /// + /// The admin player sending the message, or null for console. + /// The command input containing the message. [CommandHelper(1, "")] [RequiresPermissions("@css/chat")] public void OnAdminToAdminSayCommand(CCSPlayerController? caller, CommandInfo command) @@ -30,6 +36,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Sends a custom chat message to all players with color tags processed. + /// + /// The admin or console sending the message. + /// The command input containing the message. [CommandHelper(1, "")] [RequiresPermissions("@css/chat")] public void OnAdminCustomSayCommand(CCSPlayerController? caller, CommandInfo command) @@ -47,6 +58,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Sends a chat message to all players with localization prefix and color tags handled. + /// + /// The admin or console sending the message. + /// The command input containing the message. [CommandHelper(1, "")] [RequiresPermissions("@css/chat")] public void OnAdminSayCommand(CCSPlayerController? caller, CommandInfo command) @@ -57,7 +73,6 @@ public partial class CS2_SimpleAdmin var utf8String = Encoding.UTF8.GetString(utf8BytesString); Helper.LogCommand(caller, command); - foreach (var player in Helper.GetValidPlayers()) { player.SendLocalizedMessage(_localizer, @@ -66,6 +81,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Sends a private chat message from the caller to the specified target player(s). + /// + /// The admin or console sending the private message. + /// The command input containing target and message. [CommandHelper(2, "<#userid or name> ")] [RequiresPermissions("@css/chat")] public void OnAdminPrivateSayCommand(CCSPlayerController? caller, CommandInfo command) @@ -92,6 +112,11 @@ public partial class CS2_SimpleAdmin command.ReplyToCommand($" Private message sent!"); } + /// + /// Broadcasts a center-screen message to all players. + /// + /// The admin or console sending the message. + /// The command input containing the message. [CommandHelper(1, "")] [RequiresPermissions("@css/chat")] public void OnAdminCenterSayCommand(CCSPlayerController? caller, CommandInfo command) @@ -103,6 +128,11 @@ public partial class CS2_SimpleAdmin Helper.PrintToCenterAll(utf8String.ReplaceColorTags()); } + /// + /// Sends a HUD alert message to all players. + /// + /// The admin or console sending the message. + /// The command input containing the message. [CommandHelper(1, "")] [RequiresPermissions("@css/chat")] public void OnAdminHudSayCommand(CCSPlayerController? caller, CommandInfo command) @@ -115,6 +145,6 @@ public partial class CS2_SimpleAdmin VirtualFunctions.ClientPrintAll( HudDestination.Alert, utf8String.ReplaceColorTags(), - 0, 0, 0, 0); + 0, 0, 0, 0, 0); } } \ No newline at end of file diff --git a/CS2-SimpleAdmin/Commands/basecommands.cs b/CS2-SimpleAdmin/Commands/basecommands.cs index aa4b32e..290bbd0 100644 --- a/CS2-SimpleAdmin/Commands/basecommands.cs +++ b/CS2-SimpleAdmin/Commands/basecommands.cs @@ -12,23 +12,32 @@ using CS2_SimpleAdmin.Managers; using CS2_SimpleAdmin.Menus; using CS2_SimpleAdminApi; using Microsoft.Extensions.Logging; -using Newtonsoft.Json; using System.Globalization; using System.Reflection; +using System.Text.Json; using CounterStrikeSharp.API.ValveConstants.Protobuf; +using CS2_SimpleAdmin.Models; using MenuManager; +using System.Diagnostics.CodeAnalysis; namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { + /// + /// Handles the command that shows active penalties and warns for the caller or specified player. + /// Queries warnings and mute status, formats them locally, and sends the result to caller's chat. + /// + /// The player issuing this command. + /// Command input parameters. [CommandHelper(usage: "[#userid or name]", whoCanExecute: CommandUsage.CLIENT_ONLY)] public void OnPenaltiesCommand(CCSPlayerController? caller, CommandInfo command) { - if (caller == null || caller.IsValid == false || !caller.UserId.HasValue || Database == null) + if (caller == null || caller.IsValid == false || !caller.UserId.HasValue || DatabaseProvider == null) return; var userId = caller.UserId.Value; + var steamId = caller.SteamID; if (!string.IsNullOrEmpty(command.GetArg(1)) && AdminManager.PlayerHasPermissions(new SteamID(caller.SteamID), "@css/kick")) { @@ -51,10 +60,10 @@ public partial class CS2_SimpleAdmin { try { - var warns = await WarnManager.GetPlayerWarns(PlayersInfo[userId], false); + var warns = await WarnManager.GetPlayerWarns(PlayersInfo[steamId], false); // Check if the player is muted - var activeMutes = await MuteManager.IsPlayerMuted(PlayersInfo[userId].SteamId.SteamId64.ToString()); + var activeMutes = await MuteManager.IsPlayerMuted(PlayersInfo[steamId].SteamId.SteamId64.ToString()); Dictionary> mutesList = new() { @@ -119,16 +128,16 @@ public partial class CS2_SimpleAdmin mutesList[PenaltyType.Silence].Add(_localizer["sa_player_penalty_info_no_active_silence"]); } - await Server.NextFrameAsync(() => + await Server.NextWorldUpdateAsync(() => { caller.SendLocalizedMessage(_localizer, "sa_player_penalty_info", [ - PlayersInfo[userId].Name, - PlayersInfo[userId].TotalBans, - PlayersInfo[userId].TotalGags, - PlayersInfo[userId].TotalMutes, - PlayersInfo[userId].TotalSilences, - PlayersInfo[userId].TotalWarns, + PlayersInfo[steamId].Name, + PlayersInfo[steamId].TotalBans, + PlayersInfo[steamId].TotalGags, + PlayersInfo[steamId].TotalMutes, + PlayersInfo[steamId].TotalSilences, + PlayersInfo[steamId].TotalWarns, string.Join("\n", mutesList.SelectMany(kvp => kvp.Value)), string.Join("\n", warnsList) ]); @@ -141,6 +150,12 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Toggles the admin voice listening mode or mutes/unmutes all players' voice. + /// Sends confirmation messages accordingly. + /// + /// The player issuing this command. + /// Command input parameters. [RequiresPermissions("@css/chat")] [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] public void OnAdminVoiceCommand(CCSPlayerController? caller, CommandInfo command) @@ -152,6 +167,7 @@ public partial class CS2_SimpleAdmin { if (command.GetArg(2).ToLower().Equals("muteAll")) { + caller.SendLocalizedMessage(_localizer, "sa_admin_voice_mute_all"); foreach (var player in Helper.GetValidPlayers().Where(p => p != caller && !AdminManager.PlayerHasPermissions(new SteamID(p.SteamID), "@css/chat"))) { player.VoiceFlags = VoiceFlags.Muted; @@ -160,19 +176,31 @@ public partial class CS2_SimpleAdmin if (command.GetArg(2).ToLower().Equals("unmuteAll")) { + caller.SendLocalizedMessage(_localizer, "sa_admin_voice_unmute_all"); foreach (var player in Helper.GetValidPlayers().Where(p => p != caller)) { - if (PlayerPenaltyManager.GetPlayerPenalties(player.Slot, PenaltyType.Mute).Count == 0) + if (PlayerPenaltyManager.GetPlayerPenalties(player.Slot, [PenaltyType.Silence, PenaltyType.Mute]).Count == 0) player.VoiceFlags = VoiceFlags.Normal; } } return; } - - caller.VoiceFlags = caller.VoiceFlags == VoiceFlags.All ? VoiceFlags.Normal : VoiceFlags.All; + + var enabled = caller.VoiceFlags.HasFlag(VoiceFlags.ListenAll); + var messageKey = enabled + ? "sa_admin_voice_unlisten_all" + : "sa_admin_voice_listen_all"; + + caller.SendLocalizedMessage(_localizer, messageKey); + caller.VoiceFlags ^= VoiceFlags.ListenAll; } + /// + /// Opens the admin menu for the caller. + /// + /// The player issuing the command. + /// Command input parameters. [RequiresPermissions("@css/generic")] [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] public void OnAdminCommand(CCSPlayerController? caller, CommandInfo command) @@ -183,6 +211,12 @@ public partial class CS2_SimpleAdmin AdminMenu.OpenMenu(caller); } + /// + /// Displays admin help text read from a file. + /// Outputs lines one at a time as replies to the command. + /// + /// The player issuing the command. + /// Command input parameters. [RequiresPermissions("@css/generic")] public void OnAdminHelpCommand(CCSPlayerController? caller, CommandInfo command) { @@ -194,12 +228,16 @@ public partial class CS2_SimpleAdmin } } + /// + /// Handles adding a new admin with specified SteamID, name, flags, immunity, and duration. + /// + /// The player issuing the command. + /// Command input parameters. [CommandHelper(minArgs: 4, usage: " ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/root")] public void OnAddAdminCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; - + if (DatabaseProvider == null) return; if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null) { @@ -230,9 +268,20 @@ public partial class CS2_SimpleAdmin AddAdmin(caller, steamid, name, flags, immunity, time, globalAdmin, command); } + /// + /// Adds admin permissions and groups for a player. + /// + /// The player issuing the command. + /// SteamID as string identifying the player. + /// Player's name. + /// Comma-separated admin flags/groups. + /// Admin immunity level. + /// Duration of permission (default 0 = permanent). + /// Whether admin is global. + /// Optional command info for confirmation messages. public static void AddAdmin(CCSPlayerController? caller, string steamid, string name, string flags, int immunity, int time = 0, bool globalAdmin = false, CommandInfo? command = null) { - if (Database == null) return; + if (DatabaseProvider == null) return; var flagsList = flags.Split(',').Select(flag => flag.Trim()).ToList(); _ = Instance.PermissionManager.AddAdminBySteamId(steamid, name, flagsList, immunity, time, globalAdmin); @@ -248,11 +297,16 @@ public partial class CS2_SimpleAdmin Server.PrintToConsole(msg); } + /// + /// Handles removing an admin's flags and groups by SteamID. + /// + /// The player issuing the command. + /// Command input parameters. [CommandHelper(minArgs: 1, usage: "", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/root")] public void OnDelAdminCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null) { @@ -265,9 +319,16 @@ public partial class CS2_SimpleAdmin RemoveAdmin(caller, steamId.SteamId64.ToString(), globalDelete, command); } + /// + /// Removes admin permissions and groups for a player. + /// + /// The player issuing the command. + /// SteamID as string identifying the player. + /// Whether to delete globally. + /// Optional command info. public void RemoveAdmin(CCSPlayerController? caller, string steamid, bool globalDelete = false, CommandInfo? command = null) { - if (Database == null) return; + if (DatabaseProvider == null) return; _ = PermissionManager.DeleteAdminBySteamId(steamid, globalDelete); AddTimer(2, () => @@ -294,11 +355,16 @@ public partial class CS2_SimpleAdmin Server.PrintToConsole(msg); } + /// + /// Adds a new admin group with specified flags and immunity settings. + /// + /// The player issuing the command. + /// Command input parameters. [CommandHelper(minArgs: 3, usage: " ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/root")] public void OnAddGroup(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; if (!command.GetArg(1).StartsWith("#")) { @@ -320,9 +386,18 @@ public partial class CS2_SimpleAdmin AddGroup(caller, groupName, flags, immunity, globalGroup, command); } + /// + /// Adds a new admin group with specified flags and immunity level. + /// + /// The player issuing the command. + /// Group name (prefix with #). + /// Comma-separated flags/groups string. + /// Immunity level. + /// Whether group is global. + /// Optional command info. private static void AddGroup(CCSPlayerController? caller, string name, string flags, int immunity, bool globalGroup, CommandInfo? command = null) { - if (Database == null) return; + if (DatabaseProvider == null) return; var flagsList = flags.Split(',').Select(flag => flag.Trim()).ToList(); _ = Instance.PermissionManager.AddGroup(name, flagsList, immunity, globalGroup); @@ -338,11 +413,16 @@ public partial class CS2_SimpleAdmin Server.PrintToConsole(msg); } + /// + /// Handles removing a group by name. + /// + /// The player issuing the command. + /// Command input parameters. [CommandHelper(minArgs: 1, usage: "", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/root")] public void OnDelGroupCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; if (!command.GetArg(1).StartsWith($"#")) { @@ -355,9 +435,15 @@ public partial class CS2_SimpleAdmin RemoveGroup(caller, groupName, command); } + /// + /// Removes a group. + /// + /// The player issuing the command. + /// The group name to remove. + /// Optional command info for confirmation. private void RemoveGroup(CCSPlayerController? caller, string name, CommandInfo? command = null) { - if (Database == null) return; + if (DatabaseProvider == null) return; _ = PermissionManager.DeleteGroup(name); AddTimer(2, () => @@ -376,30 +462,42 @@ public partial class CS2_SimpleAdmin Server.PrintToConsole(msg); } + /// + /// Reloads admin and group data from database and json files. + /// + /// The player issuing the reload command. + /// Command input parameters. [CommandHelper(whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/root")] public void OnRelAdminCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; - + if (DatabaseProvider == null) return; ReloadAdmins(caller); - command.ReplyToCommand("Reloaded sql admins and groups"); } + /// + /// Reloads bans cache. + /// + /// The player issuing the reload command. + /// Command input parameters. [CommandHelper(whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/root")] public void OnRelBans(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; _ = Instance.CacheManager?.ForceReInitializeCacheAsync(); command.ReplyToCommand("Reloaded bans"); } + /// + /// Reloads admin data asynchronously and updates admin caches. + /// + /// The player issuing the reload command. public void ReloadAdmins(CCSPlayerController? caller) { - if (Database == null) return; + if (DatabaseProvider == null) return; Task.Run(async () => { @@ -411,14 +509,17 @@ public partial class CS2_SimpleAdmin await Server.NextWorldUpdateAsync(() => { - if (!string.IsNullOrEmpty(adminsFile)) - AddTimer(1.3f, () => AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json")); - if (!string.IsNullOrEmpty(groupsFile)) - AddTimer(2.5f, () => AdminManager.LoadAdminGroups(ModuleDirectory + "/data/groups.json")); - if (!string.IsNullOrEmpty(adminsFile)) - AddTimer(3.5f, () => AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json")); + AddTimer(1, () => + { + if (!string.IsNullOrEmpty(adminsFile)) + AddTimer(2.0f, () => AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json")); + if (!string.IsNullOrEmpty(groupsFile)) + AddTimer(3.0f, () => AdminManager.LoadAdminGroups(ModuleDirectory + "/data/groups.json")); + if (!string.IsNullOrEmpty(adminsFile)) + AddTimer(4.0f, () => AdminManager.LoadAdminData(ModuleDirectory + "/data/admins.json")); - _logger?.LogInformation("Loaded admins!"); + _logger?.LogInformation("Loaded admins!"); + }); }); }); @@ -426,6 +527,11 @@ public partial class CS2_SimpleAdmin //_ = _adminManager.GiveAllFlags(); } + /// + /// Toggles player visibility on the server, hiding or revealing them. + /// + /// The player issuing the hide command. + /// Command input parameters. [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] [RequiresPermissions("@css/kick")] public void OnHideCommand(CCSPlayerController? caller, CommandInfo command) @@ -438,7 +544,9 @@ public partial class CS2_SimpleAdmin { SilentPlayers.Remove(caller.Slot); caller.PrintToChat($"You aren't hidden now!"); - caller.ChangeTeam(CsTeam.Spectator); + if (caller.TeamNum <= 1) + caller.ChangeTeam(CsTeam.Spectator); + SimpleAdminApi?.OnAdminToggleSilentEvent(caller.Slot, false); } else { @@ -447,13 +555,20 @@ public partial class CS2_SimpleAdmin if (caller.PlayerPawn?.Value?.LifeState == (int)LifeState_t.LIFE_ALIVE) caller.PlayerPawn.Value?.CommitSuicide(true, false); - AddTimer(1.0f, () => { Server.NextFrame(() => caller.ChangeTeam(CsTeam.Spectator)); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); - AddTimer(1.4f, () => { Server.NextFrame(() => caller.ChangeTeam(CsTeam.None)); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); caller.PrintToChat($"You are hidden now!"); - AddTimer(2.0f, () => { Server.NextFrame(() => Server.ExecuteCommand("sv_disable_teamselect_menu 0")); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); + if (caller.TeamNum > 1) + AddTimer(0.15f, () => { Server.NextWorldUpdate(() => caller.ChangeTeam(CsTeam.Spectator)); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); + AddTimer(0.26f, () => { Server.NextWorldUpdate(() => caller.ChangeTeam(CsTeam.None)); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); + AddTimer(0.50f, () => { Server.NextWorldUpdate(() => Server.ExecuteCommand("sv_disable_teamselect_menu 0")); }, CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE); + SimpleAdminApi?.OnAdminToggleSilentEvent(caller.Slot, true); } } + /// + /// Toggles penalty notification visibility to admins. + /// + /// The player toggling notification visibility. + /// Command input parameters. [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] [RequiresPermissions("@css/kick")] public void OnHideCommsCommand(CCSPlayerController? caller, CommandInfo command) @@ -473,11 +588,16 @@ public partial class CS2_SimpleAdmin } } + /// + /// Displays detailed information about target players, including admin groups, permissions, and penalties. + /// + /// The player issuing the command. + /// Command input parameters including targets. [CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/generic")] public void OnWhoCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var targets = GetTarget(command); if (targets == null) return; @@ -491,39 +611,41 @@ public partial class CS2_SimpleAdmin if (!player.UserId.HasValue) return; if (!caller!.CanTarget(player)) return; - var playerInfo = PlayersInfo[player.UserId.Value]; + var playerInfo = PlayersInfo[player.SteamID]; Task.Run(async () => { - await Server.NextFrameAsync(() => + await Server.NextWorldUpdateAsync(() => { Action printMethod = caller == null ? Server.PrintToConsole : caller.PrintToConsole; - + + var adminData = AdminManager.GetPlayerAdminData(new SteamID(player.SteamID)); + printMethod($"--------- INFO ABOUT \"{playerInfo.Name}\" ---------"); - printMethod($"• Clan: \"{player.Clan}\" Name: \"{playerInfo.Name}\""); printMethod($"• UserID: \"{playerInfo.UserId}\""); printMethod($"• SteamID64: \"{playerInfo.SteamId.SteamId64}\""); - if (player.Connected == PlayerConnectedState.PlayerConnected) + if (adminData != null) { - printMethod($"• SteamID2: \"{playerInfo.SteamId.SteamId2}\""); - printMethod($"• Community link: \"{playerInfo.SteamId.ToCommunityUrl()}\""); + var flags = string.Join(",", adminData._flags); + var groups = string.Join(",", adminData.Groups); + + printMethod($"• Groups/Flags: \"{groups}{flags}\""); } + printMethod($"• SteamID2: \"{playerInfo.SteamId.SteamId2}\""); + printMethod($"• Community link: \"{playerInfo.SteamId.ToCommunityUrl()}\""); if (playerInfo.IpAddress != null && AdminManager.PlayerHasPermissions(new SteamID(caller!.SteamID), "@css/showip")) printMethod($"• IP Address: \"{playerInfo.IpAddress}\""); printMethod($"• Ping: \"{player.Ping}\""); - if (player.Connected == PlayerConnectedState.PlayerConnected) - { - printMethod($"• Total Bans: \"{playerInfo.TotalBans}\""); - printMethod($"• Total Gags: \"{playerInfo.TotalGags}\""); - printMethod($"• Total Mutes: \"{playerInfo.TotalMutes}\""); - printMethod($"• Total Silences: \"{playerInfo.TotalSilences}\""); - printMethod($"• Total Warns: \"{playerInfo.TotalWarns}\""); + printMethod($"• Total Bans: \"{playerInfo.TotalBans}\""); + printMethod($"• Total Gags: \"{playerInfo.TotalGags}\""); + printMethod($"• Total Mutes: \"{playerInfo.TotalMutes}\""); + printMethod($"• Total Silences: \"{playerInfo.TotalSilences}\""); + printMethod($"• Total Warns: \"{playerInfo.TotalWarns}\""); - var chunkedAccounts = playerInfo.AccountsAssociated.ChunkBy(3).ToList(); - foreach (var chunk in chunkedAccounts) - printMethod($"• Associated Accounts: \"{string.Join(", ", chunk.Select(a => $"{a.PlayerName} ({a.SteamId})"))}\""); - } + var chunkedAccounts = playerInfo.AccountsAssociated.ChunkBy(3).ToList(); + foreach (var chunk in chunkedAccounts) + printMethod($"• Associated Accounts: \"{string.Join(", ", chunk.Select(a => $"{a.PlayerName} ({a.SteamId})"))}\""); printMethod($"--------- END INFO ABOUT \"{player.PlayerName}\" ---------"); }); @@ -531,6 +653,11 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Displays a menu with disconnected players, allowing the caller to apply penalties like ban, mute, gag, or silence. + /// + /// The player issuing the command. + /// The command containing parameters. [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] [RequiresPermissions("@css/kick")] public void OnDisconnectedCommand(CCSPlayerController? caller, CommandInfo command) @@ -652,11 +779,17 @@ public partial class CS2_SimpleAdmin disconnectedMenu?.Open(caller); } + /// + /// Displays the warning menu for a player specified by a command argument, + /// showing active and past warns with options to remove them. + /// + /// The player issuing the command. + /// The command containing target player identifier. [CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_ONLY)] [RequiresPermissions("@css/kick")] public void OnWarnsCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null || _localizer == null || caller == null) return; + if (DatabaseProvider == null || _localizer == null || caller == null) return; var targets = GetTarget(command); if (targets == null) return; @@ -673,12 +806,13 @@ public partial class CS2_SimpleAdmin if (!caller.CanTarget(player)) return; var userId = player.UserId.Value; + var steamId = player.SteamID; IMenu? warnsMenu = Helper.CreateMenu(_localizer["sa_admin_warns_menu_title", player.PlayerName]); Task.Run(async () => { - var warnsList = await WarnManager.GetPlayerWarns(PlayersInfo[userId], false); + var warnsList = await WarnManager.GetPlayerWarns(PlayersInfo[steamId], false); var sortedWarns = warnsList .OrderBy(warn => (string)warn.status == "ACTIVE" ? 0 : 1) .ThenByDescending(warn => (int)warn.id) @@ -689,12 +823,12 @@ public partial class CS2_SimpleAdmin warnsMenu?.AddMenuOption($"[{((string)w.status == "ACTIVE" ? $"{ChatColors.LightRed}X" : $"{ChatColors.Lime}✔️")}{ChatColors.Default}] {(string)w.reason}", (controller, option) => { - _ = WarnManager.UnwarnPlayer(PlayersInfo[userId], (int)w.id); + _ = WarnManager.UnwarnPlayer(PlayersInfo[steamId], (int)w.id); player.PrintToChat(_localizer["sa_admin_warns_unwarn", player.PlayerName, (string)w.reason]); }); }); - await Server.NextFrameAsync(() => + await Server.NextWorldUpdateAsync(() => { warnsMenu?.Open(caller); }); @@ -702,8 +836,14 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Lists players currently connected to the server with options to output JSON or filter duplicate IPs. + /// + /// The player issuing the command or null for console. + /// The command containing output options. [CommandHelper(whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] [RequiresPermissions("@css/generic")] + [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] public void OnPlayersCommand(CCSPlayerController? caller, CommandInfo command) { var isJson = command.GetArg(1).ToLower().Equals("-json"); @@ -740,27 +880,39 @@ public partial class CS2_SimpleAdmin } else { - var playersJson = JsonConvert.SerializeObject(playersToTarget.Select(player => + var options = new JsonSerializerOptions { - var matchStats = player.ActionTrackingServices?.MatchStats; - - return new + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + WriteIndented = false + }; + + var playerDtos = playersToTarget + .Where(player => player.UserId.HasValue) + .Select(player => { - player.UserId, - Name = player.PlayerName, - SteamId = player.SteamID.ToString(), - IpAddress = AdminManager.PlayerHasPermissions(new SteamID(caller!.SteamID), "@css/showip") ? player.IpAddress?.Split(":")[0] ?? "Unknown" : "Unknown", - player.Ping, - IsAdmin = AdminManager.PlayerHasPermissions(new SteamID(player.SteamID), "@css/ban") || AdminManager.PlayerHasPermissions(new SteamID(player.SteamID), "@css/generic"), - Stats = new - { - player.Score, - Kills = matchStats?.Kills ?? 0, - Deaths = matchStats?.Deaths ?? 0, - player.MVPs - } - }; - })); + var matchStats = player.ActionTrackingServices?.MatchStats; + + return new PlayerDto( + player.UserId.GetValueOrDefault(0), + player.PlayerName, + player.SteamID.ToString(), + AdminManager.PlayerHasPermissions(new SteamID(caller!.SteamID), "@css/showip") + ? player.IpAddress?.Split(":")[0] ?? "Unknown" + : "Unknown", + player.Ping, + AdminManager.PlayerHasPermissions(new SteamID(player.SteamID), "@css/ban") + || AdminManager.PlayerHasPermissions(new SteamID(player.SteamID), "@css/generic"), + new PlayerStats( + player.Score, + matchStats?.Kills ?? 0, + matchStats?.Deaths ?? 0, + player.MVPs + ) + ); + }) + .ToList(); + + var playersJson = JsonSerializer.Serialize(playerDtos, options); if (caller != null) caller.PrintToConsole(playersJson); @@ -769,6 +921,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Issues a kick to one or multiple players specified in the command arguments. + /// + /// The player issuing the kick command. + /// The command with target player(s) and optional reason. [RequiresPermissions("@css/kick")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnKickCommand(CCSPlayerController? caller, CommandInfo command) @@ -806,6 +963,15 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + + /// + /// Kicks a specified player immediately with reason, notifying the server and logging the action. + /// + /// The player issuing the kick. + /// The player to be kicked. + /// The reason for the kick. + /// Optional name of the kick issuer for notifications. + /// Optional command for logging. public void Kick(CCSPlayerController? caller, CCSPlayerController player, string? reason = "Unknown", string? callerName = null, CommandInfo? command = null) { if (!player.IsValid) return; @@ -816,8 +982,8 @@ public partial class CS2_SimpleAdmin callerName ??= caller != null ? caller.PlayerName : _localizer?["sa_console"] ?? "Console"; reason ??= _localizer?["sa_unknown"] ?? "Unknown"; - var playerInfo = PlayersInfo[player.UserId.Value]; - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var playerInfo = PlayersInfo[player.SteamID]; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Determine message keys and arguments for the kick notification var (messageKey, activityMessageKey, centerArgs, adminActivityArgs) = @@ -847,6 +1013,11 @@ public partial class CS2_SimpleAdmin SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Kick, reason, -1, null); } + /// + /// Changes the current map to the specified map name or workshop map ID. + /// + /// The player issuing the map change. + /// The command containing the map name or ID. [RequiresPermissions("@css/changemap")] [CommandHelper(minArgs: 1, usage: "", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnMapCommand(CCSPlayerController? caller, CommandInfo command) @@ -855,6 +1026,12 @@ public partial class CS2_SimpleAdmin ChangeMap(caller, map, command); } + /// + /// Changes to a specified map, validating it or handling workshop maps, and notifying the server and admins. + /// + /// The player issuing the change. + /// The map name or identifier. + /// Optional command object for logging and replies. public void ChangeMap(CCSPlayerController? caller, string map, CommandInfo? command = null) { var callerName = caller != null ? caller.PlayerName : _localizer?["sa_console"] ?? "Console"; @@ -904,6 +1081,11 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command?.GetCommandString ?? $"css_map {map}"); } + /// + /// Changes the current map to a workshop map specified by name or ID. + /// + /// The player issuing the command. + /// The command containing the workshop map identifier. [CommandHelper(1, "")] [RequiresPermissions("@css/changemap")] public void OnWorkshopMapCommand(CCSPlayerController? caller, CommandInfo command) @@ -912,6 +1094,12 @@ public partial class CS2_SimpleAdmin ChangeWorkshopMap(caller, map, command); } + /// + /// Changes to a specified workshop map by name or ID and notifies admins. + /// + /// The player issuing the command. + /// The workshop map identifier. + /// Optional command for logging. public void ChangeWorkshopMap(CCSPlayerController? caller, string map, CommandInfo? command = null) { map = map.ToLower(); @@ -941,6 +1129,11 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command?.GetCommandString ?? $"css_wsmap {map}"); } + /// + /// Allows changing a console variable's value. + /// + /// The player issuing the command. + /// The command with cvar name and value. [CommandHelper(2, " ")] [RequiresPermissions("@css/cvar")] public void OnCvarCommand(CCSPlayerController? caller, CommandInfo command) @@ -961,28 +1154,33 @@ public partial class CS2_SimpleAdmin } Helper.LogCommand(caller, command); - var value = command.GetArg(2); - Server.ExecuteCommand($"{cvar.Name} {value}"); - command.ReplyToCommand($"{callerName} changed cvar {cvar.Name} to {value}."); Logger.LogInformation($"{callerName} changed cvar {cvar.Name} to {value}."); } + /// + /// Executes an RCON command on the server. + /// + /// The player issuing the command. + /// The command string to execute via RCON. [CommandHelper(1, "")] [RequiresPermissions("@css/rcon")] public void OnRconCommand(CCSPlayerController? caller, CommandInfo command) { var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; - Helper.LogCommand(caller, command); - Server.ExecuteCommand(command.ArgString); command.ReplyToCommand($"{callerName} executed command {command.ArgString}."); Logger.LogInformation($"{callerName} executed command ({command.ArgString})."); } + /// + /// Restarts the game. + /// + /// The player or console initiating the restart. + /// The restart command info. [RequiresPermissions("@css/generic")] [CommandHelper(minArgs: 0, usage: "", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnRestartCommand(CCSPlayerController? caller, CommandInfo command) @@ -990,6 +1188,11 @@ public partial class CS2_SimpleAdmin RestartGame(caller); } + /// + /// Opens plugin manager menu for the caller with options to load or unload plugins. + /// + /// The player opening the plugin manager. + /// The command parameters. [RequiresPermissions("@css/root")] [CommandHelper(whoCanExecute: CommandUsage.CLIENT_ONLY)] public void OnPluginManagerCommand(CCSPlayerController? caller, CommandInfo commandInfo) @@ -1060,6 +1263,10 @@ public partial class CS2_SimpleAdmin pluginsMenu?.Open(caller); } + /// + /// Restarts the game process by issuing the restart game command to the server and logging the action. + /// + /// The admin or console requesting the restart. public static void RestartGame(CCSPlayerController? admin) { Helper.LogCommand(admin, "css_restartgame"); diff --git a/CS2-SimpleAdmin/Commands/basecomms.cs b/CS2-SimpleAdmin/Commands/basecomms.cs index c30b832..0cc9a8c 100644 --- a/CS2-SimpleAdmin/Commands/basecomms.cs +++ b/CS2-SimpleAdmin/Commands/basecomms.cs @@ -11,11 +11,16 @@ namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { + /// + /// Processes the 'gag' command, applying a muted penalty to target players with optional time and reason. + /// + /// The player issuing the gag command or null for console. + /// The command input containing targets, time, and reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnGagCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; var targets = GetTarget(command); @@ -49,9 +54,19 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Applies the gag penalty logic to an individual player, performing permission checks, notification, and logging. + /// + /// The player issuing the gag. + /// The player to gag. + /// Duration of the gag in minutes, 0 is permanent. + /// Reason for the gag. + /// Optional caller name for notifications. + /// Optional command info for logging. + /// If true, suppresses logging notifications. internal void Gag(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, CommandInfo? command = null, bool silent = false) { - if (Database == null || !player.IsValid || !player.UserId.HasValue) return; + if (DatabaseProvider == null || !player.IsValid || !player.UserId.HasValue) return; if (!caller.CanTarget(player)) return; if (!CheckValidMute(caller, time)) return; @@ -59,14 +74,18 @@ public partial class CS2_SimpleAdmin callerName ??= caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; // Get player and admin information - var playerInfo = PlayersInfo[player.UserId.Value]; - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var playerInfo = PlayersInfo[player.SteamID]; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Asynchronously handle gag logic Task.Run(async () => { int? penaltyId = await MuteManager.MutePlayer(playerInfo, adminInfo, reason, time); - SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Gag, reason, time, penaltyId); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Gag, reason, time, + penaltyId); + }); }); // Add penalty to the player's penalty manager @@ -91,7 +110,7 @@ public partial class CS2_SimpleAdmin } // Increment the player's total gags count - PlayersInfo[player.UserId.Value].TotalGags++; + PlayersInfo[player.SteamID].TotalGags++; // Log the gag command and send Discord notification if (!silent) @@ -105,16 +124,23 @@ public partial class CS2_SimpleAdmin Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Gag, _localizer); } - internal void AddGag(CCSPlayerController? caller, SteamID steamid, int time, string reason, MuteManager? muteManager = null) + /// + /// Adds a gag penalty to a player identified by SteamID, supporting offline players. + /// + /// The player issuing the command or null for console. + /// SteamID of the target player. + /// Duration in minutes (0 for permanent). + /// Reason for the gag. + internal void AddGag(CCSPlayerController? caller, SteamID steamid, int time, string reason) { // Set default caller name if not provided var callerName = !string.IsNullOrEmpty(caller?.PlayerName) ? caller.PlayerName : (_localizer?["sa_console"] ?? "Console"); - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; - var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString()); + var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64); if (player != null && player.IsValid) { @@ -131,19 +157,28 @@ public partial class CS2_SimpleAdmin // Asynchronous ban operation if player is not online or not found Task.Run(async () => { - int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time, 3); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Gag, reason, time, penaltyId); + int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64, adminInfo, reason, time, 3); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Gag, reason, time, + penaltyId); + }); }); Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Gag, _localizer); } } + /// + /// Handles the 'addgag' command, which adds a gag penalty to a player specified by SteamID. + /// + /// The player issuing the command or null for console. + /// Command input that includes SteamID, optional time, and reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: " [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnAddGagCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; // Set caller name var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; @@ -158,7 +193,7 @@ public partial class CS2_SimpleAdmin return; } - var steamid = steamId.SteamId64.ToString(); + var steamid = steamId.SteamId64; var reason = command.ArgCount >= 3 ? string.Join(" ", Enumerable.Range(3, command.ArgCount - 3).Select(command.GetArg)).Trim() : _localizer?["sa_unknown"] ?? "Unknown"; @@ -169,7 +204,7 @@ public partial class CS2_SimpleAdmin if (!CheckValidMute(caller, time)) return; // Get player and admin info - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Attempt to match player based on SteamID var player = Helper.GetPlayerFromSteamid64(steamid); @@ -191,10 +226,14 @@ public partial class CS2_SimpleAdmin Task.Run(async () => { int? penaltyId = await MuteManager.AddMuteBySteamid(steamid, adminInfo, reason, time); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Gag, reason, time, penaltyId); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Gag, reason, time, + penaltyId); + }); }); - Helper.SendDiscordPenaltyMessage(caller, steamid, reason, time, PenaltyType.Gag, _localizer); + Helper.SendDiscordPenaltyMessage(caller, steamid.ToString(), reason, time, PenaltyType.Gag, _localizer); command.ReplyToCommand($"Player with steamid {steamid} is not online. Gag has been added offline."); } @@ -203,11 +242,16 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Handles removing a gag penalty ('ungag') of a player, either by SteamID or pattern match. + /// + /// The player issuing the ungag command or null for console. + /// Command input containing SteamID or player name and optional reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: " [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnUngagCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerSteamId = caller?.SteamID.ToString() ?? _localizer?["sa_console"] ?? "Console"; var pattern = command.GetArg(1); @@ -228,7 +272,7 @@ public partial class CS2_SimpleAdmin // Check if pattern is a valid SteamID64 if (Helper.ValidateSteamId(pattern, out var steamId) && steamId != null) { - var player = Helper.GetPlayerFromSteamid64(steamId.SteamId64.ToString()); + var player = Helper.GetPlayerFromSteamid64(steamId.SteamId64); if (player != null && player.IsValid) { @@ -252,8 +296,8 @@ public partial class CS2_SimpleAdmin { PlayerPenaltyManager.RemovePenaltiesByType(namePlayer.Slot, PenaltyType.Gag); - if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.UserId.Value].TotalGags > 0) - PlayersInfo[namePlayer.UserId.Value].TotalGags--; + if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.SteamID].TotalGags > 0) + PlayersInfo[namePlayer.SteamID].TotalGags--; Task.Run(async () => { @@ -273,11 +317,16 @@ public partial class CS2_SimpleAdmin } } + /// + /// Processes the 'mute' command, applying a voice mute penalty to target players with optional time and reason. + /// + /// The player issuing the mute command or null for console. + /// The command input containing targets, time, and reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnMuteCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; var targets = GetTarget(command); @@ -311,9 +360,19 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Applies the mute penalty logic to an individual player, handling permissions, notifications, logging, and countdown timers. + /// + /// The player issuing the mute. + /// The player to mute. + /// Duration in minutes, 0 indicates permanent mute. + /// Reason for the mute. + /// Optional caller name for notification messages. + /// Optional command info for logging. + /// If true, suppresses some logging. internal void Mute(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, CommandInfo? command = null, bool silent = false) { - if (Database == null || !player.IsValid || !player.UserId.HasValue) return; + if (DatabaseProvider == null || !player.IsValid || !player.UserId.HasValue) return; if (!caller.CanTarget(player)) return; if (!CheckValidMute(caller, time)) return; @@ -321,8 +380,8 @@ public partial class CS2_SimpleAdmin callerName ??= caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; // Get player and admin information - var playerInfo = PlayersInfo[player.UserId.Value]; - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var playerInfo = PlayersInfo[player.SteamID]; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Set player's voice flags to muted player.VoiceFlags = VoiceFlags.Muted; @@ -331,7 +390,11 @@ public partial class CS2_SimpleAdmin Task.Run(async () => { int? penaltyId = await MuteManager.MutePlayer(playerInfo, adminInfo, reason, time, 1); - SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Mute, reason, time, penaltyId); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Mute, reason, time, + penaltyId); + }); }); // Add penalty to the player's penalty manager @@ -356,7 +419,7 @@ public partial class CS2_SimpleAdmin } // Increment the player's total mutes count - PlayersInfo[player.UserId.Value].TotalMutes++; + PlayersInfo[player.SteamID].TotalMutes++; // Log the mute command and send Discord notification if (!silent) @@ -370,11 +433,16 @@ public partial class CS2_SimpleAdmin Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Mute, _localizer); } + /// + /// Handles the 'addmute' command that adds a mute penalty to a player specified by SteamID. + /// + /// The player issuing the command or null for console. + /// Command input includes SteamID, optional time, and reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: " [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnAddMuteCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; // Set caller name var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; @@ -389,7 +457,7 @@ public partial class CS2_SimpleAdmin return; } - var steamid = steamId.SteamId64.ToString(); + var steamid = steamId.SteamId64; var reason = command.ArgCount >= 3 ? string.Join(" ", Enumerable.Range(3, command.ArgCount - 3).Select(command.GetArg)).Trim() : _localizer?["sa_unknown"] ?? "Unknown"; @@ -400,7 +468,7 @@ public partial class CS2_SimpleAdmin if (!CheckValidMute(caller, time)) return; // Get player and admin info - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Attempt to match player based on SteamID var player = Helper.GetPlayerFromSteamid64(steamid); @@ -422,10 +490,14 @@ public partial class CS2_SimpleAdmin Task.Run(async () => { int? penaltyId = await MuteManager.AddMuteBySteamid(steamid, adminInfo, reason, time, 1); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Mute, reason, time, penaltyId); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Mute, reason, time, + penaltyId); + }); }); - Helper.SendDiscordPenaltyMessage(caller, steamid, reason, time, PenaltyType.Mute, _localizer); + Helper.SendDiscordPenaltyMessage(caller, steamid.ToString(), reason, time, PenaltyType.Mute, _localizer); command.ReplyToCommand($"Player with steamid {steamid} is not online. Mute has been added offline."); } @@ -434,6 +506,14 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Asynchronously adds a mute penalty to a player by Steam ID. Handles both online and offline players. + /// + /// The admin/player issuing the mute. + /// The Steam ID of the player to mute. + /// Duration of the mute in minutes. + /// Reason for the mute. + /// Optional mute manager instance for handling database ops. internal void AddMute(CCSPlayerController? caller, SteamID steamid, int time, string reason, MuteManager? muteManager = null) { // Set default caller name if not provided @@ -441,9 +521,9 @@ public partial class CS2_SimpleAdmin ? caller.PlayerName : (_localizer?["sa_console"] ?? "Console"); - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; - var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString()); + var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64); if (player != null && player.IsValid) { @@ -460,19 +540,29 @@ public partial class CS2_SimpleAdmin // Asynchronous ban operation if player is not online or not found Task.Run(async () => { - int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time, 1); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Mute, reason, time, penaltyId); + int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64, adminInfo, reason, time, 1); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Mute, reason, time, + penaltyId); + }); }); Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Mute, _localizer); } } + /// + /// Handles the unmute command - removes mute penalty from player identified by SteamID or name. + /// Can target both online and offline players. + /// + /// The admin/player issuing the unmute. + /// The command arguments including target identifier and optional reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: "", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnUnmuteCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerSteamId = caller?.SteamID.ToString() ?? _localizer?["sa_console"] ?? "Console"; var pattern = command.GetArg(1); @@ -493,7 +583,7 @@ public partial class CS2_SimpleAdmin // Check if pattern is a valid SteamID64 if (Helper.ValidateSteamId(pattern, out var steamId) && steamId != null) { - var player = Helper.GetPlayerFromSteamid64(steamId.SteamId64.ToString()); + var player = Helper.GetPlayerFromSteamid64(steamId.SteamId64); if (player != null && player.IsValid) { @@ -519,8 +609,8 @@ public partial class CS2_SimpleAdmin PlayerPenaltyManager.RemovePenaltiesByType(namePlayer.Slot, PenaltyType.Mute); namePlayer.VoiceFlags = VoiceFlags.Normal; - if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.UserId.Value].TotalMutes > 0) - PlayersInfo[namePlayer.UserId.Value].TotalMutes--; + if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.SteamID].TotalMutes > 0) + PlayersInfo[namePlayer.SteamID].TotalMutes--; Task.Run(async () => { @@ -540,11 +630,17 @@ public partial class CS2_SimpleAdmin } } + /// + /// Issue a 'silence' penalty to a player - disables voice communication. + /// Handles online and offline players, with duration and reason specified. + /// + /// The admin/player issuing the silence. + /// Command containing target, duration, and optional reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnSilenceCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; var targets = GetTarget(command); @@ -578,9 +674,19 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Applies silence logical processing for a player - updates database and notifies. + /// + /// Admin/player applying the silence. + /// Target player. + /// Duration of silence. + /// Reason for silence. + /// Optional name of silent admin or console. + /// Optional command details for logging. + /// If true, suppresses logging notifications. internal void Silence(CCSPlayerController? caller, CCSPlayerController player, int time, string reason, string? callerName = null, CommandInfo? command = null, bool silent = false) { - if (Database == null || !player.IsValid || !player.UserId.HasValue) return; + if (DatabaseProvider == null || !player.IsValid || !player.UserId.HasValue) return; if (!caller.CanTarget(player)) return; if (!CheckValidMute(caller, time)) return; @@ -588,14 +694,18 @@ public partial class CS2_SimpleAdmin callerName ??= caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; // Get player and admin information - var playerInfo = PlayersInfo[player.UserId.Value]; - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var playerInfo = PlayersInfo[player.SteamID]; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Asynchronously handle silence logic Task.Run(async () => { - int? penaltyId = await MuteManager.MutePlayer(playerInfo, adminInfo, reason, time, 2); // Assuming 2 is the type for silence - SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Silence, reason, time, penaltyId); + int? penaltyId = await MuteManager.MutePlayer(playerInfo, adminInfo, reason, time, 2); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedEvent(playerInfo, adminInfo, PenaltyType.Silence, reason, time, + penaltyId); + }); }); // Add penalty to the player's penalty manager @@ -621,7 +731,7 @@ public partial class CS2_SimpleAdmin } // Increment the player's total silences count - PlayersInfo[player.UserId.Value].TotalSilences++; + PlayersInfo[player.SteamID].TotalSilences++; // Log the silence command and send Discord notification if (!silent) @@ -635,11 +745,17 @@ public partial class CS2_SimpleAdmin Helper.SendDiscordPenaltyMessage(caller, player, reason, time, PenaltyType.Silence, _localizer); } + /// + /// Handles the 'AddSilence' command, applying a silence penalty to a player specified by SteamID, + /// with support for offline player penalties. + /// + /// The player/admin issuing the command. + /// The command input containing SteamID, optional time, and reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnAddSilenceCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; // Set caller name var callerName = caller == null ? _localizer?["sa_console"] ?? "Console" : caller.PlayerName; @@ -654,7 +770,7 @@ public partial class CS2_SimpleAdmin return; } - var steamid = steamId.SteamId64.ToString(); + var steamid = steamId.SteamId64; var reason = command.ArgCount >= 3 ? string.Join(" ", Enumerable.Range(3, command.ArgCount - 3).Select(command.GetArg)).Trim() : _localizer?["sa_unknown"] ?? "Unknown"; @@ -665,7 +781,7 @@ public partial class CS2_SimpleAdmin if (!CheckValidMute(caller, time)) return; // Get player and admin info - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; // Attempt to match player based on SteamID var player = Helper.GetPlayerFromSteamid64(steamid); @@ -687,10 +803,14 @@ public partial class CS2_SimpleAdmin Task.Run(async () => { int? penaltyId = await MuteManager.AddMuteBySteamid(steamid, adminInfo, reason, time, 2); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Silence, reason, time, penaltyId); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamId, adminInfo, PenaltyType.Silence, reason, + time, penaltyId); + }); }); - Helper.SendDiscordPenaltyMessage(caller, steamid, reason, time, PenaltyType.Silence, _localizer); + Helper.SendDiscordPenaltyMessage(caller, steamid.ToString(), reason, time, PenaltyType.Silence, _localizer); command.ReplyToCommand($"Player with steamid {steamid} is not online. Silence has been added offline."); } @@ -699,6 +819,14 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Adds a silence penalty to a player by Steam ID. Manages both online and offline player cases. + /// + /// Admin/player initiating the silence. + /// Steam ID of player. + /// Duration of silence. + /// Reason for the penalty. + /// Optional mute manager for DB operations. internal void AddSilence(CCSPlayerController? caller, SteamID steamid, int time, string reason, MuteManager? muteManager = null) { // Set default caller name if not provided @@ -706,9 +834,9 @@ public partial class CS2_SimpleAdmin ? caller.PlayerName : (_localizer?["sa_console"] ?? "Console"); - var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.UserId.Value] : null; + var adminInfo = caller != null && caller.UserId.HasValue ? PlayersInfo[caller.SteamID] : null; - var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64.ToString()); + var player = Helper.GetPlayerFromSteamid64(steamid.SteamId64); if (player != null && player.IsValid) { @@ -725,19 +853,29 @@ public partial class CS2_SimpleAdmin // Asynchronous ban operation if player is not online or not found Task.Run(async () => { - int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64.ToString(), adminInfo, reason, time, 2); - SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Silence, reason, time, penaltyId); + int? penaltyId = await MuteManager.AddMuteBySteamid(steamid.SteamId64, adminInfo, reason, time, 2); + await Server.NextWorldUpdateAsync(() => + { + SimpleAdminApi?.OnPlayerPenaltiedAddedEvent(steamid, adminInfo, PenaltyType.Silence, reason, + time, penaltyId); + }); }); Helper.SendDiscordPenaltyMessage(caller, steamid.SteamId64.ToString(), reason, time, PenaltyType.Silence, _localizer); } } + /// + /// Removes the silence penalty from a player, either by SteamID, name, or offline pattern. + /// Resets voice settings and updates notices accordingly. + /// + /// Admin/player issuing the unsilence. + /// Command arguments with target pattern and optional reason. [RequiresPermissions("@css/chat")] [CommandHelper(minArgs: 1, usage: " [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnUnsilenceCommand(CCSPlayerController? caller, CommandInfo command) { - if (Database == null) return; + if (DatabaseProvider == null) return; var callerSteamId = caller?.SteamID.ToString() ?? _localizer?["sa_console"] ?? "Console"; var pattern = command.GetArg(1); @@ -758,7 +896,7 @@ public partial class CS2_SimpleAdmin // Check if pattern is a valid SteamID64 if (Helper.ValidateSteamId(pattern, out var steamId) && steamId != null) { - var player = Helper.GetPlayerFromSteamid64(steamId.SteamId64.ToString()); + var player = Helper.GetPlayerFromSteamid64(steamId.SteamId64); if (player != null && player.IsValid) { @@ -788,8 +926,8 @@ public partial class CS2_SimpleAdmin // Reset voice flags to normal namePlayer.VoiceFlags = VoiceFlags.Normal; - if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.UserId.Value].TotalSilences > 0) - PlayersInfo[namePlayer.UserId.Value].TotalSilences--; + if (namePlayer.UserId.HasValue && PlayersInfo[namePlayer.SteamID].TotalSilences > 0) + PlayersInfo[namePlayer.SteamID].TotalSilences--; Task.Run(async () => { @@ -809,6 +947,12 @@ public partial class CS2_SimpleAdmin } } + /// + /// Validates mute penalty duration based on admin privileges and configured max duration. + /// + /// Admin/player issuing the mute. + /// Requested duration in minutes. + /// True if mute penalty duration is allowed; false otherwise. private bool CheckValidMute(CCSPlayerController? caller, int duration) { if (caller == null) return true; diff --git a/CS2-SimpleAdmin/Commands/basevotes.cs b/CS2-SimpleAdmin/Commands/basevotes.cs index 68908d7..38404f6 100644 --- a/CS2-SimpleAdmin/Commands/basevotes.cs +++ b/CS2-SimpleAdmin/Commands/basevotes.cs @@ -8,6 +8,12 @@ namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { + /// + /// Handles the vote command, creates voting menu for players, and collects answers. + /// Displays results after timeout and resets voting state. + /// + /// The player/admin who initiated the vote, or null for console. + /// Command object containing question and options. [RequiresPermissions("@css/generic")] [CommandHelper(minArgs: 2, usage: " [... options ...]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnVoteCommand(CCSPlayerController? caller, CommandInfo command) diff --git a/CS2-SimpleAdmin/Commands/funcommands.cs b/CS2-SimpleAdmin/Commands/funcommands.cs index efa1f9d..5f4b64f 100644 --- a/CS2-SimpleAdmin/Commands/funcommands.cs +++ b/CS2-SimpleAdmin/Commands/funcommands.cs @@ -8,6 +8,11 @@ namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { + /// + /// Enables or disables no-clip mode for specified player(s). + /// + /// The player issuing the command. + /// The command input containing targets. [CommandHelper(1, "<#userid or name>")] [RequiresPermissions("@css/cheats")] public void OnNoclipCommand(CCSPlayerController? caller, CommandInfo command) @@ -31,6 +36,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Toggles no-clip mode for a player and shows admin activity messages. + /// + /// The player/admin toggling no-clip. + /// The target player whose no-clip state changes. + /// Optional caller name for messages. + /// Optional command info for logging. internal static void NoClip(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null) { if (!player.IsValid) return; @@ -58,6 +70,12 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, $"css_noclip {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)}"); } + /// + /// Enables or disables god mode for specified player(s). + /// + /// The player issuing the command. + /// The command input containing targets. + [RequiresPermissions("@css/cheats")] [CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnGodCommand(CCSPlayerController? caller, CommandInfo command) @@ -82,6 +100,12 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Toggles god mode for a player and notifies admins. + /// + /// The player/admin toggling god mode. + /// The target player whose god mode changes. + /// Optional command info for logging. internal static void God(CCSPlayerController? caller, CCSPlayerController player, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -111,6 +135,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Freezes target player(s) for an optional specified duration. + /// + /// The player issuing the freeze command. + /// The command input containing targets and duration. [CommandHelper(1, "<#userid or name> [duration]")] [RequiresPermissions("@css/slay")] public void OnFreezeCommand(CCSPlayerController? caller, CommandInfo command) @@ -133,6 +162,11 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Resizes the target player(s) models to a specified scale. + /// + /// The player issuing the resize command. + /// The command input containing targets and scale factor. [CommandHelper(1, "<#userid or name> [size]")] [RequiresPermissions("@css/slay")] public void OnResizeCommand(CCSPlayerController? caller, CommandInfo command) @@ -153,8 +187,8 @@ public partial class CS2_SimpleAdmin sceneNode.GetSkeletonInstance().Scale = size; player.PlayerPawn.Value.AcceptInput("SetScale", null, null, size.ToString(CultureInfo.InvariantCulture)); - - Server.NextFrame(() => + + Server.NextWorldUpdate(() => { Utilities.SetStateChanged(player.PlayerPawn.Value, "CBaseEntity", "m_CBodyComponent"); }); @@ -173,6 +207,14 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Freezes a single player and optionally schedules automatic unfreeze after a duration. + /// + /// The player/admin freezing the player. + /// The player to freeze. + /// Duration of freeze in seconds. + /// Optional name for notifications. + /// Optional command info for logging. internal static void Freeze(CCSPlayerController? caller, CCSPlayerController player, int time, string? callerName = null, CommandInfo? command = null) { if (!player.IsValid) return; @@ -206,6 +248,11 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, $"css_freeze {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)} {time}"); } + /// + /// Unfreezes target player(s). + /// + /// The player issuing the unfreeze command. + /// The command input with targets. [CommandHelper(1, "<#userid or name>")] [RequiresPermissions("@css/slay")] public void OnUnfreezeCommand(CCSPlayerController? caller, CommandInfo command) @@ -224,6 +271,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Unfreezes a single player and notifies admins. + /// + /// The player/admin unfreezing the player. + /// The player to unfreeze. + /// Optional name for notifications. + /// Optional command info for logging. internal static void Unfreeze(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null) { if (!player.IsValid) return; diff --git a/CS2-SimpleAdmin/Commands/playercommands.cs b/CS2-SimpleAdmin/Commands/playercommands.cs index 3be0b36..b66adf2 100644 --- a/CS2-SimpleAdmin/Commands/playercommands.cs +++ b/CS2-SimpleAdmin/Commands/playercommands.cs @@ -11,9 +11,15 @@ namespace CS2_SimpleAdmin; public partial class CS2_SimpleAdmin { - internal static readonly Dictionary SpeedPlayers = []; + internal static readonly Dictionary SpeedPlayers = []; internal static readonly Dictionary GravityPlayers = []; + /// + /// Executes the 'slay' command, forcing the targeted players to commit suicide. + /// Checks player validity and permissions. + /// + /// Player or console issuing the command. + /// Command details, including targets. [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnSlayCommand(CCSPlayerController? caller, CommandInfo command) @@ -32,6 +38,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Performs the actual slay action on a player, with notification and logging. + /// + /// Admin or console issuing the slay. + /// Target player to slay. + /// Optional name to display as the slayer. + /// Optional command info for logging. internal static void Slay(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null) { if (!player.IsValid || player.Connected != PlayerConnectedState.PlayerConnected) return; @@ -59,6 +72,12 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, $"css_slay {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)}"); } + /// + /// Executes the 'give' command to provide a specified weapon to targeted players. + /// Enforces server rules for prohibited weapons. + /// + /// Player or console issuing the command. + /// Command details, including targets and weapon name. [RequiresPermissions("@css/cheats")] [CommandHelper(minArgs: 2, usage: "<#userid or name> ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnGiveCommand(CCSPlayerController? caller, CommandInfo command) @@ -70,13 +89,6 @@ public partial class CS2_SimpleAdmin var playersToTarget = targets.Players.Where(player => player.IsValid && player is { IsHLTV: false, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).ToList(); var weaponName = command.GetArg(2); - // check if item is typed - // if (weaponName.Length < 2) - // { - // command.ReplyToCommand($"No weapon typed."); - // return; - // } - // check if weapon is knife if (weaponName.Contains("_knife") || weaponName.Contains("bayonet")) { @@ -98,6 +110,15 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + + /// + /// Gives a weapon identified by name to a player, handling ambiguous matches and logging. + /// + /// Admin issuing the command. + /// Target player to receive the weapon. + /// Weapon name or partial name. + /// Optional name to display in notifications. + /// Optional command info for logging. private static void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, string weaponName, string? callerName = null, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -137,6 +158,14 @@ public partial class CS2_SimpleAdmin } } + /// + /// Gives a specific weapon to a player, with notifications and logging. + /// + /// Admin issuing the command. + /// Target player. + /// Weapon item object. + /// Optional caller name for notifications. + /// Optional command info. internal static void GiveWeapon(CCSPlayerController? caller, CCSPlayerController player, CsItem weapon, string? callerName = null, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -163,6 +192,12 @@ public partial class CS2_SimpleAdmin } } + /// + /// Executes the 'strip' command, removing all weapons from targeted players. + /// Checks player validity and permissions. + /// + /// Player or console issuing the command. + /// Command details including targets. [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnStripCommand(CCSPlayerController? caller, CommandInfo command) @@ -184,6 +219,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Removes all weapons from a player, with notifications and logging. + /// + /// Admin or console issuing the strip command. + /// Target player. + /// Optional caller name. + /// Optional command info for logging. internal static void StripWeapons(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -214,6 +256,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Sets health value on targeted players. + /// + /// Admin or console issuing the command. + /// Command details including targets and health value. [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name> ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnHpCommand(CCSPlayerController? caller, CommandInfo command) @@ -236,6 +283,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Changes health of a player and logs the action. + /// + /// Admin or console calling the method. + /// Target player. + /// Health value to set. + /// Optional command info. internal static void SetHp(CCSPlayerController? caller, CCSPlayerController player, int health, CommandInfo? command = null) { if (!player.IsValid || player.IsHLTV) return; @@ -263,6 +317,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Sets movement speed on targeted players. + /// + /// Admin or console issuing the command. + /// Command details including targets and speed. [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name> ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnSpeedCommand(CCSPlayerController? caller, CommandInfo command) @@ -288,6 +347,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Changes speed of a player and logs the action. + /// + /// Admin or console calling the method. + /// Target player. + /// Speed value to set. + /// Optional command info. internal static void SetSpeed(CCSPlayerController? caller, CCSPlayerController player, float speed, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -299,9 +365,9 @@ public partial class CS2_SimpleAdmin player.SetSpeed(speed); if (speed == 1f) - SpeedPlayers.Remove(player.Slot); + SpeedPlayers.Remove(player); else - SpeedPlayers[player.Slot] = speed; + SpeedPlayers[player] = speed; // Log the command if (command == null) @@ -319,6 +385,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Sets gravity on targeted players. + /// + /// Admin or console issuing the command. + /// Command details including targets and gravity value. [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name> ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnGravityCommand(CCSPlayerController? caller, CommandInfo command) @@ -344,6 +415,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Changes gravity of a player and logs the action. + /// + /// Admin or console calling the method. + /// Target player. + /// Gravity value to set. + /// Optional command info. internal static void SetGravity(CCSPlayerController? caller, CCSPlayerController player, float gravity, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -375,6 +453,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Sets the money amount for the targeted players. + /// + /// The player/admin executing the command. + /// The command containing target player and money value. [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name> ", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnMoneyCommand(CCSPlayerController? caller, CommandInfo command) @@ -401,6 +484,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Applies money value to a single targeted player and logs the operation. + /// + /// The player/admin setting the money. + /// The player whose money will be set. + /// The value of money to set. + /// Optional command info for logging. internal static void SetMoney(CCSPlayerController? caller, CCSPlayerController player, int money, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -427,6 +517,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Applies damage as a slap effect to the targeted players. + /// + /// The player/admin executing the slap command. + /// The command including targets and optional damage value. [RequiresPermissions("@css/slay")] [CommandHelper(minArgs: 1, usage: "<#userid or name> [damage]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnSlapCommand(CCSPlayerController? caller, CommandInfo command) @@ -457,6 +552,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Applies slap damage to a specific player with notifications and logging. + /// + /// The player/admin applying the slap effect. + /// The target player to slap. + /// The damage amount to apply. + /// Optional command info for logging. internal static void Slap(CCSPlayerController? caller, CCSPlayerController player, int damage, CommandInfo? command = null) { if (!caller.CanTarget(player)) return; @@ -485,6 +587,11 @@ public partial class CS2_SimpleAdmin } } + /// + /// Changes the team of targeted players with optional kill on switch. + /// + /// The player/admin issuing the command. + /// The command containing targets, team info, and optional kill flag. [RequiresPermissions("@css/kick")] [CommandHelper(minArgs: 2, usage: "<#userid or name> [] [-k]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)] public void OnTeamCommand(CCSPlayerController? caller, CommandInfo command) @@ -534,6 +641,15 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Changes the team of a player with various conditions and logs the operation. + /// + /// The player/admin issuing the change. + /// The target player. + /// Team name string. + /// Team enumeration value. + /// If true, kills player on team change. + /// Optional command info for logging. internal static void ChangeTeam(CCSPlayerController? caller, CCSPlayerController player, string teamName, CsTeam teamNum, bool kill, CommandInfo? command = null) { // Check if the player is valid and connected @@ -581,6 +697,11 @@ public partial class CS2_SimpleAdmin Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs); } + /// + /// Renames targeted players to a new name. + /// + /// The admin issuing the rename command. + /// The command including targets and new name. [CommandHelper(1, "<#userid or name> ")] [RequiresPermissions("@css/kick")] public void OnRenameCommand(CCSPlayerController? caller, CommandInfo command) @@ -626,6 +747,11 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Renames permamently targeted players to a new name. + /// + /// The admin issuing the pre-rename command. + /// The command containing targets and new alias. [CommandHelper(1, "<#userid or name> ")] [RequiresPermissions("@css/ban")] public void OnPrenameCommand(CCSPlayerController? caller, CommandInfo command) @@ -676,6 +802,11 @@ public partial class CS2_SimpleAdmin }); } + /// + /// Respawns targeted players, restoring their state. + /// + /// The admin or player issuing respawn. + /// The command including target players. [CommandHelper(1, "<#userid or name>")] [RequiresPermissions("@css/cheats")] public void OnRespawnCommand(CCSPlayerController? caller, CommandInfo command) @@ -700,6 +831,13 @@ public partial class CS2_SimpleAdmin Helper.LogCommand(caller, command); } + /// + /// Respawns a specified player and updates admin notifications. + /// + /// Admin or player executing respawn. + /// Player to respawn. + /// Optional admin name. + /// Optional command info. internal static void Respawn(CCSPlayerController? caller, CCSPlayerController player, string? callerName = null, CommandInfo? command = null) { // Check if the caller can target the player @@ -715,8 +853,8 @@ public partial class CS2_SimpleAdmin var playerPawn = player.PlayerPawn.Value; _cBasePlayerControllerSetPawnFunc.Invoke(player, playerPawn, true, false); VirtualFunction.CreateVoid(player.Handle, GameData.GetOffset("CCSPlayerController_Respawn"))(player); - - if (player.UserId.HasValue && PlayersInfo.TryGetValue(player.UserId.Value, out var value) && value.DiePosition != null) + + if (player.UserId.HasValue && PlayersInfo.TryGetValue(player.SteamID, out var value) && value.DiePosition != null) playerPawn.Teleport(value.DiePosition?.Position, value.DiePosition?.Angle); // Log the command @@ -733,146 +871,270 @@ public partial class CS2_SimpleAdmin Helper.ShowAdminActivity(activityMessageKey, callerName, false, adminActivityArgs); } - [CommandHelper(1, "<#userid or name>")] + /// + /// Teleports targeted player(s) to another player's location. + /// + /// Admin issuing teleport command. + /// Command containing teleport targets and destination. + [CommandHelper(1, "<#userid or name> [#userid or name]")] [RequiresPermissions("@css/kick")] public void OnGotoCommand(CCSPlayerController? caller, CommandInfo command) { - // Check if the caller is valid and has a live pawn - if (caller == null || caller.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) return; + IEnumerable playersToTeleport; + CCSPlayerController? destinationPlayer; - // Get the target players var targets = GetTarget(command); - if (targets == null || targets.Count() > 1) return; - var playersToTarget = targets.Players - .Where(player => player is { IsValid: true, IsHLTV: false }) - .ToList(); + if (command.ArgCount < 3) + { + if (caller == null || caller.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) + return; - // Log the command + if (targets == null || targets.Count() != 1) + return; + + destinationPlayer = targets.Players.FirstOrDefault(p => + p is { IsValid: true, IsHLTV: false, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }); + + if (destinationPlayer == null || !caller.CanTarget(destinationPlayer) || caller.PlayerPawn.Value == null) + return; + + playersToTeleport = [caller]; + } + else + { + var destination = GetTarget(command, 2); + if (targets == null || destination == null || destination.Count() != 1) + return; + + destinationPlayer = destination.Players.FirstOrDefault(p => + p is { IsValid: true, IsHLTV: false, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }); + + if (destinationPlayer == null) + return; + + playersToTeleport = targets.Players + .Where(p => p is { IsValid: true, IsHLTV: false, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE } && caller.CanTarget(p)) + .ToList(); + + if (!playersToTeleport.Any()) + return; + } + + // Log command Helper.LogCommand(caller, command); - // Process each player to teleport - foreach (var player in playersToTarget.Where(player => player is { Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).Where(caller.CanTarget)) + foreach (var player in playersToTeleport) { - if (caller.PlayerPawn.Value == null || player.PlayerPawn.Value == null) + if (player.PlayerPawn?.Value == null || destinationPlayer?.PlayerPawn?.Value == null) continue; - // Teleport the caller to the player and toggle noclip - caller.TeleportPlayer(player); - // caller.PlayerPawn.Value.ToggleNoclip(); + player.TeleportPlayer(destinationPlayer); - caller.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; - caller.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; - - Utilities.SetStateChanged(caller, "CCollisionProperty", "m_CollisionGroup"); - Utilities.SetStateChanged(caller, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); - player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; - Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); - // Set a timer to toggle collision back after 4 seconds + destinationPlayer.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + destinationPlayer.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + Utilities.SetStateChanged(destinationPlayer, "CCollisionProperty", "m_CollisionGroup"); + Utilities.SetStateChanged(destinationPlayer, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + AddTimer(4, () => { - if (!caller.IsValid || caller.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) - return; - - caller.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - caller.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - - Utilities.SetStateChanged(caller, "CCollisionProperty", "m_CollisionGroup"); - Utilities.SetStateChanged(caller, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); - - player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - - Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); - Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + if (player is { IsValid: true, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }) + { + player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); + Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + } + + if (destinationPlayer.IsValid && destinationPlayer.PlayerPawn?.Value?.LifeState == (int)LifeState_t.LIFE_ALIVE) + { + destinationPlayer.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + destinationPlayer.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + Utilities.SetStateChanged(destinationPlayer, "CCollisionProperty", "m_CollisionGroup"); + Utilities.SetStateChanged(destinationPlayer, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + } }); - // Prepare message key and arguments for the teleport notification - var activityMessageKey = "sa_admin_tp_message"; - var adminActivityArgs = new object[] { "CALLER", player.PlayerName }; - - // Show admin activity - if (!SilentPlayers.Contains(caller.Slot) && _localizer != null) + if (caller != null && !SilentPlayers.Contains(caller.Slot) && _localizer != null) { - Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs); + Helper.ShowAdminActivity("sa_admin_tp_message", player.PlayerName, false, "CALLER", destinationPlayer.PlayerName); } } } - - [CommandHelper(1, "<#userid or name>")] + + /// + /// Brings targeted player(s) to the caller or specified destination player's location. + /// + /// Player issuing the bring command. + /// Command containing the destination and targets. + [CommandHelper(1, "<#destination or name> [#userid or name...]")] [RequiresPermissions("@css/kick")] public void OnBringCommand(CCSPlayerController? caller, CommandInfo command) { - // Check if the caller is valid and has a live pawn - if (caller == null || caller.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) + IEnumerable playersToTeleport; + CCSPlayerController? destinationPlayer; + + if (command.ArgCount < 3) + { + if (caller == null || caller.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) + return; + + var targets = GetTarget(command); + if (targets == null || !targets.Any()) + return; + + destinationPlayer = caller; + + playersToTeleport = targets.Players + .Where(p => p is { IsValid: true, IsHLTV: false, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE } && caller.CanTarget(p)) + .ToList(); + } + else + { + var destination = GetTarget(command); + if (destination == null || destination.Count() != 1) + return; + + destinationPlayer = destination.Players.FirstOrDefault(p => + p is { IsValid: true, IsHLTV: false, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }); + + if (destinationPlayer == null) + return; + + // Rest args = targets to teleport + var targets = GetTarget(command, 2); + if (targets == null || !targets.Any()) + return; + + playersToTeleport = targets.Players + .Where(p => p is { IsValid: true, IsHLTV: false, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE } && caller!.CanTarget(p)) + .ToList(); + } + + if (destinationPlayer == null || !playersToTeleport.Any()) return; - // Get the target players - var targets = GetTarget(command); - if (targets == null || targets.Count() > 1) return; - - var playersToTarget = targets.Players - .Where(player => player is { IsValid: true, IsHLTV: false }) - .ToList(); - - // Log the command + // Log command Helper.LogCommand(caller, command); - // Process each player to teleport - foreach (var player in playersToTarget.Where(player => player is { Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).Where(caller.CanTarget)) + foreach (var player in playersToTeleport) { - if (caller.PlayerPawn.Value == null || player.PlayerPawn.Value == null) + if (player.PlayerPawn?.Value == null || destinationPlayer.PlayerPawn?.Value == null) continue; - // Teleport the player to the caller and toggle noclip - player.TeleportPlayer(caller); - // caller.PlayerPawn.Value.ToggleNoclip(); - - caller.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; - caller.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; - - Utilities.SetStateChanged(caller, "CCollisionProperty", "m_CollisionGroup"); - Utilities.SetStateChanged(caller, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); - + // Teleport + player.TeleportPlayer(destinationPlayer); + player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; - Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); - // Set a timer to toggle collision back after 4 seconds + destinationPlayer.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + destinationPlayer.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + Utilities.SetStateChanged(destinationPlayer, "CCollisionProperty", "m_CollisionGroup"); + Utilities.SetStateChanged(destinationPlayer, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + AddTimer(4, () => { - if (!player.IsValid || player.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) - return; - - caller.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - caller.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - - Utilities.SetStateChanged(caller, "CCollisionProperty", "m_CollisionGroup"); - Utilities.SetStateChanged(caller, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); - - player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; - - Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); - Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + if (player is { IsValid: true, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }) + { + player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); + Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + } + + if (destinationPlayer.IsValid && destinationPlayer.PlayerPawn?.Value?.LifeState == (int)LifeState_t.LIFE_ALIVE) + { + destinationPlayer.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + destinationPlayer.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + Utilities.SetStateChanged(destinationPlayer, "CCollisionProperty", "m_CollisionGroup"); + Utilities.SetStateChanged(destinationPlayer, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + } }); - // Prepare message key and arguments for the bring notification - var activityMessageKey = "sa_admin_bring_message"; - var adminActivityArgs = new object[] { "CALLER", player.PlayerName }; - - // Show admin activity - if (!SilentPlayers.Contains(caller.Slot) && _localizer != null) + if (caller != null && !SilentPlayers.Contains(caller.Slot) && _localizer != null) { - Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs); + Helper.ShowAdminActivity("sa_admin_bring_message", player.PlayerName, false, "CALLER", destinationPlayer.PlayerName); } } } + + // [CommandHelper(1, "<#userid or name> [#userid or name]")] + // [RequiresPermissions("@css/kick")] + // public void OnBringCommand(CCSPlayerController? caller, CommandInfo command) + // { + // // Check if the caller is valid and has a live pawn + // if (caller == null || caller.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) + // return; + // + // // Get the target players + // var targets = GetTarget(command); + // if (targets == null || targets.Count() > 1) return; + // + // var playersToTarget = targets.Players + // .Where(player => player is { IsValid: true, IsHLTV: false }) + // .ToList(); + // + // // Log the command + // Helper.LogCommand(caller, command); + // + // // Process each player to teleport + // foreach (var player in playersToTarget.Where(player => player is { Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }).Where(caller.CanTarget)) + // { + // if (caller.PlayerPawn.Value == null || player.PlayerPawn.Value == null) + // continue; + // + // // Teleport the player to the caller and toggle noclip + // player.TeleportPlayer(caller); + // // caller.PlayerPawn.Value.ToggleNoclip(); + // + // caller.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + // caller.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + // + // Utilities.SetStateChanged(caller, "CCollisionProperty", "m_CollisionGroup"); + // Utilities.SetStateChanged(caller, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + // + // player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + // player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_DISSOLVING; + // + // Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); + // Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + // + // // Set a timer to toggle collision back after 4 seconds + // AddTimer(4, () => + // { + // if (!player.IsValid || player.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE) + // return; + // + // caller.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + // caller.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + // + // Utilities.SetStateChanged(caller, "CCollisionProperty", "m_CollisionGroup"); + // Utilities.SetStateChanged(caller, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + // + // player.PlayerPawn.Value.Collision.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + // player.PlayerPawn.Value.Collision.CollisionAttribute.CollisionGroup = (byte)CollisionGroup.COLLISION_GROUP_PLAYER; + // + // Utilities.SetStateChanged(player, "CCollisionProperty", "m_CollisionGroup"); + // Utilities.SetStateChanged(player, "VPhysicsCollisionAttribute_t", "m_nCollisionGroup"); + // }); + // + // // Prepare message key and arguments for the bring notification + // var activityMessageKey = "sa_admin_bring_message"; + // var adminActivityArgs = new object[] { "CALLER", player.PlayerName }; + // + // // Show admin activity + // if (!SilentPlayers.Contains(caller.Slot) && _localizer != null) + // { + // Helper.ShowAdminActivity(activityMessageKey, caller.PlayerName, false, adminActivityArgs); + // } + // } + // } } \ No newline at end of file diff --git a/CS2-SimpleAdmin/Config.cs b/CS2-SimpleAdmin/Config.cs index 3b7e041..50e55fb 100644 --- a/CS2-SimpleAdmin/Config.cs +++ b/CS2-SimpleAdmin/Config.cs @@ -38,67 +38,67 @@ public class Discord [JsonPropertyName("DiscordPenaltyBanSettings")] public DiscordPenaltySetting[] DiscordPenaltyBanSettings { get; set; } = [ - new DiscordPenaltySetting { Name = "Color", Value = "" }, - new DiscordPenaltySetting { Name = "Webhook", Value = "" }, - new DiscordPenaltySetting { Name = "ThumbnailUrl", Value = "" }, - new DiscordPenaltySetting { Name = "ImageUrl", Value = "" }, - new DiscordPenaltySetting { Name = "Footer", Value = "" }, - new DiscordPenaltySetting { Name = "Time", Value = "{relative}" }, + new() { Name = "Color", Value = "" }, + new() { Name = "Webhook", Value = "" }, + new() { Name = "ThumbnailUrl", Value = "" }, + new() { Name = "ImageUrl", Value = "" }, + new() { Name = "Footer", Value = "" }, + new() { Name = "Time", Value = "{relative}" }, ]; [JsonPropertyName("DiscordPenaltyMuteSettings")] public DiscordPenaltySetting[] DiscordPenaltyMuteSettings { get; set; } = [ - new DiscordPenaltySetting { Name = "Color", Value = "" }, - new DiscordPenaltySetting { Name = "Webhook", Value = "" }, - new DiscordPenaltySetting { Name = "ThumbnailUrl", Value = "" }, - new DiscordPenaltySetting { Name = "ImageUrl", Value = "" }, - new DiscordPenaltySetting { Name = "Footer", Value = "" }, - new DiscordPenaltySetting { Name = "Time", Value = "{relative}" }, + new() { Name = "Color", Value = "" }, + new() { Name = "Webhook", Value = "" }, + new() { Name = "ThumbnailUrl", Value = "" }, + new() { Name = "ImageUrl", Value = "" }, + new() { Name = "Footer", Value = "" }, + new() { Name = "Time", Value = "{relative}" }, ]; [JsonPropertyName("DiscordPenaltyGagSettings")] public DiscordPenaltySetting[] DiscordPenaltyGagSettings { get; set; } = [ - new DiscordPenaltySetting { Name = "Color", Value = "" }, - new DiscordPenaltySetting { Name = "Webhook", Value = "" }, - new DiscordPenaltySetting { Name = "ThumbnailUrl", Value = "" }, - new DiscordPenaltySetting { Name = "ImageUrl", Value = "" }, - new DiscordPenaltySetting { Name = "Footer", Value = "" }, - new DiscordPenaltySetting { Name = "Time", Value = "{relative}" }, + new() { Name = "Color", Value = "" }, + new() { Name = "Webhook", Value = "" }, + new() { Name = "ThumbnailUrl", Value = "" }, + new() { Name = "ImageUrl", Value = "" }, + new() { Name = "Footer", Value = "" }, + new() { Name = "Time", Value = "{relative}" }, ]; [JsonPropertyName("DiscordPenaltySilenceSettings")] public DiscordPenaltySetting[] DiscordPenaltySilenceSettings { get; set; } = [ - new DiscordPenaltySetting { Name = "Color", Value = "" }, - new DiscordPenaltySetting { Name = "Webhook", Value = "" }, - new DiscordPenaltySetting { Name = "ThumbnailUrl", Value = "" }, - new DiscordPenaltySetting { Name = "ImageUrl", Value = "" }, - new DiscordPenaltySetting { Name = "Footer", Value = "" }, - new DiscordPenaltySetting { Name = "Time", Value = "{relative}" }, + new() { Name = "Color", Value = "" }, + new() { Name = "Webhook", Value = "" }, + new() { Name = "ThumbnailUrl", Value = "" }, + new() { Name = "ImageUrl", Value = "" }, + new() { Name = "Footer", Value = "" }, + new() { Name = "Time", Value = "{relative}" }, ]; [JsonPropertyName("DiscordPenaltyWarnSettings")] public DiscordPenaltySetting[] DiscordPenaltyWarnSettings { get; set; } = [ - new DiscordPenaltySetting { Name = "Color", Value = "" }, - new DiscordPenaltySetting { Name = "Webhook", Value = "" }, - new DiscordPenaltySetting { Name = "ThumbnailUrl", Value = "" }, - new DiscordPenaltySetting { Name = "ImageUrl", Value = "" }, - new DiscordPenaltySetting { Name = "Footer", Value = "" }, - new DiscordPenaltySetting { Name = "Time", Value = "{relative}" }, + new() { Name = "Color", Value = "" }, + new() { Name = "Webhook", Value = "" }, + new() { Name = "ThumbnailUrl", Value = "" }, + new() { Name = "ImageUrl", Value = "" }, + new() { Name = "Footer", Value = "" }, + new() { Name = "Time", Value = "{relative}" }, ]; [JsonPropertyName("DiscordAssociatedAccountsSettings")] public DiscordPenaltySetting[] DiscordAssociatedAccountsSettings { get; set; } = [ - new DiscordPenaltySetting { Name = "Color", Value = "" }, - new DiscordPenaltySetting { Name = "Webhook", Value = "" }, - new DiscordPenaltySetting { Name = "ThumbnailUrl", Value = "" }, - new DiscordPenaltySetting { Name = "ImageUrl", Value = "" }, - new DiscordPenaltySetting { Name = "Footer", Value = "" }, - new DiscordPenaltySetting { Name = "Time", Value = "{relative}" }, + new() { Name = "Color", Value = "" }, + new() { Name = "Webhook", Value = "" }, + new() { Name = "ThumbnailUrl", Value = "" }, + new() { Name = "ImageUrl", Value = "" }, + new() { Name = "Footer", Value = "" }, + new() { Name = "Time", Value = "{relative}" }, ]; } @@ -124,15 +124,15 @@ public class MenuConfig [JsonPropertyName("Durations")] public DurationItem[] Durations { get; set; } = [ - new DurationItem { Name = "1 minute", Duration = 1 }, - new DurationItem { Name = "5 minutes", Duration = 5 }, - new DurationItem { Name = "15 minutes", Duration = 15 }, - new DurationItem { Name = "1 hour", Duration = 60 }, - new DurationItem { Name = "1 day", Duration = 60 * 24 }, - new DurationItem { Name = "7 days", Duration = 60 * 24 * 7 }, - new DurationItem { Name = "14 days", Duration = 60 * 24 * 14 }, - new DurationItem { Name = "30 days", Duration = 60 * 24 * 30 }, - new DurationItem { Name = "Permanent", Duration = 0 } + new() { Name = "1 minute", Duration = 1 }, + new() { Name = "5 minutes", Duration = 5 }, + new() { Name = "15 minutes", Duration = 15 }, + new() { Name = "1 hour", Duration = 60 }, + new() { Name = "1 day", Duration = 60 * 24 }, + new() { Name = "7 days", Duration = 60 * 24 * 7 }, + new() { Name = "14 days", Duration = 60 * 24 * 14 }, + new() { Name = "30 days", Duration = 60 * 24 * 30 }, + new() { Name = "Permanent", Duration = 0 } ]; [JsonPropertyName("BanReasons")] @@ -177,18 +177,18 @@ public class MenuConfig [JsonPropertyName("AdminFlags")] public AdminFlag[] AdminFlags { get; set; } = [ - new AdminFlag { Name = "Generic", Flag = "@css/generic" }, - new AdminFlag { Name = "Chat", Flag = "@css/chat" }, - new AdminFlag { Name = "Change Map", Flag = "@css/changemap" }, - new AdminFlag { Name = "Slay", Flag = "@css/slay" }, - new AdminFlag { Name = "Kick", Flag = "@css/kick" }, - new AdminFlag { Name = "Ban", Flag = "@css/ban" }, - new AdminFlag { Name = "Perm Ban", Flag = "@css/permban" }, - new AdminFlag { Name = "Unban", Flag = "@css/unban" }, - new AdminFlag { Name = "Show IP", Flag = "@css/showip" }, - new AdminFlag { Name = "Cvar", Flag = "@css/cvar" }, - new AdminFlag { Name = "Rcon", Flag = "@css/rcon" }, - new AdminFlag { Name = "Root (all flags)", Flag = "@css/root" } + new() { Name = "Generic", Flag = "@css/generic" }, + new() { Name = "Chat", Flag = "@css/chat" }, + new() { Name = "Change Map", Flag = "@css/changemap" }, + new() { Name = "Slay", Flag = "@css/slay" }, + new() { Name = "Kick", Flag = "@css/kick" }, + new() { Name = "Ban", Flag = "@css/ban" }, + new() { Name = "Perm Ban", Flag = "@css/permban" }, + new() { Name = "Unban", Flag = "@css/unban" }, + new() { Name = "Show IP", Flag = "@css/showip" }, + new() { Name = "Cvar", Flag = "@css/cvar" }, + new() { Name = "Rcon", Flag = "@css/rcon" }, + new() { Name = "Root (all flags)", Flag = "@css/root" } ]; } @@ -247,26 +247,11 @@ public class OtherSettings public class CS2_SimpleAdminConfig : BasePluginConfig { - [JsonPropertyName("ConfigVersion")] public override int Version { get; set; } = 24; - - [JsonPropertyName("DatabaseHost")] - public string DatabaseHost { get; set; } = ""; - - [JsonPropertyName("DatabasePort")] - public int DatabasePort { get; set; } = 3306; - - [JsonPropertyName("DatabaseUser")] - public string DatabaseUser { get; set; } = ""; - - [JsonPropertyName("DatabasePassword")] - public string DatabasePassword { get; set; } = ""; - - [JsonPropertyName("DatabaseName")] - public string DatabaseName { get; set; } = ""; - - [JsonPropertyName("DatabaseSSlMode")] - public string DatabaseSSlMode { get; set; } = "preferred"; + [JsonPropertyName("ConfigVersion")] public override int Version { get; set; } = 25; + [JsonPropertyName("DatabaseConfig")] + public DatabaseConfig DatabaseConfig { get; set; } = new(); + [JsonPropertyName("OtherSettings")] public OtherSettings OtherSettings { get; set; } = new(); @@ -303,4 +288,38 @@ public class CS2_SimpleAdminConfig : BasePluginConfig [JsonPropertyName("MenuConfig")] public MenuConfig MenuConfigs { get; set; } = new(); -} \ No newline at end of file +} + + +public class DatabaseConfig +{ + [JsonPropertyName("DatabaseType")] + public string DatabaseType { get; set; } = "SQLite"; + + [JsonPropertyName("SqliteFilePath")] + public string SqliteFilePath { get; set; } = "cs2-simpleadmin.sqlite"; + + [JsonPropertyName("DatabaseHost")] + public string DatabaseHost { get; set; } = ""; + + [JsonPropertyName("DatabasePort")] + public int DatabasePort { get; set; } = 3306; + + [JsonPropertyName("DatabaseUser")] + public string DatabaseUser { get; set; } = ""; + + [JsonPropertyName("DatabasePassword")] + public string DatabasePassword { get; set; } = ""; + + [JsonPropertyName("DatabaseName")] + public string DatabaseName { get; set; } = ""; + + [JsonPropertyName("DatabaseSSlMode")] + public string DatabaseSSlMode { get; set; } = "preferred"; +} + +public enum DatabaseType +{ + MySQL, + SQLite +} diff --git a/CS2-SimpleAdmin/Database/Database.cs b/CS2-SimpleAdmin/Database/Database.cs index bb7926f..64735c2 100644 --- a/CS2-SimpleAdmin/Database/Database.cs +++ b/CS2-SimpleAdmin/Database/Database.cs @@ -11,6 +11,11 @@ public class Database(string dbConnectionString) { var connection = new MySqlConnection(dbConnectionString); connection.Open(); + + // using var cmd = connection.CreateCommand(); + // cmd.CommandText = "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci';"; + // cmd.ExecuteNonQueryAsync(); + return connection; } catch (Exception ex) @@ -26,6 +31,11 @@ public class Database(string dbConnectionString) { var connection = new MySqlConnection(dbConnectionString); await connection.OpenAsync(); + + // await using var cmd = connection.CreateCommand(); + // cmd.CommandText = "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci';"; + // await cmd.ExecuteNonQueryAsync(); + return connection; } catch (Exception ex) @@ -35,11 +45,11 @@ public class Database(string dbConnectionString) } } - public void DatabaseMigration() - { - Migration migrator = new(this); - migrator.ExecuteMigrations(); - } + // public async Task DatabaseMigration() + // { + // Migration migrator = new(this); + // await migrator.ExecuteMigrationsAsync(); + // } public bool CheckDatabaseConnection(out string? exception) { diff --git a/CS2-SimpleAdmin/Database/IDatabaseProvider.cs b/CS2-SimpleAdmin/Database/IDatabaseProvider.cs new file mode 100644 index 0000000..25bc129 --- /dev/null +++ b/CS2-SimpleAdmin/Database/IDatabaseProvider.cs @@ -0,0 +1,60 @@ +using System.Data.Common; + +namespace CS2_SimpleAdmin.Database; + +public interface IDatabaseProvider +{ + Task CreateConnectionAsync(); + Task<(bool Success, string? Exception)> CheckConnectionAsync(); + Task DatabaseMigrationAsync(); + + // CacheManager + string GetBanSelectQuery(bool multiServer); + string GetIpHistoryQuery(); + string GetBanUpdateQuery(bool multiServer); + + // PermissionManager + string GetAdminsQuery(); + string GetDeleteAdminQuery(bool globalDelete); + string GetAddAdminQuery(); + string GetAddAdminFlagsQuery(); + string GetUpdateAdminGroupQuery(); + string GetGroupsQuery(); + string GetGroupIdByNameQuery(); + string GetAddGroupQuery(); + string GetAddGroupFlagsQuery(); + string GetAddGroupServerQuery(); + string GetDeleteGroupQuery(); + string GetDeleteOldAdminsQuery(); + + // BanManager + string GetAddBanQuery(); + string GetAddBanBySteamIdQuery(); + string GetAddBanByIpQuery(); + string GetUnbanRetrieveBansQuery(bool multiServer); + string GetUnbanAdminIdQuery(); + string GetInsertUnbanQuery(bool includeReason); + string GetUpdateBanStatusQuery(); + string GetExpireBansQuery(bool multiServer); + string GetExpireIpBansQuery(bool multiServer); + + // MuteManager + string GetAddMuteQuery(bool includePlayerName); + string GetIsMutedQuery(bool multiServer, int timeMode); + string GetMuteStatsQuery(bool multiServer); + string GetUpdateMutePassedQuery(bool multiServer); + string GetCheckExpiredMutesQuery(bool multiServer); + string GetRetrieveMutesQuery(bool multiServer); + string GetUnmuteAdminIdQuery(); + string GetInsertUnmuteQuery(bool includeReason); + string GetUpdateMuteStatusQuery(); + string GetExpireMutesQuery(bool multiServer, int timeMode); + + // WarnManager + string GetAddWarnQuery(bool includePlayerName); + string GetPlayerWarnsQuery(bool multiServer, bool active); + string GetPlayerWarnsCountQuery(bool multiServer, bool active); + string GetUnwarnByIdQuery(bool multiServer); + string GetUnwarnLastQuery(bool multiServer); + string GetExpireWarnsQuery(bool multiServer); +} \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migration.cs b/CS2-SimpleAdmin/Database/Migration.cs index 81e1097..7a25747 100644 --- a/CS2-SimpleAdmin/Database/Migration.cs +++ b/CS2-SimpleAdmin/Database/Migration.cs @@ -1,61 +1,94 @@ -using Microsoft.Extensions.Logging; -using MySqlConnector; +using System.Data.Common; +using Microsoft.Extensions.Logging; namespace CS2_SimpleAdmin.Database; -public class Migration(Database database) +public class Migration(string migrationsPath) { - public void ExecuteMigrations() + /// + /// Executes all migration scripts found in the configured migrations path that have not been applied yet. + /// Creates a migration tracking table if it does not exist. + /// Applies migration scripts in filename order and logs successes or failures. + /// + public async Task ExecuteMigrationsAsync() { - var migrationsDirectory = CS2_SimpleAdmin.Instance.ModuleDirectory + "/Database/Migrations"; + if (CS2_SimpleAdmin.DatabaseProvider == null) return; + var files = Directory.GetFiles(migrationsPath, "*.sql").OrderBy(f => f).ToList(); + if (files.Count == 0) return; - var files = Directory.GetFiles(migrationsDirectory, "*.sql") - .OrderBy(f => f); + await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync(); - using var connection = database.GetConnection(); + await using (var cmd = connection.CreateCommand()) + { + cmd.CommandText = """ + CREATE TABLE IF NOT EXISTS sa_migrations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + version TEXT NOT NULL + ); + + """; - // Create sa_migrations table if not exists - using var cmd = new MySqlCommand(""" - CREATE TABLE IF NOT EXISTS `sa_migrations` ( - `id` INT PRIMARY KEY AUTO_INCREMENT, - `version` VARCHAR(255) NOT NULL - ); - """, connection); + await cmd.ExecuteNonQueryAsync(); + } - cmd.ExecuteNonQuery(); - - // Get the last applied migration version - var lastAppliedVersion = GetLastAppliedVersion(connection); + var lastAppliedVersion = await GetLastAppliedVersionAsync(connection); foreach (var file in files) { var version = Path.GetFileNameWithoutExtension(file); + if (string.Compare(version, lastAppliedVersion, StringComparison.OrdinalIgnoreCase) <= 0) + continue; - // Check if the migration has already been applied - if (string.Compare(version, lastAppliedVersion, StringComparison.OrdinalIgnoreCase) <= 0) continue; - var sqlScript = File.ReadAllText(file); + try + { + var sqlScript = await File.ReadAllTextAsync(file); - using var cmdMigration = new MySqlCommand(sqlScript, connection); - cmdMigration.ExecuteNonQuery(); + await using (var cmdMigration = connection.CreateCommand()) + { + cmdMigration.CommandText = sqlScript; + await cmdMigration.ExecuteNonQueryAsync(); + } - // Update the last applied migration version - UpdateLastAppliedVersion(connection, version); + await UpdateLastAppliedVersionAsync(connection, version); - CS2_SimpleAdmin._logger?.LogInformation($"Migration \"{version}\" successfully applied."); + CS2_SimpleAdmin._logger?.LogInformation($"Migration \"{version}\" successfully applied."); + } + catch (Exception ex) + { + CS2_SimpleAdmin._logger?.LogError(ex, $"Error applying migration \"{version}\"."); + break; + } } } - private static string GetLastAppliedVersion(MySqlConnection connection) + /// + /// Retrieves the version string of the last applied migration from the database. + /// + /// The open database connection. + /// The version string of the last applied migration, or empty string if none. + private static async Task GetLastAppliedVersionAsync(DbConnection connection) { - using var cmd = new MySqlCommand("SELECT `version` FROM `sa_migrations` ORDER BY `id` DESC LIMIT 1;", connection); - var result = cmd.ExecuteScalar(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = "SELECT version FROM sa_migrations ORDER BY id DESC LIMIT 1;"; + var result = await cmd.ExecuteScalarAsync(); return result?.ToString() ?? string.Empty; } - private static void UpdateLastAppliedVersion(MySqlConnection connection, string version) + /// + /// Inserts a record tracking the successful application of a migration version. + /// + /// The open database connection. + /// The version string of the migration applied. + private static async Task UpdateLastAppliedVersionAsync(DbConnection connection, string version) { - using var cmd = new MySqlCommand("INSERT INTO `sa_migrations` (`version`) VALUES (@Version);", connection); - cmd.Parameters.AddWithValue("@Version", version); - cmd.ExecuteNonQuery(); + await using var cmd = connection.CreateCommand(); + cmd.CommandText = "INSERT INTO sa_migrations (version) VALUES (@Version);"; + + var param = cmd.CreateParameter(); + param.ParameterName = "@Version"; + param.Value = version; + cmd.Parameters.Add(param); + + await cmd.ExecuteNonQueryAsync(); } } diff --git a/CS2-SimpleAdmin/Database/Migrations/013_AddNameColumnToSaPlayerIpsTable.sql b/CS2-SimpleAdmin/Database/Migrations/013_AddNameColumnToSaPlayerIpsTable.sql deleted file mode 100644 index 17c9647..0000000 --- a/CS2-SimpleAdmin/Database/Migrations/013_AddNameColumnToSaPlayerIpsTable.sql +++ /dev/null @@ -1,4 +0,0 @@ -UPDATE `sa_players_ips` SET `address` = INET_ATON(address); -ALTER TABLE `sa_players_ips` CHANGE `address` `address` INT UNSIGNED NOT NULL; -ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL AFTER `steamid`; -ALTER TABLE `sa_players_ips` ADD INDEX(`used_at`); diff --git a/CS2-SimpleAdmin/Database/Migrations/001_CreateTables.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/001_CreateTables.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/001_CreateTables.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/001_CreateTables.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/002_CreateFlagsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/002_CreateFlagsTable.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/002_CreateFlagsTable.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/002_CreateFlagsTable.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/003_ChangeColumnsPosition.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/003_ChangeColumnsPosition.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/003_ChangeColumnsPosition.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/003_ChangeColumnsPosition.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/004_MoveOldFlagsToFlagsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/004_MoveOldFlagsToFlagsTable.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/004_MoveOldFlagsToFlagsTable.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/004_MoveOldFlagsToFlagsTable.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/005_CreateUnbansTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/005_CreateUnbansTable.sql similarity index 87% rename from CS2-SimpleAdmin/Database/Migrations/005_CreateUnbansTable.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/005_CreateUnbansTable.sql index 6666539..7000cd5 100644 --- a/CS2-SimpleAdmin/Database/Migrations/005_CreateUnbansTable.sql +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/005_CreateUnbansTable.sql @@ -16,8 +16,8 @@ CREATE TABLE IF NOT EXISTS `sa_unmutes` ( PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -INSERT INTO `sa_admins` (`id`, `player_name`, `player_steamid`, `flags`, `immunity`, `server_id`, `ends`, `created`) -VALUES (-1, 'Console', 'Console', '', '0', NULL, NULL, NOW()); +INSERT IGNORE INTO `sa_admins` (`id`, `player_name`, `player_steamid`, `flags`, `immunity`, `server_id`, `ends`, `created`) +VALUES (0, 'Console', 'Console', '', '0', NULL, NULL, NOW()); UPDATE `sa_admins` SET `id` = 0 WHERE `id` = -1; diff --git a/CS2-SimpleAdmin/Database/Migrations/006_ServerGroupsFeature.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/006_ServerGroupsFeature.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/006_ServerGroupsFeature.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/006_ServerGroupsFeature.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/007_ServerGroupsGlobal.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/007_ServerGroupsGlobal.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/007_ServerGroupsGlobal.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/007_ServerGroupsGlobal.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/008_OnlineTimeInPenalties.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/008_OnlineTimeInPenalties.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/008_OnlineTimeInPenalties.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/008_OnlineTimeInPenalties.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/009_BanAllUsedIpAddress.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/009_BanAllUsedIpAddress.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/009_BanAllUsedIpAddress.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/009_BanAllUsedIpAddress.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/010_CreateWarnsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/010_CreateWarnsTable.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/010_CreateWarnsTable.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/010_CreateWarnsTable.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/011_AddRconColumnToServersTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/011_AddRconColumnToServersTable.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/011_AddRconColumnToServersTable.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/011_AddRconColumnToServersTable.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/012_AddUpdatedAtColumnToSaBansTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/012_AddUpdatedAtColumnToSaBansTable.sql similarity index 100% rename from CS2-SimpleAdmin/Database/Migrations/012_AddUpdatedAtColumnToSaBansTable.sql rename to CS2-SimpleAdmin/Database/Migrations/Mysql/012_AddUpdatedAtColumnToSaBansTable.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql new file mode 100644 index 0000000..81a26a6 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql @@ -0,0 +1,13 @@ +DELETE FROM `sa_players_ips` +WHERE `id` NOT IN ( + SELECT * FROM ( + SELECT MIN(`id`) + FROM `sa_players_ips` + GROUP BY `steamid` + ) AS `keep_ids` +); +DELETE FROM sa_players_ips WHERE INET_ATON(address) IS NULL AND address IS NOT NULL; +UPDATE `sa_players_ips` SET `address` = INET_ATON(address); +ALTER TABLE `sa_players_ips` CHANGE `address` `address` INT UNSIGNED NOT NULL; +ALTER TABLE `sa_players_ips` ADD INDEX (used_at DESC); +ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL AFTER `steamid`; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql new file mode 100644 index 0000000..b70cba2 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql @@ -0,0 +1,3 @@ +ALTER TABLE sa_mutes ADD INDEX (player_steamid, status, ends); +ALTER TABLE sa_mutes ADD INDEX(player_steamid, status, server_id, duration); +ALTER TABLE sa_mutes ADD INDEX(player_steamid, type); diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql new file mode 100644 index 0000000..be13d0f --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql @@ -0,0 +1,23 @@ +ALTER TABLE `sa_bans` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; +UPDATE `sa_bans` +SET admin_steamid = '0' +WHERE admin_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_bans` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; + +ALTER TABLE `sa_mutes` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; +UPDATE `sa_mutes` +SET admin_steamid = '0' +WHERE admin_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_mutes` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; + +ALTER TABLE `sa_warns` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; +UPDATE `sa_warns` +SET admin_steamid = '0' +WHERE admin_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_warns` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; + +UPDATE `sa_admins` +SET player_steamid = '0' +WHERE player_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_admins` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; + diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/001_CreateTables.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/001_CreateTables.sql new file mode 100644 index 0000000..24e6df0 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/001_CreateTables.sql @@ -0,0 +1,47 @@ +CREATE TABLE IF NOT EXISTS `sa_bans` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `player_name` VARCHAR(128), + `player_steamid` VARCHAR(64), + `player_ip` VARCHAR(128), + `admin_steamid` VARCHAR(64) NOT NULL, + `admin_name` VARCHAR(128) NOT NULL, + `reason` VARCHAR(255) NOT NULL, + `duration` INTEGER NOT NULL, + `ends` TIMESTAMP NULL, + `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `server_id` INTEGER NULL, + `status` TEXT NOT NULL DEFAULT 'ACTIVE' + ); + +CREATE TABLE IF NOT EXISTS `sa_mutes` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `player_name` VARCHAR(128) NULL, + `player_steamid` VARCHAR(64) NOT NULL, + `admin_steamid` VARCHAR(64) NOT NULL, + `admin_name` VARCHAR(128) NOT NULL, + `reason` VARCHAR(255) NOT NULL, + `duration` INTEGER NOT NULL, + `ends` TIMESTAMP NULL, + `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `type` TEXT NOT NULL DEFAULT 'GAG', + `server_id` INTEGER NULL, + `status` TEXT NOT NULL DEFAULT 'ACTIVE' + ); + +CREATE TABLE IF NOT EXISTS `sa_admins` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `player_name` VARCHAR(128) NOT NULL, + `player_steamid` VARCHAR(64) NOT NULL, + `flags` TEXT NULL, + `immunity` INTEGER NOT NULL DEFAULT 0, + `server_id` INTEGER NULL, + `ends` TIMESTAMP NULL, + `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + ); + +CREATE TABLE IF NOT EXISTS `sa_servers` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `hostname` VARCHAR(128) NOT NULL, + `address` VARCHAR(64) NOT NULL, + UNIQUE (`address`) + ); \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/002_CreateFlagsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/002_CreateFlagsTable.sql new file mode 100644 index 0000000..6ea1e0b --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/002_CreateFlagsTable.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS `sa_admins_flags` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `admin_id` INTEGER NOT NULL, + `flag` VARCHAR(64) NOT NULL, + FOREIGN KEY (`admin_id`) REFERENCES `sa_admins` (`id`) ON DELETE CASCADE + ); \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/003_ChangeColumnsPosition.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/003_ChangeColumnsPosition.sql new file mode 100644 index 0000000..e69de29 diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/004_MoveOldFlagsToFlagsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/004_MoveOldFlagsToFlagsTable.sql new file mode 100644 index 0000000..9f1b059 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/004_MoveOldFlagsToFlagsTable.sql @@ -0,0 +1,46 @@ +INSERT INTO sa_admins_flags (admin_id, flag) +WITH RECURSIVE + min_admins AS ( + SELECT MIN(id) AS admin_id, player_steamid, server_id + FROM sa_admins + WHERE player_steamid != 'Console' +GROUP BY player_steamid, server_id + ), + split_flags AS ( +SELECT + ma.admin_id, + sa.flags, + 1 AS pos, + CASE + WHEN INSTR(sa.flags || ',', ',') = 0 THEN sa.flags + ELSE SUBSTR(sa.flags, 1, INSTR(sa.flags || ',', ',') - 1) + END AS flag, + CASE + WHEN INSTR(sa.flags || ',', ',') = 0 THEN '' + ELSE SUBSTR(sa.flags, INSTR(sa.flags || ',', ',') + 1) + END AS remaining +FROM min_admins ma + JOIN sa_admins sa ON ma.player_steamid = sa.player_steamid + AND (ma.server_id = sa.server_id OR (ma.server_id IS NULL AND sa.server_id IS NULL)) +WHERE sa.flags IS NOT NULL AND sa.flags != '' + +UNION ALL + +SELECT + admin_id, + flags, + pos + 1, + CASE + WHEN INSTR(remaining || ',', ',') = 0 THEN remaining + ELSE SUBSTR(remaining, 1, INSTR(remaining || ',', ',') - 1) + END AS flag, + CASE + WHEN INSTR(remaining || ',', ',') = 0 THEN '' + ELSE SUBSTR(remaining, INSTR(remaining || ',', ',') + 1) + END AS remaining +FROM split_flags +WHERE remaining != '' + ) +SELECT admin_id, TRIM(flag) +FROM split_flags +WHERE flag IS NOT NULL AND TRIM(flag) != ''; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/005_CreateUnbansTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/005_CreateUnbansTable.sql new file mode 100644 index 0000000..00dabbe --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/005_CreateUnbansTable.sql @@ -0,0 +1,23 @@ +CREATE TABLE IF NOT EXISTS `sa_unbans` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `ban_id` INTEGER NOT NULL, + `admin_id` INTEGER NOT NULL DEFAULT 0, + `reason` VARCHAR(255) NOT NULL DEFAULT 'Unknown', + `date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + +CREATE TABLE IF NOT EXISTS `sa_unmutes` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `mute_id` INTEGER NOT NULL, + `admin_id` INTEGER NOT NULL DEFAULT 0, + `reason` VARCHAR(255) NOT NULL DEFAULT 'Unknown', + `date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + +INSERT OR IGNORE INTO `sa_admins` (`id`, `player_name`, `player_steamid`, `flags`, `immunity`, `server_id`, `ends`, `created`) +VALUES (0, 'Console', 'Console', '', '0', NULL, NULL, CURRENT_TIMESTAMP); + +UPDATE `sa_admins` SET `id` = 0 WHERE `id` = -1; + +ALTER TABLE `sa_bans` ADD `unban_id` INTEGER NULL; +ALTER TABLE `sa_mutes` ADD `unmute_id` INTEGER NULL; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/006_ServerGroupsFeature.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/006_ServerGroupsFeature.sql new file mode 100644 index 0000000..8406f5b --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/006_ServerGroupsFeature.sql @@ -0,0 +1,21 @@ +CREATE TABLE IF NOT EXISTS `sa_groups` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `name` VARCHAR(255) NOT NULL, + `immunity` INTEGER NOT NULL DEFAULT 0 + ); + +CREATE TABLE IF NOT EXISTS `sa_groups_flags` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `group_id` INTEGER NOT NULL, + `flag` VARCHAR(64) NOT NULL, + FOREIGN KEY (`group_id`) REFERENCES `sa_groups` (`id`) ON DELETE CASCADE + ); + +CREATE TABLE IF NOT EXISTS `sa_groups_servers` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `group_id` INTEGER NOT NULL, + `server_id` INTEGER NULL, + FOREIGN KEY (`group_id`) REFERENCES `sa_groups` (`id`) ON DELETE CASCADE + ); + +ALTER TABLE `sa_admins` ADD `group_id` INTEGER NULL; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/007_ServerGroupsGlobal.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/007_ServerGroupsGlobal.sql new file mode 100644 index 0000000..e69de29 diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/008_OnlineTimeInPenalties.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/008_OnlineTimeInPenalties.sql new file mode 100644 index 0000000..588a2f8 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/008_OnlineTimeInPenalties.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_mutes` ADD `passed` INTEGER NULL; diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/009_BanAllUsedIpAddress.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/009_BanAllUsedIpAddress.sql new file mode 100644 index 0000000..e28a4b3 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/009_BanAllUsedIpAddress.sql @@ -0,0 +1,7 @@ +CREATE TABLE IF NOT EXISTS `sa_players_ips` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `steamid` INTEGER NOT NULL, + `address` VARCHAR(64) NOT NULL, + `used_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + UNIQUE (`steamid`, `address`) + ); \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/010_CreateWarnsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/010_CreateWarnsTable.sql new file mode 100644 index 0000000..99879bf --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/010_CreateWarnsTable.sql @@ -0,0 +1,13 @@ +CREATE TABLE IF NOT EXISTS `sa_warns` ( + `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + `player_name` VARCHAR(128) DEFAULT NULL, + `player_steamid` VARCHAR(64) NOT NULL, + `admin_steamid` VARCHAR(64) NOT NULL, + `admin_name` VARCHAR(128) NOT NULL, + `reason` VARCHAR(255) NOT NULL, + `duration` INTEGER NOT NULL, + `ends` TIMESTAMP NOT NULL, + `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `server_id` INTEGER DEFAULT NULL, + `status` TEXT NOT NULL DEFAULT 'ACTIVE' + ); \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/011_AddRconColumnToServersTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/011_AddRconColumnToServersTable.sql new file mode 100644 index 0000000..b3235bc --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/011_AddRconColumnToServersTable.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_servers` ADD `rcon_password` VARCHAR(128) NULL; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/012_AddUpdatedAtColumnToSaBansTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/012_AddUpdatedAtColumnToSaBansTable.sql new file mode 100644 index 0000000..fa99b22 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/012_AddUpdatedAtColumnToSaBansTable.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_bans` ADD COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/013_AddNameColumnToSaPlayerIpsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/013_AddNameColumnToSaPlayerIpsTable.sql new file mode 100644 index 0000000..0c70054 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/013_AddNameColumnToSaPlayerIpsTable.sql @@ -0,0 +1,9 @@ +DELETE FROM `sa_players_ips` +WHERE `id` NOT IN ( + SELECT MIN(`id`) + FROM `sa_players_ips` + GROUP BY `steamid` +); + +ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL; +CREATE INDEX IF NOT EXISTS `idx_sa_players_ips_used_at` ON `sa_players_ips` (`used_at` DESC); \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/014_AddIndexesToMutesTable.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/014_AddIndexesToMutesTable.sql new file mode 100644 index 0000000..cfb7634 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/014_AddIndexesToMutesTable.sql @@ -0,0 +1,3 @@ +CREATE INDEX IF NOT EXISTS `idx_sa_mutes_steamid_status_ends` ON `sa_mutes` (`player_steamid`, `status`, `ends`); +CREATE INDEX IF NOT EXISTS `idx_sa_mutes_steamid_status_server_duration` ON `sa_mutes` (`player_steamid`, `status`, `server_id`, `duration`); +CREATE INDEX IF NOT EXISTS `idx_sa_mutes_steamid_type` ON `sa_mutes` (`player_steamid`, `type`); \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Sqlite/015_steamidToBigInt.sql b/CS2-SimpleAdmin/Database/Migrations/Sqlite/015_steamidToBigInt.sql new file mode 100644 index 0000000..9e1eb71 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Sqlite/015_steamidToBigInt.sql @@ -0,0 +1,15 @@ +UPDATE `sa_bans` +SET admin_steamid = '0' +WHERE admin_steamid NOT GLOB '[0-9]*'; + +UPDATE `sa_mutes` +SET admin_steamid = '0' +WHERE admin_steamid NOT GLOB '[0-9]*'; + +UPDATE `sa_warns` +SET admin_steamid = '0' +WHERE admin_steamid NOT GLOB '[0-9]*'; + +UPDATE `sa_admins` +SET player_steamid = '0' +WHERE player_steamid NOT GLOB '[0-9]*'; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/MysqlDatabaseProvider.cs b/CS2-SimpleAdmin/Database/MysqlDatabaseProvider.cs new file mode 100644 index 0000000..91de7bb --- /dev/null +++ b/CS2-SimpleAdmin/Database/MysqlDatabaseProvider.cs @@ -0,0 +1,384 @@ +using System.Data.Common; +using MySqlConnector; + +namespace CS2_SimpleAdmin.Database; + +public class MySqlDatabaseProvider(string connectionString) : IDatabaseProvider +{ + public async Task CreateConnectionAsync() + { + var connection = new MySqlConnection(connectionString); + await connection.OpenAsync(); + return connection; + } + + public async Task<(bool Success, string? Exception)> CheckConnectionAsync() + { + try + { + await using var conn = await CreateConnectionAsync(); + return (true, null); + } + catch (Exception ex) + { + return (false, ex.Message); + } + } + + public Task DatabaseMigrationAsync() + { + var migration = new Migration(CS2_SimpleAdmin.Instance.ModuleDirectory + "/Database/Migrations/Mysql"); + return migration.ExecuteMigrationsAsync(); + } + + public string GetBanSelectQuery(bool multiServer) + { + return multiServer ? """ + SELECT + id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM sa_bans + """ : """ + SELECT + id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM sa_bans + WHERE server_id = @serverId + """; + } + + public static string GetBanUpdatedSelectQuery(bool multiServer) + { + return multiServer ? """ + SELECT id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM `sa_bans` WHERE updated_at > @lastUpdate OR created > @lastUpdate ORDER BY updated_at DESC + """ : """ + SELECT id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM `sa_bans` WHERE (updated_at > @lastUpdate OR created > @lastUpdate) AND server_id = @serverId ORDER BY updated_at DESC + """; + } + + public string GetIpHistoryQuery() + { + return "SELECT steamid, name, address, used_at FROM sa_players_ips ORDER BY used_at DESC"; + } + + public string GetBanUpdateQuery(bool multiServer) + { + return multiServer ? """ + UPDATE sa_bans + SET + player_ip = COALESCE(player_ip, @PlayerIP), + player_name = COALESCE(player_name, @PlayerName) + WHERE + (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) + AND status = 'ACTIVE' + AND (duration = 0 OR ends > @CurrentTime) + """ : """ + UPDATE sa_bans + SET + player_ip = COALESCE(player_ip, @PlayerIP), + player_name = COALESCE(player_name, @PlayerName) + WHERE + (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) + AND status = 'ACTIVE' + AND (duration = 0 OR ends > @CurrentTime) AND server_id = @ServerId + """; + } + + public string GetAdminsQuery() + { + return """ + SELECT sa_admins.player_steamid, sa_admins.player_name, sa_admins_flags.flag, sa_admins.immunity, sa_admins.ends + FROM sa_admins_flags + JOIN sa_admins ON sa_admins_flags.admin_id = sa_admins.id + WHERE (sa_admins.ends IS NULL OR sa_admins.ends > @CurrentTime) + AND (sa_admins.server_id IS NULL OR sa_admins.server_id = @serverid) + ORDER BY sa_admins.player_steamid + """; + } + + public string GetDeleteAdminQuery(bool globalDelete) => + globalDelete + ? "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID" + : "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID AND server_id = @ServerId"; + + public string GetAddAdminQuery() => + "INSERT INTO sa_admins (player_steamid, player_name, immunity, ends, created, server_id) " + + "VALUES (@playerSteamId, @playerName, @immunity, @ends, @created, @serverid); SELECT LAST_INSERT_ID();"; + + public string GetGroupsQuery() + { + return """ + SELECT g.group_id, sg.name AS group_name, sg.immunity, f.flag + FROM sa_groups_flags f + JOIN sa_groups_servers g ON f.group_id = g.group_id + JOIN sa_groups sg ON sg.id = g.group_id + WHERE (g.server_id = @serverid OR server_id IS NULL) + """; + } + + public string GetAddAdminFlagsQuery() => + "INSERT INTO sa_admins_flags (admin_id, flag) VALUES (@adminId, @flag);"; + + public string GetUpdateAdminGroupQuery() => + "UPDATE sa_admins SET group_id = @groupId WHERE id = @adminId;"; + + public string GetAddGroupQuery() => + "INSERT INTO sa_groups (name, immunity) VALUES (@groupName, @immunity); SELECT LAST_INSERT_ID();"; + + public string GetGroupIdByNameQuery() => + """ + SELECT sgs.group_id + FROM sa_groups_servers sgs + JOIN sa_groups sg ON sgs.group_id = sg.id + WHERE sg.name = @groupName + ORDER BY (sgs.server_id = @serverId) DESC, sgs.server_id ASC + LIMIT 1; + """; + public string GetAddGroupFlagsQuery() => + "INSERT INTO sa_groups_flags (group_id, flag) VALUES (@groupId, @flag);"; + + public string GetAddGroupServerQuery() => + "INSERT INTO sa_groups_servers (group_id, server_id) VALUES (@groupId, @server_id);"; + + public string GetDeleteGroupQuery() => + "DELETE FROM sa_groups WHERE name = @groupName;"; + + public string GetDeleteOldAdminsQuery() => + "DELETE FROM sa_admins WHERE ends IS NOT NULL AND ends <= @CurrentTime;"; + + public string GetAddBanQuery() + { + return """ + INSERT INTO `sa_bans` + (`player_steamid`, `player_name`, `player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) + VALUES + (@playerSteamid, @playerName, @playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); + SELECT LAST_INSERT_ID(); + """; + } + + public string GetAddBanBySteamIdQuery() + { + return """ + INSERT INTO `sa_bans` + (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) + VALUES + (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); + SELECT LAST_INSERT_ID(); + """; + } + + public string GetAddBanByIpQuery() + { + return """ + INSERT INTO `sa_bans` + (`player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) + VALUES + (@playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); + """; + } + + public string GetUnbanRetrieveBansQuery(bool multiServer) + { + return multiServer + ? "SELECT id FROM sa_bans WHERE (player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern) AND status = 'ACTIVE'" + : "SELECT id FROM sa_bans WHERE (player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern) AND status = 'ACTIVE' AND server_id = @serverid"; + } + + public string GetUnbanAdminIdQuery() + { + return "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId"; + } + + public string GetInsertUnbanQuery(bool includeReason) + { + return includeReason + ? "INSERT INTO sa_unbans (ban_id, admin_id, reason) VALUES (@banId, @adminId, @reason); SELECT LAST_INSERT_ID();" + : "INSERT INTO sa_unbans (ban_id, admin_id) VALUES (@banId, @adminId); SELECT LAST_INSERT_ID();"; + } + + public string GetUpdateBanStatusQuery() + { + return "UPDATE sa_bans SET status = 'UNBANNED', unban_id = @unbanId WHERE id = @banId"; + } + + public string GetExpireBansQuery(bool multiServer) + { + return multiServer + ? "UPDATE sa_bans SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @currentTime" + : "UPDATE sa_bans SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @currentTime AND server_id = @serverid"; + } + + public string GetExpireIpBansQuery(bool multiServer) + { + return multiServer + ? "UPDATE sa_bans SET player_ip = NULL WHERE status = 'ACTIVE' AND ends <= @ipBansTime" + : "UPDATE sa_bans SET player_ip = NULL WHERE status = 'ACTIVE' AND ends <= @ipBansTime AND server_id = @serverid"; + } + + public string GetAddMuteQuery(bool includePlayerName) => + includePlayerName + ? """ + INSERT INTO `sa_mutes` + (`player_steamid`, `player_name`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`, `server_id`) + VALUES (@playerSteamid, @playerName, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @type, @serverid); + SELECT LAST_INSERT_ID(); + """ + : """ + INSERT INTO `sa_mutes` + (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`, `server_id`) + VALUES (@playerSteamid, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @type, @serverid); + SELECT LAST_INSERT_ID(); + """; + + public string GetIsMutedQuery(bool multiServer, int timeMode) => + multiServer + ? (timeMode == 1 + ? "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime)" + : "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR duration > COALESCE(passed, 0))") + : (timeMode == 1 + ? "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime) AND server_id = @serverid" + : "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR duration > COALESCE(passed, 0)) AND server_id = @serverid"); + + public string GetMuteStatsQuery(bool multiServer) => + multiServer + ? """ + SELECT + COUNT(CASE WHEN type = 'MUTE' THEN 1 END) AS TotalMutes, + COUNT(CASE WHEN type = 'GAG' THEN 1 END) AS TotalGags, + COUNT(CASE WHEN type = 'SILENCE' THEN 1 END) AS TotalSilences + FROM sa_mutes + WHERE player_steamid = @PlayerSteamID; + """ + : """ + SELECT + COUNT(CASE WHEN type = 'MUTE' THEN 1 END) AS TotalMutes, + COUNT(CASE WHEN type = 'GAG' THEN 1 END) AS TotalGags, + COUNT(CASE WHEN type = 'SILENCE' THEN 1 END) AS TotalSilences + FROM sa_mutes + WHERE player_steamid = @PlayerSteamID AND server_id = @ServerId; + """; + + public string GetUpdateMutePassedQuery(bool multiServer) => + multiServer + ? "UPDATE `sa_mutes` SET passed = COALESCE(passed, 0) + 1 WHERE (player_steamid = @PlayerSteamID) AND duration > 0 AND status = 'ACTIVE'" + : "UPDATE `sa_mutes` SET passed = COALESCE(passed, 0) + 1 WHERE (player_steamid = @PlayerSteamID) AND duration > 0 AND status = 'ACTIVE' AND server_id = @serverid"; + + public string GetCheckExpiredMutesQuery(bool multiServer) => + multiServer + ? "SELECT * FROM `sa_mutes` WHERE player_steamid = @PlayerSteamID AND passed >= duration AND duration > 0 AND status = 'ACTIVE'" + : "SELECT * FROM `sa_mutes` WHERE player_steamid = @PlayerSteamID AND passed >= duration AND duration > 0 AND status = 'ACTIVE' AND server_id = @serverid"; + + public string GetRetrieveMutesQuery(bool multiServer) => + multiServer + ? "SELECT id FROM sa_mutes WHERE (player_steamid = @pattern OR player_name = @pattern) AND type = @muteType AND status = 'ACTIVE'" + : "SELECT id FROM sa_mutes WHERE (player_steamid = @pattern OR player_name = @pattern) AND type = @muteType AND status = 'ACTIVE' AND server_id = @serverid"; + + public string GetUnmuteAdminIdQuery() => + "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId"; + + public string GetInsertUnmuteQuery(bool includeReason) => + includeReason + ? "INSERT INTO sa_unmutes (mute_id, admin_id, reason) VALUES (@muteId, @adminId, @reason); SELECT LAST_INSERT_ID();" + : "INSERT INTO sa_unmutes (mute_id, admin_id) VALUES (@muteId, @adminId); SELECT LAST_INSERT_ID();"; + + public string GetUpdateMuteStatusQuery() => + "UPDATE sa_mutes SET status = 'UNMUTED', unmute_id = @unmuteId WHERE id = @muteId"; + + public string GetExpireMutesQuery(bool multiServer, int timeMode) => + multiServer + ? (timeMode == 1 + ? "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime" + : "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND `passed` >= `duration`") + : (timeMode == 1 + ? "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime AND server_id = @serverid" + : "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND `passed` >= `duration` AND server_id = @serverid"); + + + public string GetAddWarnQuery(bool includePlayerName) => + includePlayerName + ? """ + INSERT INTO `sa_warns` + (`player_steamid`, `player_name`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) + VALUES + (@playerSteamid, @playerName, @adminSteamid, @adminName, @warnReason, @duration, @ends, @created, @serverid); + SELECT LAST_INSERT_ID(); + """ + : """ + INSERT INTO `sa_warns` + (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) + VALUES + (@playerSteamid, @adminSteamid, @adminName, @warnReason, @duration, @ends, @created, @serverid); + SELECT LAST_INSERT_ID(); + """; + + public string GetPlayerWarnsQuery(bool multiServer, bool active) => + multiServer + ? active + ? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' ORDER BY id DESC" + : "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID ORDER BY id DESC" + : active + ? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid AND status = 'ACTIVE' ORDER BY id DESC" + : "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid ORDER BY id DESC"; + + public string GetPlayerWarnsCountQuery(bool multiServer, bool active) => + multiServer + ? active + ? "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE'" + : "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID" + : active + ? "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid AND status = 'ACTIVE'" + : "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid"; + + public string GetUnwarnByIdQuery(bool multiServer) => + multiServer + ? "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId" + : "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId AND server_id = @serverid"; + + public string GetUnwarnLastQuery(bool multiServer) => + multiServer + ? """ + UPDATE sa_warns + JOIN ( + SELECT MAX(id) AS max_id + FROM sa_warns + WHERE player_steamid = @steamid AND status = 'ACTIVE' + ) AS subquery ON sa_warns.id = subquery.max_id + SET sa_warns.status = 'EXPIRED' + WHERE sa_warns.status = 'ACTIVE' AND sa_warns.player_steamid = @steamid; + """ + : """ + UPDATE sa_warns + JOIN ( + SELECT MAX(id) AS max_id + FROM sa_warns + WHERE player_steamid = @steamid AND status = 'ACTIVE' AND server_id = @serverid + ) AS subquery ON sa_warns.id = subquery.max_id + SET sa_warns.status = 'EXPIRED' + WHERE sa_warns.status = 'ACTIVE' AND sa_warns.player_steamid = @steamid AND sa_warns.server_id = @serverid; + """; + + public string GetExpireWarnsQuery(bool multiServer) => + multiServer + ? "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime" + : "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime AND server_id = @serverid"; + + public ValueTask DisposeAsync() => ValueTask.CompletedTask; +} + diff --git a/CS2-SimpleAdmin/Database/SqliteDatabaseProvider.cs b/CS2-SimpleAdmin/Database/SqliteDatabaseProvider.cs new file mode 100644 index 0000000..bd63d7b --- /dev/null +++ b/CS2-SimpleAdmin/Database/SqliteDatabaseProvider.cs @@ -0,0 +1,366 @@ +using System.Data.Common; +using System.Data.SQLite; + +namespace CS2_SimpleAdmin.Database; + +public class SqliteDatabaseProvider(string filePath) : IDatabaseProvider +{ + private readonly string _connectionString = $"Data Source={filePath}"; + + public async Task CreateConnectionAsync() + { + var conn = new SQLiteConnection(_connectionString); + await conn.OpenAsync(); + return conn; + } + + public async Task<(bool Success, string? Exception)> CheckConnectionAsync() + { + try + { + await using var conn = await CreateConnectionAsync(); + await using var cmd = conn.CreateCommand(); + cmd.CommandText = "SELECT 1"; + await cmd.ExecuteScalarAsync(); + return (true, null); + } + catch (Exception ex) + { + return (false, ex.Message); + } + } + + public Task DatabaseMigrationAsync() + { + var migration = new Migration(CS2_SimpleAdmin.Instance.ModuleDirectory + "/Database/Migrations/Sqlite"); + return migration.ExecuteMigrationsAsync(); + } + + public string GetBanSelectQuery(bool multiServer) => + multiServer + ? """ + SELECT id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM sa_bans + """ + : """ + SELECT id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM sa_bans + WHERE server_id = @serverId + """; + + public static string GetBanUpdatedSelectQuery(bool multiServer) => + multiServer + ? """ + SELECT id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM sa_bans + WHERE updated_at > @lastUpdate OR created > @lastUpdate + ORDER BY updated_at DESC + """ + : """ + SELECT id AS Id, + player_name AS PlayerName, + player_steamid AS PlayerSteamId, + player_ip AS PlayerIp, + status AS Status + FROM sa_bans + WHERE (updated_at > @lastUpdate OR created > @lastUpdate) + AND server_id = @serverId + ORDER BY updated_at DESC + """; + + public string GetIpHistoryQuery() => + "SELECT steamid, name, address, used_at FROM sa_players_ips ORDER BY used_at DESC"; + + public string GetBanUpdateQuery(bool multiServer) => + multiServer + ? """ + UPDATE sa_bans + SET player_ip = COALESCE(player_ip, @PlayerIP), + player_name = COALESCE(player_name, @PlayerName) + WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) + AND status = 'ACTIVE' + AND (duration = 0 OR ends > @CurrentTime) + """ + : """ + UPDATE sa_bans + SET player_ip = COALESCE(player_ip, @PlayerIP), + player_name = COALESCE(player_name, @PlayerName) + WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) + AND status = 'ACTIVE' + AND (duration = 0 OR ends > @CurrentTime) + AND server_id = @ServerId + """; + + public string GetAddBanQuery() => + """ + INSERT INTO sa_bans + (player_steamid, player_name, player_ip, admin_steamid, admin_name, reason, duration, ends, created, server_id) + VALUES + (@playerSteamid, @playerName, @playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); + SELECT last_insert_rowid(); + """; + + public string GetAddBanBySteamIdQuery() => + """ + INSERT INTO sa_bans + (player_steamid, admin_steamid, admin_name, reason, duration, ends, created, server_id) + VALUES + (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); + SELECT last_insert_rowid(); + """; + + public string GetAddBanByIpQuery() => + """ + INSERT INTO sa_bans + (player_ip, admin_steamid, admin_name, reason, duration, ends, created, server_id) + VALUES + (@playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); + SELECT last_insert_rowid(); + """; + + public string GetUnbanRetrieveBansQuery(bool multiServer) => + multiServer + ? "SELECT id FROM sa_bans WHERE (player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern) AND status = 'ACTIVE'" + : "SELECT id FROM sa_bans WHERE (player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern) AND status = 'ACTIVE' AND server_id = @serverid"; + + public string GetUnbanAdminIdQuery() => + "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId"; + + public string GetInsertUnbanQuery(bool includeReason) => + includeReason + ? "INSERT INTO sa_unbans (ban_id, admin_id, reason) VALUES (@banId, @adminId, @reason); SELECT last_insert_rowid();" + : "INSERT INTO sa_unbans (ban_id, admin_id) VALUES (@banId, @adminId); SELECT last_insert_rowid();"; + + public string GetUpdateBanStatusQuery() => + "UPDATE sa_bans SET status = 'UNBANNED', unban_id = @unbanId WHERE id = @banId"; + + public string GetExpireBansQuery(bool multiServer) => + multiServer + ? "UPDATE sa_bans SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @currentTime" + : "UPDATE sa_bans SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @currentTime AND server_id = @serverid"; + + public string GetExpireIpBansQuery(bool multiServer) => + multiServer + ? "UPDATE sa_bans SET player_ip = NULL WHERE status = 'ACTIVE' AND ends <= @ipBansTime" + : "UPDATE sa_bans SET player_ip = NULL WHERE status = 'ACTIVE' AND ends <= @ipBansTime AND server_id = @serverid"; + + public string GetAdminsQuery() => + """ + SELECT sa_admins.player_steamid, sa_admins.player_name, sa_admins_flags.flag, sa_admins.immunity, sa_admins.ends + FROM sa_admins_flags + JOIN sa_admins ON sa_admins_flags.admin_id = sa_admins.id + WHERE (sa_admins.ends IS NULL OR sa_admins.ends > @CurrentTime) + AND (sa_admins.server_id IS NULL OR sa_admins.server_id = @serverid) + ORDER BY sa_admins.player_steamid + """; + + public string GetDeleteAdminQuery(bool globalDelete) => + globalDelete + ? "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID" + : "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID AND server_id = @ServerId"; + + public string GetAddAdminQuery() => + """ + INSERT INTO sa_admins (player_steamid, player_name, immunity, ends, created, server_id) + VALUES (@playerSteamId, @playerName, @immunity, @ends, @created, @serverid); + SELECT last_insert_rowid(); + """; + + public string GetGroupsQuery() => + """ + SELECT g.group_id, sg.name AS group_name, sg.immunity, f.flag + FROM sa_groups_flags f + JOIN sa_groups_servers g ON f.group_id = g.group_id + JOIN sa_groups sg ON sg.id = g.group_id + WHERE (g.server_id = @serverid OR server_id IS NULL) + """; + + public string GetAddAdminFlagsQuery() => + "INSERT INTO sa_admins_flags (admin_id, flag) VALUES (@adminId, @flag);"; + + public string GetUpdateAdminGroupQuery() => + "UPDATE sa_admins SET group_id = @groupId WHERE id = @adminId;"; + + public string GetAddGroupQuery() => + """ + INSERT INTO sa_groups (name, immunity) VALUES (@groupName, @immunity); + SELECT last_insert_rowid(); + """; + + public string GetGroupIdByNameQuery() => + """ + SELECT sgs.group_id + FROM sa_groups_servers sgs + JOIN sa_groups sg ON sgs.group_id = sg.id + WHERE sg.name = @groupName + ORDER BY (sgs.server_id = @serverId) DESC, sgs.server_id ASC + LIMIT 1; + """; + + public string GetAddGroupFlagsQuery() => + "INSERT INTO sa_groups_flags (group_id, flag) VALUES (@groupId, @flag);"; + + public string GetAddGroupServerQuery() => + "INSERT INTO sa_groups_servers (group_id, server_id) VALUES (@groupId, @server_id);"; + + public string GetDeleteGroupQuery() => + "DELETE FROM sa_groups WHERE name = @groupName;"; + + public string GetDeleteOldAdminsQuery() => + "DELETE FROM sa_admins WHERE ends IS NOT NULL AND ends <= @CurrentTime;"; + + public string GetAddMuteQuery(bool includePlayerName) => + includePlayerName + ? """ + INSERT INTO sa_mutes + (player_steamid, player_name, admin_steamid, admin_name, reason, duration, ends, created, type, server_id) + VALUES (@playerSteamid, @playerName, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @type, @serverid); + SELECT last_insert_rowid(); + """ + : """ + INSERT INTO sa_mutes + (player_steamid, admin_steamid, admin_name, reason, duration, ends, created, type, server_id) + VALUES (@playerSteamid, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @type, @serverid); + SELECT last_insert_rowid(); + """; + + public string GetIsMutedQuery(bool multiServer, int timeMode) => + multiServer + ? (timeMode == 1 + ? "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime)" + : "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR duration > COALESCE(passed, 0))") + : (timeMode == 1 + ? "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime) AND server_id = @serverid" + : "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR duration > COALESCE(passed, 0)) AND server_id = @serverid"); + + public string GetMuteStatsQuery(bool multiServer) => + multiServer + ? """ + SELECT + COUNT(CASE WHEN type = 'MUTE' THEN 1 END) AS TotalMutes, + COUNT(CASE WHEN type = 'GAG' THEN 1 END) AS TotalGags, + COUNT(CASE WHEN type = 'SILENCE' THEN 1 END) AS TotalSilences + FROM sa_mutes + WHERE player_steamid = @PlayerSteamID; + """ + : """ + SELECT + COUNT(CASE WHEN type = 'MUTE' THEN 1 END) AS TotalMutes, + COUNT(CASE WHEN type = 'GAG' THEN 1 END) AS TotalGags, + COUNT(CASE WHEN type = 'SILENCE' THEN 1 END) AS TotalSilences + FROM sa_mutes + WHERE player_steamid = @PlayerSteamID AND server_id = @ServerId; + """; + + public string GetUpdateMutePassedQuery(bool multiServer) => + multiServer + ? "UPDATE sa_mutes SET passed = COALESCE(passed, 0) + 1 WHERE (player_steamid = @PlayerSteamID) AND duration > 0 AND status = 'ACTIVE'" + : "UPDATE sa_mutes SET passed = COALESCE(passed, 0) + 1 WHERE (player_steamid = @PlayerSteamID) AND duration > 0 AND status = 'ACTIVE' AND server_id = @serverid"; + + public string GetCheckExpiredMutesQuery(bool multiServer) => + multiServer + ? "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND passed >= duration AND duration > 0 AND status = 'ACTIVE'" + : "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND passed >= duration AND duration > 0 AND status = 'ACTIVE' AND server_id = @serverid"; + + public string GetRetrieveMutesQuery(bool multiServer) => + multiServer + ? "SELECT id FROM sa_mutes WHERE (player_steamid = @pattern OR player_name = @pattern) AND type = @muteType AND status = 'ACTIVE'" + : "SELECT id FROM sa_mutes WHERE (player_steamid = @pattern OR player_name = @pattern) AND type = @muteType AND status = 'ACTIVE' AND server_id = @serverid"; + + public string GetUnmuteAdminIdQuery() => + "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId"; + + public string GetInsertUnmuteQuery(bool includeReason) => + includeReason + ? "INSERT INTO sa_unmutes (mute_id, admin_id, reason) VALUES (@muteId, @adminId, @reason); SELECT last_insert_rowid();" + : "INSERT INTO sa_unmutes (mute_id, admin_id) VALUES (@muteId, @adminId); SELECT last_insert_rowid();"; + + public string GetUpdateMuteStatusQuery() => + "UPDATE sa_mutes SET status = 'UNMUTED', unmute_id = @unmuteId WHERE id = @muteId"; + + public string GetExpireMutesQuery(bool multiServer, int timeMode) => + multiServer + ? (timeMode == 1 + ? "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @CurrentTime" + : "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND passed >= duration") + : (timeMode == 1 + ? "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @CurrentTime AND server_id = @serverid" + : "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND passed >= duration AND server_id = @serverid"); + + public string GetAddWarnQuery(bool includePlayerName) => + includePlayerName + ? """ + INSERT INTO sa_warns + (player_steamid, player_name, admin_steamid, admin_name, reason, duration, ends, created, server_id) + VALUES + (@playerSteamid, @playerName, @adminSteamid, @adminName, @warnReason, @duration, @ends, @created, @serverid); + SELECT last_insert_rowid(); + """ + : """ + INSERT INTO sa_warns + (player_steamid, admin_steamid, admin_name, reason, duration, ends, created, server_id) + VALUES + (@playerSteamid, @adminSteamid, @adminName, @warnReason, @duration, @ends, @created, @serverid); + SELECT last_insert_rowid(); + """; + + public string GetPlayerWarnsQuery(bool multiServer, bool active) => + multiServer + ? active + ? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' ORDER BY id DESC" + : "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID ORDER BY id DESC" + : active + ? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid AND status = 'ACTIVE' ORDER BY id DESC" + : "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid ORDER BY id DESC"; + + public string GetPlayerWarnsCountQuery(bool multiServer, bool active) => + multiServer + ? active + ? "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE'" + : "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID" + : active + ? "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid AND status = 'ACTIVE'" + : "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid"; + + public string GetUnwarnByIdQuery(bool multiServer) => + multiServer + ? "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId" + : "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId AND server_id = @serverid"; + + public string GetUnwarnLastQuery(bool multiServer) => + multiServer + ? """ + UPDATE sa_warns + SET status = 'EXPIRED' + WHERE status = 'ACTIVE' + AND player_steamid = @steamid + ORDER BY id DESC + LIMIT 1 + """ + : """ + UPDATE sa_warns + SET status = 'EXPIRED' + WHERE status = 'ACTIVE' + AND player_steamid = @steamid + AND server_id = @serverid + ORDER BY id DESC + LIMIT 1 + """; + + public string GetExpireWarnsQuery(bool multiServer) => + multiServer + ? "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @CurrentTime" + : "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND duration > 0 AND ends <= @CurrentTime AND server_id = @serverid"; +} diff --git a/CS2-SimpleAdmin/Events.cs b/CS2-SimpleAdmin/Events.cs index d872795..68847f4 100644 --- a/CS2-SimpleAdmin/Events.cs +++ b/CS2-SimpleAdmin/Events.cs @@ -1,9 +1,9 @@ -using CounterStrikeSharp.API; +using System.Numerics; +using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Attributes.Registration; using CounterStrikeSharp.API.Modules.Commands; using CounterStrikeSharp.API.Modules.Entities; -using CounterStrikeSharp.API.Modules.Utils; using CS2_SimpleAdmin.Managers; using CS2_SimpleAdmin.Models; using CS2_SimpleAdminApi; @@ -12,7 +12,6 @@ using System.Text; using CounterStrikeSharp.API.Core.Translations; using CounterStrikeSharp.API.Modules.Admin; using CounterStrikeSharp.API.Modules.UserMessages; -using CounterStrikeSharp.API.ValveConstants.Protobuf; namespace CS2_SimpleAdmin; @@ -23,7 +22,9 @@ public partial class CS2_SimpleAdmin private void RegisterEvents() { RegisterListener(OnMapStart); + // RegisterListener(OnClientConnect); RegisterListener(OnClientConnect); + RegisterListener(OnClientConnected); RegisterListener(OnGameServerSteamAPIActivated); if (Config.OtherSettings.UserMessageGagChatType) HookUserMessage(118, HookUmChat); @@ -34,6 +35,22 @@ public partial class CS2_SimpleAdmin // AddCommandListener("say_team", OnCommandTeamSay); } + private void UnregisterEvents() + { + RemoveListener(OnMapStart); + RemoveListener(OnClientConnect); + RemoveListener(OnClientConnected); + RemoveListener(OnGameServerSteamAPIActivated); + if (Config.OtherSettings.UserMessageGagChatType) + UnhookUserMessage(118, HookUmChat); + + RemoveCommandListener(null!, ComamndListenerHandler, HookMode.Pre); + // AddCommandListener("callvote", OnCommandCallVote); + // AddCommandListener("say", OnCommandSay); + // AddCommandListener("say_team", OnCommandTeamSay); + } + + // private HookResult OnCommandCallVote(CCSPlayerController? caller, CommandInfo info) // { // var voteType = info.GetArg(1).ToLower(); @@ -53,7 +70,7 @@ public partial class CS2_SimpleAdmin private void OnGameServerSteamAPIActivated() { - if (_serverLoading) + if (ServerLoaded || _serverLoading) return; _serverLoading = true; @@ -72,7 +89,18 @@ public partial class CS2_SimpleAdmin Logger.LogCritical("[OnClientDisconnect] Before"); #endif - if (player == null || !player.IsValid || player.IsBot) + if (player == null || !player.IsValid || player.IsHLTV) + return HookResult.Continue; + + BotPlayers.Remove(player); + CachedPlayers.Remove(player); + + SilentPlayers.Remove(player.Slot); + GodPlayers.Remove(player.Slot); + SpeedPlayers.Remove(player); + GravityPlayers.Remove(player); + + if (player.IsBot) return HookResult.Continue; #if DEBUG @@ -94,32 +122,28 @@ public partial class CS2_SimpleAdmin } else { - DisconnectedPlayers.Add(new DisconnectedPlayer(steamId, player.PlayerName, player.IpAddress?.Split(":")[0], Time.ActualDateTime())); + DisconnectedPlayers.Add(new DisconnectedPlayer(steamId, player.PlayerName, + player.IpAddress?.Split(":")[0], Time.ActualDateTime())); } - - PlayerPenaltyManager.RemoveAllPenalties(player.Slot); - - SilentPlayers.Remove(player.Slot); - GodPlayers.Remove(player.Slot); - SpeedPlayers.Remove(player.Slot); - GravityPlayers.Remove(player); - - if (player.UserId.HasValue) - PlayersInfo.TryRemove(player.UserId.Value, out _); - if (!PermissionManager.AdminCache.TryGetValue(steamId, out var data) + PlayerPenaltyManager.RemoveAllPenalties(player.Slot); + + if (player.UserId.HasValue) + PlayersInfo.TryRemove(player.SteamID, out _); + + if (!PermissionManager.AdminCache.TryGetValue(steamId, out var data) || !(data.ExpirationTime <= Time.ActualDateTime())) { return HookResult.Continue; } - + AdminManager.RemovePlayerPermissions(steamId, PermissionManager.AdminCache[steamId].Flags.ToArray()); AdminManager.RemovePlayerFromGroup(steamId, true, PermissionManager.AdminCache[steamId].Flags.ToArray()); var adminData = AdminManager.GetPlayerAdminData(steamId); - + if (adminData == null || data.Flags.ToList().Count != 0 && adminData.Groups.ToList().Count != 0) return HookResult.Continue; - + AdminManager.ClearPlayerPermissions(steamId); AdminManager.RemovePlayerAdminData(steamId); @@ -131,37 +155,68 @@ public partial class CS2_SimpleAdmin return HookResult.Continue; } } - - private void OnClientConnect(int playerslot, string name, string ipaddress) + + private void OnClientConnect(int playerslot, string name, string ipAddress) { #if DEBUG Logger.LogCritical("[OnClientConnect]"); #endif - if (Config.OtherSettings.BanType == 0) + + var player = Utilities.GetPlayerFromSlot(playerslot); + if (player == null || !player.IsValid || player.IsBot) return; - if (Instance.CacheManager != null && !Instance.CacheManager.IsPlayerBanned(null, ipaddress.Split(":")[0])) - return; - - Server.NextFrame((() => - { - var player = Utilities.GetPlayerFromSlot(playerslot); - if (player == null || !player.IsValid || player.IsBot) - return; - - Helper.KickPlayer(player, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED); - })); - - // Server.NextFrame(() => - // { - // var player = Utilities.GetPlayerFromSlot(playerslot); - // - // if (player == null || !player.IsValid || player.IsBot) - // return; - // - // new PlayerManager().LoadPlayerData(player); - // }); + PlayerManager.LoadPlayerData(player); } + + private void OnClientConnected(int playerslot) + { +#if DEBUG + Logger.LogCritical("[OnClientConnected]"); +#endif + + var player = Utilities.GetPlayerFromSlot(playerslot); + if (player == null || !player.IsValid || player.IsBot) + return; + + PlayerManager.LoadPlayerData(player); + } + +// private void OnClientConnect(int playerslot, string name, string ipaddress) +// { +// #if DEBUG +// Logger.LogCritical("[OnClientConnect]"); +// #endif +// if (Config.OtherSettings.BanType == 0) +// return; +// +// if (Instance.CacheManager != null && !Instance.CacheManager.IsPlayerBanned(null, ipaddress.Split(":")[0])) +// return; +// +// var testPlayer = Utilities.GetPlayerFromSlot(playerslot); +// if (testPlayer == null) +// return; +// Logger.LogInformation($"Gracz {testPlayer.PlayerName} ({testPlayer.SteamID.ToString()}) Czas: {DateTime.Now}"); +// +// Server.NextFrame((() => +// { +// var player = Utilities.GetPlayerFromSlot(playerslot); +// if (player == null || !player.IsValid || player.IsBot) +// return; +// +// Helper.KickPlayer(player, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED); +// })); +// +// // Server.NextFrame(() => +// // { +// // var player = Utilities.GetPlayerFromSlot(playerslot); +// // +// // if (player == null || !player.IsValid || player.IsBot) +// // return; +// // +// // new PlayerManager().LoadPlayerData(player); +// // }); +// } [GameEventHandler] public HookResult OnPlayerFullConnect(EventPlayerConnectFull @event, GameEventInfo info) @@ -172,15 +227,16 @@ public partial class CS2_SimpleAdmin var player = @event.Userid; - if (player == null || !player.IsValid || player.IsBot) + if (player == null || !player.IsValid) return HookResult.Continue; -// if (player.UserId.HasValue && PlayersInfo.TryGetValue(player.UserId.Value, out PlayerInfo? value) && -// value.WaitingForKick) -// return HookResult.Continue; - - new PlayerManager().LoadPlayerData(player); + if (player is { IsBot: true, IsHLTV: false }) + { + BotPlayers.Add(player); + return HookResult.Continue; + } + PlayerManager.LoadPlayerData(player, true); return HookResult.Continue; } @@ -228,26 +284,25 @@ public partial class CS2_SimpleAdmin if (!PlayerPenaltyManager.IsPenalized(author.Slot, PenaltyType.Gag, out DateTime? endDateTime) && !PlayerPenaltyManager.IsPenalized(author.Slot, PenaltyType.Silence, out endDateTime)) return HookResult.Continue; + + if (_localizer == null || endDateTime == null) + return HookResult.Continue; var message = um.ReadString("param2"); - - if (_localizer == null || endDateTime is null) return HookResult.Continue; - - if (CoreConfig.PublicChatTrigger.Concat(CoreConfig.SilentChatTrigger).Any(trigger => message.StartsWith(trigger))) + var triggers = CoreConfig.PublicChatTrigger.Concat(CoreConfig.SilentChatTrigger); + if (!triggers.Any(trigger => message.StartsWith(trigger))) return HookResult.Stop; + + for (var i = um.Recipients.Count - 1; i >= 0; i--) { - foreach (var recipient in um.Recipients) + if (um.Recipients[i] != author) { - if (recipient == author) - continue; - - um.Recipients.Remove(recipient); + um.Recipients.RemoveAt(i); } - - return HookResult.Continue; } - author.SendLocalizedMessage(_localizer, "sa_player_penalty_chat_active", endDateTime.Value.ToString("g", author.GetLanguage())); - return HookResult.Stop; + return HookResult.Continue; + + // author.SendLocalizedMessage(_localizer, "sa_player_penalty_chat_active", endDateTime.Value.ToString("g", author.GetLanguage())); } private HookResult ComamndListenerHandler(CCSPlayerController? player, CommandInfo info) @@ -286,8 +341,17 @@ public partial class CS2_SimpleAdmin if (!command.Contains("say")) return HookResult.Continue; - if (!Config.OtherSettings.UserMessageGagChatType) + if (info.GetArg(1).Length == 0) + return HookResult.Stop; + + var triggers = CoreConfig.PublicChatTrigger.Concat(CoreConfig.SilentChatTrigger); + if (triggers.Any(trigger => info.GetArg(1).StartsWith(trigger))) { + return HookResult.Continue; + } + + // if (!Config.OtherSettings.UserMessageGagChatType) + // { if (PlayerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Gag, out DateTime? endDateTime) || PlayerPenaltyManager.IsPenalized(player.Slot, PenaltyType.Silence, out endDateTime)) { @@ -295,17 +359,9 @@ public partial class CS2_SimpleAdmin player.SendLocalizedMessage(_localizer, "sa_player_penalty_chat_active", endDateTime.Value.ToString("g", player.GetLanguage())); return HookResult.Stop; } - } - - if (info.GetArg(1).StartsWith($"/") - || info.GetArg(1).StartsWith($"!")) - return HookResult.Continue; - - if (info.GetArg(1).Length == 0) - return HookResult.Stop; + // } - if (command == "say" && info.GetArg(1).StartsWith($"@") && - AdminManager.PlayerHasPermissions(new SteamID(player.SteamID), "@css/chat")) + if (AdminManager.PlayerHasPermissions(new SteamID(player.SteamID), "@css/chat") && command == "say" && info.GetArg(1).StartsWith($"@")) { player.ExecuteClientCommandFromServer($"css_say {info.GetArg(1).Remove(0, 1)}"); return HookResult.Stop; @@ -395,10 +451,13 @@ public partial class CS2_SimpleAdmin private void OnMapStart(string mapName) { + if (!ServerLoaded || ServerId == null) + AddTimer(2.0f, OnGameServerSteamAPIActivated); + if (Config.OtherSettings.ReloadAdminsEveryMapChange && ServerLoaded && ServerId != null) AddTimer(5.0f, () => ReloadAdmins(null)); - AddTimer(1.0f, () => ServerManager.CheckHibernationStatus()); + AddTimer(1.0f, ServerManager.CheckHibernationStatus); // AddTimer(34, () => // { @@ -421,9 +480,6 @@ public partial class CS2_SimpleAdmin if (player is null || @event.Attacker is null || player.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE || player.PlayerPawn.Value == null) return HookResult.Continue; - - if (SpeedPlayers.TryGetValue(player.Slot, out var speedPlayer)) - AddTimer(0.15f, () => player.SetSpeed(speedPlayer)); if (!GodPlayers.Contains(player.Slot)) return HookResult.Continue; @@ -441,22 +497,21 @@ public partial class CS2_SimpleAdmin if (player?.UserId == null || !player.IsValid || player.IsHLTV || player.Connected != PlayerConnectedState.PlayerConnected) return HookResult.Continue; - SpeedPlayers.Remove(player.Slot); + SpeedPlayers.Remove(player); GravityPlayers.Remove(player); - if (!PlayersInfo.ContainsKey(player.UserId.Value) || @event.Attacker == null) + if (!PlayersInfo.ContainsKey(player.SteamID) || @event.Attacker == null) return HookResult.Continue; var playerPosition = player.PlayerPawn.Value?.AbsOrigin; var playerRotation = player.PlayerPawn.Value?.AbsRotation; - - PlayersInfo[player.UserId.Value].DiePosition = new DiePosition( - new Vector( + PlayersInfo[player.SteamID].DiePosition = new DiePosition( + new Vector3( playerPosition?.X ?? 0, playerPosition?.Y ?? 0, playerPosition?.Z ?? 0 ), - new QAngle( + new Vector3( playerRotation?.X ?? 0, playerRotation?.Y ?? 0, playerRotation?.Z ?? 0 @@ -470,17 +525,17 @@ public partial class CS2_SimpleAdmin public HookResult OnPlayerTeam(EventPlayerTeam @event, GameEventInfo info) { var player = @event.Userid; - if (player == null || !player.IsValid || player.IsBot) return HookResult.Continue; if (!SilentPlayers.Contains(player.Slot)) return HookResult.Continue; - info.DontBroadcast = true; - - if (@event.Team > 1) + if (@event is { Oldteam: <= 1, Team: >= 1 }) + { SilentPlayers.Remove(player.Slot); + SimpleAdminApi?.OnAdminToggleSilentEvent(player.Slot, false); + } return HookResult.Continue; } diff --git a/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs b/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs index 93088af..0477263 100644 --- a/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs +++ b/CS2-SimpleAdmin/Extensions/PlayerExtensions.cs @@ -1,4 +1,6 @@ -using CounterStrikeSharp.API; +using System.Drawing; +using System.Numerics; +using CounterStrikeSharp.API; using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Translations; using CounterStrikeSharp.API.Modules.Admin; @@ -13,11 +15,21 @@ namespace CS2_SimpleAdmin; public static class PlayerExtensions { + /// + /// Slaps the player pawn by applying optional damage and adding a random velocity knockback. + /// + /// The player pawn to slap. + /// The amount of damage to apply (default is 0). public static void Slap(this CBasePlayerPawn pawn, int damage = 0) { PerformSlap(pawn, damage); } + /// + /// Prints a localized chat message to the player with a prefix. + /// + /// The player controller to send the message to. + /// The message string. public static void Print(this CCSPlayerController controller, string message = "") { StringBuilder _message = new(CS2_SimpleAdmin._localizer!["sa_prefix"]); @@ -25,6 +37,12 @@ public static class PlayerExtensions controller.PrintToChat(_message.ToString()); } + /// + /// Determines if the player controller can target another player controller, respecting admin permissions and immunity. + /// + /// The player controller who wants to target. + /// The player controller being targeted. + /// True if targeting is allowed, false otherwise. public static bool CanTarget(this CCSPlayerController? controller, CCSPlayerController? target) { if (controller is null || target is null) return true; @@ -36,6 +54,12 @@ public static class PlayerExtensions AdminManager.GetPlayerImmunity(controller) >= AdminManager.GetPlayerImmunity(target); } + /// + /// Checks if the controller can target a player by SteamID, considering targeting permissions and immunities. + /// + /// The attacker player controller. + /// The SteamID of the target player. + /// True if targeting is permitted, false otherwise. public static bool CanTarget(this CCSPlayerController? controller, SteamID steamId) { if (controller is null) return true; @@ -44,6 +68,11 @@ public static class PlayerExtensions AdminManager.GetPlayerImmunity(controller) >= AdminManager.GetPlayerImmunity(steamId); } + /// + /// Sets the movement speed modifier of the player controller. + /// + /// The player controller. + /// The speed modifier value. public static void SetSpeed(this CCSPlayerController? controller, float speed) { var playerPawnValue = controller?.PlayerPawn.Value; @@ -52,14 +81,24 @@ public static class PlayerExtensions playerPawnValue.VelocityModifier = speed; } + /// + /// Sets the gravity scale for the player controller. + /// + /// The player controller. + /// The gravity scale. public static void SetGravity(this CCSPlayerController? controller, float gravity) { var playerPawnValue = controller?.PlayerPawn.Value; if (playerPawnValue == null) return; - playerPawnValue.GravityScale = gravity; + playerPawnValue.ActualGravityScale = gravity; } + /// + /// Sets the player's in-game money amount. + /// + /// The player controller. + /// The amount of money to set. public static void SetMoney(this CCSPlayerController? controller, int money) { var moneyServices = controller?.InGameMoneyServices; @@ -70,6 +109,11 @@ public static class PlayerExtensions if (controller != null) Utilities.SetStateChanged(controller, "CCSPlayerController", "m_pInGameMoneyServices"); } + /// + /// Sets the player's health points. + /// + /// The player controller. + /// The health value, default is 100. public static void SetHp(this CCSPlayerController? controller, int health = 100) { if (controller == null) return; @@ -85,36 +129,76 @@ public static class PlayerExtensions Utilities.SetStateChanged(controller.PlayerPawn.Value, "CBaseEntity", "m_iHealth"); } + /// + /// Buries the player pawn by moving it down by a depth offset. + /// + /// The player pawn to bury. + /// The depth offset (default 10 units). public static void Bury(this CBasePlayerPawn pawn, float depth = 10f) { - var newPos = new Vector(pawn.AbsOrigin!.X, pawn.AbsOrigin.Y, + var newPos = new Vector3(pawn.AbsOrigin!.X, pawn.AbsOrigin.Y, pawn.AbsOrigin!.Z - depth); + var newRotation = new Vector3(pawn.AbsRotation!.X, pawn.AbsRotation.Y, pawn.AbsRotation.Z); + var newVelocity = new Vector3(pawn.AbsVelocity.X, pawn.AbsVelocity.Y, pawn.AbsVelocity.Z); - pawn.Teleport(newPos, pawn.AbsRotation!, pawn.AbsVelocity); + pawn.Teleport(newPos, newRotation, newVelocity); } + /// + /// Unburies the player pawn by moving it up by a depth offset. + /// + /// The player pawn to unbury. + /// The depth offset (default 15 units). public static void Unbury(this CBasePlayerPawn pawn, float depth = 15f) { - var newPos = new Vector(pawn.AbsOrigin!.X, pawn.AbsOrigin.Y, + var newPos = new Vector3(pawn.AbsOrigin!.X, pawn.AbsOrigin.Y, pawn.AbsOrigin!.Z + depth); + var newRotation = new Vector3(pawn.AbsRotation!.X, pawn.AbsRotation.Y, pawn.AbsRotation.Z); + var newVelocity = new Vector3(pawn.AbsVelocity.X, pawn.AbsVelocity.Y, pawn.AbsVelocity.Z); - pawn.Teleport(newPos, pawn.AbsRotation!, pawn.AbsVelocity); + pawn.Teleport(newPos, newRotation, newVelocity); } + /// + /// Freezes the player pawn, disabling movement. + /// + /// The player pawn to freeze. public static void Freeze(this CBasePlayerPawn pawn) { pawn.MoveType = MoveType_t.MOVETYPE_INVALID; Schema.SetSchemaValue(pawn.Handle, "CBaseEntity", "m_nActualMoveType", 11); // invalid Utilities.SetStateChanged(pawn, "CBaseEntity", "m_MoveType"); } - + + /// + /// Unfreezes the player pawn, enabling movement. + /// + /// The player pawn to unfreeze. public static void Unfreeze(this CBasePlayerPawn pawn) { pawn.MoveType = MoveType_t.MOVETYPE_WALK; Schema.SetSchemaValue(pawn.Handle, "CBaseEntity", "m_nActualMoveType", 2); // walk Utilities.SetStateChanged(pawn, "CBaseEntity", "m_MoveType"); } + + /// + /// Changes the player's color tint to specified RGBA values. + /// + /// The pawn to colorize. + /// Red component (0-255). + /// Green component (0-255). + /// Blue component (0-255). + /// Alpha (transparency) component (0-255). + public static void Colorize(this CBasePlayerPawn pawn, int r = 255, int g = 255, int b = 255, int a = 255) + { + pawn.Render = Color.FromArgb(a, r, g, b); + Utilities.SetStateChanged(pawn, "CBaseModelEntity", "m_clrRender"); + } + /// + /// Toggles noclip mode for the player pawn. + /// + /// The player pawn. public static void ToggleNoclip(this CBasePlayerPawn pawn) { if (pawn.MoveType == MoveType_t.MOVETYPE_NOCLIP) @@ -131,6 +215,11 @@ public static class PlayerExtensions } } + /// + /// Renames the player controller to a new name, with fallback to a localized "Unknown". + /// + /// The player controller to rename. + /// The new name to assign. public static void Rename(this CCSPlayerController? controller, string newName = "Unknown") { newName ??= CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown"; @@ -158,6 +247,11 @@ public static class PlayerExtensions }); } + /// + /// Teleports a player controller to the position, rotation, and velocity of another player controller. + /// + /// The controller to teleport. + /// The target controller whose position to copy. public static void TeleportPlayer(this CCSPlayerController? controller, CCSPlayerController? target) { if (controller?.PlayerPawn.Value == null && target?.PlayerPawn.Value == null) @@ -176,6 +270,11 @@ public static class PlayerExtensions } } + /// + /// Applies a slap effect to the given player pawn, optionally inflicting damage and adding velocity knockback. + /// + /// The player pawn to slap. + /// The amount of damage to deal (default is 0). private static void PerformSlap(CBasePlayerPawn pawn, int damage = 0) { if (pawn.LifeState != (int)LifeState_t.LIFE_ALIVE) @@ -186,7 +285,7 @@ public static class PlayerExtensions /* Teleport in a random direction - thank you, Mani!*/ /* Thank you AM & al!*/ var random = new Random(); - var vel = new Vector(pawn.AbsVelocity.X, pawn.AbsVelocity.Y, pawn.AbsVelocity.Z); + var vel = new Vector3(pawn.AbsVelocity.X, pawn.AbsVelocity.Y, pawn.AbsVelocity.Z); vel.X += (random.Next(180) + 50) * (random.Next(2) == 1 ? -1 : 1); vel.Y += (random.Next(180) + 50) * (random.Next(2) == 1 ? -1 : 1); @@ -217,6 +316,16 @@ public static class PlayerExtensions pawn.CommitSuicide(true, true); } + /// + /// Sends a localized chat message to the player controller. + /// The message is retrieved from the specified localizer using the given message key and optional formatting arguments. + /// Each line of the message is prefixed with a localized prefix string. + /// The message respects the player's configured language for proper localization. + /// + /// The target player controller to receive the message. + /// The string localizer used for localization. + /// The key identifying the localized message. + /// Optional arguments to format the localized message. public static void SendLocalizedMessage(this CCSPlayerController? controller, IStringLocalizer? localizer, string messageKey, params object[] messageArgs) { @@ -235,6 +344,16 @@ public static class PlayerExtensions } } + /// + /// Sends a localized chat message to the player controller, centered horizontally on the player's screen. + /// The message is retrieved from the specified localizer using the given message key and optional formatting arguments. + /// Each line of the message is centered and prefixed with a localized prefix string. + /// The message respects the player's configured language for localization. + /// + /// The target player controller to receive the message. + /// The string localizer used for localization. + /// The key identifying the localized message. + /// Optional arguments to format the localized message. public static void SendLocalizedMessageCenter(this CCSPlayerController? controller, IStringLocalizer? localizer, string messageKey, params object[] messageArgs) { diff --git a/CS2-SimpleAdmin/Helper.cs b/CS2-SimpleAdmin/Helper.cs index 8b81c8a..989c9dd 100644 --- a/CS2-SimpleAdmin/Helper.cs +++ b/CS2-SimpleAdmin/Helper.cs @@ -49,33 +49,29 @@ internal static class Helper public static List GetPlayerFromName(string name) { - return Utilities.GetPlayers().FindAll(x => x.PlayerName.Equals(name, StringComparison.OrdinalIgnoreCase)); + return GetValidPlayers().FindAll(x => x.PlayerName.Equals(name, StringComparison.OrdinalIgnoreCase)); } - public static CCSPlayerController? GetPlayerFromSteamid64(string steamid) + public static CCSPlayerController? GetPlayerFromSteamid64(ulong steamid) { - return GetValidPlayers().FirstOrDefault(x => x.SteamID.ToString().Equals(steamid, StringComparison.OrdinalIgnoreCase)); + return GetValidPlayers().FirstOrDefault(x => x.SteamID == steamid); } - public static CCSPlayerController? GetPlayerFromIp(string ipAddress) + public static List GetPlayerFromIp(string ipAddress) { - return GetValidPlayers().FirstOrDefault(x => x.IpAddress != null && x.IpAddress.Split(":")[0].Equals(ipAddress)); + return CS2_SimpleAdmin.CachedPlayers.FindAll(x => x.IpAddress != null && x.IpAddress.Split(":")[0].Equals(ipAddress)); } public static List GetValidPlayers() { - return Utilities.GetPlayers().AsValueEnumerable() - .Where(p => p is { IsValid: true, IsBot: false, Connected: PlayerConnectedState.PlayerConnected }) - .ToList(); + return CS2_SimpleAdmin.CachedPlayers.AsValueEnumerable().ToList(); } public static List GetValidPlayersWithBots() { - return Utilities.GetPlayers().AsValueEnumerable() - .Where(p => p is { IsValid: true, IsHLTV: false, Connected: PlayerConnectedState.PlayerConnected }).ToList(); + return CS2_SimpleAdmin.CachedPlayers.Concat(CS2_SimpleAdmin.BotPlayers).AsValueEnumerable().ToList(); } - // public static bool IsValidSteamId64(string input) // { // const string pattern = @"^\d{17}$"; @@ -141,10 +137,36 @@ internal static class Helper if (player == null || !player.IsValid || player.IsHLTV) return; - if (player.UserId.HasValue && CS2_SimpleAdmin.PlayersInfo.TryGetValue(player.UserId.Value, out var value)) + if (player.UserId.HasValue && CS2_SimpleAdmin.PlayersInfo.TryGetValue(player.SteamID, out var value)) value.WaitingForKick = true; - player.CommitSuicide(true, true); + // player.CommitSuicide(true, true); + player.VoiceFlags = VoiceFlags.Muted; + var playerPawn = player.PlayerPawn.Value; + + if (playerPawn != null && playerPawn.LifeState == (int)LifeState_t.LIFE_ALIVE) + { + playerPawn.Freeze(); + playerPawn.Colorize(255, 0, 0); + + var weaponServices = playerPawn.WeaponServices; + if (weaponServices == null) + return; + + foreach (var _weap in weaponServices.MyWeapons) + { + var weapon = _weap.Value;; + if (weapon == null || !weapon.IsValid) + continue; + if (weapon.DesignerName.Contains("c4") || weapon.DesignerName.Contains("healthshot")) + continue; + + weapon.NextPrimaryAttackTick = Server.TickCount + 999; + weapon.NextSecondaryAttackTick = Server.TickCount + 999; + Utilities.SetStateChanged(weapon, "CBasePlayerWeapon", "m_nNextPrimaryAttackTick"); + Utilities.SetStateChanged(weapon, "CBasePlayerWeapon", "m_nNextSecondaryAttackTick"); + } + } if (delay > 0) { @@ -155,6 +177,7 @@ internal static class Helper // Server.ExecuteCommand($"kickid {player.UserId}"); + playerPawn?.Colorize(); player.Disconnect(reason); }); } @@ -162,6 +185,7 @@ internal static class Helper { // Server.ExecuteCommand($"kickid {player.UserId}"); + playerPawn?.Colorize(); player.Disconnect(reason); } @@ -186,11 +210,41 @@ internal static class Helper if (!player.IsValid || player.IsHLTV) return; - if (player.UserId.HasValue && CS2_SimpleAdmin.PlayersInfo.TryGetValue(player.UserId.Value, out var value)) + if (CS2_SimpleAdmin.PlayersInfo.TryGetValue(player.SteamID, out var value)) + { + if (value.WaitingForKick) + return; + value.WaitingForKick = true; + } - player.CommitSuicide(true, true); - + player.VoiceFlags = VoiceFlags.Muted; + var playerPawn = player.PlayerPawn.Value; + if (playerPawn != null && playerPawn.LifeState == (int)LifeState_t.LIFE_ALIVE) + { + playerPawn.Freeze(); + playerPawn.Colorize(255, 0, 0); + + var weaponServices = playerPawn.WeaponServices; + if (weaponServices == null) + return; + + foreach (var _weap in weaponServices.MyWeapons) + { + var weapon = _weap.Value; + ; + if (weapon == null || !weapon.IsValid) + continue; + if (weapon.DesignerName.Contains("c4") || weapon.DesignerName.Contains("healthshot")) + continue; + + weapon.NextPrimaryAttackTick = Server.TickCount + 999; + weapon.NextSecondaryAttackTick = Server.TickCount + 999; + Utilities.SetStateChanged(weapon, "CBasePlayerWeapon", "m_nNextPrimaryAttackTick"); + Utilities.SetStateChanged(weapon, "CBasePlayerWeapon", "m_nNextSecondaryAttackTick"); + } + } + if (delay > 0) { CS2_SimpleAdmin.Instance.AddTimer(delay, () => @@ -237,6 +291,7 @@ internal static class Helper public static int ParsePenaltyTime(string time) { + time = time.ToLower(); if (string.IsNullOrWhiteSpace(time) || !time.Any(char.IsDigit)) { // CS2_SimpleAdmin._logger?.LogError("Time string cannot be null or empty."); @@ -256,7 +311,6 @@ internal static class Helper { "y", 525600 } // Year (365 * 24 * 60) }; - // Check if the input is purely numeric (e.g., "10" for 10 minutes) if (int.TryParse(time, out var numericMinutes)) { @@ -309,7 +363,6 @@ internal static class Helper return; var playerName = caller?.PlayerName ?? CS2_SimpleAdmin._localizer["sa_console"]; - var hostname = ConVar.Find("hostname")?.StringValue ?? CS2_SimpleAdmin._localizer["sa_unknown"]; CS2_SimpleAdmin.Instance.Logger.LogInformation($"{CS2_SimpleAdmin._localizer[ @@ -454,16 +507,13 @@ internal static class Helper { if (CS2_SimpleAdmin._localizer == null) return; - // Determine the localized message key var localizedMessageKey = $"{messageKey}"; var formattedMessageArgs = messageArgs.Select(arg => arg?.ToString() ?? string.Empty).ToArray(); - // Replace placeholder based on showActivityType for (var i = 0; i < formattedMessageArgs.Length; i++) { - var arg = formattedMessageArgs[i]; // Convert argument to string if not null - // Replace "CALLER" placeholder in the argument string + var arg = formattedMessageArgs[i]; formattedMessageArgs[i] = CS2_SimpleAdmin.Instance.Config.OtherSettings.ShowActivityType switch { 1 => arg.Replace("CALLER", CS2_SimpleAdmin._localizer["sa_admin"]), @@ -471,7 +521,6 @@ internal static class Helper }; } - // Print the localized message to the center of the screen for the player using (new WithTemporaryCulture(player.GetLanguage())) { player.PrintToCenter(CS2_SimpleAdmin._localizer[localizedMessageKey, formattedMessageArgs.Cast().ToArray()]); @@ -535,10 +584,8 @@ internal static class Helper bool[] inlineFlags = [true, true, true, false, false]; var hostname = ConVar.Find("hostname")?.StringValue ?? localizer["sa_unknown"]; - var colorHex = penaltySetting.FirstOrDefault(s => s.Name.Equals("Color"))?.Value ?? "#FFFFFF"; - - if (string.IsNullOrEmpty(colorHex)) - colorHex = "#FFFFFF"; + var colorValue = penaltySetting.FirstOrDefault(s => s.Name.Equals("Color"))?.Value; + var colorHex = string.IsNullOrWhiteSpace(colorValue) ? "#FFFFFF" : colorValue.Trim(); var embed = new Embed { @@ -631,7 +678,8 @@ internal static class Helper bool[] inlineFlags = [true, true, true, false, false]; var hostname = ConVar.Find("hostname")?.StringValue ?? localizer["sa_unknown"]; - var colorHex = penaltySetting.FirstOrDefault(s => s.Name.Equals("Color"))?.Value ?? "#FFFFFF"; + var colorValue = penaltySetting.FirstOrDefault(s => s.Name.Equals("Color"))?.Value; + var colorHex = string.IsNullOrWhiteSpace(colorValue) ? "#FFFFFF" : colorValue.Trim(); var embed = new Embed { @@ -803,9 +851,11 @@ public static class PluginInfo { internal static async Task CheckVersion(string localVersion, ILogger logger) { + ShowAd(localVersion); const string versionUrl = "https://raw.githubusercontent.com/daffyyyy/CS2-SimpleAdmin/main/CS2-SimpleAdmin/VERSION"; var client = CS2_SimpleAdmin.HttpClient; - + client.Timeout = TimeSpan.FromSeconds(3); + try { var response = await client.GetAsync(versionUrl); @@ -844,8 +894,8 @@ public static class PluginInfo logger.LogError(ex, "An error occurred while checking version."); } } - - internal static void ShowAd(string moduleVersion) + + private static void ShowAd(string moduleVersion) { Console.WriteLine(" "); Console.WriteLine(" _______ ___ __ __ _______ ___ _______ _______ ______ __ __ ___ __ _ "); @@ -975,8 +1025,21 @@ public static class IpHelper { public static uint IpToUint(string ipAddress) { - return (uint)BitConverter.ToInt32(System.Net.IPAddress.Parse(ipAddress).GetAddressBytes().Reverse().ToArray(), - 0); + if (string.IsNullOrWhiteSpace(ipAddress)) + throw new ArgumentException("IP address cannot be null or empty.", nameof(ipAddress)); + + if (!System.Net.IPAddress.TryParse(ipAddress, out var ip)) + throw new FormatException($"Invalid IP address format: {ipAddress}"); + + // Ensure it's IPv4 (IPv6 will throw) + if (ip.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork) + throw new FormatException("Only IPv4 addresses are supported."); + + byte[] bytes = ip.GetAddressBytes(); + if (BitConverter.IsLittleEndian) + Array.Reverse(bytes); // Ensure big-endian (network order) + + return BitConverter.ToUInt32(bytes, 0); } public static bool TryConvertIpToUint(string ipString, out uint ipUint) diff --git a/CS2-SimpleAdmin/Managers/BanManager.cs b/CS2-SimpleAdmin/Managers/BanManager.cs index 368f8a8..038a6d0 100644 --- a/CS2-SimpleAdmin/Managers/BanManager.cs +++ b/CS2-SimpleAdmin/Managers/BanManager.cs @@ -5,36 +5,37 @@ using Dapper; using Microsoft.Extensions.Logging; using MySqlConnector; using System.Text; +using CS2_SimpleAdmin.Database; namespace CS2_SimpleAdmin.Managers; -internal class BanManager(Database.Database? database) +internal class BanManager(IDatabaseProvider? databaseProvider) { + /// + /// Bans an online player and inserts the ban record into the database. + /// + /// The player to be banned (must be currently online). + /// The admin issuing the ban. Can be null if issued from console. + /// The reason for the ban. + /// Ban duration in minutes. If 0, the ban is permanent. + /// The newly created ban ID if successful, otherwise null. public async Task BanPlayer(PlayerInfo player, PlayerInfo? issuer, string reason, int time = 0) { - if (database == null) return null; - + if (databaseProvider == null) return null; DateTime now = Time.ActualDateTime(); DateTime futureTime = now.AddMinutes(time); - await using MySqlConnection connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); try { - const string sql = """ - - INSERT INTO `sa_bans` - (`player_steamid`, `player_name`, `player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) - VALUES - (@playerSteamid, @playerName, @playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); - SELECT LAST_INSERT_ID(); - """; - + var sql = databaseProvider.GetAddBanQuery(); + var banId = await connection.ExecuteScalarAsync(sql, new { - playerSteamid = player.SteamId.SteamId64.ToString(), + playerSteamid = player.SteamId.SteamId64, playerName = player.Name, playerIp = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 1 ? player.IpAddress : null, - adminSteamid = issuer?.SteamId.SteamId64.ToString() ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", + adminSteamid = issuer?.SteamId.SteamId64 ?? 0, adminName = issuer?.Name ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", banReason = reason, duration = time, @@ -45,37 +46,36 @@ internal class BanManager(Database.Database? database) return banId; } - catch + catch(Exception ex) { + CS2_SimpleAdmin._logger?.LogError(ex, ex.Message); return null; } } - public async Task AddBanBySteamid(string playerSteamId, PlayerInfo? issuer, string reason, int time = 0) + /// + /// Adds a ban for an offline player identified by their SteamID. + /// + /// The SteamID64 of the player to ban. + /// The admin issuing the ban. Can be null if issued from console. + /// The reason for the ban. + /// Ban duration in minutes. If 0, the ban is permanent. + /// The ID of the newly created ban if successful, otherwise null. + public async Task AddBanBySteamid(ulong playerSteamId, PlayerInfo? issuer, string reason, int time = 0) { - if (database == null) return null; - if (string.IsNullOrEmpty(playerSteamId)) return null; + if (databaseProvider == null) return null; DateTime now = Time.ActualDateTime(); DateTime futureTime = now.AddMinutes(time); try { - await using MySqlConnection connection = await database.GetConnectionAsync(); - - const string sql = """ - - INSERT INTO `sa_bans` - (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) - VALUES - (@playerSteamid, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid); - SELECT LAST_INSERT_ID(); - """; - + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetAddBanBySteamIdQuery(); var banId = await connection.ExecuteScalarAsync(sql, new { playerSteamid = playerSteamId, - adminSteamid = issuer?.SteamId.SteamId64.ToString() ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", + adminSteamid = issuer?.SteamId.SteamId64 ?? 0, adminName = issuer?.Name ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", banReason = reason, duration = time, @@ -86,15 +86,23 @@ internal class BanManager(Database.Database? database) return banId; } - catch (Exception) + catch(Exception ex) { + CS2_SimpleAdmin._logger?.LogError(ex, ex.Message); return null; } } + /// + /// Adds a ban for an offline player identified by their IP address. + /// + /// The IP address of the player to ban. + /// The admin issuing the ban. Can be null if issued from console. + /// The reason for the ban. + /// Ban duration in minutes. If 0, the ban is permanent. public async Task AddBanByIp(string playerIp, PlayerInfo? issuer, string reason, int time = 0) { - if (database == null) return; + if (databaseProvider == null) return; if (string.IsNullOrEmpty(playerIp)) return; @@ -103,15 +111,13 @@ internal class BanManager(Database.Database? database) try { - await using MySqlConnection connection = await database.GetConnectionAsync(); - - var sql = "INSERT INTO `sa_bans` (`player_ip`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) " + - "VALUES (@playerIp, @adminSteamid, @adminName, @banReason, @duration, @ends, @created, @serverid)"; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetAddBanByIpQuery(); await connection.ExecuteAsync(sql, new { playerIp, - adminSteamid = issuer?.SteamId.SteamId64.ToString() ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", + adminSteamid = issuer?.SteamId.SteamId64 ?? 0, adminName = issuer?.Name ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", banReason = reason, duration = time, @@ -123,370 +129,308 @@ internal class BanManager(Database.Database? database) catch { } } - public async Task IsPlayerBanned(PlayerInfo player) +// public async Task IsPlayerBanned(PlayerInfo player) +// { +// if (database == null) return false; +// +// if (player.IpAddress == null) +// { +// return false; +// } +// +// #if DEBUG +// if (CS2_SimpleAdmin._logger != null) +// CS2_SimpleAdmin._logger.LogCritical($"IsPlayerBanned for {player.Name}"); +// #endif +// +// int banCount; +// +// DateTime currentTime = Time.ActualDateTime(); +// +// try +// { +// string sql; +// +// if (CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp && !CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps.Contains(player.IpAddress)) +// { +// sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode ? """ +// SELECT COALESCE(( +// SELECT COUNT(*) +// FROM sa_bans +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime) +// ), 0) +// + +// COALESCE(( +// SELECT COUNT(*) +// FROM sa_bans +// JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid +// WHERE sa_bans.status = 'ACTIVE' +// AND sa_players_ips.address = @PlayerIP +// AND NOT EXISTS ( +// SELECT 1 +// FROM sa_bans +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime) +// ) +// ), 0) AS TotalBanCount; +// """ : """ +// SELECT COALESCE(( +// SELECT COUNT(*) +// FROM sa_bans +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime) +// AND server_id = @ServerId +// ), 0) +// + +// COALESCE(( +// SELECT COUNT(*) +// FROM sa_bans +// JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid +// WHERE sa_bans.status = 'ACTIVE' +// AND sa_players_ips.address = @PlayerIP +// AND NOT EXISTS ( +// SELECT 1 +// FROM sa_bans +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime) +// AND server_id = @ServerId +// ) +// ), 0) AS TotalBanCount; +// """; +// } +// else +// { +// sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode ? """ +// UPDATE sa_bans +// SET player_ip = CASE WHEN player_ip IS NULL THEN @PlayerIP ELSE player_ip END, +// player_name = CASE WHEN player_name IS NULL THEN @PlayerName ELSE player_name END +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime); +// +// SELECT COUNT(*) FROM sa_bans +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime); +// """ : """ +// UPDATE sa_bans +// SET player_ip = CASE WHEN player_ip IS NULL THEN @PlayerIP ELSE player_ip END, +// player_name = CASE WHEN player_name IS NULL THEN @PlayerName ELSE player_name END +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime) AND server_id = @ServerId; +// +// SELECT COUNT(*) FROM sa_bans +// WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) +// AND status = 'ACTIVE' +// AND (duration = 0 OR ends > @CurrentTime) AND server_id = @ServerId; +// """; +// } +// +// await using var connection = await database.GetConnectionAsync(); +// +// var parameters = new +// { +// PlayerSteamID = player.SteamId.SteamId64, +// PlayerIP = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 || +// string.IsNullOrEmpty(player.IpAddress) || +// CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps.Contains(player.IpAddress) +// ? null +// : player.IpAddress, +// PlayerName = !string.IsNullOrEmpty(player.Name) ? player.Name : string.Empty, +// CurrentTime = currentTime, +// CS2_SimpleAdmin.ServerId +// }; +// +// banCount = await connection.ExecuteScalarAsync(sql, parameters); +// } +// catch (Exception ex) +// { +// CS2_SimpleAdmin._logger?.LogError("Unable to check ban status for {PlayerName} ({ExceptionMessage})", +// player.Name, ex.Message); +// return false; +// } +// +// return banCount > 0; +// } +// +// public async Task GetPlayerBans(PlayerInfo player) +// { +// if (database == null) return 0; +// +// try +// { +// string sql; +// +// sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode +// ? "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)" +// : "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) AND server_id = @serverid"; +// +// int banCount; +// +// await using var connection = await database.GetConnectionAsync(); +// +// if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType > 0 && !string.IsNullOrEmpty(player.IpAddress)) +// { +// banCount = await connection.ExecuteScalarAsync(sql, +// new +// { +// PlayerSteamID = player.SteamId.SteamId64, +// PlayerIP = player.IpAddress, +// serverid = CS2_SimpleAdmin.ServerId +// }); +// } +// else +// { +// banCount = await connection.ExecuteScalarAsync(sql, +// new +// { +// PlayerSteamID = player.SteamId.SteamId64, +// PlayerIP = DBNull.Value, +// serverid = CS2_SimpleAdmin.ServerId +// }); +// } +// +// return banCount; +// } +// catch { } +// +// return 0; +// } + + /// + /// Unbans a player based on a pattern match of SteamID or IP address. + /// + /// Pattern to match against player identifiers (e.g., partial SteamID). + /// SteamID64 of the admin performing the unban. + /// Optional reason for the unban. If null or empty, the unban reason is not stored. +public async Task UnbanPlayer(string playerPattern, string adminSteamId, string reason) +{ + if (databaseProvider == null) return; + + if (playerPattern is not { Length: > 1 }) { - if (database == null) return false; - - if (player.IpAddress == null) - { - return false; - } - -#if DEBUG - if (CS2_SimpleAdmin._logger != null) - CS2_SimpleAdmin._logger.LogCritical($"IsPlayerBanned for {player.Name}"); -#endif - - int banCount; - - DateTime currentTime = Time.ActualDateTime(); - - try - { - string sql; - - if (CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp && !CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps.Contains(player.IpAddress)) - { - sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode ? """ - SELECT COALESCE(( - SELECT COUNT(*) - FROM sa_bans - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime) - ), 0) - + - COALESCE(( - SELECT COUNT(*) - FROM sa_bans - JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid - WHERE sa_bans.status = 'ACTIVE' - AND sa_players_ips.address = @PlayerIP - AND NOT EXISTS ( - SELECT 1 - FROM sa_bans - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime) - ) - ), 0) AS TotalBanCount; - """ : """ - SELECT COALESCE(( - SELECT COUNT(*) - FROM sa_bans - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime) - AND server_id = @ServerId - ), 0) - + - COALESCE(( - SELECT COUNT(*) - FROM sa_bans - JOIN sa_players_ips ON sa_bans.player_steamid = sa_players_ips.steamid - WHERE sa_bans.status = 'ACTIVE' - AND sa_players_ips.address = @PlayerIP - AND NOT EXISTS ( - SELECT 1 - FROM sa_bans - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime) - AND server_id = @ServerId - ) - ), 0) AS TotalBanCount; - """; - } - else - { - sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode ? """ - UPDATE sa_bans - SET player_ip = CASE WHEN player_ip IS NULL THEN @PlayerIP ELSE player_ip END, - player_name = CASE WHEN player_name IS NULL THEN @PlayerName ELSE player_name END - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime); - - SELECT COUNT(*) FROM sa_bans - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime); - """ : """ - UPDATE sa_bans - SET player_ip = CASE WHEN player_ip IS NULL THEN @PlayerIP ELSE player_ip END, - player_name = CASE WHEN player_name IS NULL THEN @PlayerName ELSE player_name END - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime) AND server_id = @ServerId; - - SELECT COUNT(*) FROM sa_bans - WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) - AND status = 'ACTIVE' - AND (duration = 0 OR ends > @CurrentTime) AND server_id = @ServerId; - """; - } - - await using var connection = await database.GetConnectionAsync(); - - var parameters = new - { - PlayerSteamID = player.SteamId.SteamId64.ToString(), - PlayerIP = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 || - string.IsNullOrEmpty(player.IpAddress) || - CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps.Contains(player.IpAddress) - ? null - : player.IpAddress, - PlayerName = !string.IsNullOrEmpty(player.Name) ? player.Name : string.Empty, - CurrentTime = currentTime, - CS2_SimpleAdmin.ServerId - }; - - banCount = await connection.ExecuteScalarAsync(sql, parameters); - } - catch (Exception ex) - { - CS2_SimpleAdmin._logger?.LogError("Unable to check ban status for {PlayerName} ({ExceptionMessage})", - player.Name, ex.Message); - return false; - } - - return banCount > 0; + return; } - - public async Task GetPlayerBans(PlayerInfo player) + try { - if (database == null) return 0; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sqlRetrieveBans = databaseProvider.GetUnbanRetrieveBansQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); - try - { - string sql; - - sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP)" - : "SELECT COUNT(*) FROM sa_bans WHERE (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) AND server_id = @serverid"; - - int banCount; - - await using var connection = await database.GetConnectionAsync(); - - if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType > 0 && !string.IsNullOrEmpty(player.IpAddress)) - { - banCount = await connection.ExecuteScalarAsync(sql, - new - { - PlayerSteamID = player.SteamId.SteamId64.ToString(), - PlayerIP = player.IpAddress, - serverid = CS2_SimpleAdmin.ServerId - }); - } - else - { - banCount = await connection.ExecuteScalarAsync(sql, - new - { - PlayerSteamID = player.SteamId.SteamId64.ToString(), - PlayerIP = DBNull.Value, - serverid = CS2_SimpleAdmin.ServerId - }); - } - - return banCount; - } - catch { } - - return 0; - } - - public async Task UnbanPlayer(string playerPattern, string adminSteamId, string reason) - { - if (database == null) return; - - if (playerPattern is not { Length: > 1 }) - { + var bans = await connection.QueryAsync(sqlRetrieveBans, new { pattern = playerPattern, serverid = CS2_SimpleAdmin.ServerId }); + var bansList = bans as dynamic[] ?? bans.ToArray(); + if (bansList.Length == 0) return; - } - try + + var sqlAdminId = databaseProvider.GetUnbanAdminIdQuery(); + var adminId = await connection.ExecuteScalarAsync(sqlAdminId, new { adminSteamId }) ?? 0; + + foreach (var ban in bansList) { - await using var connection = await database.GetConnectionAsync(); + int banId = ban.id; - var sqlRetrieveBans = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? "SELECT id FROM sa_bans WHERE (player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern) AND status = 'ACTIVE'" - : "SELECT id FROM sa_bans WHERE (player_steamid = @pattern OR player_name = @pattern OR player_ip = @pattern) AND status = 'ACTIVE' AND server_id = @serverid"; + var sqlInsertUnban = databaseProvider.GetInsertUnbanQuery(reason != null); + var unbanId = await connection.ExecuteScalarAsync(sqlInsertUnban, new { banId, adminId, reason }); - var bans = await connection.QueryAsync(sqlRetrieveBans, new { pattern = playerPattern, serverid = CS2_SimpleAdmin.ServerId }); - - var bansList = bans as dynamic[] ?? bans.ToArray(); - if (bansList.Length == 0) - return; - - const string sqlAdmin = "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId"; - var sqlInsertUnban = "INSERT INTO sa_unbans (ban_id, admin_id, reason) VALUES (@banId, @adminId, @reason); SELECT LAST_INSERT_ID();"; - - var sqlAdminId = await connection.ExecuteScalarAsync(sqlAdmin, new { adminSteamId }); - var adminId = sqlAdminId ?? 0; - - foreach (var ban in bansList) - { - int banId = ban.id; - int? unbanId; - - if (reason != null) - { - unbanId = await connection.ExecuteScalarAsync(sqlInsertUnban, new { banId, adminId, reason }); - } - else - { - sqlInsertUnban = "INSERT INTO sa_unbans (ban_id, admin_id) VALUES (@banId, @adminId); SELECT LAST_INSERT_ID();"; - unbanId = await connection.ExecuteScalarAsync(sqlInsertUnban, new { banId, adminId }); - } - - const string sqlUpdateBan = "UPDATE sa_bans SET status = 'UNBANNED', unban_id = @unbanId WHERE id = @banId"; - await connection.ExecuteAsync(sqlUpdateBan, new { unbanId, banId }); - } - - } - catch { } - } - - public async Task CheckOnlinePlayers(List<(string? IpAddress, ulong SteamID, int? UserId, int Slot)> players) - { - if (database == null) return; - - try - { - await using var connection = await database.GetConnectionAsync(); - bool checkIpBans = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType > 0; - - var filteredPlayers = players.Where(p => p.UserId.HasValue).ToList(); - - var steamIds = filteredPlayers.Select(p => p.SteamID).Distinct().ToList(); - var ipAddresses = filteredPlayers - .Where(p => !string.IsNullOrEmpty(p.IpAddress)) - .Select(p => p.IpAddress) - .Distinct() - .ToList(); - - var sql = new StringBuilder(); - sql.Append("SELECT `player_steamid`, `player_ip` FROM `sa_bans` WHERE `status` = 'ACTIVE' "); - - if (CS2_SimpleAdmin.Instance.Config.MultiServerMode) - { - sql.Append("AND (player_steamid IN @SteamIDs "); - if (checkIpBans && ipAddresses.Count != 0) - { - sql.Append("OR player_ip IN @IpAddresses"); - } - sql.Append(')'); - } - else - { - sql.Append("AND server_id = @ServerId AND (player_steamid IN @SteamIDs "); - if (checkIpBans && ipAddresses.Count != 0) - { - sql.Append("OR player_ip IN @IpAddresses"); - } - sql.Append(')'); - } - - var bannedPlayers = await connection.QueryAsync<(ulong PlayerSteamID, string PlayerIP)>( - sql.ToString(), - new - { - SteamIDs = steamIds, - IpAddresses = checkIpBans ? ipAddresses : [], - CS2_SimpleAdmin.ServerId - }); - - var valueTuples = bannedPlayers.ToList(); - var bannedSteamIds = valueTuples.Select(b => b.PlayerSteamID).ToHashSet(); - var bannedIps = valueTuples.Select(b => b.PlayerIP).ToHashSet(); - - foreach (var player in filteredPlayers.Where(player => bannedSteamIds.Contains(player.SteamID) || - (checkIpBans && bannedIps.Contains(player.IpAddress ?? "")))) - { - if (!player.UserId.HasValue || CS2_SimpleAdmin.PlayersInfo[player.UserId.Value].WaitingForKick) continue; - - await Server.NextFrameAsync(() => - { - Helper.KickPlayer(player.UserId.Value, NetworkDisconnectionReason.NETWORK_DISCONNECT_KICKBANADDED); - }); - } - } - catch (Exception ex) - { - CS2_SimpleAdmin._logger?.LogError($"Error checking online players: {ex.Message}"); + var sqlUpdateBan = databaseProvider.GetUpdateBanStatusQuery(); + await connection.ExecuteAsync(sqlUpdateBan, new { unbanId, banId }); } } + catch { } +} + // public async Task CheckOnlinePlayers(List<(string? IpAddress, ulong SteamID, int? UserId, int Slot)> players) + // { + // if (database == null) return; + // + // try + // { + // await using var connection = await database.GetConnectionAsync(); + // bool checkIpBans = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType > 0; + // + // var filteredPlayers = players.Where(p => p.UserId.HasValue).ToList(); + // + // var steamIds = filteredPlayers.Select(p => p.SteamID).Distinct().ToList(); + // var ipAddresses = filteredPlayers + // .Where(p => !string.IsNullOrEmpty(p.IpAddress)) + // .Select(p => p.IpAddress) + // .Distinct() + // .ToList(); + // + // var sql = new StringBuilder(); + // sql.Append("SELECT `player_steamid`, `player_ip` FROM `sa_bans` WHERE `status` = 'ACTIVE' "); + // + // if (CS2_SimpleAdmin.Instance.Config.MultiServerMode) + // { + // sql.Append("AND (player_steamid IN @SteamIDs "); + // if (checkIpBans && ipAddresses.Count != 0) + // { + // sql.Append("OR player_ip IN @IpAddresses"); + // } + // sql.Append(')'); + // } + // else + // { + // sql.Append("AND server_id = @ServerId AND (player_steamid IN @SteamIDs "); + // if (checkIpBans && ipAddresses.Count != 0) + // { + // sql.Append("OR player_ip IN @IpAddresses"); + // } + // sql.Append(')'); + // } + // + // var bannedPlayers = await connection.QueryAsync<(ulong PlayerSteamID, string PlayerIP)>( + // sql.ToString(), + // new + // { + // SteamIDs = steamIds, + // IpAddresses = checkIpBans ? ipAddresses : [], + // CS2_SimpleAdmin.ServerId + // }); + // + // var valueTuples = bannedPlayers.ToList(); + // var bannedSteamIds = valueTuples.Select(b => b.PlayerSteamID).ToHashSet(); + // var bannedIps = valueTuples.Select(b => b.PlayerIP).ToHashSet(); + // + // foreach (var player in filteredPlayers.Where(player => bannedSteamIds.Contains(player.SteamID) || + // (checkIpBans && bannedIps.Contains(player.IpAddress ?? "")))) + // { + // if (!player.UserId.HasValue || CS2_SimpleAdmin.PlayersInfo[player.SteamID].WaitingForKick) continue; + // + // await Server.NextWorldUpdateAsync(() => + // { + // Helper.KickPlayer(player.UserId.Value, NetworkDisconnectionReason.NETWORK_DISCONNECT_KICKBANADDED); + // }); + // } + // } + // catch (Exception ex) + // { + // CS2_SimpleAdmin._logger?.LogError($"Error checking online players: {ex.Message}"); + // } + // } + + /// + /// Expires all bans that have passed their end time, including optional cleanup of old IP bans. + /// public async Task ExpireOldBans() { - if (database == null) return; + if (databaseProvider == null) return; var currentTime = Time.ActualDateTime(); try { - await using var connection = await database.GetConnectionAsync(); - /* - string sql = ""; - await using MySqlConnection connection = await _database.GetConnectionAsync(); - - sql = "UPDATE sa_bans SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime"; - await connection.ExecuteAsync(sql, new { CurrentTime = DateTime.UtcNow }); - */ - - string sql; - - sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode ? """ - - UPDATE sa_bans - SET - status = 'EXPIRED' - WHERE - status = 'ACTIVE' - AND - `duration` > 0 - AND - ends <= @currentTime - """ : """ - - UPDATE sa_bans - SET - status = 'EXPIRED' - WHERE - status = 'ACTIVE' - AND - `duration` > 0 - AND - ends <= @currentTime - AND server_id = @serverid - """; - + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetExpireBansQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); await connection.ExecuteAsync(sql, new { currentTime, serverid = CS2_SimpleAdmin.ServerId }); - if (CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans > 0) { var ipBansTime = currentTime.AddDays(-CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans); - sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode ? """ - - UPDATE sa_bans - SET - player_ip = NULL - WHERE - status = 'ACTIVE' - AND - ends <= @ipBansTime - """ : """ - - UPDATE sa_bans - SET - player_ip = NULL - WHERE - status = 'ACTIVE' - AND - ends <= @ipBansTime - AND server_id = @serverid - """; - + sql = databaseProvider.GetExpireIpBansQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); await connection.ExecuteAsync(sql, new { ipBansTime, CS2_SimpleAdmin.ServerId }); } } diff --git a/CS2-SimpleAdmin/Managers/CacheManager.cs b/CS2-SimpleAdmin/Managers/CacheManager.cs index be097d0..7398eb1 100644 --- a/CS2-SimpleAdmin/Managers/CacheManager.cs +++ b/CS2-SimpleAdmin/Managers/CacheManager.cs @@ -1,4 +1,5 @@ using System.Collections.Concurrent; +using CS2_SimpleAdmin.Database; using CS2_SimpleAdmin.Models; using Dapper; using ZLinq; @@ -8,7 +9,7 @@ namespace CS2_SimpleAdmin.Managers; internal class CacheManager: IDisposable { private readonly ConcurrentDictionary _banCache = []; - private readonly ConcurrentDictionary> _steamIdIndex = []; + private readonly ConcurrentDictionary> _steamIdIndex = []; private readonly ConcurrentDictionary> _ipIndex = []; private readonly ConcurrentDictionary> _playerIpsCache = []; @@ -17,21 +18,26 @@ internal class CacheManager: IDisposable private DateTime _lastUpdateTime = DateTime.MinValue; private bool _isInitialized; private bool _disposed; - + + /// + /// Initializes and builds the ban and IP cache from the database. Loads bans, player IP history, and config settings. + /// + /// Asynchronous task representing the initialization process. public async Task InitializeCacheAsync() { - if (CS2_SimpleAdmin.Database == null) return; + if (CS2_SimpleAdmin.DatabaseProvider == null) return; if (!CS2_SimpleAdmin.ServerLoaded) return; if (_isInitialized) return; try { Clear(); - _cachedIgnoredIps = new HashSet( - CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps - .Select(IpHelper.IpToUint)); + _cachedIgnoredIps = CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps + .AsValueEnumerable() + .Select(IpHelper.IpToUint) + .ToHashSet(); - await using var connection = await CS2_SimpleAdmin.Database.GetConnectionAsync(); + await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync(); List bans; if (CS2_SimpleAdmin.Instance.Config.MultiServerMode) @@ -40,6 +46,7 @@ internal class CacheManager: IDisposable """ SELECT id AS Id, + player_name AS PlayerName, player_steamid AS PlayerSteamId, player_ip AS PlayerIp, status AS Status @@ -52,6 +59,7 @@ internal class CacheManager: IDisposable """ SELECT id AS Id, + player_name AS PlayerName, player_steamid AS PlayerSteamId, player_ip AS PlayerIp, status AS Status @@ -59,20 +67,16 @@ internal class CacheManager: IDisposable WHERE server_id = @serverId """, new {serverId = CS2_SimpleAdmin.ServerId})).ToList(); } - - var ipHistory = - await connection.QueryAsync<(ulong steamid, string? name, uint address, DateTime used_at)>( - "SELECT steamid, name, address, used_at FROM sa_players_ips ORDER BY used_at DESC"); - foreach (var ban in bans) + if (CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp) { - _banCache.TryAdd(ban.Id, ban); - } - - foreach (var group in ipHistory.AsValueEnumerable().GroupBy(x => x.steamid)) - { - var ipSet = new HashSet( - group + var ipHistory = + (await connection.QueryAsync<(ulong steamid, string? name, uint address, DateTime used_at)>( + "SELECT steamid, name, address, used_at FROM sa_players_ips ORDER BY used_at DESC")).ToList(); + + foreach (var group in ipHistory.AsValueEnumerable().GroupBy(x => x.steamid)) + { + var ipSet = group .GroupBy(x => x.address) .Select(g => { @@ -80,32 +84,34 @@ internal class CacheManager: IDisposable return new IpRecord( g.Key, latest.used_at, - !string.IsNullOrEmpty(latest.name) - ? latest.name - : CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown" + string.IsNullOrEmpty(latest.name) + ? CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown" + : latest.name ); - }), - new IpRecordComparer() - ); + }) + .ToHashSet(new IpRecordComparer()); - _playerIpsCache.AddOrUpdate( - group.Key, - _ => ipSet, - (_, existingSet) => - { - foreach (var ip in ipSet) + _playerIpsCache.AddOrUpdate( + group.Key, + _ => ipSet, + (_, existingSet) => { - existingSet.Remove(ip); - existingSet.Add(ip); - } - - return existingSet; - }); + foreach (var ip in ipSet) + { + existingSet.Remove(ip); + existingSet.Add(ip); + } + return existingSet; + }); + } } + + foreach (var ban in bans.AsValueEnumerable()) + _banCache.TryAdd(ban.Id, ban); RebuildIndexes(); - _lastUpdateTime = DateTime.Now.AddSeconds(-1); + _lastUpdateTime = Time.ActualDateTime().AddSeconds(-1); _isInitialized = true; } catch (Exception e) @@ -114,27 +120,36 @@ internal class CacheManager: IDisposable } } + /// + /// Clears all cached data and reinitializes the cache from the database. + /// + /// Asynchronous task representing the reinitialization process. public async Task ForceReInitializeCacheAsync() { _isInitialized = false; _banCache.Clear(); _playerIpsCache.Clear(); - _cachedIgnoredIps.Clear(); + _cachedIgnoredIps = []; _lastUpdateTime = DateTime.MinValue; await InitializeCacheAsync(); } - + + /// + /// Refreshes the in-memory cache with updated or new data from the database since the last update time. + /// Also updates multi-account IP history if enabled. + /// + /// Asynchronous task representing the refresh operation. public async Task RefreshCacheAsync() { - if (CS2_SimpleAdmin.Database == null) return; + if (CS2_SimpleAdmin.DatabaseProvider == null) return; if (!_isInitialized) return; try { - await using var connection = await CS2_SimpleAdmin.Database.GetConnectionAsync(); - List updatedBans; + await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync(); + IEnumerable updatedBans; var allIds = (await connection.QueryAsync("SELECT id FROM sa_bans")).ToHashSet(); @@ -143,45 +158,45 @@ internal class CacheManager: IDisposable updatedBans = (await connection.QueryAsync( """ SELECT id AS Id, + player_name AS PlayerName, player_steamid AS PlayerSteamId, player_ip AS PlayerIp, status AS Status FROM `sa_bans` WHERE updated_at > @lastUpdate OR created > @lastUpdate ORDER BY updated_at DESC """, new { lastUpdate = _lastUpdateTime } - )).ToList(); + )); } else { updatedBans = (await connection.QueryAsync( """ SELECT id AS Id, + player_name AS PlayerName, player_steamid AS PlayerSteamId, player_ip AS PlayerIp, status AS Status FROM `sa_bans` WHERE (updated_at > @lastUpdate OR created > @lastUpdate) AND server_id = @serverId ORDER BY updated_at DESC """, new { lastUpdate = _lastUpdateTime, serverId = CS2_SimpleAdmin.ServerId } - )).ToList(); + )); } foreach (var id in _banCache.Keys) { if (allIds.Contains(id) || !_banCache.TryRemove(id, out var ban)) continue; - // Remove from steamIdIndex - if (!string.IsNullOrWhiteSpace(ban.PlayerSteamId) && - _steamIdIndex.TryGetValue(ban.PlayerSteamId, out var steamBans)) + if (ban.PlayerSteamId != null && + _steamIdIndex.TryGetValue(ban.PlayerSteamId.Value, out var steamBans)) { steamBans.RemoveAll(b => b.Id == id); if (steamBans.Count == 0) - _steamIdIndex.TryRemove(ban.PlayerSteamId, out _); + _steamIdIndex.TryRemove(ban.PlayerSteamId.Value, out _); } - // Remove from ipIndex - if (!string.IsNullOrWhiteSpace(ban.PlayerIp) && - IpHelper.TryConvertIpToUint(ban.PlayerIp, out var ipUInt) && - _ipIndex.TryGetValue(ipUInt, out var ipBans)) + if (string.IsNullOrWhiteSpace(ban.PlayerIp) || + !IpHelper.TryConvertIpToUint(ban.PlayerIp, out var ipUInt) || + !_ipIndex.TryGetValue(ipUInt, out var ipBans)) continue; { ipBans.RemoveAll(b => b.Id == id); if (ipBans.Count == 0) @@ -189,59 +204,64 @@ internal class CacheManager: IDisposable } } - var ipHistory = (await connection.QueryAsync<(ulong steamid, string? name, uint address, DateTime used_at)>( - "SELECT steamid, name, address, used_at FROM sa_players_ips WHERE used_at >= @lastUpdate ORDER BY used_at DESC LIMIT 300", new {lastUpdate = _lastUpdateTime})).ToList(); - - foreach (var group in ipHistory.AsValueEnumerable().GroupBy(x => x.steamid)) + if (CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp) { - var ipSet = new HashSet( - group - .GroupBy(x => x.address) - .Select(g => - { - var latest = g.MaxBy(x => x.used_at); - return new IpRecord( - g.Key, - latest.used_at, - !string.IsNullOrEmpty(latest.name) - ? latest.name - : CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown" - ); - }), - new IpRecordComparer() - ); + var ipHistory = (await connection.QueryAsync<(ulong steamid, string? name, uint address, DateTime used_at)>( + "SELECT steamid, name, address, used_at FROM sa_players_ips WHERE used_at >= @lastUpdate ORDER BY used_at DESC LIMIT 300", + new { lastUpdate = _lastUpdateTime })); - _playerIpsCache.AddOrUpdate( - group.Key, - _ => ipSet, - (_, existingSet) => - { - foreach (var newEntry in ipSet) + foreach (var group in ipHistory.AsValueEnumerable().GroupBy(x => x.steamid)) + { + var ipSet = new HashSet( + group + .GroupBy(x => x.address) + .Select(g => + { + var latest = g.MaxBy(x => x.used_at); + return new IpRecord( + g.Key, + latest.used_at, + !string.IsNullOrEmpty(latest.name) + ? latest.name + : CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown" + ); + }), + new IpRecordComparer() + ); + + _playerIpsCache.AddOrUpdate( + group.Key, + _ => ipSet, + (_, existingSet) => { - existingSet.Remove(newEntry); - existingSet.Add(newEntry); - } - return existingSet; - }); + foreach (var newEntry in ipSet) + { + existingSet.Remove(newEntry); + existingSet.Add(newEntry); + } + + return existingSet; + }); + } } - - if (updatedBans.Count == 0) - return; - + foreach (var ban in updatedBans) { _banCache.AddOrUpdate(ban.Id, ban, (_, _) => ban); } RebuildIndexes(); - _lastUpdateTime = DateTime.Now.AddSeconds(-1); + _lastUpdateTime = Time.ActualDateTime().AddSeconds(-1); } - catch (Exception e) + catch (Exception) { - // ignored } } + /// + /// Rebuilds the internal indexes for fast lookup of active bans by Steam ID and IP address. + /// Clears and repopulates both indexes based on the current in-memory ban cache. + /// private void RebuildIndexes() { _steamIdIndex.Clear(); @@ -249,14 +269,14 @@ internal class CacheManager: IDisposable foreach (var ban in _banCache.Values) { - if (ban.Status != "ACTIVE") + if (ban.StatusEnum != BanStatus.ACTIVE) continue; - if (!string.IsNullOrWhiteSpace(ban.PlayerSteamId)) + if (ban.PlayerSteamId != null) { var steamId = ban.PlayerSteamId; _steamIdIndex.AddOrUpdate( - steamId, + steamId.Value, key => [ban], (key, list) => { @@ -264,7 +284,9 @@ internal class CacheManager: IDisposable return list; }); } - + + if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) continue; + if (ban.PlayerIp != null && IpHelper.TryConvertIpToUint(ban.PlayerIp, out var ipUInt)) { @@ -280,71 +302,233 @@ internal class CacheManager: IDisposable } } + /// + /// Retrieves all ban records currently stored in the cache. + /// + /// List of all objects. public List GetAllBans() => _banCache.Values.ToList(); - public List GetActiveBans() => _banCache.Values.Where(b => b.Status == "ACTIVE").ToList(); - public List GetPlayerBansBySteamId(string steamId) => _steamIdIndex.TryGetValue(steamId, out var bans) ? bans : []; + + /// + /// Retrieves only active ban records from the cache. + /// + /// List of active objects. + public List GetActiveBans() => _banCache.Values.Where(b => b.StatusEnum == BanStatus.ACTIVE).ToList(); + + /// + /// Retrieves all ban records for a specific player by their Steam ID. + /// + /// 64-bit Steam ID of the player. + /// List of objects associated with the Steam ID. + public List GetPlayerBansBySteamId(ulong steamId) => _steamIdIndex.TryGetValue(steamId, out var bans) ? bans : []; + + /// + /// Gets all known Steam accounts that have used the specified IP address. + /// + /// The IP address to search for, in string format. + /// + /// List of tuples containing the Steam ID, last used time, and player name for each matching entry. + /// public List<(ulong SteamId, DateTime UsedAt, string PlayerName)> GetAccountsByIp(string ipAddress) { var ipAsUint = IpHelper.IpToUint(ipAddress); + var results = new List<(ulong, DateTime, string)>(); + var comparer = _playerIpsCache.Comparer; - return _playerIpsCache.AsValueEnumerable() - .SelectMany(kvp => kvp.Value - .Where(entry => entry.Ip == ipAsUint) - .Select(entry => (kvp.Key, entry.UsedAt, entry.PlayerName))) - .ToList(); + foreach (var (steamId, ipSet) in _playerIpsCache) + { + if (!ipSet.TryGetValue(new IpRecord(ipAsUint, Time.ActualDateTime(), "Unknown"), out var actualEntry)) continue; + results.Add((steamId, actualEntry.UsedAt, actualEntry.PlayerName)); + + foreach (var entry in ipSet) + { + if (entry.Ip == ipAsUint && !Equals(entry, actualEntry)) + { + results.Add((steamId, entry.UsedAt, entry.PlayerName)); + } + } + } + + return results; } + // public IEnumerable<(ulong SteamId, DateTime UsedAt, string PlayerName)> GetAccountsByIp(string ipAddress) + // { + // var ipAsUint = IpHelper.IpToUint(ipAddress); + // + // return _playerIpsCache.SelectMany(kvp => kvp.Value + // .Where(entry => entry.Ip == ipAsUint) + // .Select(entry => (kvp.Key, entry.UsedAt, entry.PlayerName))); + // } + private bool IsIpBanned(string ipAddress) { if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) return false; var ipUInt = IpHelper.IpToUint(ipAddress); return !_cachedIgnoredIps.Contains(ipUInt) && _ipIndex.ContainsKey(ipUInt); } - - public bool IsPlayerBanned(string? steamId, string? ipAddress) + // public bool IsPlayerBanned(ulong? steamId, string? ipAddress) + // { + // if (steamId != null && _steamIdIndex.ContainsKey(steamId.Value)) + // return true; + // + // if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) + // return false; + // + // if (string.IsNullOrEmpty(ipAddress) || !IpHelper.TryConvertIpToUint(ipAddress, out var ipUInt)) + // return false; + // + // return !_cachedIgnoredIps.Contains(ipUInt) && _ipIndex.ContainsKey(ipUInt); + // } + + /// + /// Checks if a player is currently banned by Steam ID or IP address. + /// If a partial ban record is found, updates it with the latest player information. + /// + /// Name of the player attempting to connect. + /// Optional 64-bit Steam ID of the player. + /// Optional IP address of the player. + /// True if the player is banned, otherwise false. + public bool IsPlayerBanned(string playerName, ulong? steamId, string? ipAddress) { - if (steamId != null && _steamIdIndex.ContainsKey(steamId)) - return true; + BanRecord? record; + if (steamId.HasValue && _steamIdIndex.TryGetValue(steamId.Value, out var steamRecords)) + { + record = steamRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE); + if (record != null) + { + if ((string.IsNullOrEmpty(record.PlayerIp) && !string.IsNullOrEmpty(ipAddress)) || + (!record.PlayerSteamId.HasValue)) + { + _ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress)); + } + + return true; + } + } - if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) return false; - - if (ipAddress == null) + if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) return false; - if (!IpHelper.TryConvertIpToUint(ipAddress, out var ipUInt)) - return false; - - return !_cachedIgnoredIps.Contains(ipUInt) && - _ipIndex.ContainsKey(ipUInt); + if (string.IsNullOrEmpty(ipAddress) || + !IpHelper.TryConvertIpToUint(ipAddress, out var ipUInt) || + _cachedIgnoredIps.Contains(ipUInt) || + !_ipIndex.TryGetValue(ipUInt, out var ipRecords)) return false; + + record = ipRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE); + if (record == null) return false; + if ((string.IsNullOrEmpty(record.PlayerIp) && !string.IsNullOrEmpty(ipAddress)) || + (!record.PlayerSteamId.HasValue && steamId.HasValue)) + { + _ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress)); + } + + return true; } - public bool IsPlayerOrAnyIpBanned(ulong steamId, string? ipAddress) + // public bool IsPlayerOrAnyIpBanned(ulong steamId, string? ipAddress) + // { + // if (_steamIdIndex.ContainsKey(steamId)) + // return true; + // + // if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) + // return false; + // + // if (!_playerIpsCache.TryGetValue(steamId, out var ipData)) + // return false; + // + // // var now = Time.ActualDateTime(); + // var cutoff = Time.ActualDateTime().AddDays(-CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans); + // var unknownName = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown"; + // + // if (ipAddress != null && IpHelper.TryConvertIpToUint(ipAddress, out var ipAsUint)) + // { + // if (!_cachedIgnoredIps.Contains(ipAsUint)) + // { + // ipData.Add(new IpRecord( + // ipAsUint, + // Time.ActualDateTime().AddSeconds(-2), + // unknownName + // )); + // } + // } + // + // // foreach (var ipRecord in ipData) + // // { + // // // Skip if too old or in ignored list + // // if (ipRecord.UsedAt < cutoff || _cachedIgnoredIps.Contains(ipRecord.Ip)) + // // continue; + // // + // // // Check if IP is banned + // // if (_ipIndex.ContainsKey(ipRecord.Ip)) + // // return true; + // // } + // + // foreach (var ipRecord in ipData) + // { + // if (ipRecord.UsedAt < cutoff || _cachedIgnoredIps.Contains(ipRecord.Ip)) + // continue; + // + // if (!_ipIndex.TryGetValue(ipRecord.Ip, out var banRecords)) continue; + // + // var activeBan = banRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE); + // if (activeBan == null) continue; + // + // if (!string.IsNullOrEmpty(activeBan.PlayerName) && activeBan.PlayerSteamId.HasValue) return true; + // + // _ = Task.Run(() => UpdatePlayerData( + // activeBan.PlayerName, + // steamId, + // ipAddress + // )); + // + // if (string.IsNullOrEmpty(activeBan.PlayerName) && !string.IsNullOrEmpty(unknownName)) + // activeBan.PlayerName = unknownName; + // + // activeBan.PlayerSteamId ??= steamId; + // + // return true; + // } + // + // return false; + // } + + /// + /// Checks if the player or any IP previously associated with them is currently banned. + /// Also updates ban records with missing player info if found. + /// + /// Current player name. + /// 64-bit Steam ID of the player. + /// Current IP address of the player (optional). + /// True if the player or their known IPs are banned, otherwise false. + public bool IsPlayerOrAnyIpBanned(string playerName, ulong steamId, string? ipAddress) { - var steamIdStr = steamId.ToString(); - - if (_steamIdIndex.ContainsKey(steamIdStr)) - return true; - - if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) return false; + if (_steamIdIndex.TryGetValue(steamId, out var steamBans)) + { + var activeBan = steamBans.FirstOrDefault(b => b.StatusEnum == BanStatus.ACTIVE); + if (activeBan != null) + { + if (string.IsNullOrEmpty(activeBan.PlayerName) || string.IsNullOrEmpty(activeBan.PlayerIp)) + _ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress)); + + return true; + } + } + + if (CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0) + return false; if (!_playerIpsCache.TryGetValue(steamId, out var ipData)) return false; - var now = DateTime.Now; - var cutoff = now.AddDays(-7); + var cutoff = Time.ActualDateTime().AddDays(-CS2_SimpleAdmin.Instance.Config.OtherSettings.ExpireOldIpBans); + var unknownName = CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown"; - if (ipAddress != null) + if (ipAddress != null && IpHelper.TryConvertIpToUint(ipAddress, out var ipAsUint)) { - var ipAsUint = IpHelper.IpToUint(ipAddress); - if (!_cachedIgnoredIps.Contains(ipAsUint)) { - ipData.Add(new IpRecord( - ipAsUint, - now.AddSeconds(-2), // artificially recent - CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown" - )); + ipData.Add(new IpRecord(ipAsUint, Time.ActualDateTime().AddSeconds(-2), unknownName)); } } @@ -353,20 +537,122 @@ internal class CacheManager: IDisposable if (ipRecord.UsedAt < cutoff || _cachedIgnoredIps.Contains(ipRecord.Ip)) continue; - if (_ipIndex.ContainsKey(ipRecord.Ip)) - return true; + if (!_ipIndex.TryGetValue(ipRecord.Ip, out var banRecords)) + continue; + + var activeBan = banRecords.FirstOrDefault(r => r.StatusEnum == BanStatus.ACTIVE); + if (activeBan == null) + continue; + + if (string.IsNullOrEmpty(activeBan.PlayerName)) + activeBan.PlayerName = unknownName; + + activeBan.PlayerSteamId ??= steamId; + + _ = Task.Run(() => UpdatePlayerData(playerName, steamId, ipAddress)); + + return true; } return false; } - + + /// + /// Checks if the given IP address is known (previously recorded) for the specified Steam ID. + /// + /// 64-bit Steam ID of the player. + /// IP address to check. + /// True if the IP is recorded for the player, otherwise false. public bool HasIpForPlayer(ulong steamId, string ipAddress) { if (string.IsNullOrWhiteSpace(ipAddress)) return false; + + if (!IpHelper.TryConvertIpToUint(ipAddress, out var ipUint)) + return false; - return _playerIpsCache.TryGetValue(steamId, out var ipData) - && ipData.Any(x => x.Ip == IpHelper.IpToUint(ipAddress)); + return _playerIpsCache.TryGetValue(steamId, out var ipData) && + ipData.Contains(new IpRecord(ipUint, default, null!)); + } + + // public bool HasIpForPlayer(ulong steamId, string ipAddress) + // { + // if (string.IsNullOrWhiteSpace(ipAddress)) + // return false; + // + // return _playerIpsCache.TryGetValue(steamId, out var ipData) + // && ipData.Any(x => x.Ip == IpHelper.IpToUint(ipAddress)); + // } + + /// + /// Updates existing active ban records in the database with the latest known player name and IP address. + /// Also updates in-memory cache to reflect these changes. + /// + /// Current player name. + /// Optional Steam ID of the player. + /// Optional IP address of the player. + /// Asynchronous task representing the update operation. + private async Task UpdatePlayerData(string? playerName, ulong? steamId, string? ipAddress) + { + if (CS2_SimpleAdmin.DatabaseProvider == null) + return; + + var baseSql = """ + UPDATE sa_bans + SET + player_ip = COALESCE(player_ip, @PlayerIP), + player_name = COALESCE(player_name, @PlayerName) + WHERE + (player_steamid = @PlayerSteamID OR player_ip = @PlayerIP) + AND status = 'ACTIVE' + AND (duration = 0 OR ends > @CurrentTime) + """; + + if (!CS2_SimpleAdmin.Instance.Config.MultiServerMode) + { + baseSql += " AND server_id = @ServerId;"; + } + + var parameters = new + { + PlayerSteamID = steamId, + PlayerIP = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 + || string.IsNullOrEmpty(ipAddress) + || CS2_SimpleAdmin.Instance.Config.OtherSettings.IgnoredIps.Contains(ipAddress) + ? null + : ipAddress, + PlayerName = string.IsNullOrEmpty(playerName) ? string.Empty : playerName, + CurrentTime = Time.ActualDateTime(), + CS2_SimpleAdmin.ServerId + }; + + await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync(); + await connection.ExecuteAsync(baseSql, parameters); + + if (steamId.HasValue && _steamIdIndex.TryGetValue(steamId.Value, out var steamRecords)) + { + foreach (var rec in steamRecords.Where(r => r.StatusEnum == BanStatus.ACTIVE)) + { + if (string.IsNullOrEmpty(rec.PlayerIp) && !string.IsNullOrEmpty(ipAddress)) + rec.PlayerIp = ipAddress; + + if (string.IsNullOrEmpty(rec.PlayerName) && !string.IsNullOrEmpty(playerName)) + rec.PlayerName = playerName; + } + } + + if (!string.IsNullOrEmpty(ipAddress) && IpHelper.TryConvertIpToUint(ipAddress, out var ipUInt) + && _ipIndex.TryGetValue(ipUInt, out var ipRecords)) + { + foreach (var rec in ipRecords.Where(r => r.StatusEnum == BanStatus.ACTIVE)) + { + if (!rec.PlayerSteamId.HasValue && steamId.HasValue) + rec.PlayerSteamId = steamId; + + if (string.IsNullOrEmpty(rec.PlayerName) && !string.IsNullOrEmpty(playerName)) + rec.PlayerName = playerName; + } + } } private void Clear() @@ -379,6 +665,9 @@ internal class CacheManager: IDisposable _cachedIgnoredIps.Clear(); } + /// + /// Clears and disposes of all cached data and marks the object as disposed. + /// public void Dispose() { if (_disposed) return; diff --git a/CS2-SimpleAdmin/Managers/DiscordManager.cs b/CS2-SimpleAdmin/Managers/DiscordManager.cs index 60ce5d8..e264c2d 100644 --- a/CS2-SimpleAdmin/Managers/DiscordManager.cs +++ b/CS2-SimpleAdmin/Managers/DiscordManager.cs @@ -1,21 +1,33 @@ +using System.Diagnostics.CodeAnalysis; using System.Text; +using System.Text.Json; using Microsoft.Extensions.Logging; -using Newtonsoft.Json; namespace CS2_SimpleAdmin.Managers; public class DiscordManager(string webhookUrl) { + + /// + /// Sends a plain text message asynchronously to the configured Discord webhook URL. + /// + /// The text message to send to Discord. + /// A task representing the asynchronous operation. + [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] public async Task SendMessageAsync(string message) { var client = CS2_SimpleAdmin.HttpClient; - var payload = new { content = message }; - var json = JsonConvert.SerializeObject(payload); + var options = new JsonSerializerOptions + { + WriteIndented = false + }; + + var json = JsonSerializer.Serialize(payload, options); var content = new StringContent(json, Encoding.UTF8, "application/json"); try @@ -34,6 +46,12 @@ public class DiscordManager(string webhookUrl) } } + /// + /// Sends an embed message asynchronously to the configured Discord webhook URL. + /// + /// The embed object containing rich content to send. + /// A task representing the asynchronous operation. + [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] public async Task SendEmbedAsync(Embed embed) { var httpClient = CS2_SimpleAdmin.HttpClient; @@ -61,7 +79,12 @@ public class DiscordManager(string webhookUrl) } }; - var jsonPayload = JsonConvert.SerializeObject(payload); + var options = new JsonSerializerOptions + { + WriteIndented = false + }; + + var jsonPayload = JsonSerializer.Serialize(payload, options); var content = new StringContent(jsonPayload, Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync(webhookUrl, content); @@ -73,6 +96,11 @@ public class DiscordManager(string webhookUrl) } } + /// + /// Converts a hexadecimal color string (e.g. "#FF0000") to its integer representation. + /// + /// The hexadecimal color string, optionally starting with '#'. + /// An integer representing the color. public static int ColorFromHex(string hex) { if (hex.StartsWith($"#")) @@ -84,6 +112,9 @@ public class DiscordManager(string webhookUrl) } } +/// +/// Represents a Discord embed message containing rich content such as title, description, fields, and images. +/// public class Embed { public int Color { get; init; } @@ -96,6 +127,12 @@ public class Embed public List Fields { get; } = []; + /// + /// Adds a field to the embed message. + /// + /// The name of the field. + /// The value or content of the field. + /// Whether the field should be displayed inline with other fields. public void AddField(string name, string value, bool inline) { var field = new EmbedField @@ -109,12 +146,18 @@ public class Embed } } +/// +/// Represents the footer section of a Discord embed message, including optional text and icon URL. +/// public class Footer { public string? Text { get; init; } public string? IconUrl { get; set; } } +/// +/// Represents a field inside a Discord embed message. +/// public class EmbedField { public string? Name { get; init; } diff --git a/CS2-SimpleAdmin/Managers/MuteManager.cs b/CS2-SimpleAdmin/Managers/MuteManager.cs index 55df4b6..01d83df 100644 --- a/CS2-SimpleAdmin/Managers/MuteManager.cs +++ b/CS2-SimpleAdmin/Managers/MuteManager.cs @@ -1,14 +1,24 @@ -using CS2_SimpleAdminApi; +using CS2_SimpleAdmin.Database; +using CS2_SimpleAdminApi; using Dapper; using Microsoft.Extensions.Logging; namespace CS2_SimpleAdmin.Managers; -internal class MuteManager(Database.Database? database) +internal class MuteManager(IDatabaseProvider? databaseProvider) { + /// + /// Adds a mute entry for a specified player with detailed information. + /// + /// Player to be muted. + /// Admin issuing the mute; null if issued from console. + /// Reason for muting the player. + /// Duration of the mute in minutes. Zero means permanent mute. + /// Mute type: 0 = GAG, 1 = MUTE, 2 = SILENCE. + /// Mute ID if successfully added, otherwise null. public async Task MutePlayer(PlayerInfo player, PlayerInfo? issuer, string reason, int time = 0, int type = 0) { - if (database == null) return null; + if (databaseProvider == null) return null; var now = Time.ActualDateTime(); var futureTime = now.AddMinutes(time); @@ -22,21 +32,14 @@ internal class MuteManager(Database.Database? database) try { - await using var connection = await database.GetConnectionAsync(); - const string sql = """ - - INSERT INTO `sa_mutes` - (`player_steamid`, `player_name`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`, `server_id`) - VALUES - (@playerSteamid, @playerName, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @type, @serverid); - SELECT LAST_INSERT_ID(); - """; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetAddMuteQuery(true); var muteId = await connection.ExecuteScalarAsync(sql, new { - playerSteamid = player.SteamId.SteamId64.ToString(), + playerSteamid = player.SteamId.SteamId64, playerName = player.Name, - adminSteamid = issuer?.SteamId.SteamId64.ToString() ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", + adminSteamid = issuer?.SteamId.SteamId64 ?? 0, adminName = issuer?.Name ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", muteReason = reason, duration = time, @@ -55,10 +58,18 @@ internal class MuteManager(Database.Database? database) } } - public async Task AddMuteBySteamid(string playerSteamId, PlayerInfo? issuer, string reason, int time = 0, int type = 0) + /// + /// Adds a mute entry for a offline player identified by their SteamID. + /// + /// SteamID64 of the player to mute. + /// Admin issuing the mute; can be null if from console. + /// Reason for the mute. + /// Mute duration in minutes; 0 for permanent. + /// Mute type: 0 = GAG, 1 = MUTE, 2 = SILENCE. + /// Mute ID if successful, otherwise null. + public async Task AddMuteBySteamid(ulong playerSteamId, PlayerInfo? issuer, string reason, int time = 0, int type = 0) { - if (database == null) return null; - if (string.IsNullOrEmpty(playerSteamId)) return null; + if (databaseProvider == null) return null; var now = Time.ActualDateTime(); var futureTime = now.AddMinutes(time); @@ -72,20 +83,13 @@ internal class MuteManager(Database.Database? database) try { - await using var connection = await database.GetConnectionAsync(); - const string sql = """ - - INSERT INTO `sa_mutes` - (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `type`, `server_id`) - VALUES - (@playerSteamid, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @type, @serverid); - SELECT LAST_INSERT_ID(); - """; - + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetAddMuteQuery(false); + var muteId = await connection.ExecuteScalarAsync(sql, new { playerSteamid = playerSteamId, - adminSteamid = issuer?.SteamId.SteamId64.ToString() ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", + adminSteamid = issuer?.SteamId.SteamId64 ?? 0, adminName = issuer?.Name ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", muteReason = reason, duration = time, @@ -103,9 +107,14 @@ internal class MuteManager(Database.Database? database) } } + /// + /// Checks if a player with the given SteamID currently has any active mutes. + /// + /// SteamID64 of the player to check. + /// List of active mute records; empty list if none or on error. public async Task> IsPlayerMuted(string steamId) { - if (database == null) return []; + if (databaseProvider == null) return []; if (string.IsNullOrEmpty(steamId)) { @@ -119,24 +128,11 @@ internal class MuteManager(Database.Database? database) try { - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); var currentTime = Time.ActualDateTime(); - var sql = ""; - - if (CS2_SimpleAdmin.Instance.Config.MultiServerMode) - { - sql = CS2_SimpleAdmin.Instance.Config.OtherSettings.TimeMode == 1 - ? "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime)" - : "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR duration > COALESCE(passed, 0))"; - } - else - { - sql = CS2_SimpleAdmin.Instance.Config.OtherSettings.TimeMode == 1 - ? "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR ends > @CurrentTime) AND server_id = @serverid" - : "SELECT * FROM sa_mutes WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' AND (duration = 0 OR duration > COALESCE(passed, 0)) AND server_id = @serverid"; - - } - + + var sql = databaseProvider.GetIsMutedQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode, CS2_SimpleAdmin.Instance.Config.OtherSettings.TimeMode); + var parameters = new { PlayerSteamID = steamId, CurrentTime = currentTime, serverid = CS2_SimpleAdmin.ServerId }; var activeMutes = (await connection.QueryAsync(sql, parameters)).ToList(); return activeMutes; @@ -147,35 +143,26 @@ internal class MuteManager(Database.Database? database) } } + /// + /// Retrieves counts of total mutes, gags, and silences for a given player. + /// + /// Information about the player. + /// + /// Tuple containing total mutes, total gags, and total silences respectively. + /// Returns zeros if no data or on error. + /// public async Task<(int TotalMutes, int TotalGags, int TotalSilences)> GetPlayerMutes(PlayerInfo playerInfo) { - if (database == null) return (0,0,0); + if (databaseProvider == null) return (0,0,0); try { - await using var connection = await database.GetConnectionAsync(); - - var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? """ - SELECT - COUNT(CASE WHEN type = 'MUTE' THEN 1 END) AS TotalMutes, - COUNT(CASE WHEN type = 'GAG' THEN 1 END) AS TotalGags, - COUNT(CASE WHEN type = 'SILENCE' THEN 1 END) AS TotalSilences - FROM sa_mutes - WHERE player_steamid = @PlayerSteamID; - """ - : """ - SELECT - COUNT(CASE WHEN type = 'MUTE' THEN 1 END) AS TotalMutes, - COUNT(CASE WHEN type = 'GAG' THEN 1 END) AS TotalGags, - COUNT(CASE WHEN type = 'SILENCE' THEN 1 END) AS TotalSilences - FROM sa_mutes - WHERE player_steamid = @PlayerSteamID AND server_id = @ServerId; - """; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetRetrieveMutesQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); var result = await connection.QuerySingleAsync<(int TotalMutes, int TotalGags, int TotalSilences)>(sql, new { - PlayerSteamID = playerInfo.SteamId.SteamId64.ToString(), + PlayerSteamID = playerInfo.SteamId.SteamId64, CS2_SimpleAdmin.ServerId }); @@ -187,18 +174,21 @@ internal class MuteManager(Database.Database? database) } } + /// + /// Processes a batch of online players to update their mute status and remove expired penalties. + /// + /// List of tuples containing player SteamID, optional UserID, and slot index. + /// Task representing the asynchronous operation. public async Task CheckOnlineModeMutes(List<(ulong SteamID, int? UserId, int Slot)> players) { - if (database == null) return; + if (databaseProvider == null) return; try { const int batchSize = 20; - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); - var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? "UPDATE `sa_mutes` SET passed = COALESCE(passed, 0) + 1 WHERE (player_steamid = @PlayerSteamID) AND duration > 0 AND status = 'ACTIVE'" - : "UPDATE `sa_mutes` SET passed = COALESCE(passed, 0) + 1 WHERE (player_steamid = @PlayerSteamID) AND duration > 0 AND status = 'ACTIVE' AND server_id = @serverid"; + var sql = databaseProvider.GetUpdateMutePassedQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); for (var i = 0; i < players.Count; i += batchSize) { @@ -213,10 +203,7 @@ internal class MuteManager(Database.Database? database) await connection.ExecuteAsync(sql, parametersList); } - sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? "SELECT * FROM `sa_mutes` WHERE player_steamid = @PlayerSteamID AND passed >= duration AND duration > 0 AND status = 'ACTIVE'" - : "SELECT * FROM `sa_mutes` WHERE player_steamid = @PlayerSteamID AND passed >= duration AND duration > 0 AND status = 'ACTIVE' AND server_id = @serverid"; - + sql = databaseProvider.GetCheckExpiredMutesQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); foreach (var (steamId, _, slot) in players) { @@ -233,9 +220,17 @@ internal class MuteManager(Database.Database? database) catch { } } + /// + /// Removes active mutes for players matching the specified pattern. + /// + /// Pattern to match player names or identifiers. + /// SteamID64 of the admin performing the unmute. + /// Reason for unmuting the player(s). + /// Mute type to remove: 0 = GAG, 1 = MUTE, 2 = SILENCE. + /// Task representing the asynchronous operation. public async Task UnmutePlayer(string playerPattern, string adminSteamId, string reason, int type = 0) { - if (database == null) return; + if (databaseProvider == null) return; if (playerPattern.Length <= 1) { @@ -244,8 +239,7 @@ internal class MuteManager(Database.Database? database) try { - await using var connection = await database.GetConnectionAsync(); - + await using var connection = await databaseProvider.CreateConnectionAsync(); var muteType = type switch { 1 => "MUTE", @@ -253,27 +247,16 @@ internal class MuteManager(Database.Database? database) _ => "GAG" }; - string sqlRetrieveMutes; - - if (CS2_SimpleAdmin.Instance.Config.MultiServerMode) - { - sqlRetrieveMutes = "SELECT id FROM sa_mutes WHERE (player_steamid = @pattern OR player_name = @pattern) AND " + - "type = @muteType AND status = 'ACTIVE'"; - } - else - { - sqlRetrieveMutes = "SELECT id FROM sa_mutes WHERE (player_steamid = @pattern OR player_name = @pattern) AND " + - "type = @muteType AND status = 'ACTIVE' AND server_id = @serverid"; - } - + var sqlRetrieveMutes = + databaseProvider.GetRetrieveMutesQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); var mutes = await connection.QueryAsync(sqlRetrieveMutes, new { pattern = playerPattern, muteType, serverid = CS2_SimpleAdmin.ServerId }); var mutesList = mutes as dynamic[] ?? mutes.ToArray(); if (mutesList.Length == 0) return; - const string sqlAdmin = "SELECT id FROM sa_admins WHERE player_steamid = @adminSteamId"; - var sqlInsertUnmute = "INSERT INTO sa_unmutes (mute_id, admin_id, reason) VALUES (@muteId, @adminId, @reason); SELECT LAST_INSERT_ID();"; + var sqlAdmin = databaseProvider.GetUnmuteAdminIdQuery(); + var sqlInsertUnmute = databaseProvider.GetInsertUnmuteQuery(string.IsNullOrEmpty(reason)); var sqlAdminId = await connection.ExecuteScalarAsync(sqlAdmin, new { adminSteamId }); var adminId = sqlAdminId ?? 0; @@ -281,21 +264,11 @@ internal class MuteManager(Database.Database? database) foreach (var mute in mutesList) { int muteId = mute.id; - int? unmuteId; - // Insert into sa_unmutes - if (reason != null) - { - unmuteId = await connection.ExecuteScalarAsync(sqlInsertUnmute, new { muteId, adminId, reason }); - } - else - { - sqlInsertUnmute = "INSERT INTO sa_unmutes (muteId, admin_id) VALUES (@muteId, @adminId); SELECT LAST_INSERT_ID();"; - unmuteId = await connection.ExecuteScalarAsync(sqlInsertUnmute, new { muteId, adminId }); - } + int? unmuteId = + await connection.ExecuteScalarAsync(sqlInsertUnmute, new { muteId, adminId, reason }); - // Update sa_mutes to set unmute_id - const string sqlUpdateMute = "UPDATE sa_mutes SET status = 'UNMUTED', unmute_id = @unmuteId WHERE id = @muteId"; + var sqlUpdateMute = databaseProvider.GetUpdateMuteStatusQuery(); await connection.ExecuteAsync(sqlUpdateMute, new { unmuteId, muteId }); } } @@ -305,28 +278,18 @@ internal class MuteManager(Database.Database? database) } } + /// + /// Expires all old mutes that have passed their duration according to current time. + /// + /// Task representing the asynchronous expiration operation. public async Task ExpireOldMutes() { - if (database == null) return; + if (databaseProvider == null) return; try { - await using var connection = await database.GetConnectionAsync(); - string sql; - - if (CS2_SimpleAdmin.Instance.Config.MultiServerMode) - { - sql = CS2_SimpleAdmin.Instance.Config.OtherSettings.TimeMode == 1 - ? "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime" - : "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND `passed` >= `duration`"; - } - else - { - sql = CS2_SimpleAdmin.Instance.Config.OtherSettings.TimeMode == 1 - ? "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime AND server_id = @serverid" - : "UPDATE sa_mutes SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND `passed` >= `duration` AND server_id = @serverid"; - } - + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetExpireMutesQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode, CS2_SimpleAdmin.Instance.Config.OtherSettings.TimeMode); await connection.ExecuteAsync(sql, new { CurrentTime = Time.ActualDateTime(), serverid = CS2_SimpleAdmin.ServerId }); } catch (Exception) diff --git a/CS2-SimpleAdmin/Managers/PermissionManager.cs b/CS2-SimpleAdmin/Managers/PermissionManager.cs index bd8fb46..c9f2b41 100644 --- a/CS2-SimpleAdmin/Managers/PermissionManager.cs +++ b/CS2-SimpleAdmin/Managers/PermissionManager.cs @@ -2,14 +2,15 @@ using CounterStrikeSharp.API.Modules.Entities; using Dapper; using Microsoft.Extensions.Logging; -using MySqlConnector; -using Newtonsoft.Json; using System.Collections.Concurrent; +using System.Text.Json; using CounterStrikeSharp.API.Modules.Admin; +using System.Diagnostics.CodeAnalysis; +using CS2_SimpleAdmin.Database; namespace CS2_SimpleAdmin.Managers; -public class PermissionManager(Database.Database? database) +public class PermissionManager(IDatabaseProvider? databaseProvider) { // Unused for now //public static readonly ConcurrentDictionary> _adminCache = new ConcurrentDictionary>(); @@ -59,59 +60,65 @@ public class PermissionManager(Database.Database? database) } */ - private async Task, int, DateTime?)>> GetAllPlayersFlags() + /// + /// Retrieves all players' flags and associated data asynchronously. + /// + /// A list of tuples containing player SteamID, name, flags, immunity, and expiration time. + private async Task, int, DateTime?)>> GetAllPlayersFlags() { - if (database == null) return []; + if (databaseProvider == null) + return new List<(ulong, string, List, int, DateTime?)>(); - var now = Time.ActualDateTime(); + var now = Time.ActualDateTime(); - try - { - await using var connection = await database.GetConnectionAsync(); + try + { + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetAdminsQuery(); + var admins = (await connection.QueryAsync(sql, new { CurrentTime = now, serverid = CS2_SimpleAdmin.ServerId })).ToList(); - const string sql = """ - SELECT sa_admins.player_steamid, sa_admins.player_name, sa_admins_flags.flag, sa_admins.immunity, sa_admins.ends - FROM sa_admins_flags - JOIN sa_admins ON sa_admins_flags.admin_id = sa_admins.id - WHERE (sa_admins.ends IS NULL OR sa_admins.ends > @CurrentTime) - AND (sa_admins.server_id IS NULL OR sa_admins.server_id = @serverid) - ORDER BY sa_admins.player_steamid - """; + var groupedPlayers = admins + .GroupBy(r => new { playerSteamId = r.player_steamid, playerName = r.player_name, r.immunity, r.ends }) + .Select(g => + { + ulong steamId = g.Key.playerSteamId switch + { + long l => (ulong)l, + int i => (ulong)i, + string s when ulong.TryParse(s, out var parsed) => parsed, + _ => 0UL + }; - var admins = (await connection.QueryAsync(sql, new { CurrentTime = now, serverid = CS2_SimpleAdmin.ServerId })).ToList(); + int immunity = g.Key.immunity switch + { + int i => i, + string s when int.TryParse(s, out var parsed) => parsed, + _ => 0 + }; - // Group by player_steamid and aggregate the flags - var groupedPlayers = admins - .GroupBy(r => new { r.player_steamid, r.player_name, r.immunity, r.ends }) - .Select(g => ( - PlayerSteamId: (string)g.Key.player_steamid, - PlayerName: (string)g.Key.player_name, - Flags: g.Select(r => (string)r.flag).Distinct().ToList(), - Immunity: g.Key.immunity is int i ? i : int.TryParse((string)g.Key.immunity, out var immunity) ? immunity : 0, - Ends: g.Key.ends is DateTime dateTime ? dateTime : (DateTime?)null - )) - .ToList(); + DateTime? ends = g.Key.ends as DateTime?; - - // foreach (var player in groupedPlayers) - // { - // Console.WriteLine($"Player SteamID: {player.PlayerSteamId}, Name: {player.PlayerName}, Flags: {string.Join(", ", player.Flags)}, Immunity: {player.Immunity}, Ends: {player.Ends}"); - // } - - List<(string, string, List, int, DateTime?)> filteredFlagsWithImmunity = []; + string playerName = g.Key.playerName as string ?? string.Empty; - // Add the grouped players to the list - filteredFlagsWithImmunity.AddRange(groupedPlayers); + // tutaj zakładamy, że Dapper zwraca już string (nie dynamic) + var flags = g.Select(r => r.flag as string ?? string.Empty) + .Distinct() + .ToList(); - return filteredFlagsWithImmunity; - } - catch (Exception ex) - { - CS2_SimpleAdmin._logger?.LogError("Unable to load admins from database! {exception}", ex.Message); - return []; - } + return (steamId, playerName, flags, immunity, ends); + }) + .ToList(); + + return groupedPlayers; + } + catch (Exception ex) + { + CS2_SimpleAdmin._logger?.LogError("Unable to load admins from database! {exception}", ex.Message); + return []; + } } + /* public async Task, List>, int>>> GetAllGroupsFlags() { @@ -177,33 +184,29 @@ public class PermissionManager(Database.Database? database) } */ + /// + /// Retrieves all groups' data including flags and immunity asynchronously. + /// + /// A dictionary with group names as keys and tuples of flags and immunity as values. private async Task, int)>> GetAllGroupsData() { - if (database == null) return []; + if (databaseProvider == null) return []; - await using MySqlConnection connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); + ; try { - var sql = "SELECT group_id FROM sa_groups_servers WHERE (server_id = @serverid OR server_id IS NULL)"; - var groupDataSql = connection.Query(sql, new { serverid = CS2_SimpleAdmin.ServerId }).ToList(); - - sql = """ - SELECT g.group_id, sg.name AS group_name, sg.immunity, f.flag - FROM sa_groups_flags f - JOIN sa_groups_servers g ON f.group_id = g.group_id - JOIN sa_groups sg ON sg.id = g.group_id - WHERE (g.server_id = @serverid OR server_id IS NULL) - """; + // var sql = "SELECT group_id FROM sa_groups_servers WHERE (server_id = @serverid OR server_id IS NULL)"; + // var groupDataSql = connection.Query(sql, new { serverid = CS2_SimpleAdmin.ServerId }).ToList(); + var sql = databaseProvider.GetGroupsQuery(); var groupData = connection.Query(sql, new { serverid = CS2_SimpleAdmin.ServerId }).ToList(); - - if (groupDataSql.Count == 0 || groupData.Count == 0) + if (groupData.Count == 0) { return []; } var groupInfoDictionary = new Dictionary, int)>(); - foreach (var row in groupData) { var groupName = (string)row.group_name; @@ -231,10 +234,13 @@ public class PermissionManager(Database.Database? database) return []; } + /// + /// Creates a JSON file containing groups data asynchronously. + /// + [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] public async Task CrateGroupsJsonFile() { var groupsData = await GetAllGroupsData(); - var jsonData = new Dictionary(); foreach (var kvp in groupsData) @@ -248,7 +254,13 @@ public class PermissionManager(Database.Database? database) jsonData[kvp.Key] = groupData; } - var json = JsonConvert.SerializeObject(jsonData, Formatting.Indented); + var options = new JsonSerializerOptions + { + WriteIndented = true, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }; + + var json = JsonSerializer.Serialize(jsonData, options); var filePath = Path.Combine(CS2_SimpleAdmin.Instance.ModuleDirectory, "data", "groups.json"); await File.WriteAllTextAsync(filePath, json); } @@ -313,11 +325,15 @@ public class PermissionManager(Database.Database? database) } */ + /// + /// Creates a JSON file containing admins data asynchronously. + /// + [UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "")] public async Task CreateAdminsJsonFile() { - List<(string identity, string name, List flags, int immunity, DateTime? ends)> allPlayers = await GetAllPlayersFlags(); + List<(ulong identity, string name, List flags, int immunity, DateTime? ends)> allPlayers = await GetAllPlayersFlags(); var validPlayers = allPlayers - .Where(player => SteamID.TryParse(player.identity, out _)) + .Where(player => SteamID.TryParse(player.identity.ToString(), out _)) .ToList(); // foreach (var player in allPlayers) @@ -335,10 +351,10 @@ public class PermissionManager(Database.Database? database) var jsonData = validPlayers .GroupBy(player => player.name) // Group by player name .ToDictionary( - group => group.Key, // Use the player name as the key + group => group.Key, // Use the player name as key object (group) => { - // Consolidate data for players with the same name + // Consolidate data for players with same name var consolidatedData = group.Aggregate( new { @@ -349,16 +365,16 @@ public class PermissionManager(Database.Database? database) }, (acc, player) => { - // Merge identities and use the latest or first non-null identity - if (string.IsNullOrEmpty(acc.identity) && !string.IsNullOrEmpty(player.identity)) + // Merge identities + if (string.IsNullOrEmpty(acc.identity) && !string.IsNullOrEmpty(player.identity.ToString())) { - acc = acc with { identity = player.identity }; + acc = acc with { identity = player.identity.ToString() }; } - // Combine immunities by taking the maximum value + // Combine immunities by maximum value acc = acc with { immunity = Math.Max(acc.immunity, player.immunity) }; - // Combine flags and groups, ensuring no duplicates + // Combine flags and groups acc = acc with { flags = acc.flags.Concat(player.flags.Where(flag => flag.StartsWith($"@"))).Distinct().ToList(), @@ -368,7 +384,7 @@ public class PermissionManager(Database.Database? database) return acc; }); - Server.NextFrameAsync(() => + Server.NextWorldUpdate(() => { var keysToRemove = new List(); @@ -399,7 +415,7 @@ public class PermissionManager(Database.Database? database) foreach (var player in group) { - if (SteamID.TryParse(player.identity, out var steamId) && steamId != null) + if (SteamID.TryParse(player.identity.ToString(), out var steamId) && steamId != null) { AdminCache.TryAdd(steamId, (player.ends, player.flags)); } @@ -440,7 +456,13 @@ public class PermissionManager(Database.Database? database) return consolidatedData; }); - var json = JsonConvert.SerializeObject(jsonData, Formatting.Indented); + var options = new JsonSerializerOptions + { + WriteIndented = true, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }; + + var json = JsonSerializer.Serialize(jsonData, options); var filePath = Path.Combine(CS2_SimpleAdmin.Instance.ModuleDirectory, "data", "admins.json"); await File.WriteAllTextAsync(filePath, json); @@ -448,32 +470,42 @@ public class PermissionManager(Database.Database? database) //await File.WriteAllTextAsync(CS2_SimpleAdmin.Instance.ModuleDirectory + "/data/admins.json", json); } + /// + /// Deletes an admin by their SteamID from the database asynchronously. + /// + /// The SteamID of the admin to delete. + /// Whether to delete the admin globally or only for the current server. public async Task DeleteAdminBySteamId(string playerSteamId, bool globalDelete = false) { - if (database == null) return; + if (databaseProvider == null) return; if (string.IsNullOrEmpty(playerSteamId)) return; //_adminCache.TryRemove(playerSteamId, out _); try { - await using var connection = await database.GetConnectionAsync(); - - var sql = globalDelete - ? "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID" - : "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID AND server_id = @ServerId"; - + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetDeleteAdminQuery(globalDelete); await connection.ExecuteAsync(sql, new { PlayerSteamID = playerSteamId, CS2_SimpleAdmin.ServerId }); } catch (Exception ex) { - CS2_SimpleAdmin._logger?.LogError(ex.ToString()); + CS2_SimpleAdmin._logger?.LogError(ex.Message); } } + /// + /// Adds a new admin with specified details asynchronously. + /// + /// SteamID of the admin. + /// Name of the admin. + /// List of flags assigned to the admin. + /// Immunity level. + /// Duration in minutes for admin expiration; 0 means permanent. + /// Whether the admin is global or server-specific. public async Task AddAdminBySteamId(string playerSteamId, string playerName, List flagsList, int immunity = 0, int time = 0, bool globalAdmin = false) { - if (database == null) return; + if (databaseProvider == null) return; if (string.IsNullOrEmpty(playerSteamId) || flagsList.Count == 0) return; @@ -487,12 +519,10 @@ public class PermissionManager(Database.Database? database) try { - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); // Insert admin into sa_admins table - const string insertAdminSql = "INSERT INTO `sa_admins` (`player_steamid`, `player_name`, `immunity`, `ends`, `created`, `server_id`) " + - "VALUES (@playerSteamid, @playerName, @immunity, @ends, @created, @serverid); SELECT LAST_INSERT_ID();"; - + var insertAdminSql = databaseProvider.GetAddAdminQuery(); var adminId = await connection.ExecuteScalarAsync(insertAdminSql, new { playerSteamId, @@ -506,36 +536,26 @@ public class PermissionManager(Database.Database? database) // Insert flags into sa_admins_flags table foreach (var flag in flagsList) { - if (flag.StartsWith($"#")) - { - // const string sql = "SELECT id FROM `sa_groups` WHERE name = @groupName"; - // var groupId = await connection.QuerySingleOrDefaultAsync(sql, new { groupName = flag }); - - const string sql = """ - SELECT sgs.group_id - FROM sa_groups_servers sgs - JOIN sa_groups sg ON sgs.group_id = sg.id - WHERE sg.name = @groupName - ORDER BY (sgs.server_id = @serverId) DESC, sgs.server_id ASC - LIMIT 1 - """; - - var groupId = await connection.QuerySingleOrDefaultAsync(sql, new { groupName = flag, CS2_SimpleAdmin.ServerId }); - - if (groupId != null) - { - const string updateAdminGroup = "UPDATE `sa_admins` SET group_id = @groupId WHERE id = @adminId"; - await connection.ExecuteAsync(updateAdminGroup, new - { - groupId, - adminId - }); - } - } - - const string insertFlagsSql = "INSERT INTO `sa_admins_flags` (`admin_id`, `flag`) " + - "VALUES (@adminId, @flag)"; + // if (flag.StartsWith($"#")) + // { + // // const string sql = "SELECT id FROM `sa_groups` WHERE name = @groupName"; + // // var groupId = await connection.QuerySingleOrDefaultAsync(sql, new { groupName = flag }); + // + // var sql = databaseProvider.GetGroupIdByNameQuery(); + // var groupId = await connection.QuerySingleOrDefaultAsync(sql, new { groupName = flag, CS2_SimpleAdmin.ServerId }); + // + // if (groupId != null) + // { + // var updateAdminGroup = "UPDATE `sa_admins` SET group_id = @groupId WHERE id = @adminId"; + // await connection.ExecuteAsync(updateAdminGroup, new + // { + // groupId, + // adminId + // }); + // } + // } + var insertFlagsSql = databaseProvider.GetAddAdminFlagsQuery(); await connection.ExecuteAsync(insertFlagsSql, new { adminId, @@ -554,18 +574,24 @@ public class PermissionManager(Database.Database? database) } } + /// + /// Adds a new group with flags and immunity asynchronously. + /// + /// Name of the group. + /// List of flags assigned to the group. + /// Immunity level of the group. + /// Whether the group is global or server-specific. public async Task AddGroup(string groupName, List flagsList, int immunity = 0, bool globalGroup = false) { - if (database == null) return; + if (databaseProvider == null) return; if (string.IsNullOrEmpty(groupName) || flagsList.Count == 0) return; - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); try { // Insert group into sa_groups table - const string insertGroup = "INSERT INTO `sa_groups` (`name`, `immunity`) " + - "VALUES (@groupName, @immunity); SELECT LAST_INSERT_ID();"; + var insertGroup = databaseProvider.GetAddGroupQuery(); var groupId = await connection.ExecuteScalarAsync(insertGroup, new { groupName, @@ -575,8 +601,7 @@ public class PermissionManager(Database.Database? database) // Insert flags into sa_groups_flags table foreach (var flag in flagsList) { - const string insertFlagsSql = "INSERT INTO `sa_groups_flags` (`group_id`, `flag`) " + - "VALUES (@groupId, @flag)"; + var insertFlagsSql = databaseProvider.GetAddGroupFlagsQuery(); await connection.ExecuteAsync(insertFlagsSql, new { @@ -585,11 +610,8 @@ public class PermissionManager(Database.Database? database) }); } - const string insertGroupServer = "INSERT INTO `sa_groups_servers` (`group_id`, `server_id`) " + - "VALUES (@groupId, @server_id)"; - + var insertGroupServer = databaseProvider.GetAddGroupServerQuery(); await connection.ExecuteAsync(insertGroupServer, new { groupId, server_id = globalGroup ? null : CS2_SimpleAdmin.ServerId }); - await Server.NextWorldUpdateAsync(() => { CS2_SimpleAdmin.Instance.ReloadAdmins(null); @@ -602,16 +624,20 @@ public class PermissionManager(Database.Database? database) } } + /// + /// Deletes a group by name asynchronously. + /// + /// Name of the group to delete. public async Task DeleteGroup(string groupName) { - if (database == null) return; + if (databaseProvider == null) return; if (string.IsNullOrEmpty(groupName)) return; - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); try { - const string sql = "DELETE FROM `sa_groups` WHERE name = @groupName"; + var sql = databaseProvider.GetDeleteGroupQuery(); await connection.ExecuteAsync(sql, new { groupName }); } catch (Exception ex) @@ -620,15 +646,18 @@ public class PermissionManager(Database.Database? database) } } + /// + /// Deletes admins whose permissions have expired asynchronously. + /// public async Task DeleteOldAdmins() { - if (database == null) return; + if (databaseProvider == null) return; try { - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); - const string sql = "DELETE FROM sa_admins WHERE ends IS NOT NULL AND ends <= @CurrentTime"; + var sql = databaseProvider.GetDeleteOldAdminsQuery(); await connection.ExecuteAsync(sql, new { CurrentTime = Time.ActualDateTime() }); } catch (Exception) diff --git a/CS2-SimpleAdmin/Managers/PlayerManager.cs b/CS2-SimpleAdmin/Managers/PlayerManager.cs index 7b4c0de..6787471 100644 --- a/CS2-SimpleAdmin/Managers/PlayerManager.cs +++ b/CS2-SimpleAdmin/Managers/PlayerManager.cs @@ -11,285 +11,360 @@ using ZLinq; namespace CS2_SimpleAdmin.Managers; -public class PlayerManager +internal class PlayerManager { + private readonly SemaphoreSlim _loadPlayerSemaphore = new(5); private readonly CS2_SimpleAdminConfig _config = CS2_SimpleAdmin.Instance.Config; + /// + /// Loads and initializes player data when a client connects. + /// + /// The instance representing the connecting player. + /// + /// Determines whether to perform a full synchronization of player data. + /// If true, full checks (bans, IP history, penalties, warns, mutes) will be loaded and applied. + /// + /// + /// This method validates the player's identity, checks for bans, updates the IP history table, + /// loads penalties (mutes/gags/warns), and optionally notifies admin players about the connecting player's penalties. + /// public void LoadPlayerData(CCSPlayerController player, bool fullConnect = false) { - if (player.IsBot || string.IsNullOrEmpty(player.IpAddress) || player.IpAddress.Contains("127.0.0.1")) - return; - if (!player.UserId.HasValue) { Helper.KickPlayer(player, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION); return; } - var ipAddress = player.IpAddress?.Split(":")[0]; - CS2_SimpleAdmin.PlayersInfo[player.UserId.Value] = - new PlayerInfo(player.UserId.Value, player.Slot, new SteamID(player.SteamID), player.PlayerName, ipAddress); - - - // if (!player.UserId.HasValue) - // { - // Helper.KickPlayer(player, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION); - // return; - // } - var userId = player.UserId.Value; - if (!CS2_SimpleAdmin.PlayersInfo.ContainsKey(userId)) - { - Helper.KickPlayer(userId, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION); - } - - var steamId64 = CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64; - var steamId = steamId64.ToString(); - - if (CS2_SimpleAdmin.Database == null) return; + var slot = player.Slot; + var steamId = player.SteamID; + var playerName = !string.IsNullOrEmpty(player.PlayerName) + ? player.PlayerName + : CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown"; + var ipAddress = player.IpAddress?.Split(":")[0]; + + if (CS2_SimpleAdmin.DatabaseProvider == null || CS2_SimpleAdmin.Instance.CacheManager == null) return; - // Perform asynchronous database operations within a single method Task.Run(async () => { - var isBanned = CS2_SimpleAdmin.Instance.CacheManager != null && CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType switch + try { - 0 => CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(steamId, null), - _ => CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp - ? CS2_SimpleAdmin.Instance.CacheManager.IsPlayerOrAnyIpBanned(steamId64, ipAddress) - : CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(steamId, ipAddress) - }; + await _loadPlayerSemaphore.WaitAsync(); - if (isBanned) - { - // Kick the player if banned - await Server.NextFrameAsync(() => + if (!CS2_SimpleAdmin.PlayersInfo.ContainsKey(steamId)) { - if (!player.UserId.HasValue) return; - Helper.KickPlayer(userId, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED); - }); - - return; - } - - if (_config.OtherSettings.CheckMultiAccountsByIp && ipAddress != null) - { - try - { - if (CS2_SimpleAdmin.Instance.CacheManager != null && CS2_SimpleAdmin.Instance.CacheManager.HasIpForPlayer( - CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64, ipAddress)) + var isBanned = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType switch { - await using var connection = await CS2_SimpleAdmin.Database.GetConnectionAsync(); - - const string updateQuery = """ - UPDATE `sa_players_ips` - SET used_at = CURRENT_TIMESTAMP - WHERE steamid = @SteamID AND address = @IPAddress; - """; - await connection.ExecuteAsync(updateQuery, new - { - SteamID = CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64, - IPAddress = IpHelper.IpToUint(ipAddress) - }); - } - else - { - await using var connection = await CS2_SimpleAdmin.Database.GetConnectionAsync(); + 0 => CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(playerName, steamId, null), + _ => CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp + ? CS2_SimpleAdmin.Instance.CacheManager.IsPlayerOrAnyIpBanned(playerName, steamId, + ipAddress) + : CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(playerName, steamId, ipAddress) + }; - const string selectQuery = - "SELECT COUNT(*) FROM `sa_players_ips` WHERE steamid = @SteamID AND address = @IPAddress;"; - var recordExists = await connection.ExecuteScalarAsync(selectQuery, new + // CS2_SimpleAdmin._logger?.LogInformation($"Player {playerName} ({steamId} - {ipAddress}) is banned? {isBanned.ToString()}"); + + if (isBanned) + { + await Server.NextWorldUpdateAsync(() => { - SteamID = CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64, - IPAddress = IpHelper.IpToUint(ipAddress) + // CS2_SimpleAdmin._logger?.LogInformation($"Kicking {playerName}"); + Helper.KickPlayer(userId, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED); }); - if (recordExists > 0) - { - const string updateQuery = """ - UPDATE `sa_players_ips` - SET used_at = CURRENT_TIMESTAMP - WHERE steamid = @SteamID AND address = @IPAddress; - """; - await connection.ExecuteAsync(updateQuery, new - { - SteamID = CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64, - IPAddress = IpHelper.IpToUint(ipAddress) - }); - } - else - { - const string insertQuery = """ - INSERT INTO `sa_players_ips` (steamid, address, used_at) - VALUES (@SteamID, @IPAddress, CURRENT_TIMESTAMP); - """; - await connection.ExecuteAsync(insertQuery, new - { - SteamID = CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64, - IPAddress = IpHelper.IpToUint(ipAddress) - }); - } - } - } - catch (Exception ex) - { - CS2_SimpleAdmin._logger?.LogError( - $"Unable to save ip address for {CS2_SimpleAdmin.PlayersInfo[userId].Name} ({ipAddress}) {ex.Message}"); - } - - // Get all accounts associated to the player (ip address) - CS2_SimpleAdmin.PlayersInfo[userId].AccountsAssociated = - CS2_SimpleAdmin.Instance.CacheManager?.GetAccountsByIp(ipAddress).AsValueEnumerable().Select(x => (x.SteamId, x.PlayerName)).ToList() ?? []; - } - - try - { - // var isBanned = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 - // ? CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned( - // CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64.ToString(), null) - // : CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp - // ? CS2_SimpleAdmin.Instance.CacheManager.IsPlayerOrAnyIpBanned(CS2_SimpleAdmin - // .PlayersInfo[userId].SteamId.SteamId64) - // : CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64.ToString(), ipAddress); - - if (fullConnect || !fullConnect) // Temp skip - { - var warns = await CS2_SimpleAdmin.Instance.WarnManager.GetPlayerWarns(CS2_SimpleAdmin.PlayersInfo[userId], false); - var (totalMutes, totalGags, totalSilences) = - await CS2_SimpleAdmin.Instance.MuteManager.GetPlayerMutes(CS2_SimpleAdmin.PlayersInfo[userId]); - - CS2_SimpleAdmin.PlayersInfo[userId].TotalBans = CS2_SimpleAdmin.Instance.CacheManager?.GetPlayerBansBySteamId(CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64.ToString()).Count ?? 0; - CS2_SimpleAdmin.PlayersInfo[userId].TotalMutes = totalMutes; - CS2_SimpleAdmin.PlayersInfo[userId].TotalGags = totalGags; - CS2_SimpleAdmin.PlayersInfo[userId].TotalSilences = totalSilences; - CS2_SimpleAdmin.PlayersInfo[userId].TotalWarns = warns.Count; - - // Check if the player is muted - var activeMutes = await CS2_SimpleAdmin.Instance.MuteManager.IsPlayerMuted(CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64.ToString()); - - if (activeMutes.Count > 0) - { - foreach (var mute in activeMutes) - { - string muteType = mute.type; - DateTime ends = mute.ends; - int duration = mute.duration; - switch (muteType) - { - // Apply mute penalty based on mute type - case "GAG": - PlayerPenaltyManager.AddPenalty(CS2_SimpleAdmin.PlayersInfo[userId].Slot, PenaltyType.Gag, ends, duration); - // if (CS2_SimpleAdmin._localizer != null) - // mutesList[PenaltyType.Gag].Add(CS2_SimpleAdmin._localizer["sa_player_penalty_info_active_gag", ends.ToLocalTime().ToString(CultureInfo.CurrentCulture)]); - break; - case "MUTE": - PlayerPenaltyManager.AddPenalty(CS2_SimpleAdmin.PlayersInfo[userId].Slot, PenaltyType.Mute, ends, duration); - await Server.NextFrameAsync(() => - { - player.VoiceFlags = VoiceFlags.Muted; - }); - // if (CS2_SimpleAdmin._localizer != null) - // mutesList[PenaltyType.Mute].Add(CS2_SimpleAdmin._localizer["sa_player_penalty_info_active_mute", ends.ToLocalTime().ToString(CultureInfo.InvariantCulture)]); - break; - default: - PlayerPenaltyManager.AddPenalty(CS2_SimpleAdmin.PlayersInfo[userId].Slot, PenaltyType.Silence, ends, duration); - await Server.NextFrameAsync(() => - { - player.VoiceFlags = VoiceFlags.Muted; - }); - // if (CS2_SimpleAdmin._localizer != null) - // mutesList[PenaltyType.Silence].Add(CS2_SimpleAdmin._localizer["sa_player_penalty_info_active_silence", ends.ToLocalTime().ToString(CultureInfo.CurrentCulture)]); - break; - } - } + return; } } - if (CS2_SimpleAdmin.Instance.Config.OtherSettings.NotifyPenaltiesToAdminOnConnect && fullConnect) + if (fullConnect) { - var associatedAcccountsChunks = CS2_SimpleAdmin.PlayersInfo[userId].AccountsAssociated.ChunkBy(5).ToList(); - - await Server.NextFrameAsync(() => - { - foreach (var admin in Helper.GetValidPlayers() - .Where(p => (AdminManager.PlayerHasPermissions(new SteamID(p.SteamID), "@css/kick") || - AdminManager.PlayerHasPermissions(new SteamID(p.SteamID), "@css/ban")) && - p.Connected == PlayerConnectedState.PlayerConnected && !CS2_SimpleAdmin.AdminDisabledJoinComms.Contains(p.SteamID))) - { - if (CS2_SimpleAdmin._localizer != null && admin != player) - { - admin.SendLocalizedMessage(CS2_SimpleAdmin._localizer, "sa_admin_penalty_info", - player.PlayerName, - CS2_SimpleAdmin.PlayersInfo[userId].TotalBans, - CS2_SimpleAdmin.PlayersInfo[userId].TotalGags, - CS2_SimpleAdmin.PlayersInfo[userId].TotalMutes, - CS2_SimpleAdmin.PlayersInfo[userId].TotalSilences, - CS2_SimpleAdmin.PlayersInfo[userId].TotalWarns - ); + var playerInfo = new PlayerInfo(userId, slot, new SteamID(steamId), playerName, ipAddress); + CS2_SimpleAdmin.PlayersInfo[steamId] = playerInfo; - foreach (var chunk in associatedAcccountsChunks) + await Server.NextWorldUpdateAsync(() => + { + if (!CS2_SimpleAdmin.CachedPlayers.Contains(player)) + CS2_SimpleAdmin.CachedPlayers.Add(player); + }); + + if (_config.OtherSettings.CheckMultiAccountsByIp && ipAddress != null && + CS2_SimpleAdmin.PlayersInfo[steamId] != null) + { + try + { + await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync(); + + if (CS2_SimpleAdmin.Instance.CacheManager.HasIpForPlayer( + steamId, ipAddress)) + { + const string updateQuery = """ + UPDATE `sa_players_ips` + SET used_at = CURRENT_TIMESTAMP, + name = @playerName + WHERE steamid = @SteamID AND address = @IPAddress; + """; + await connection.ExecuteAsync(updateQuery, new { - admin.SendLocalizedMessage(CS2_SimpleAdmin._localizer, "sa_admin_associated_accounts", - player.PlayerName, - string.Join(", ", - chunk.Select(a => $"{a.PlayerName} ({a.SteamId})")) - ); + playerName, + SteamID = CS2_SimpleAdmin.PlayersInfo[steamId].SteamId.SteamId64, + IPAddress = IpHelper.IpToUint(ipAddress) + }); + } + else + { + const string selectQuery = + "SELECT COUNT(*) FROM `sa_players_ips` WHERE steamid = @SteamID AND address = @IPAddress;"; + var recordExists = await connection.ExecuteScalarAsync(selectQuery, new + { + SteamID = CS2_SimpleAdmin.PlayersInfo[steamId].SteamId.SteamId64, + IPAddress = IpHelper.IpToUint(ipAddress) + }); + + if (recordExists > 0) + { + const string updateQuery = """ + UPDATE `sa_players_ips` + SET used_at = CURRENT_TIMESTAMP, + name = @playerName + WHERE steamid = @SteamID AND address = @IPAddress; + """; + await connection.ExecuteAsync(updateQuery, new + { + playerName, + SteamID = CS2_SimpleAdmin.PlayersInfo[steamId].SteamId.SteamId64, + IPAddress = IpHelper.IpToUint(ipAddress) + }); + } + else + { + const string insertQuery = """ + INSERT INTO `sa_players_ips` (steamid, name, address, used_at) + VALUES (@SteamID, @playerName, @IPAddress, CURRENT_TIMESTAMP); + """; + await connection.ExecuteAsync(insertQuery, new + { + SteamID = CS2_SimpleAdmin.PlayersInfo[steamId].SteamId.SteamId64, + playerName, + IPAddress = IpHelper.IpToUint(ipAddress) + }); } } } - }); + catch (Exception ex) + { + CS2_SimpleAdmin._logger?.LogError( + $"Unable to save ip address for {playerInfo.Name} ({ipAddress}) {ex.Message}"); + } + + playerInfo.AccountsAssociated = + CS2_SimpleAdmin.Instance.CacheManager?.GetAccountsByIp(ipAddress).AsValueEnumerable() + .Select(x => (x.SteamId, x.PlayerName)).ToList() ?? []; + } + + try + { + // var isBanned = CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType == 0 + // ? CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned( + // CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64.ToString(), null) + // : CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp + // ? CS2_SimpleAdmin.Instance.CacheManager.IsPlayerOrAnyIpBanned(CS2_SimpleAdmin + // .PlayersInfo[userId].SteamId.SteamId64) + // : CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(CS2_SimpleAdmin.PlayersInfo[userId].SteamId.SteamId64.ToString(), ipAddress); + + if (CS2_SimpleAdmin.PlayersInfo.TryGetValue(steamId, out PlayerInfo? value)) // Temp skip + { + var warns = await CS2_SimpleAdmin.Instance.WarnManager.GetPlayerWarns(value, false); + var (totalMutes, totalGags, totalSilences) = + await CS2_SimpleAdmin.Instance.MuteManager.GetPlayerMutes(value); + value.TotalBans = CS2_SimpleAdmin.Instance.CacheManager + ?.GetPlayerBansBySteamId(value.SteamId.SteamId64) + .Count ?? 0; + value.TotalMutes = totalMutes; + value.TotalGags = totalGags; + value.TotalSilences = totalSilences; + value.TotalWarns = warns.Count; + + var activeMutes = + await CS2_SimpleAdmin.Instance.MuteManager.IsPlayerMuted(value.SteamId.SteamId64 + .ToString()); + + if (activeMutes.Count > 0) + { + foreach (var mute in activeMutes) + { + string muteType = mute.type; + DateTime ends = mute.ends; + int duration = mute.duration; + switch (muteType) + { + // Apply mute penalty based on mute type + case "GAG": + PlayerPenaltyManager.AddPenalty( + CS2_SimpleAdmin.PlayersInfo[steamId].Slot, + PenaltyType.Gag, ends, duration); + // if (CS2_SimpleAdmin._localizer != null) + // mutesList[PenaltyType.Gag].Add(CS2_SimpleAdmin._localizer["sa_player_penalty_info_active_gag", ends.ToLocalTime().ToString(CultureInfo.CurrentCulture)]); + break; + case "MUTE": + PlayerPenaltyManager.AddPenalty( + CS2_SimpleAdmin.PlayersInfo[steamId].Slot, + PenaltyType.Mute, ends, duration); + await Server.NextWorldUpdateAsync(() => + { + player.VoiceFlags = VoiceFlags.Muted; + }); + // if (CS2_SimpleAdmin._localizer != null) + // mutesList[PenaltyType.Mute].Add(CS2_SimpleAdmin._localizer["sa_player_penalty_info_active_mute", ends.ToLocalTime().ToString(CultureInfo.InvariantCulture)]); + break; + default: + PlayerPenaltyManager.AddPenalty( + CS2_SimpleAdmin.PlayersInfo[steamId].Slot, + PenaltyType.Silence, ends, duration); + await Server.NextWorldUpdateAsync(() => + { + player.VoiceFlags = VoiceFlags.Muted; + }); + // if (CS2_SimpleAdmin._localizer != null) + // mutesList[PenaltyType.Silence].Add(CS2_SimpleAdmin._localizer["sa_player_penalty_info_active_silence", ends.ToLocalTime().ToString(CultureInfo.CurrentCulture)]); + break; + } + } + } + + if (CS2_SimpleAdmin.Instance.Config.OtherSettings.NotifyPenaltiesToAdminOnConnect) + { + await Server.NextWorldUpdateAsync(() => + { + foreach (var admin in Helper.GetValidPlayers() + .Where(p => (AdminManager.PlayerHasPermissions( + new SteamID(p.SteamID), + "@css/kick") || + AdminManager.PlayerHasPermissions( + new SteamID(p.SteamID), + "@css/ban")) && + p.Connected == PlayerConnectedState.PlayerConnected && + !CS2_SimpleAdmin.AdminDisabledJoinComms + .Contains(p.SteamID))) + { + if (CS2_SimpleAdmin._localizer == null || admin == player) continue; + admin.SendLocalizedMessage(CS2_SimpleAdmin._localizer, + "sa_admin_penalty_info", + player.PlayerName, + CS2_SimpleAdmin.PlayersInfo[steamId].TotalBans, + CS2_SimpleAdmin.PlayersInfo[steamId].TotalGags, + CS2_SimpleAdmin.PlayersInfo[steamId].TotalMutes, + CS2_SimpleAdmin.PlayersInfo[steamId].TotalSilences, + CS2_SimpleAdmin.PlayersInfo[steamId].TotalWarns + ); + + if (CS2_SimpleAdmin.PlayersInfo[steamId].AccountsAssociated.Count >= 2) + { + var associatedAcccountsChunks = + CS2_SimpleAdmin.PlayersInfo[steamId].AccountsAssociated.ChunkBy(5) + .ToList(); + foreach (var chunk in associatedAcccountsChunks) + { + admin.SendLocalizedMessage(CS2_SimpleAdmin._localizer, + "sa_admin_associated_accounts", + player.PlayerName, + string.Join(", ", + chunk.Select(a => $"{a.PlayerName} ({a.SteamId})")) + ); + } + } + } + }); + } + } + } + catch (Exception ex) + { + CS2_SimpleAdmin._logger?.LogError("Error processing player connection: {exception}", + ex.Message); + } } } - catch (Exception ex) + finally { - CS2_SimpleAdmin._logger?.LogError("Error processing player connection: {exception}", ex.Message); + _loadPlayerSemaphore.Release(); } }); - if (CS2_SimpleAdmin.RenamedPlayers.TryGetValue(player.SteamID, out var name)) { player.Rename(name); } } + /// + /// Periodically checks the status of online players and applies timers for speed, gravity, + /// and penalty expiration validation. + /// + /// + /// This method registers two repeating timers: + /// + /// One short-interval timer to update speed/gravity modifications applied to players. + /// + /// One long-interval timer (default 61 seconds) to expire bans, mutes, warns, refresh caches, + /// and remove outdated penalties from connected players. + /// + /// + /// Additionally, banned players still online are kicked, and admins may be updated about mute statuses based on the configured time mode. + /// public void CheckPlayersTimer() { - CS2_SimpleAdmin.Instance.AddTimer(0.1f, () => + CS2_SimpleAdmin.Instance.AddTimer(0.12f, () => { - if (CS2_SimpleAdmin.GravityPlayers.Count <= 0) return; - - foreach (var value in CS2_SimpleAdmin.GravityPlayers.Where(value => value.Key is - { IsValid: true, Connected: PlayerConnectedState.PlayerConnected } || value.Key.PlayerPawn?.Value?.LifeState != (int)LifeState_t.LIFE_ALIVE)) + if (CS2_SimpleAdmin.SpeedPlayers.Count > 0) { - value.Key.SetGravity(value.Value); + foreach (var (player, speed) in CS2_SimpleAdmin.SpeedPlayers) + { + if (player is { IsValid: true, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }) + { + player.SetSpeed(speed); + } + } + } + + if (CS2_SimpleAdmin.GravityPlayers.Count > 0) + { + foreach (var (player, gravity) in CS2_SimpleAdmin.GravityPlayers) + { + if (player is { IsValid: true, Connected: PlayerConnectedState.PlayerConnected, PlayerPawn.Value.LifeState: (int)LifeState_t.LIFE_ALIVE }) + { + player.SetGravity(gravity); + } + } } }, TimerFlags.REPEAT); - CS2_SimpleAdmin.Instance.AddTimer(61.0f, () => + CS2_SimpleAdmin.Instance.PlayersTimer = CS2_SimpleAdmin.Instance.AddTimer(61.0f, () => { #if DEBUG CS2_SimpleAdmin._logger?.LogCritical("[OnMapStart] Expired check"); #endif - if (CS2_SimpleAdmin.Database == null) + if (CS2_SimpleAdmin.DatabaseProvider == null) return; var tempPlayers = Helper.GetValidPlayers() .Select(p => new { - p.SteamID, p.IpAddress, p.UserId, p.Slot, + p.PlayerName, p.SteamID, p.IpAddress, p.UserId, p.Slot, }) .ToList(); + var pluginInstance = CS2_SimpleAdmin.Instance; _ = Task.Run(async () => { try { - var expireTasks = new Task[] + var expireTasks = new[] { - CS2_SimpleAdmin.Instance.BanManager.ExpireOldBans(), - CS2_SimpleAdmin.Instance.MuteManager.ExpireOldMutes(), - CS2_SimpleAdmin.Instance.WarnManager.ExpireOldWarns(), - CS2_SimpleAdmin.Instance.CacheManager?.RefreshCacheAsync() ?? Task.CompletedTask, - CS2_SimpleAdmin.Instance.PermissionManager.DeleteOldAdmins() + pluginInstance.BanManager.ExpireOldBans(), + pluginInstance.MuteManager.ExpireOldMutes(), + pluginInstance.WarnManager.ExpireOldWarns(), + pluginInstance.CacheManager?.RefreshCacheAsync() ?? Task.CompletedTask, + pluginInstance.PermissionManager.DeleteOldAdmins() }; await Task.WhenAll(expireTasks); @@ -306,30 +381,40 @@ public class PlayerManager } } } + + if (pluginInstance.CacheManager == null) + return; var bannedPlayers = tempPlayers.AsValueEnumerable() .Where(player => { - return CS2_SimpleAdmin.Instance.CacheManager != null && CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType switch + var playerName = player.PlayerName; + var steamId = player.SteamID; + var ip = player.IpAddress?.Split(':')[0]; + + return CS2_SimpleAdmin.Instance.Config.OtherSettings.BanType switch { - 0 => CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(player.SteamID.ToString(), null), - _ => - CS2_SimpleAdmin.Instance.CacheManager.IsPlayerBanned(player.SteamID.ToString(), player.IpAddress?.Split(":")[0]) + 0 => pluginInstance.CacheManager.IsPlayerBanned(playerName, steamId, null), + _ => CS2_SimpleAdmin.Instance.Config.OtherSettings.CheckMultiAccountsByIp + ? pluginInstance.CacheManager.IsPlayerOrAnyIpBanned(playerName, steamId, ip) + : pluginInstance.CacheManager.IsPlayerBanned(playerName, steamId, ip) }; - }) - .ToList(); - - foreach (var player in bannedPlayers) + }).ToList(); + + if (bannedPlayers.Count > 0) { - if (player.UserId.HasValue) - await Server.NextFrameAsync(() => Helper.KickPlayer((int)player.UserId, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED)); + foreach (var player in bannedPlayers) + { + if (!player.UserId.HasValue) continue; + await Server.NextWorldUpdateAsync(() => Helper.KickPlayer((int)player.UserId, NetworkDisconnectionReason.NETWORK_DISCONNECT_REJECT_BANNED)); + } } - var onlinePlayers = tempPlayers.AsValueEnumerable().Select(player => (player.SteamID, player.UserId, player.Slot)).ToList(); - if (tempPlayers.Count == 0 || onlinePlayers.Count == 0) return; if (_config.OtherSettings.TimeMode == 0) { - await CS2_SimpleAdmin.Instance.MuteManager.CheckOnlineModeMutes(onlinePlayers); + var onlinePlayers = tempPlayers.AsValueEnumerable().Select(player => (player.SteamID, player.UserId, player.Slot)).ToList(); + if (tempPlayers.Count == 0 || onlinePlayers.Count == 0) return; + await pluginInstance.MuteManager.CheckOnlineModeMutes(onlinePlayers); } }); @@ -348,7 +433,6 @@ public class PlayerManager foreach (var entry in penalizedSlots) { - // If the player is not muted or silenced, set voice flags to normal if (!entry.IsMuted && !entry.IsSilenced) { entry.Player.VoiceFlags = VoiceFlags.Normal; @@ -361,7 +445,6 @@ public class PlayerManager { CS2_SimpleAdmin._logger?.LogError($"Unable to remove old penalties: {ex.Message}"); } - }, TimerFlags.REPEAT); } } \ No newline at end of file diff --git a/CS2-SimpleAdmin/Managers/PlayerPenaltyManager.cs b/CS2-SimpleAdmin/Managers/PlayerPenaltyManager.cs index afc9b7b..2aab682 100644 --- a/CS2-SimpleAdmin/Managers/PlayerPenaltyManager.cs +++ b/CS2-SimpleAdmin/Managers/PlayerPenaltyManager.cs @@ -8,7 +8,13 @@ public static class PlayerPenaltyManager private static readonly ConcurrentDictionary>> Penalties = new(); - // Add a penalty for a player + /// + /// Adds a penalty for a specific player slot and penalty type. + /// + /// The player slot where the penalty should be applied. + /// The type of penalty to apply (e.g. gag, mute, silence). + /// The validity expiration date/time of the penalty. + /// The duration of the penalty in minutes (0 for permanent). public static void AddPenalty(int slot, PenaltyType penaltyType, DateTime endDateTime, int durationInMinutes) { Penalties.AddOrUpdate(slot, @@ -33,6 +39,13 @@ public static class PlayerPenaltyManager }); } + /// + /// Determines whether a player is currently penalized with the given penalty type. + /// + /// The player slot to check. + /// The penalty type to check. + /// The out-parameter returning the end datetime of the penalty if active. + /// True if the player has an active penalty, false otherwise. public static bool IsPenalized(int slot, PenaltyType penaltyType, out DateTime? endDateTime) { endDateTime = null; @@ -74,7 +87,12 @@ public static class PlayerPenaltyManager return false; } - // Get the end datetime and duration of penalties for a player and penalty type + /// + /// Retrieves all penalties for a player of a specific penalty type. + /// + /// The player slot. + /// The penalty type to retrieve. + /// A list of penalties if found, otherwise an empty list. public static List<(DateTime EndDateTime, int Duration, bool Passed)> GetPlayerPenalties(int slot, PenaltyType penaltyType) { if (Penalties.TryGetValue(slot, out var penaltyDict) && @@ -85,6 +103,35 @@ public static class PlayerPenaltyManager return []; } + /// + /// Retrieves all penalties for a player across multiple penalty types. + /// + /// The player slot. + /// A list of penalty types to retrieve. + /// A combined list of penalties of all requested types. + public static List<(DateTime EndDateTime, int Duration, bool Passed)> GetPlayerPenalties(int slot, List penaltyType) + { + List<(DateTime EndDateTime, int Duration, bool Passed)> result = []; + + if (Penalties.TryGetValue(slot, out var penaltyDict)) + { + foreach (var type in penaltyType) + { + if (penaltyDict.TryGetValue(type, out var penaltiesList)) + { + result.AddRange(penaltiesList); + } + } + } + + return result; + } + + /// + /// Retrieves all penalties for a player across all penalty types. + /// + /// The player slot. + /// A dictionary with penalty types as keys and lists of penalties as values. public static Dictionary> GetAllPlayerPenalties(int slot) { // Check if the player has any penalties in the dictionary @@ -95,12 +142,20 @@ public static class PlayerPenaltyManager new Dictionary>(); } + /// + /// Checks if a given slot has any penalties assigned. + /// + /// The player slot. + /// True if the player has any penalties, false otherwise. public static bool IsSlotInPenalties(int slot) { return Penalties.ContainsKey(slot); } - // Remove all penalties for a player slot + /// + /// Removes all penalties assigned to a specific player slot. + /// + /// The player slot. public static void RemoveAllPenalties(int slot) { if (Penalties.ContainsKey(slot)) @@ -109,13 +164,19 @@ public static class PlayerPenaltyManager } } - // Remove all penalties + /// + /// Removes all penalties for all players. + /// public static void RemoveAllPenalties() { Penalties.Clear(); } - // Remove all penalties of a selected type from a specific player + /// + /// Removes all penalties of a specific type from a player. + /// + /// The player slot. + /// The penalty type to remove. public static void RemovePenaltiesByType(int slot, PenaltyType penaltyType) { if (Penalties.TryGetValue(slot, out var penaltyDict) && @@ -125,6 +186,11 @@ public static class PlayerPenaltyManager } } + /// + /// Marks penalties with a specific end datetime as "passed" for a player. + /// + /// The player slot. + /// The end datetime of penalties to mark as passed. public static void RemovePenaltiesByDateTime(int slot, DateTime dateTime) { if (!Penalties.TryGetValue(slot, out var penaltyDict)) return; @@ -146,7 +212,13 @@ public static class PlayerPenaltyManager } } - // Remove all expired penalties for all players and penalty types + /// + /// Removes or expires penalties automatically across all players based on their duration or "passed" flag. + /// + /// + /// If TimeMode == 0, penalties are considered passed manually and are removed if flagged as such. + /// Otherwise, expired penalties are removed based on the current datetime compared with their end time. + /// public static void RemoveExpiredPenalties() { if (CS2_SimpleAdmin.Instance.Config.OtherSettings.TimeMode == 0) @@ -172,13 +244,11 @@ public static class PlayerPenaltyManager var now = Time.ActualDateTime(); foreach (var (playerSlot, penaltyDict) in Penalties.ToList()) // Use ToList to avoid modification while iterating { - // Remove expired penalties for the player foreach (var penaltiesList in penaltyDict.Values) { penaltiesList.RemoveAll(p => p.Duration > 0 && now >= p.EndDateTime); } - // Remove player slot if no penalties left if (penaltyDict.Count == 0) { Penalties.TryRemove(playerSlot, out _); diff --git a/CS2-SimpleAdmin/Managers/ServerManager.cs b/CS2-SimpleAdmin/Managers/ServerManager.cs index 66131a0..ccde9cf 100644 --- a/CS2-SimpleAdmin/Managers/ServerManager.cs +++ b/CS2-SimpleAdmin/Managers/ServerManager.cs @@ -9,22 +9,32 @@ public class ServerManager { private int _getIpTryCount; + /// + /// Checks whether the server setting sv_hibernate_when_empty is enabled. + /// Logs an error if this setting is true, since it prevents the plugin from working properly. + /// public static void CheckHibernationStatus() { var convar = ConVar.Find("sv_hibernate_when_empty"); - if (convar == null || !convar.GetPrimitiveValue()) return; CS2_SimpleAdmin._logger?.LogError("Detected setting \"sv_hibernate_when_empty true\", set false to make plugin work properly"); } + /// + /// Initiates the asynchronous process to load server data such as IP address, port, hostname, and RCON password. + /// Handles retry attempts if IP address is not immediately available. + /// Updates or inserts the server record in the database accordingly. + /// After loading, triggers admin reload and cache initialization. + /// Also optionally sends plugin usage metrics if enabled in configuration. + /// public void LoadServerData() { - CS2_SimpleAdmin.Instance.AddTimer(1.2f, () => + CS2_SimpleAdmin.Instance.AddTimer(2.0f, () => { - if (CS2_SimpleAdmin.ServerLoaded || CS2_SimpleAdmin.ServerId != null || CS2_SimpleAdmin.Database == null) return; - + if (CS2_SimpleAdmin.ServerLoaded || CS2_SimpleAdmin.DatabaseProvider == null) return; + if (_getIpTryCount > 32 && Helper.GetServerIp().StartsWith("0.0.0.0") || string.IsNullOrEmpty(Helper.GetServerIp())) { CS2_SimpleAdmin._logger?.LogError("Unable to load server data - can't fetch ip address!"); @@ -32,7 +42,6 @@ public class ServerManager } var ipAddress = ConVar.Find("ip")?.StringValue; - if (string.IsNullOrEmpty(ipAddress) || ipAddress.StartsWith("0.0.0")) { ipAddress = Helper.GetServerIp(); @@ -40,23 +49,22 @@ public class ServerManager if (_getIpTryCount <= 32 && (string.IsNullOrEmpty(ipAddress) || ipAddress.StartsWith("0.0.0"))) { _getIpTryCount++; - + LoadServerData(); return; } } var address = $"{ipAddress}:{ConVar.Find("hostport")?.GetPrimitiveValue()}"; - var hostname = ConVar.Find("hostname")!.StringValue; - var rconPassword = ConVar.Find("rcon_password")!.StringValue; + var hostname = ConVar.Find("hostname")?.StringValue ?? CS2_SimpleAdmin._localizer?["sa_unknown"] ?? "Unknown"; + var rconPassword = ConVar.Find("rcon_password")?.StringValue ?? ""; CS2_SimpleAdmin.IpAddress = address; Task.Run(async () => { try { - await using var connection = await CS2_SimpleAdmin.Database.GetConnectionAsync(); - + await using var connection = await CS2_SimpleAdmin.DatabaseProvider.CreateConnectionAsync(); int? serverId = await connection.ExecuteScalarAsync( "SELECT id FROM sa_servers WHERE address = @address", new { address }); @@ -79,7 +87,6 @@ public class ServerManager } CS2_SimpleAdmin.ServerId = serverId; - CS2_SimpleAdmin._logger?.LogInformation("Loaded server with ip {ip}", ipAddress); if (CS2_SimpleAdmin.ServerId != null) diff --git a/CS2-SimpleAdmin/Managers/WarnManager.cs b/CS2-SimpleAdmin/Managers/WarnManager.cs index 60c7dde..0f58b84 100644 --- a/CS2-SimpleAdmin/Managers/WarnManager.cs +++ b/CS2-SimpleAdmin/Managers/WarnManager.cs @@ -1,35 +1,37 @@ -using CS2_SimpleAdminApi; +using CS2_SimpleAdmin.Database; +using CS2_SimpleAdminApi; using Dapper; using Microsoft.Extensions.Logging; namespace CS2_SimpleAdmin.Managers; -internal class WarnManager(Database.Database? database) +internal class WarnManager(IDatabaseProvider? databaseProvider) { + /// + /// Adds a warning to a player with an optional issuer and reason. + /// + /// The player who is being warned. + /// The player issuing the warning; null indicates console or system. + /// The reason for the warning. + /// Optional duration of the warning in minutes (0 means permanent). + /// The identifier of the inserted warning, or null if the operation failed. public async Task WarnPlayer(PlayerInfo player, PlayerInfo? issuer, string reason, int time = 0) { - if (database == null) return null; + if (databaseProvider == null) return null; var now = Time.ActualDateTime(); var futureTime = now.AddMinutes(time); try { - await using var connection = await database.GetConnectionAsync(); - const string sql = """ - - INSERT INTO `sa_warns` - (`player_steamid`, `player_name`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) - VALUES - (@playerSteamid, @playerName, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @serverid); - SELECT LAST_INSERT_ID(); - """; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetAddWarnQuery(true); var warnId = await connection.ExecuteScalarAsync(sql, new { - playerSteamid = player.SteamId.SteamId64.ToString(), + playerSteamid = player.SteamId.SteamId64, playerName = player.Name, - adminSteamid = issuer?.SteamId.SteamId64.ToString() ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", + adminSteamid = issuer?.SteamId.SteamId64 ?? 0, adminName = issuer?.Name ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", muteReason = reason, duration = time, @@ -46,30 +48,30 @@ internal class WarnManager(Database.Database? database) } } - public async Task AddWarnBySteamid(string playerSteamId, PlayerInfo? issuer, string reason, int time = 0) + /// + /// Adds a warning to a player identified by SteamID with optional issuer and reason. + /// + /// The SteamID64 of the player being warned. + /// The player issuing the warning; null indicates console or system. + /// The reason for the warning. + /// Optional duration of the warning in minutes (0 means permanent). + /// The identifier of the inserted warning, or null if the operation failed. + public async Task AddWarnBySteamid(ulong playerSteamId, PlayerInfo? issuer, string reason, int time = 0) { - if (database == null) return null; - if (string.IsNullOrEmpty(playerSteamId)) return null; + if (databaseProvider == null) return null; var now = Time.ActualDateTime(); var futureTime = now.AddMinutes(time); try { - await using var connection = await database.GetConnectionAsync(); - const string sql = """ - - INSERT INTO `sa_warns` - (`player_steamid`, `admin_steamid`, `admin_name`, `reason`, `duration`, `ends`, `created`, `server_id`) - VALUES - (@playerSteamid, @adminSteamid, @adminName, @muteReason, @duration, @ends, @created, @serverid); - SELECT LAST_INSERT_ID(); - """; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetAddWarnQuery(false); var warnId = await connection.ExecuteScalarAsync(sql, new { playerSteamid = playerSteamId, - adminSteamid = issuer?.SteamId.ToString() ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", + adminSteamid = issuer?.SteamId.SteamId64 ?? 0, adminName = issuer?.Name ?? CS2_SimpleAdmin._localizer?["sa_console"] ?? "Console", muteReason = reason, duration = time, @@ -86,30 +88,22 @@ internal class WarnManager(Database.Database? database) } } + /// + /// Retrieves a list of warnings for a specific player. + /// + /// The player whose warnings to retrieve. + /// If true, returns only active (non-expired) warnings; otherwise returns all warnings. + /// A list of dynamic objects representing warnings, or an empty list if none found or on failure. public async Task> GetPlayerWarns(PlayerInfo player, bool active = true) { - if (database == null) return []; + if (databaseProvider == null) return []; try { - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); - string sql; - - if (CS2_SimpleAdmin.Instance.Config.MultiServerMode) - { - sql = active - ? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' ORDER BY id DESC" - : "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID ORDER BY id DESC"; - } - else - { - sql = active - ? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid AND status = 'ACTIVE' ORDER BY id DESC" - : "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid ORDER BY id DESC"; - } - - var parameters = new { PlayerSteamID = player.SteamId.SteamId64.ToString(), serverid = CS2_SimpleAdmin.ServerId }; + var sql = databaseProvider.GetPlayerWarnsQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode, active); + var parameters = new { PlayerSteamID = player.SteamId.SteamId64, serverid = CS2_SimpleAdmin.ServerId }; var warns = await connection.QueryAsync(sql, parameters); return warns.ToList(); @@ -120,24 +114,23 @@ internal class WarnManager(Database.Database? database) } } - public async Task GetPlayerWarnsCount(string steamId, bool active = true) + /// + /// Retrieves the count of warnings for a player specified by SteamID. + /// + /// The SteamID64 of the player. + /// If true, counts only active (non-expired) warnings; otherwise counts all warnings. + /// The count of warnings as an integer, or 0 if none found or on failure. + public async Task GetPlayerWarnsCount(ulong steamId, bool active = true) { - if (database == null) return 0; + if (databaseProvider == null) return 0; try { - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); - var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? active - ? "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE'" - : "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID" - : active - ? "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid AND status = 'ACTIVE'" - : "SELECT COUNT(*) FROM sa_warns WHERE player_steamid = @PlayerSteamID'"; - - var muteCount = await connection.ExecuteScalarAsync(sql, new { PlayerSteamID = steamId, serverid = CS2_SimpleAdmin.ServerId }); - return muteCount; + var sql = databaseProvider.GetPlayerWarnsCountQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode, active); + var warnsCount = await connection.ExecuteScalarAsync(sql, new { PlayerSteamID = steamId, serverid = CS2_SimpleAdmin.ServerId }); + return warnsCount; } catch (Exception) { @@ -145,19 +138,22 @@ internal class WarnManager(Database.Database? database) } } + /// + /// Removes a specific warning by its identifier from a player's record. + /// + /// The player whose warning will be removed. + /// The identifier of the warning to remove. + /// A task representing the asynchronous operation. public async Task UnwarnPlayer(PlayerInfo player, int warnId) { - if (database == null) return; + if (databaseProvider == null) return; try { - await using var connection = await database.GetConnectionAsync(); + await using var connection = await databaseProvider.CreateConnectionAsync(); - var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId" - : "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId AND server_id = @serverid"; - - await connection.ExecuteAsync(sql, new { steamid = player.SteamId.SteamId64.ToString(), warnId, serverid = CS2_SimpleAdmin.ServerId }); + var sql = databaseProvider.GetUnwarnByIdQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); + await connection.ExecuteAsync(sql, new { steamid = player.SteamId.SteamId64, warnId, serverid = CS2_SimpleAdmin.ServerId }); } catch (Exception ex) { @@ -165,36 +161,20 @@ internal class WarnManager(Database.Database? database) } } + /// + /// Removes the most recent warning matching a player pattern (usually SteamID string). + /// + /// The pattern identifying the player whose last warning should be removed. + /// A task representing the asynchronous operation. public async Task UnwarnPlayer(string playerPattern) { - if (database == null) return; + if (databaseProvider == null) return; try { - await using var connection = await database.GetConnectionAsync(); - - var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? """ - UPDATE sa_warns - JOIN ( - SELECT MAX(id) AS max_id - FROM sa_warns - WHERE player_steamid = @steamid AND status = 'ACTIVE' - ) AS subquery ON sa_warns.id = subquery.max_id - SET sa_warns.status = 'EXPIRED' - WHERE sa_warns.status = 'ACTIVE' AND sa_warns.player_steamid = @steamid; - """ - : """ - UPDATE sa_warns - JOIN ( - SELECT MAX(id) AS max_id - FROM sa_warns - WHERE player_steamid = @steamid AND status = 'ACTIVE' AND server_id = @serverid - ) AS subquery ON sa_warns.id = subquery.max_id - SET sa_warns.status = 'EXPIRED' - WHERE sa_warns.status = 'ACTIVE' AND sa_warns.player_steamid = @steamid AND sa_warns.server_id = @serverid; - """; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetUnwarnLastQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); await connection.ExecuteAsync(sql, new { steamid = playerPattern, serverid = CS2_SimpleAdmin.ServerId }); } catch (Exception ex) @@ -203,18 +183,19 @@ internal class WarnManager(Database.Database? database) } } + /// + /// Expires old warnings based on the current time, removing or marking them as inactive. + /// + /// A task representing the asynchronous operation. public async Task ExpireOldWarns() { - if (database == null) return; + if (databaseProvider == null) return; try { - await using var connection = await database.GetConnectionAsync(); - - var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode - ? "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime" - : "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND `duration` > 0 AND ends <= @CurrentTime AND server_id = @serverid"; + await using var connection = await databaseProvider.CreateConnectionAsync(); + var sql = databaseProvider.GetExpireWarnsQuery(CS2_SimpleAdmin.Instance.Config.MultiServerMode); await connection.ExecuteAsync(sql, new { CurrentTime = Time.ActualDateTime(), serverid = CS2_SimpleAdmin.ServerId }); } catch (Exception ex) diff --git a/CS2-SimpleAdmin/Menus/AdminMenu.cs b/CS2-SimpleAdmin/Menus/AdminMenu.cs index 454128d..77c7ba3 100644 --- a/CS2-SimpleAdmin/Menus/AdminMenu.cs +++ b/CS2-SimpleAdmin/Menus/AdminMenu.cs @@ -45,9 +45,9 @@ public static class AdminMenu var menu = CreateMenu(localizer?["sa_title"] ?? "SimpleAdmin"); List options = [ - new ChatMenuOptionData(localizer?["sa_menu_players_manage"] ?? "Players Manage", () => ManagePlayersMenu.OpenMenu(admin)), - new ChatMenuOptionData(localizer?["sa_menu_server_manage"] ?? "Server Manage", () => ManageServerMenu.OpenMenu(admin)), - new ChatMenuOptionData(localizer?["sa_menu_fun_commands"] ?? "Fun Commands", () => FunActionsMenu.OpenMenu(admin)), + new(localizer?["sa_menu_players_manage"] ?? "Players Manage", () => ManagePlayersMenu.OpenMenu(admin)), + new(localizer?["sa_menu_server_manage"] ?? "Server Manage", () => ManageServerMenu.OpenMenu(admin)), + new(localizer?["sa_menu_fun_commands"] ?? "Fun Commands", () => FunActionsMenu.OpenMenu(admin)), ]; var customCommands = CS2_SimpleAdmin.Instance.Config.CustomServerCommands; diff --git a/CS2-SimpleAdmin/Menus/ManageAdminsMenu.cs b/CS2-SimpleAdmin/Menus/ManageAdminsMenu.cs index 1b68955..30bbf95 100644 --- a/CS2-SimpleAdmin/Menus/ManageAdminsMenu.cs +++ b/CS2-SimpleAdmin/Menus/ManageAdminsMenu.cs @@ -24,12 +24,12 @@ public static class ManageAdminsMenu var menu = AdminMenu.CreateMenu(localizer?["sa_menu_admins_manage"] ?? "Admins Manage"); List options = [ - new ChatMenuOptionData(localizer?["sa_admin_add"] ?? "Add Admin", + new(localizer?["sa_admin_add"] ?? "Add Admin", () => PlayersMenu.OpenRealPlayersMenu(admin, localizer?["sa_admin_add"] ?? "Add Admin", AddAdminMenu)), - new ChatMenuOptionData(localizer?["sa_admin_remove"] ?? "Remove Admin", + new(localizer?["sa_admin_remove"] ?? "Remove Admin", () => PlayersMenu.OpenAdminPlayersMenu(admin, localizer?["sa_admin_remove"] ?? "Remove Admin", RemoveAdmin, player => player != admin && admin.CanTarget(player))), - new ChatMenuOptionData(localizer?["sa_admin_reload"] ?? "Reload Admins", () => ReloadAdmins(admin)) + new(localizer?["sa_admin_reload"] ?? "Reload Admins", () => ReloadAdmins(admin)) ]; foreach (var menuOptionData in options) diff --git a/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs b/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs index 8b64944..4c60555 100644 --- a/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs +++ b/CS2-SimpleAdmin/Menus/ManagePlayersMenu.cs @@ -90,12 +90,12 @@ public static class ManagePlayersMenu List options = [ // options added in order - new ChatMenuOptionData("0 hp", () => ApplySlapAndKeepMenu(admin, player, 0)), - new ChatMenuOptionData("1 hp", () => ApplySlapAndKeepMenu(admin, player, 1)), - new ChatMenuOptionData("5 hp", () => ApplySlapAndKeepMenu(admin, player, 5)), - new ChatMenuOptionData("10 hp", () => ApplySlapAndKeepMenu(admin, player, 10)), - new ChatMenuOptionData("50 hp", () => ApplySlapAndKeepMenu(admin, player, 50)), - new ChatMenuOptionData("100 hp", () => ApplySlapAndKeepMenu(admin, player, 100)), + new("0 hp", () => ApplySlapAndKeepMenu(admin, player, 0)), + new("1 hp", () => ApplySlapAndKeepMenu(admin, player, 1)), + new("5 hp", () => ApplySlapAndKeepMenu(admin, player, 5)), + new("10 hp", () => ApplySlapAndKeepMenu(admin, player, 10)), + new("50 hp", () => ApplySlapAndKeepMenu(admin, player, 50)), + new("100 hp", () => ApplySlapAndKeepMenu(admin, player, 100)), ]; foreach (var menuOptionData in options) @@ -312,10 +312,10 @@ public static class ManagePlayersMenu var menu = AdminMenu.CreateMenu($"{CS2_SimpleAdmin._localizer?["sa_team_force"] ?? "Force Team"} {player.PlayerName}"); List options = [ - new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_ct"] ?? "CT", () => ForceTeam(admin, player, "ct", CsTeam.CounterTerrorist)), - new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_t"] ?? "T", () => ForceTeam(admin, player, "t", CsTeam.Terrorist)), - new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_swap"] ?? "Swap", () => ForceTeam(admin, player, "swap", CsTeam.Spectator)), - new ChatMenuOptionData(CS2_SimpleAdmin._localizer?["sa_team_spec"] ?? "Spec", () => ForceTeam(admin, player, "spec", CsTeam.Spectator)), + new(CS2_SimpleAdmin._localizer?["sa_team_ct"] ?? "CT", () => ForceTeam(admin, player, "ct", CsTeam.CounterTerrorist)), + new(CS2_SimpleAdmin._localizer?["sa_team_t"] ?? "T", () => ForceTeam(admin, player, "t", CsTeam.Terrorist)), + new(CS2_SimpleAdmin._localizer?["sa_team_swap"] ?? "Swap", () => ForceTeam(admin, player, "swap", CsTeam.Spectator)), + new(CS2_SimpleAdmin._localizer?["sa_team_spec"] ?? "Spec", () => ForceTeam(admin, player, "spec", CsTeam.Spectator)), ]; foreach (var menuOptionData in options) diff --git a/CS2-SimpleAdmin/Menus/ManageServerMenu.cs b/CS2-SimpleAdmin/Menus/ManageServerMenu.cs index dd60a67..b8cf52a 100644 --- a/CS2-SimpleAdmin/Menus/ManageServerMenu.cs +++ b/CS2-SimpleAdmin/Menus/ManageServerMenu.cs @@ -24,7 +24,6 @@ public static class ManageServerMenu var menu = AdminMenu.CreateMenu(localizer?["sa_menu_server_manage"] ?? "Server Manage"); List options = []; - // permissions var hasMap = AdminManager.CommandIsOverriden("css_map") ? AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), AdminManager.GetPermissionOverrides("css_map")) : AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), "@css/changemap"); var hasPlugins = AdminManager.CommandIsOverriden("css_pluginsmanager") ? AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), AdminManager.GetPermissionOverrides("css_pluginsmanager")) : AdminManager.PlayerHasPermissions(new SteamID(admin.SteamID), "@css/root"); diff --git a/CS2-SimpleAdmin/Models/BanRecord.cs b/CS2-SimpleAdmin/Models/BanRecord.cs index 479a26a..026ffd6 100644 --- a/CS2-SimpleAdmin/Models/BanRecord.cs +++ b/CS2-SimpleAdmin/Models/BanRecord.cs @@ -1,18 +1,39 @@ +using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; namespace CS2_SimpleAdmin.Models; +public enum BanStatus +{ + [Description("ACTIVE")] ACTIVE, + [Description("UNBANNED")] UNBANNED, + [Description("EXPIRED")] EXPIRED, + [Description("")] UNKNOWN +} + public record BanRecord { [Column("id")] - public int Id { get; set; } + public int Id { get; init; } + + [Column("player_name")] + public string? PlayerName { get; set; } [Column("player_steamid")] - public string? PlayerSteamId { get; set; } + public ulong? PlayerSteamId { get; set; } [Column("player_ip")] public string? PlayerIp { get; set; } [Column("status")] - public string Status { get; set; } + public required string Status { get; init; } + + [NotMapped] + public BanStatus StatusEnum => Status.ToUpper() switch + { + "ACTIVE" => BanStatus.ACTIVE, + "UNBANNED" => BanStatus.UNBANNED, + "EXPIRED" => BanStatus.EXPIRED, + _ => BanStatus.UNKNOWN + }; } diff --git a/CS2-SimpleAdmin/Models/PlayerDto.cs b/CS2-SimpleAdmin/Models/PlayerDto.cs new file mode 100644 index 0000000..ffe052e --- /dev/null +++ b/CS2-SimpleAdmin/Models/PlayerDto.cs @@ -0,0 +1,12 @@ +namespace CS2_SimpleAdmin.Models; + +public record PlayerStats(int Score, int Kills, int Deaths, int MVPs); +public record PlayerDto( + int UserId, + string Name, + string SteamId, + string IpAddress, + uint Ping, + bool IsAdmin, + PlayerStats Stats +); diff --git a/CS2-SimpleAdmin/VERSION b/CS2-SimpleAdmin/VERSION index 58630bc..b4a9838 100644 --- a/CS2-SimpleAdmin/VERSION +++ b/CS2-SimpleAdmin/VERSION @@ -1 +1 @@ -1.7.7-alpha \ No newline at end of file +1.7.7-alpha-9 \ No newline at end of file diff --git a/CS2-SimpleAdmin/Variables.cs b/CS2-SimpleAdmin/Variables.cs index 39c53a3..a35cc75 100644 --- a/CS2-SimpleAdmin/Variables.cs +++ b/CS2-SimpleAdmin/Variables.cs @@ -7,7 +7,9 @@ using MenuManager; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using System.Collections.Concurrent; +using CS2_SimpleAdmin.Database; using CS2_SimpleAdmin.Managers; +using Timer = CounterStrikeSharp.API.Modules.Timers.Timer; namespace CS2_SimpleAdmin; @@ -15,12 +17,13 @@ public partial class CS2_SimpleAdmin { // Config public CS2_SimpleAdminConfig Config { get; set; } = new(); - + // HttpClient internal static readonly HttpClient HttpClient = new(); - + // Paths - internal static readonly string ConfigDirectory = Path.Combine(Application.RootDirectory, "configs/plugins/CS2-SimpleAdmin"); + internal static readonly string ConfigDirectory = + Path.Combine(Application.RootDirectory, "configs/plugins/CS2-SimpleAdmin"); // Localization public static IStringLocalizer? _localizer; @@ -40,7 +43,9 @@ public partial class CS2_SimpleAdmin private static readonly HashSet GodPlayers = []; internal static readonly HashSet SilentPlayers = []; internal static readonly Dictionary RenamedPlayers = []; - internal static readonly ConcurrentDictionary PlayersInfo = []; + internal static readonly ConcurrentDictionary PlayersInfo = []; + internal static readonly List CachedPlayers = []; + internal static readonly List BotPlayers = []; private static readonly List DisconnectedPlayers = []; // Discord Integration @@ -48,25 +53,35 @@ public partial class CS2_SimpleAdmin // Database Settings internal string DbConnectionString = string.Empty; - internal static Database.Database? Database; + // internal static Database.Database? Database; + internal static IDatabaseProvider? DatabaseProvider; // Logger internal static ILogger? _logger; // Memory Function (Game-related) - private static MemoryFunctionVoid? _cBasePlayerControllerSetPawnFunc; + private static MemoryFunctionVoid? + _cBasePlayerControllerSetPawnFunc; // Menu API and Capabilities internal static IMenuApi? MenuApi; private static readonly PluginCapability MenuCapability = new("menu:nfcore"); // Shared API - internal static Api.CS2_SimpleAdminApi? SimpleAdminApi { get; set; } - + internal static Api.CS2_SimpleAdminApi? SimpleAdminApi { get; private set; } + // Managers - internal PermissionManager PermissionManager = new(Database); - internal BanManager BanManager = new(Database); - internal MuteManager MuteManager = new(Database); - internal WarnManager WarnManager = new(Database); + internal PermissionManager PermissionManager = new(DatabaseProvider); + internal BanManager BanManager = new(DatabaseProvider); + internal MuteManager MuteManager = new(DatabaseProvider); + internal WarnManager WarnManager = new(DatabaseProvider); internal CacheManager? CacheManager = new(); + private static readonly PlayerManager PlayerManager = new(); + + // Timers + internal Timer? PlayersTimer = null; + + // Funny list + private readonly List _requiredPlugins = ["MenuManagerCore", "PlayerSettings"]; + private readonly List _requiredShared = ["MenuManagerApi", "PlayerSettingsApi", "AnyBaseLib", "CS2-SimpleAdminApi"]; } \ No newline at end of file diff --git a/CS2-SimpleAdmin/lang/ar.json b/CS2-SimpleAdmin/lang/ar.json index 9a35b90..4533510 100644 --- a/CS2-SimpleAdmin/lang/ar.json +++ b/CS2-SimpleAdmin/lang/ar.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} بدأ التصويت لـ {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}نتائج التصويت لـ {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}لقد قمت بكتم {default}جميع اللاعبين أثناء حديثك", + "sa_admin_voice_unmute_all": "{Lime}لقد ألغيت كتم {default}جميع اللاعبين", + "sa_admin_voice_listen_all": "{Default}أنت الآن تسمع {lime}جميع {default}اللاعبين", + "sa_admin_voice_unlisten_all": "{Default}أنت الآن لا تسمع {lime}جميع {default}اللاعبين", "sa_adminsay_prefix": "{RED}الإداري: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(إداري) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(لاعب) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/de.json b/CS2-SimpleAdmin/lang/de.json index a58b49f..f32db52 100644 --- a/CS2-SimpleAdmin/lang/de.json +++ b/CS2-SimpleAdmin/lang/de.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} hat eine Abstimmung für {lightred}{1}{default} gestartet", "sa_admin_vote_message_results": "{lime}ABSTIMMUNGSERGEBNISSE FÜR {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Du hast {default}alle Spieler während deiner Ansprache stummgeschaltet", + "sa_admin_voice_unmute_all": "{Lime}Du hast {default}alle Spieler wieder aktiviert", + "sa_admin_voice_listen_all": "{Default}Du hörst jetzt {lime}alle {default}Spieler", + "sa_admin_voice_unlisten_all": "{Default}Du hörst jetzt {lime}nicht mehr {default}alle Spieler", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(SPIELER) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/en.json b/CS2-SimpleAdmin/lang/en.json index b3d87cf..a768d22 100644 --- a/CS2-SimpleAdmin/lang/en.json +++ b/CS2-SimpleAdmin/lang/en.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} started voting for {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}VOTING RESULTS FOR {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}You muted {default}all players during your speech", + "sa_admin_voice_unmute_all": "{Lime}You unmuted {default}all players", + "sa_admin_voice_listen_all": "{Default}You can now hear {lime}all {default}players", + "sa_admin_voice_unlisten_all": "{Default}You no longer hear {lime}all {default}players", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(PLAYER) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/es.json b/CS2-SimpleAdmin/lang/es.json index 525bd3d..e5b0edd 100644 --- a/CS2-SimpleAdmin/lang/es.json +++ b/CS2-SimpleAdmin/lang/es.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} inició una votación para {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}RESULTADOS DE LA VOTACIÓN PARA {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Has silenciado a {default}todos los jugadores durante tu discurso", + "sa_admin_voice_unmute_all": "{Lime}Has reactivado el sonido de {default}todos los jugadores", + "sa_admin_voice_listen_all": "{Default}Ahora puedes escuchar a {lime}todos {default}los jugadores", + "sa_admin_voice_unlisten_all": "{Default}Ya no escuchas a {lime}todos {default}los jugadores", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(JUGADOR) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/fa.json b/CS2-SimpleAdmin/lang/fa.json index 20ba95a..77d8273 100644 --- a/CS2-SimpleAdmin/lang/fa.json +++ b/CS2-SimpleAdmin/lang/fa.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} رأی‌گیری برای {lightred}{1}{default} را شروع کرد", "sa_admin_vote_message_results": "{lime}نتایج رأی‌گیری برای {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}شما {default}همه بازیکنان را در طول سخنرانی بی‌صدا کردید", + "sa_admin_voice_unmute_all": "{Lime}شما {default}همه بازیکنان را از حالت بی‌صدا خارج کردید", + "sa_admin_voice_listen_all": "{Default}اکنون می‌توانید {lime}همه {default}بازیکنان را بشنوید", + "sa_admin_voice_unlisten_all": "{Default}شما دیگر {lime}همه {default}بازیکنان را نمی‌شنوید", "sa_adminsay_prefix": "{RED}ادمین: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ادمین) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(بازیکن) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/fr.json b/CS2-SimpleAdmin/lang/fr.json index 303ae38..27a4731 100644 --- a/CS2-SimpleAdmin/lang/fr.json +++ b/CS2-SimpleAdmin/lang/fr.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} a lancé un vote pour {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}RÉSULTATS DU VOTE POUR {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Vous avez mis en sourdine {default}tous les joueurs pendant votre discours", + "sa_admin_voice_unmute_all": "{Lime}Vous avez réactivé le son de {default}tous les joueurs", + "sa_admin_voice_listen_all": "{Default}Vous entendez maintenant {lime}tous {default}les joueurs", + "sa_admin_voice_unlisten_all": "{Default}Vous n'entendez plus {lime}tous {default}les joueurs", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(JOUEUR) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/lv.json b/CS2-SimpleAdmin/lang/lv.json index 70f4678..e27aed8 100644 --- a/CS2-SimpleAdmin/lang/lv.json +++ b/CS2-SimpleAdmin/lang/lv.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} uzsāka balsošanu par {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}BALSOŠANAS REZULTĀTI PAR {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Tu esi apklusinājis {default}visus spēlētājus runas laikā", + "sa_admin_voice_unmute_all": "{Lime}Tu atvienoji {default}visus spēlētājus", + "sa_admin_voice_listen_all": "{Default}Tu tagad dzirdi {lime}visus {default}spēlētājus", + "sa_admin_voice_unlisten_all": "{Default}Tu vairs nedzirdi {lime}visus {default}spēlētājus", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(SPĒLĒTĀJS) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/pl.json b/CS2-SimpleAdmin/lang/pl.json index c7f7bbf..3b6b3a7 100644 --- a/CS2-SimpleAdmin/lang/pl.json +++ b/CS2-SimpleAdmin/lang/pl.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} rozpoczął głosowanie na {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}WYNIKI GŁOSOWANIA {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}[{1}]", + "sa_admin_voice_mute_all": "{Lightred}Wyciszyłeś {default}wszystkich graczy na czas przemówienia", + "sa_admin_voice_unmute_all": "{Lime}Odciszyłeś {default}wszystkich graczy", + "sa_admin_voice_listen_all": "{Default}Słyszysz teraz {lime}wszystkich {default}graczy", + "sa_admin_voice_unlisten_all": "{Default}Nie słyszysz teraz {lime}wszystkich {default}graczy", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(GRACZ) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/pt-BR.json b/CS2-SimpleAdmin/lang/pt-BR.json index ed6d9ba..299ebc2 100644 --- a/CS2-SimpleAdmin/lang/pt-BR.json +++ b/CS2-SimpleAdmin/lang/pt-BR.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} iniciou uma votação para {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}RESULTADOS DA VOTAÇÃO PARA {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Você silenciou {default}todos os jogadores durante o seu discurso", + "sa_admin_voice_unmute_all": "{Lime}Você reativou o som de {default}todos os jogadores", + "sa_admin_voice_listen_all": "{Default}Agora você pode ouvir {lime}todos {default}os jogadores", + "sa_admin_voice_unlisten_all": "{Default}Você não ouve mais {lime}todos {default}os jogadores", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(JOGADOR) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/pt-PT.json b/CS2-SimpleAdmin/lang/pt-PT.json index 3ec755c..94cce8c 100644 --- a/CS2-SimpleAdmin/lang/pt-PT.json +++ b/CS2-SimpleAdmin/lang/pt-PT.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} iniciou uma votação para {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}RESULTADOS DA VOTAÇÃO PARA {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Silenciaste {default}todos os jogadores durante o teu discurso", + "sa_admin_voice_unmute_all": "{Lime}Ativaste novamente o som de {default}todos os jogadores", + "sa_admin_voice_listen_all": "{Default}Agora consegues ouvir {lime}todos {default}os jogadores", + "sa_admin_voice_unlisten_all": "{Default}Já não ouves {lime}todos {default}os jogadores", "sa_adminsay_prefix": "{RED}ADMIN: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(ADMIN) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(JOGADOR) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/ru.json b/CS2-SimpleAdmin/lang/ru.json index 7418422..f92fb5a 100644 --- a/CS2-SimpleAdmin/lang/ru.json +++ b/CS2-SimpleAdmin/lang/ru.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} начал голосование за {lightred}{1}{default}", "sa_admin_vote_message_results": "{lime}РЕЗУЛЬТАТЫ ГОЛОСОВАНИЯ ЗА {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Вы заглушили {default}всех игроков во время своей речи", + "sa_admin_voice_unmute_all": "{Lime}Вы включили звук {default}всем игрокам", + "sa_admin_voice_listen_all": "{Default}Теперь вы слышите {lime}всех {default}игроков", + "sa_admin_voice_unlisten_all": "{Default}Вы больше не слышите {lime}всех {default}игроков", "sa_adminsay_prefix": "{RED}АДМИН: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(АДМИН) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(ИГРОК) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/tr.json b/CS2-SimpleAdmin/lang/tr.json index 08e7cb4..c520397 100644 --- a/CS2-SimpleAdmin/lang/tr.json +++ b/CS2-SimpleAdmin/lang/tr.json @@ -126,6 +126,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} {lightred}{1}{default} için oy kullanmaya başladı", "sa_admin_vote_message_results": "{lime}OY SONUÇLARI {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}Konuşman sırasında {default}tüm oyuncuları susturdun", + "sa_admin_voice_unmute_all": "{Lime}Tüm oyuncuların sesini {default}açtın", + "sa_admin_voice_listen_all": "{Default}Artık {lime}tüm {default}oyuncuları duyabiliyorsun", + "sa_admin_voice_unlisten_all": "{Default}Artık {lime}tüm {default}oyuncuları duymuyorsun", "sa_adminsay_prefix": "{RED}Yönetici: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(Yönetici) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(Oyuncu) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdmin/lang/zh-Hans.json b/CS2-SimpleAdmin/lang/zh-Hans.json index 53ac6d0..c3d2331 100644 --- a/CS2-SimpleAdmin/lang/zh-Hans.json +++ b/CS2-SimpleAdmin/lang/zh-Hans.json @@ -124,6 +124,10 @@ "sa_admin_vote_message": "{lightred}{0}{default} 发起了 [{lightred}{1}{default}] 的投票", "sa_admin_vote_message_results": "{lime}投票结果 {gold}{0}", "sa_admin_vote_message_results_answer": "{lime}{0} {default}- {gold}{1}", + "sa_admin_voice_mute_all": "{Lightred}你已在讲话期间静音了{default}所有玩家", + "sa_admin_voice_unmute_all": "{Lime}你已取消了{default}所有玩家的静音", + "sa_admin_voice_listen_all": "{Default}你现在可以听到{lime}所有{default}玩家了", + "sa_admin_voice_unlisten_all": "{Default}你现在不再听到{lime}所有{default}玩家了", "sa_adminsay_prefix": "{RED}管理员: {lightred}{0}{default}", "sa_adminchat_template_admin": "{LIME}(管理员) {lightred}{0}{default}: {lightred}{1}{default}", "sa_adminchat_template_player": "{SILVER}(玩家) {lightred}{0}{default}: {lightred}{1}{default}", diff --git a/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj b/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj index 97feaf5..d1d66f0 100644 --- a/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj +++ b/CS2-SimpleAdminApi/CS2-SimpleAdminApi.csproj @@ -5,10 +5,11 @@ CS2_SimpleAdminApi enable enable + true - + diff --git a/CS2-SimpleAdminApi/ICS2-SimpleAdminApi.cs b/CS2-SimpleAdminApi/ICS2-SimpleAdminApi.cs index 32c0669..3d4c9f6 100644 --- a/CS2-SimpleAdminApi/ICS2-SimpleAdminApi.cs +++ b/CS2-SimpleAdminApi/ICS2-SimpleAdminApi.cs @@ -9,23 +9,97 @@ public interface ICS2_SimpleAdminApi { public static readonly PluginCapability PluginCapability = new("simpleadmin:api"); + /// + /// Gets player information associated with the specified player controller. + /// + /// The player controller. + /// PlayerInfo object representing player data. public PlayerInfo GetPlayerInfo(CCSPlayerController player); + /// + /// Returns the database connection string used by the plugin. + /// public string GetConnectionString(); + + /// + /// Returns the configured server IP address with port. + /// public string GetServerAddress(); + + /// + /// Returns the internal server ID assigned in the plugin's database. + /// public int? GetServerId(); + /// + /// Returns mute-related penalties for the specified player. + /// + /// The player controller. + /// A dictionary mapping penalty types to lists of penalties with end date, duration, and pass state. public Dictionary> GetPlayerMuteStatus(CCSPlayerController player); + /// + /// Event fired when a player receives a penalty. + /// public event Action? OnPlayerPenaltied; + + /// + /// Event fired when a penalty is added to a player by SteamID. + /// public event Action? OnPlayerPenaltiedAdded; + + /// + /// Event to show admin activity messages. + /// public event Action? OnAdminShowActivity; + /// + /// Event fired when an admin toggles silent mode. + /// + public event Action? OnAdminToggleSilent; + + /// + /// Issues a penalty to a player controller with specified type, reason, and optional duration. + /// public void IssuePenalty(CCSPlayerController player, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1); + + /// + /// Issues a penalty to a player identified by SteamID with specified type, reason, and optional duration. + /// public void IssuePenalty(SteamID steamid, CCSPlayerController? admin, PenaltyType penaltyType, string reason, int duration = -1); + + /// + /// Logs a command invoked by a caller with the command string. + /// public void LogCommand(CCSPlayerController? caller, string command); + + /// + /// Logs a command invoked by a caller with the command info object. + /// public void LogCommand(CCSPlayerController? caller, CommandInfo command); + + /// + /// Shows an admin activity message, optionally suppressing broadcasting. + /// public void ShowAdminActivity(string messageKey, string? callerName = null, bool dontPublish = false, params object[] messageArgs); + /// + /// Returns true if the specified admin player is in silent mode (not broadcasting activity). + /// public bool IsAdminSilent(CCSPlayerController player); + + /// + /// Returns a set of player slots representing admins currently in silent mode. + /// + public HashSet ListSilentAdminsSlots(); + + /// + /// Registers a new command with the specified name, description, and callback. + /// + public void RegisterCommand(string name, string? description, CommandInfo.CommandCallback callback); + + /// + /// Unregisters an existing command by its name. + /// + public void UnRegisterCommand(string name); } \ No newline at end of file diff --git a/CS2-SimpleAdminApi/PlayerInfo.cs b/CS2-SimpleAdminApi/PlayerInfo.cs index b492322..b331def 100644 --- a/CS2-SimpleAdminApi/PlayerInfo.cs +++ b/CS2-SimpleAdminApi/PlayerInfo.cs @@ -1,5 +1,5 @@ +using System.Numerics; using CounterStrikeSharp.API.Modules.Entities; -using CounterStrikeSharp.API.Modules.Utils; namespace CS2_SimpleAdminApi; @@ -28,10 +28,13 @@ public class PlayerInfo( public bool WaitingForKick { get; set; } = false; public List<(ulong SteamId, string PlayerName)> AccountsAssociated { get; set; } = []; public DiePosition? DiePosition { get; set; } + public bool IsLoaded { get; set; } } -public struct DiePosition(Vector position, QAngle angle) +public class DiePosition(Vector3 position, Vector3 angle) { - public Vector Position { get; set; } = position; - public QAngle Angle { get; set; } = angle; + public Vector3 Position { get; } = position; + public Vector3 Angle { get; } = angle; } + + diff --git a/Modules/AntiDLL-CS2-SimpleAdmin/CS2-SimpleAdminApi.dll b/Modules/AntiDLL-CS2-SimpleAdmin/CS2-SimpleAdminApi.dll index 20c94079718acc647b523bf58840e9ae7ec9bde7..0a8f33a9f883e678ca7c0e2dca4d774533a60b94 100644 GIT binary patch literal 12800 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 C04YfT literal 0 HcmV?d00001 diff --git a/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.cs b/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.cs new file mode 100644 index 0000000..9379f33 --- /dev/null +++ b/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.cs @@ -0,0 +1,51 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; +using CounterStrikeSharp.API.Core.Capabilities; +using CounterStrikeSharp.API.Modules.Utils; +using CS2_SimpleAdminApi; +using Microsoft.Extensions.Logging; + +namespace CS2_SimpleAdmin_BanSoundModule; + +public class CS2_SimpleAdmin_BanSoundModule: BasePlugin +{ + public override string ModuleName => "[CS2-SimpleAdmin] BanSound Module"; + public override string ModuleVersion => "v1.0.0"; + public override string ModuleAuthor => "daffyy"; + + private static ICS2_SimpleAdminApi? _sharedApi; + private readonly PluginCapability _pluginCapability = new("simpleadmin:api"); + + public override void OnAllPluginsLoaded(bool hotReload) + { + _sharedApi = _pluginCapability.Get(); + if (_sharedApi == null) + { + Logger.LogError("CS2-SimpleAdmin SharedApi not found"); + Unload(false); + return; + } + + RegisterListener(OnServerPrecacheResources); + + _sharedApi.OnPlayerPenaltied += OnPlayerPenaltied; + } + + private void OnServerPrecacheResources(ResourceManifest manifest) + { + manifest.AddResource("soundevents/soundevents_addon.vsndevts"); + } + + private void OnPlayerPenaltied(PlayerInfo playerInfo, PlayerInfo? admin, PenaltyType penaltyType, + string reason, int duration, int? penaltyId, int? serverId) + { + if (penaltyType != PenaltyType.Ban || admin == null) + return; + + foreach (var player in Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot)) + { + var filter = new RecipientFilter(player); + player?.EmitSound("bansound", volume: 0.9f, recipients: filter); + } + } +} \ No newline at end of file diff --git a/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.csproj b/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.csproj new file mode 100644 index 0000000..353bd6a --- /dev/null +++ b/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.csproj @@ -0,0 +1,20 @@ + + + + net8.0 + CS2_SimpleAdmin_ExampleModule + enable + enable + + + + + + + + + CS2-SimpleAdminApi.dll + + + + diff --git a/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.sln b/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.sln new file mode 100644 index 0000000..926dc2f --- /dev/null +++ b/Modules/CS2-SimpleAdmin_BanSoundModule/CS2-SimpleAdmin_BanSoundModule.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2-SimpleAdmin_BanSoundModule", "CS2-SimpleAdmin_BanSoundModule.csproj", "{D940F3E9-0E3F-467A-B336-149E3A624FB6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D940F3E9-0E3F-467A-B336-149E3A624FB6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Modules/CS2-SimpleAdmin_CleanModule/CS2-SimpleAdminApi.dll b/Modules/CS2-SimpleAdmin_CleanModule/CS2-SimpleAdminApi.dll index 20c94079718acc647b523bf58840e9ae7ec9bde7..0a8f33a9f883e678ca7c0e2dca4d774533a60b94 100644 GIT binary patch literal 12800 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 diff --git a/Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform.pdb b/Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform.pdb deleted file mode 100644 index 488e323a3e046ac40b8a6af649426cf6d9356891..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14920 zcma)D2UrtL6TXD5fS>}3ida#ENENU`3N`eiB9;&?5D7_40kP7t3nCy&6C0waAOcct zh`pE3UJ+F6T|VXCP3}T~=>O$;Hg|is@67D%?(FRBE!p3lOh5<-{Aq&ZLnRwWTaqj! z4-i#k8MxtqG|DF|6h3PMDUJy8D-a|?2|<+MJAaXY%?%gA_Z<9Lpg+O~_df8wOQ0JS zT#teLs!1SE=I|h~F`pck-zb|&Ng2U#^;*)hf#+3z3_M0=8Wi=_=z~b4nhf&b78wbW z5lDkTQU%Emq$wcv1qn(INJ|o|g9i2tmQw>s2PF6dVoNKEv`QZ!rw|oz2kGj81n(h6 z9VBN^lnxMa;Fm|LTnPxpihyKU6OcTRc7pT|NIo_Mq{0S} z>GdNb?_|%3NQdkm79=9JwnW6qR(hX!ZE2k!>Tkc5Nu8q-7&fc&8J=Ax`X|?ORY5vGD?;XVLD(%0I zTv?aso^{tbG^y6(A9WYc6CI>d=Baq7RBby_d~Ja2_Y!=H8EBxxp=OB zpJLGimuuVomWr-AHW@um+QHa<_T2p;tcGRp`b#MKi$jG>0Xq~G;K(Rr>&}mH!80sL_ppDONke{P|XkJpbR0Z%0)%?Bn$Juh)Z$-7J|VE z6hgB?3I}{Np@eaJ;`YTIj;k^L^ugw3+n8sqW8>1ktTp^tU-Zy-2BR=H==0ib>(v>i zbtIA(Er7xkpiX?gSr94^vU%KT(SRw*Nhn04LOHQcB4D#Z#UfPLop`*y@wZ)f7U!l+ z8uP@VGv|r!WFLEruhqe;zV^@2f0VdCx*~tV-vr0$L$&vyEHq|K^7{SJTXn!k$Cr0W z$+e6o-p7o^5iz!Nmlhv8+Tvx9;2bTL6|q8?yeK}Kg9^;?M>Zr&V3*CUNme%2lWa-$ z6C6+nrXABV%*x6-l*ydLVoh?evSNizvU9Ksa|mOxSPslEJ4;3w!eMa3#f)$ip^QR= zJh6a@nzI0Db0$yB6(P0=Pb}h#Mdp!gZWuz10rSK4Rrw0TCvbDODhH=l;L1Ii769QhPSi=GZ9zJ;V?ouC_>{(E@3E(%|(#_KPL*! z%#TK=Ir-DfKzqYvKi>jgDBgZFCm$bpYdha!zPI0e7w{l}<_Dil>h;8~*Aqae2MQx; z`R5mwiV;?SLRiiJBf?5CDeFIxvhGF-IbcSCO^XWP#2ktGM=%6@l9P`cDU1W=a)L%n z-FY~Zy0J`Bs#MA-yVRq9v~=iv=+Up8_-qU?`|z?xFcTukyykxEOILX8F07;L8&28o z$@F9h0ULa@k$gDfa5h(n!CHp}TtOZqNP}|g^?pOFJvLri!wx%OJ>HYe6!3&RmWV`= ziY66{B_NhTE)iF2qqnX)?y<9G&cL0+k||xqsXUPvDgs=jz0N6AC=xK3ut(x7mjyq% zj1(fsvvE68%mWbTLoTnrCBJ*x+C_u5ScGz+JrI&8JT8kJE*41oG)V!q*RhOZNX>t1 zL72LplIPm6r}^853_tQ8sFA^70*aB=?7q>|M^F*U%>hp>bW6!c+!HSMr*0wt2Ram9 zR1|{?Mj;o)TTgq!Jt&k>Y;LnC=wJ87geB_-jnTgKABah%QKFQuhtkA+z4v{Y5|dKj zt~QCBX+Qrz5TJ3R*#aIn3gwD|7y>pNj=1KXxnIg*>up+*f8_m&WXDvUr-b)58|(f9 zRcBy~=JcF8w+FX=sd;7CX&ib`x%Tiyz|G%`PwK-(n{}*x$K|a1C z%w40_-#dTj#ydAg4!WWc4ttM}fEUdM<4vJ3k9?wjLt%EO=`DVGCeo`Q`F613NzM5G zK+Pv2RtP6UOht~Ys(WzcG_ths4xed8ZoK7NR%;le{6|XuvA{e=L1!iucrqB3^}NyF zA(hVP=~h9N`#pp|kpBugbDZoYzi!X+ux#D$Kd? zS2|J!j~*awg>AijlB($B=y}xYfp3Fe`06U|$#fpj05PVVFeud+U`YtjVp(` zXKn6(z)U$aU7;LwUO1Q`6xL^jj@C~&6t+Dz|F`cZF*Q@O&m;8@>vR4}r@IZ8)=qcJ z#v8D~=bW^7eRy7rOLfU2O={TS1^MTR%}_xHti7(kpxJm-7@?ONLId6Y zN`i`pit$F?_$2TtREqPv{La0G&%BdM2A1|u0#fls`z=nuc0D`nyat*b?VT8z z*>r5A?)kq$Y0J z1`fodN8kM51LH@C4gqzLJpl>8`=eEB5VyY18BLMEIh#f7PpzOZYe}ltLZGmI* zr;tq^C9R%wH|yBH>Ou#xg<=MW%m70k_yz*JFEFAemLtXl%yN&Y-$B%B)qxjYt&&1B20WXG7h==<`FZ#K)!p21FPP0C{&T!02j$3vtaIKX;DqwSD{dnyC>vb^RGIxj_4;D8P z4^VED-)3?Z?I|j}-n37(mEqMW%kk6Gb3?TEJQ~Q+6 zO1u5l)?dV6M$#5DBf!E7B}o>|7-9wE;SFSgHge+nEM)rp+uld)VmFwUgoH^a3KCeZ z0)r+(7mKj+)T>c!)_pj^-;m>70QV9*CB=U#`L*qd7Y9ji7cg!f-Ps6_$RpO3;` z$zFouo!TX&W(x!_unW1W^W+@4rqg3Z`dh&g890j1;{u&X-6AJ0mnV{}4R8ft4blA$ z&7oW0#;v{&w|K3xeOmDQuu8mQJe470^rn%RF?|ngr0o@xN?Jnuc^zD^GTmsr+DyeX zq`GeYKH?|DOuXGJ2upiTsUcj>Dm?A&rx+ud3V;Y%TwHOg$s=z<8XqH*K7Y>A zao%g<8osf4+ziDudfBCZsc|PH2FCU``SVhL@|w!))6$Ysbrr({V)-cO$RKn9SBKI{ zEbL5Lhdd@A_R9^ecnh_?D}AnCp8t6K0~rPR#h4Ugl3MZ&%Dl87)8F{gYp;}?Q)AXR z^Bub&a-(<0#jsLIK}R+ht$`(<{hCp*=J#pG(nXu< zD7I=lv68Uefc=k(lC2^dRrWqb3W-Qd+7kW43rhL$I?v0HXX+k(@!2)}d;X z*Ctp8-lEpXb6F+SIP0u4BTrp&POsHlE~<_o^gzz$#u$Az#CdzEQluwt4YnM+Q-?J6UieOOeZjF@^{i_}df4NM{f`+Jg zuD-eBe8a?7xcQQAEGTlw@UM;waAygP^3K`$9EbGyx-~i{d{6+9X!+#L&83yb>*1lJT)q)y91sdKB(uhJ0er zG{Lqzz2AYZ<<{X|$ICuPOu4ri$4R4?BtK~!64P~VaLRS4H0Hsk5T`c{^xQ8csXjL> zn=p_w2w*b6P;wG-EiuHvq83SvMcsZydA}bg9e2dtpKL>T$m@X!VBpP}&oV28Ec~ZN zr5C+j?Y5Ux#U3L*IT-^;!`b*6io)Q4&;Ua=Z|}4te#O^!5?z7HG zgQFVu=I z8(?TRZ)pDb0x)ENLr)?Lcp?rS3S53Ur5QpO-_1Mt`1D}f&R5K6jgis)6ho!LR)tz6 zLd;mvbI;@1&fa@nQ@%Lf?!2cM14lddMhf3mq4EsESI2imEIGKIzQxG&K&;9-v0`{I zn=j{~4O?DZ0Uc!_(Qi&sB*K>O9AyMalWAwt9afwK>G9k3x~UgL8P+7Oq)Gn9?bYf?9zttVW*_PVAE=ZQw~1hJkB zJ|7K(>~Wi?`Jky2a#Yf9Eo$k!=~1w4H%k0GW{kZyI{Us$ z&AYJt2piJ!E?y7;M!bTC+%wg11LWpCz7Ny#mpU~+$!=F=vO8{=F>bhQuGRb3!dhkg ztZWUR5aPV^fK^(sQCVddr$8=<-vTv+Nvj7U@+cz;)5*~0cP}BY@JRlM5JG};R{Q)i zjkxJX7#ak97hxrB?<=Q5yH~%dc5$0dGc7*PZhXarkK5%-(iY=G7MJe6lfhQF#)?!j zbrO!)>zsu?tJaRy;mV_Y7y_`_BZ~r76_vb)jBeKLG(U9ps(b44_N8b^<1BfIuNW1? z%K7tZt40+=%swwqQ@0Vr9S`K$L}VpDJcwbW6~`(PdNCYq=Ms>n+zEHm^}J|R3+&!) z*87)*m4)GbX&bibFP2R2<#gN@1WsOwJ^w%N2ALiTGIQtM2O$z=iFgTCH8f zrj$Bo{H`}B+t&WGXKA_6aPX@)6|m`we(r5n4~-&ce&HXfO8h;t2c*Zm9eS`K6QbtY zXOEcsMw^zp%cUcB_0DZ_C{G3(w+cyB`ZZ89XF_gd{%gL7cBJJ!^VrMcV!6^@j40F( z1w%#*qbFE(u2o*jh8;sw@8whbf1F&hR5SOFPSrXtk3&TgQ6YRnC7_Acyf4%T{a!e2?8wW8cd2MqDUZPOiT}-IlUN3wNGj zi~FIA#Hdi_&7M_Oii7lLv%k!^V>i~R_{QnD^g|=OH*s|Jkv z>ZKX~-7U9y-Yz#IUR^hYAezlYeRyoyn)i?w`5de}n_789i|Fl?SF_H((JFhTJPHeP zNL5?^mYN3HSgi5-VfmYI^KizYMQ~_+2Ns^Zj$C{A3P4B=X39QMUIQ4=V|757^t>x zPz;qSWL>K2aoDzcooU9cYVW-Ze;hazqJHiwjuA(}r8{npR`J{7Acx^!vd4crv)ZHB zBffm>=b9xwO9z1{1yAN3*?b@J5H2xxm^VKCve1j3y{hT-Pb=~Q4CNgPcUR;$GF0}A zN`gWW+k7YPc(~EMWV9aZmhGV<7{Cu@VPOywl`Z7M$xU8^YUz_Co~h>#wL5pBl0Ejk zY4#D^m=V|;EmeWnHII+5Qg=CHSG=HVI@NB{YqM*5p5MDX4a6g{hP5_)DTzhu-o75N zGD=8~U%>E9-#7QfA3$z&Nf1PSl<)nxRpLB67$31xG+v7wUt%$TvZ?>)KTx2v!y`m7 zDE!AnDAYYKX$*~vgnt`W(bf3GxBB~ zQCjDJr8m?Q6*0o#a#{-9#mYK`7!#2fo|Xm5AI~_i^`4gyF)swS>2fX8%VXK}yzC`x z)Ftt4#@~*$c_$2h?|6Ckcdgz$VeFxo$LmoQ{|bs+L@3k!ccY8@kxZ|pwSzdrWN_(s z5kg>!;7G*e)vI3n0HQ)irny^B+(^%Pzg3-eC}M;HloanNnd)))Hr3mb4QG82hD5kxN?-GkvDBTBo0b-rFgUp6*!rj!5orjVf{7A9 zGfsn4e3e|c5Tb8-94VQ-UiswlwLPdv8+Xdj#}|;tng~j}C7hxDmA>;{Lr%1H7`{lv z`%HhVJ!&Ft@Y#h!DG8uu`6 z0am$D^bAum2@c1$vNhNLBV6q9uwntBSBZ&~bO}99jRxl+zRJ&WL7! z7&e=a522Jd=WoG2Y3O3`tgb!SCC57=;hptS-0Ap}5ZLqHGxzz&5t2~Rs#AN9dOy{t zr@FqVpbvR#)k70NF7UY}*rdSiYI>_p0}`i*IC)c&F zyh}L*6*y&xy2-3kPjV(vO;{gdsoMkN)!l;syb+iOXJ+f1d1WO=`<-edkLkK!)0GWi zOmi?`-nC^YReJOVY5`oY^@a6?_4~E^L(xo|QL%gaJt!Dm$D!+H( zT=lqx*W9+7e9|}fZ|e9f6*;HxnBklzD22a6pXi3bYviIJ<746>sklRiH(7TndKshe zWm}FwDoSs*tf4Hmp{KLbcb2a^^zUD#m=%S4g*r2Z?UEU7>NiS^fsM;vGP(L+@;OTk zF7s^^El)I@Ba&eYD3?|ccP5c(`>aC7UT4y;_QX;+40aT*HNRxfW(e9)K7CqRRya8? zuWn_^AvUEKND#{x@xlcRenc$Ei4)EPE>?t$%12l8WLWEY`d4gQR_>ssRKy)}J8u8_ zuT&_qZSQvDJCzXbv~||e1rA*2quKX9jmr|T{QMg@}s}f@CKiN_zUr7KeJrD1J;0N9YkF97Ny4T_xqBvs0_DR zifhoT?>#BCk<8nl{kBuoW;S@%Wi+*%EgbxJL1x)nI8Z<^o((qYz|tJ=7Y~^CB;R$7 zTo}X4WQoafr3_nSZqeDEm6ED)#qM7hq5Ms6^Nt=e8br@qZ22QeVEVjgX&^F}$>z)U z1C<{vybW<5^26HZn<_a~IsNoFGjmU`-q(c#TbyCM7+gw1)%qWB%->c`ia%w1hn9A5 zVqQx!O}{5!i2_lu!0u|bH*SfNX}@W&=Ch3aO81P!;E7h%iJmg3WbTwYkHC}0roD#r z{9jOD>&h?9ug4B`-lzF&PNG%>wL7YNP_witmvJ@bOn-oH{scsTK#F95QouGV7nOy`XAH@$ zhnlH3*_=1aY_xj{NA245!*sm$x^PlO4s2at0NDiV6m9kRPH;_~eV=`G?tE_~_~saQx(!~gl0dK^e(Syk@)@F@H0tiYYFd()>ER`XDb-l{u2EL_P+PLTVm94Z4b-_vS$}_N zTjR+G=i~~)&{v>{&FKn(R2{02IFCbH^*2ulAMdq)cI2!pQ6#({cQ>hH&P23AQ5J6t zb+}xZ=2H8We7o%JL;=R3%T*~}H4bMf~RWDpsVlz%jCGBJoOK{t`#d|E({tRfPZ=b zh3W2(NykE3nXcqZnVd)CH1;%Kc4_=sFv}vp!%U9ZEGmx)99UVvr)8nA0ggF0v#A}{ zbpq$cy7!BIc@XhkC&&q;9-!hoZzLP%8*UA%;$%{(J19eo4;DSZ7eN>Zmr&LZg;C!B zz*tdBqGsZ&852E<->x#7kstX?UOXR$C<5yoo|?lY&3AhJwXaj7W9VBOqZ8coSj#Ji`~Jt?}y#PXcX+0I#^z2Oz??X_JAa@ zF8YeUQ6HlCvE+lSaesM7qA>W3P&gvksLk27K~9wCl4j zIrE8qTx3EhcPEtl63RJ*@@PVN0-<~pp?n9SyoOMIl~DeMa9E#kcsk**FI1_zmbv7j zZDtK}V+=HO5Cdg!uF6hXT@TSFf;%-L=pR<46**E0zt zGu1_g$XHk{oCj13Q&&Y#p)v<3_;^Y~QgR2O;wm`qr>yF&(H|l7i5&^g>1o5`frEUt zz_~wfWEc^g)DV1p$@*$RMgl zUu3AVx`fnlB6tEwjvxZ-Pz2u_C$MhMD_0O{cXhPZ*m1W6BkH-?;oH`;*o z7?AYF!&8fZu9B*9KMiZdQ3r|^fS5wM6O~~GP?89#1qvdeAjN`YFdm+0gg9i-WDRx1 zo2cFwnWY?Sf*_sGz>xh2hFR8 AApigX diff --git a/Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/Pipelines.Sockets.Unofficial.dll b/Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/Pipelines.Sockets.Unofficial.dll deleted file mode 100644 index c5b223d381cec922592e35d355cfdd6f9f292833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167424 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%0D&T7l-oF5r|A3yM$KfCEPlrDjD>KmF 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

gQNnf2-0yL0%;p%Mk|a8#bdy{^BAp@Mi>>+ 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∋L(l!&q8=1q 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

S< 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 diff --git a/Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/System.IO.Pipelines.dll b/Modules/CS2-SimpleAdmin_RedisInform/CS2-SimpleAdmin_RedisInform/System.IO.Pipelines.dll deleted file mode 100644 index d2ab03f9cd9867c9c73e7c4670641e2e74da3ae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67464 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 oycguqCg}Y05ruSxQW*$2Cl8H0!d3ad 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 +{ + public override string ModuleName => "[CS2-SimpleAdmin] Stealth Module"; + public override string ModuleVersion => "v1.0.2"; + public override string ModuleAuthor => "daffyy"; + + private static ICS2_SimpleAdminApi? _sharedApi; + private readonly PluginCapability _pluginCapability = new("simpleadmin:api"); + + internal static readonly HashSet Players = []; + // private readonly HashSet _admins = []; + // private readonly HashSet _spectatedPlayers = []; + + public PluginConfig Config { get; set; } + + public override void Load(bool hotReload) + { + RegisterListener(OnCheckTransmit); + + // Old method + // if (Config.BlockStatusCommand) + // RegisterListener(OnServerPostEntityThink); + + if (hotReload) + { + Players.Clear(); + var players = Utilities.GetPlayers().Where(p => p.IsValid && !p.IsBot).ToList(); + + foreach (var player in players) + { + var steamId = new SteamID(player.SteamID); + // if (Config.Permissions.Any(permission => AdminManager.PlayerHasPermissions(steamId, permission))) + // _admins.Add(player.Slot); + + Players.Add(player); + } + } + + // Old method + // AddTimer(3, RefreshSpectatedPlayers, TimerFlags.REPEAT); + } + + // Old method + // private void RefreshSpectatedPlayers() + // { + // _spectatedPlayers.Clear(); + // + // foreach (var admin in _admins) + // { + // var observer = admin.GetSpectatingPlayer(); + // if (observer != null) + // _spectatedPlayers.Add(observer); + // } + // } + + public void OnConfigParsed(PluginConfig config) + { + Config = config; + } + + public override void OnAllPluginsLoaded(bool hotReload) + { + try + { + _sharedApi = _pluginCapability.Get(); + if (_sharedApi == null) throw new NullReferenceException("_sharedApi is null"); + + if (Config.BlockStatusCommand) + _sharedApi.OnAdminToggleSilent += OnAdminToggleSilent; + } + catch (Exception) + { + Logger.LogError("CS2-SimpleAdmin SharedApi not found"); + Unload(false); + } + } + + private void OnAdminToggleSilent(int slot, bool status) + { + Server.ExecuteCommand(status ? $"mm_excludeslot {slot}" : $"mm_removeexcludeslot {slot}"); + } + + // Old method + // private void OnServerPostEntityThink() + // { + // if (Players.Count <= 2 || _sharedApi is not null && _sharedApi.ListSilentAdminsSlots().Count == 0) return; + // foreach (var player in _spectatedPlayers) + // { + // if (player?.IsValid != true || player.IsBot) continue; + // player.PrintToConsole(" "); + // } + // } + + private void OnCheckTransmit(CCheckTransmitInfoList infolist) + { + if (Players.Count <= 2 || _sharedApi is not null && _sharedApi.ListSilentAdminsSlots().Count == 0) return; + + var validObserverPawns = Players + .Select(p => new { p.Slot, ObserverPawn = p.ObserverPawn.Value }) + .Where(p => p.ObserverPawn?.IsValid == true) // safe check + .ToArray(); + + foreach (var (info, player) in infolist) + { + if (player == null || player.IsHLTV) + continue; + + var entities = info.TransmitEntities; + foreach (var target in validObserverPawns) + { + if (target.Slot == player.Slot) + continue; + + var observer = target.ObserverPawn; + if (observer == null) continue; // extra safety + + if (entities.Contains((int)observer.Index)) + entities.Remove((int)observer.Index); + } + } + } + + [GameEventHandler(HookMode.Pre)] + public HookResult EventPlayerTeam(EventPlayerTeam @event, GameEventInfo info) + { + if (ShouldSuppressBroadcast(@event.Userid)) + info.DontBroadcast = true; + + return HookResult.Continue; + } + + [GameEventHandler(HookMode.Pre)] + public HookResult EventPlayerConnectFull(EventPlayerConnectFull @event, GameEventInfo info) + { + var player = @event.Userid; + if (player?.IsValid != true || player.IsBot) return HookResult.Continue; + + Players.Add(player); + + var steamId = new SteamID(player.SteamID); + if (!Config.Permissions.Any(permission => AdminManager.PlayerHasPermissions(steamId, permission))) + return HookResult.Continue; + + // _admins.Add(player.Slot); + + if (!Config.HideAdminsOnJoin) return HookResult.Continue; + + AddTimer(0.75f, () => + { + player.ChangeTeam(CsTeam.Spectator); + }); + + AddTimer(1.25f, () => + { + player.ExecuteClientCommandFromServer("css_hide"); + }); + + return HookResult.Continue; + } + + [GameEventHandler(HookMode.Pre)] + public HookResult EventPlayerDisconnect(EventPlayerDisconnect @event, GameEventInfo info) + { + var player = @event.Userid; + if (player?.IsValid != true || player.IsBot) return HookResult.Continue; + + if (Config.BlockStatusCommand && _sharedApi != null && _sharedApi.IsAdminSilent(player)) + Server.ExecuteCommand($"mm_removeexcludeslot {player.Slot}"); + + Players.Remove(player); + // _admins.Remove(player.Slot); + + if (ShouldSuppressBroadcast(@event.Userid)) + info.DontBroadcast = true; + + return HookResult.Continue; + } + + [GameEventHandler(HookMode.Pre)] + public HookResult EventPlayerDeath(EventPlayerDeath @event, GameEventInfo info) + { + if (ShouldSuppressBroadcast(@event.Userid, true)) + info.DontBroadcast = true; + + return HookResult.Continue; + } + + private bool ShouldSuppressBroadcast(CCSPlayerController? player, bool checkTeam = false) + { + if (player?.IsValid != true || player.IsBot) + return false; + + if (_sharedApi is not null && _sharedApi.IsAdminSilent(player)) + { + return true; + } + + if (checkTeam && player.TeamNum > 1) + return false; + + var steamId = new SteamID(player.SteamID); + return Config.Permissions.Any(permission => AdminManager.PlayerHasPermissions(steamId, permission)); + } + + // private IEnumerable GetNonAdmins() + // => Players.Where(p => !_admins.Contains(p)); +} \ No newline at end of file diff --git a/Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.csproj b/Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.csproj new file mode 100644 index 0000000..a2c6c74 --- /dev/null +++ b/Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.csproj @@ -0,0 +1,20 @@ + + + + net8.0 + CS2_SimpleAdmin_ExampleModule + enable + enable + + + + + + + + + CS2-SimpleAdminApi.dll + + + + diff --git a/Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.sln b/Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.sln new file mode 100644 index 0000000..321fbfe --- /dev/null +++ b/Modules/CS2-SimpleAdmin_StealthModule/CS2-SimpleAdmin_StealthModule.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2-SimpleAdmin_StealthModule", "CS2-SimpleAdmin_StealthModule.csproj", "{25E0ED51-29BB-4FDD-B40A-62F894A56815}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {25E0ED51-29BB-4FDD-B40A-62F894A56815}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {25E0ED51-29BB-4FDD-B40A-62F894A56815}.Debug|Any CPU.Build.0 = Debug|Any CPU + {25E0ED51-29BB-4FDD-B40A-62F894A56815}.Release|Any CPU.ActiveCfg = Release|Any CPU + {25E0ED51-29BB-4FDD-B40A-62F894A56815}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Modules/CS2-SimpleAdmin_StealthModule/Extensions.cs b/Modules/CS2-SimpleAdmin_StealthModule/Extensions.cs new file mode 100644 index 0000000..5d92873 --- /dev/null +++ b/Modules/CS2-SimpleAdmin_StealthModule/Extensions.cs @@ -0,0 +1,31 @@ +using CounterStrikeSharp.API; +using CounterStrikeSharp.API.Core; + +namespace CS2_SimpleAdmin_StealthModule; + +public static class Extensions +{ + public static CCSPlayerController? GetSpectatingPlayer(this CCSPlayerController player) + { + if (player.Pawn.Value is not { IsValid: true } pawn) + return null; + + if (player.ControllingBot) + return null; + + if (pawn.ObserverServices is not { } observerServices) + return null; + + if (observerServices.ObserverTarget?.Value?.As() is not { IsValid: true } observerPawn) + return null; + + return observerPawn.OriginalController.Value is not { IsValid: true } observerController ? null : observerController; + } + + public static List GetSpectators(this CCSPlayerController player) + { + return CS2_SimpleAdmin_StealthModule.Players + .Where(p => p.GetSpectatingPlayer()?.Slot == player.Slot) + .ToList(); + } +} \ No newline at end of file diff --git a/Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-linux.tar.gz b/Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-linux.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..61f7be3746a81db486aceb12b50ed4e5e64069d0 GIT binary patch literal 393195 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%0A3I*RE_#?R{|;1EfZIoKcMweV|+w#UZ9 zzIeG`lUj+3OvF9RqA)f6-I#z~v_)Qy2^ofXCbBi=Ts8ydi^qwU zSBvmtd{T|VOkhA|+*3>cZ&}+yTXn8uvBNQQ2UA)$5$McDvJuR!ZnsW<%mKRB%wHXg z0UPF4yVeC=@D!=-6mi;IvT2-R($*6!uW@!ujBv}wyEH7_HPN{YnUt!O)ZxV(I#ZJ; z6y8^gM;>j6$2?qj(pwX}N1fSB!_RsGZC1`h?B??Vp2S=*3_X#eh2r!uLcKm7TqEW@ z#fzV%*%yxBJsTmgA) zLdktJEPIO)FMm1M1FZ;^ra_iJa7|k>G>@hfM)-q|iaC(KH+u;m7JH_dezP!R>qWp3 zw3p+`Mq3GCvcw8%jN<@++*o9kqBH9do}Ra8<>()&42(j$-gXr7GY1OebQ z3|b z{?-$73!?vDEknsoP@491>iKvqdHxc;g*-p#A&Yly{{H{fKE3ntmiDRHR)3Do$I=gm zsd|66$#aroNTy)WqgkyB!&D`^;m)5zrl)7Nxt5}={~VN-sMx^%w0h=#{E=``&)iMl zr}AdzB=Rv+jeErK5Q;w2iFVgwVQTdL!j$!Xa*)J0OtF1(11B6ffSEvxe0rz0qVuou zIP#RyNUQNmj`h0Z8Hw^tbx3etp@auHCAq0yqW(I^u?cR+|L+9%;6rkBoT#1PHau-3 zIP&1X<{^{Zya(*Wb~$kliUc?UN-m1g!5~Q3=UW$%R2fj)jom&7-HKO{GSfRHj@v1z z!RO|EUD8rD6S#1SQ+ShK?{(3@G>7qsyoYOTKo<-cdqJLOK;NelePfjY@$*y1rtS}0 zquC#kHk-d?8r^04H2oW|x1G2avLDitPu!;;wJ`m&Z(Cw|QhoVj;=5|YcMH`sJmL)i zZT_MBxTt)T^_uV%6dhQLc;}XNE!T=Z!3GY|j^n*2u!A9)4l!*T9}0PvSICIj9NE2k zE@O$?#L+BFOCCNdkA!U1+tb5!xsQdSiqm0|RDkP(W!X?P&mzZGQ1tuBa&SC}trzh= zVlJa-o^>X;#2b?tN!@-ENwWz_p8yUZCR8NEyaR}OV(SC60WH%1O8eZAD67tY&P=Gz zv9A;U6Ba&|V!BiP3C5?a7Wm{gj*DY{uOzq-X)6ueH7~~L(aTTftm8tyeLXVmH!srs`?RN8aQx~z1k)PbR@qh4>*CWaN z(UqFM&+gG9U0c8Xs67? zrD#=gsH!aj=*r?~sr_2*A#pNOIo{i0Q7gXL#(9=#b;6yr;)`+M$`d%7F-H))Z3&?(XGCBk;yjdSeZ~aZhnHn5ET< zKPU73KGtazmnY`X%|3?`K#M&$p_vDLvfIV6WIHAsSAH(dUJw33PK^X{IuHt0Eegg1zf;n%162XG$#ub*{RHhv^Znow3EsNfr zM+wSHv}S;&tsI9T7C%Tiz)%FK2oQF!Rl>7Kkr)2lI$$DxWuU;a5u?e6qWL34Y9P<$ z9f)#Y@C>4mZIEe(-i5}*U9!P1%TaI?MR%b{ANH(c@rFHHKc6A1bA_w$*)r;(wnQmy zWLEiR;yL`d136g)&6wzs7rBXA{~`{BrR3Bx!$I6!{AT`g1ULD-a_dm!fM+fX(!Kdr zbjJNf)l1!26$7U){u5?q<`NUf;r4d_6&vZFcq*twj;&?YgQlX!KO$7bc=@_p9_-N@ss?!4ky$bV8!dRE73db`3#Dek>A4WX51_$>-Ks3yOf9q(-12jA!>lv zPcUD9<%r#6CVrf5wy*}6X{#4gyo~%R`kDO~FCzzy%gw*b0kFX4B1d7c%9dSqKWe>4 z4j9di*5Bk%vETgrQx+R~dOkt{!l(ESp+yCAjxI0f<0%V&_~j$FgB`SADQB}ypd*&P zQX-#lzI^fdOmh;M<|KC7=mpCPsp(XQP`GaeLA{D2TL3SvU6|n*3wxS_I9D6?WM?>d zA@Ds9oplNV&e1$^5sSZ!VbhrJcOg%8|CpT0?f}C z4S!|Y2U4S%mn}q`EpnTE1&}+BgV57q3LVAlj8%hedPHc35DZ zy|{?YAf_gE(j&hXbYU;>v`d&*$CdbaGkm2iA$TUB(? zPZ(9YB`((&tz%=4%_-Kw{_M?G{Ai9E9hj{~`{((icND16d)+FVwFc%;d5UO%)vw=4 z6)Li1c^EP2I_Re?It>u=CG?4wd|-06tP?ULTbyzi)#~%8Q^I7`9Xqw!b9DF%gPv&#p1%-=ml=ZdLjyjBN~ueJvHNMyYdZjx0R z&^UM*Ofdtd=rDFS+v_9n(<|U<2YBj|ZyT$mJvth6BXoyc%i`=POuD>ot)(BD&o7nF zFQ~z=^;+xsGI>u7EY3wyjods_HrKIvX>EePSnWG-d+k7cgRvLp0w1^Fye?jwoc|YD zhMw8ACz?xlS-wz=J}9+Bn;0df{nmCHpCf*mlyC&@>`C0diR+t8JZ|m2$>M-tP;cb* zu*K#WJQf6GJZCXXbmor5B#j;nj3W6eQWYHK$Met0wK=3T-gs#B!r%kq_%U=1^?=Bn z*udhq5`GACs(=6sq!h|GvVv< zcCf-vQK}))2F6+ENFHZOhB*$U3lHsgu0)}$sJz)ZDYLvGJ$MQV2?$5k8z#sBKY*Ug z8=d-napjpRXqh(2g(jhAppmw1EU0Oi0Uv;NG+pMxkDQH(^Hygok*-d9ReAJc7*{+G zT6r;`%_$BUiDPWC=Lc&s-M~-@5+qbgdqFjX^EdI0`e}Tlej?wfx0fJUiqcNL9O-6j zq;WPsqHPQ9bdIe)kT!PX{?KkGoZsaQ zu*zF7Gg4KVR$o-{iD#w*)udmGDn9T$f?t)A8pJfe_D97Fo^pr0Ly*;(#l!al1^!~? zuLD>)1Lb1v13XuUHCHKLlHW0jOL4=E?DSGVHRUm18nV|5 zDI-~z$LCA-S_>cumAafLuN9%4URCv>E_(Ewe3Zm}!(YkVOe*G?C}J@KS&~YWOvay) zo>C>jx3|I2e%EkYZ@2%{`qOST?^AvPs0&MYlKkX9MI!l# z6vvJ-ZxH$0e~K#EN2Eah-N?U7{<7Sa!V^(=`4lTFeuV!RKbv|Y#Rq(fn$<_7P`)ku zS&q#<#X&wIg?L`0nXf49StdCrVzv^gfhXcMN#7?}!1#&v5{eVRvNVp5NI@+_7|}P* zx@InU$Y5CVq6Yg<8_O_(75qdtjpNfzG?v(HAjO)0pjkABJrb4^5}Re(YdOD}X3_zr zw>l`6OksO)j#)p&*mhKI9s{VZAqjhem52&gr%CMj!I_FZX-8ABXVW}<<-#<^9yBu8 zWS1LZ?iC}^?*Vv1QN>hGKJbL1ih$>0w8C$`2Zi`DU;xuxCU;2U463$Hb=EVF(RzB2 zGk|pVi<55(_`W_=58PoK$*es+FvE*wk{oyI?4iiy;K&|u9Ap(3tJs1|tiRdf60^th zbwM5;0dPj3vIi`poMezc#Jv+5T4NboM*cI)ST?C8%XoEU3d;aN<}f>tFxv>hOU51W zQ(Y*{X+k>9xTO()K|W5bgPA$8lzmF%0(eLm8CoZ0#Dhm{f1E>UvwM0R7R17vhzU_8 zvrZm%sJIIUUf!IHi$#o!7v0hV7mG|>jD5nw=$lQZSUTniilxNyj1L<~M1A@YS?=$- zG|eGiCi7sgTk-q6yQC4$q6W&fsjW3KSFkDnRQY+C{JcSaULik!|AarUmVe*4g8ei8 zK_7QaAcrq3l9$lOKMq<~H5aXDsgJA6vHCXtr)qV@*QJO!>`i)LC z6n81J)*z&6OI^snRuyB;{(ul;H9*OjQO zily{UIx4L`?@y?&w()@mUhmg}IWkHb`U8!BXtqxu;sHt;3di;n{QJ-%`=m=jzYs8O zRVypN`Ko%xb!zqYG+*x8tM!t%G4~;y(4~2)ama*%XhTvpAYyOr9a63-2lBOrnqwesdn&dF|4C0cJ;@# zcklqK>EP39e8jnvrjvow+2UjQYmm$D{8RNF47A5dq5XTbEWSbaxF+xh0i4RTOFbM7 z9ZmO9CJtu|KUIqFS2N9k`fPfRnT)KTic(4u^S*m)0v}M4-`vfr^A|A{MvlEAmW;6S zi&)9c$fJ;?!_W+uBiLPxo?!Z%QZy!co2&L{%%r*-O=8g9==F(p-@bw~I@&&5h0%y` z63pWWM>J(~+$PYK%R!tReQxp(p*gkA!T-@spjnjxd!Frkf&4CtZl&^>4$j4ykbW^Wh*s}+)?qczvPc~7if}!TwZ~)S15cHML|!=F zYSK;Nx5PzRXxmoMNk-Bx=7LR#y5zkkPq4N(ke?FyEs2M&<=g+$C4|hwHal_f(Y-1; z1@yXuMbdF9$^5ga9AG`{z^inz@;EIN53_7ab8zhz)w@9nUxE2-&D;=pS{4o=|ED(C zxtmkUX@lrX0a*&kGXXO@48d9ZaeoG7*TB-q$!icpQr=97hWps+O+&&Vj_~y@`|=C^ z4<|)Y#`;7MgEpw$c*C$ft_rZ^c}^{A!mzR2b@;PSd8Z19ei`n}Gq5U~{9dK4gP5tk53_{~fP+y+w^P{JaU zCAA{Xh^Zk|G}NikT)7n=YM*eguz(E`tJX=ZCEtp$XS;*@7=+KZn;5Mj79<3bfkP5A z#QOq!Hvrg$6IpzrzTmBnc+r4=h*O5J1VfYX9$@)}W`d$f{oQN=EC7Mwr?xmORVsKF zc!0JxRORgHoYV}kt?QQwhCah@Die*l9BuCiFd*w5#>2&S+`vD?>}wehE9JCdB_W9i3r%diYdjWUG2^Zi@VVxQnZ&jP zwbYGlpA|pej)xGt5o4@uYbbf@wf}&Ujd!v1ZeQZAK_>V~+&^CC5r)=ZNI^D7qz#05 z9@ik}2`8Y@RF6w}i?OB~B~xnz`E1B_O{(6hvNiTa?LWGN z|4Ub$8&q^q>723-n#t%If(WZ4Rnwf{+Ybbq}%vxaE( z%tp(fysJt%LVqRag8kx7y0nrkoi-V1h5g2uMH(X-6LpvG#WdNNSg0fA6HXy6?XBeV zLOVbsTk<_fH<8~#DH4~Au{+!v8xKkPhxwhw^Ltm;qIHYfaXiEMtF|J>Osfc17S!OdsKt{mxtv}7e55F^8xg+f# z*vbtAQY0)5)nCAbaW-yJZs#WD$KWOpm&wUU*V1t&7uj?tbCH(htd^PN>^-1_>kqM7 z&D4A$oEygPhirKQr=p>SEVkmnl?@hwk^yCGi~Z#I0aL1~H8x8-5@|Zf>OUWwKyrU{ zTs@$7y@}dBJwn2EbjcQK{g#E{dHi&l9pPb39enx(m+ z2VB-DgP)4Ey~bCz{NXs>LTfw=VT}Pz?5mkYzM3~8-TiSp8(+qyqBM+aRFOF#g|;S` zC<;`CRYAo5o0Ev>_(t~NoX8%W+;QwRRqu7~S!uwJilouO2-cHXV)Hrh>v1=-0pX3e z`E#rM{IC36_O|_kt=0Ii5y{@4^ZQs={LgT$Nn8E{i~rk_M7#abJ3xaSmZx?bR)B2V zuWeVm_0IvGwvl+7UQ&c-!Xu#RX2S!wbr!%0u-rNhP*mrHJpEmGuh8vO%-M&hfcCd_ z5MZ`%J_xS$qUQvv8qx82{^;#45R}|LZ5p64-j3Ayo!g~nDf$arss5B%h$58h?>hD@ zEp?Y^x4WdSf|bIjWsBSV2R_Hc7SQ z3Y3_}s76s-)_0SBqz8m{4X&fqk?{Dc6VTb?HmNvzPcfu_D6Z=YuIBr_oG8$e}}r|kDK8@o2fcismrWAhHdn2 zx&L7`w7R|8Etq7U+M-rBr=z8(dJm}j->Ke%lZ(~Rk@l1FDDKttXD9_VYAa!YdU&f} z_iPaA6^Nv(oig3t13xCBEmtq+`&cq)S6zl>LIG;$p9xUg)RT=sS6+(Y|Jcmu{VA9! zK0{l@_%-#gmK}jY0j57d)WdOpm z0s<034gsartKCX-K&@LxFk=;OgCv;NfLEtHG7I@d0&x0G?GborBE!yDnvgKm2f);a zx-bcecjM$f1kP>*PU}1=RSB2?$t|M!vSdj9YJ()hA5oTo`2c_|_6`8Eu`}k=D`a5q zyEqw`)94DRlo4=1wC8pNrWl4snQaKjUe_=nOUFAMR(vT}O7=(3Q=?tcWyl}BH_M9O z@%|J5NIqaXwLF|H+R^b}NV&M#r=>6Zw9x$(rg`-K9IW+4N4d};NG4ju=`FLZF121^ z6HSBj;9!aD=nI}Lh)E!?&~fDVbVV5f2vddsCz4xP4!W_pebGT~W$6p7wektzw=CZQ zk6JO(b0$XGXaj+%3ac{Oyt? z_EzR(_BN5(n<3eo68YLeMwvDh$WU&lgoB*R6gk`@{jr1#3=({p%9Z7D31`f4S?cf= zmb#V59h9S^)RyIPXqFE}Z!^(lsY7zCp>CXegdE-RlJqqg`A|`IdZ350)bBa70Klb$ zS-~0!=hp>R9s;VR7Yp0`o%|T@>i4(zNwQhz*eBRyYnV?C_`^NH579O?#6ty`!LiVz0Z8n-o%)^HA;k1vV&}O z3hNE0;o&})?wf|X(8~{|$$}N^+3j%|mj_F*PoMYO=x63bDMLfEwKsmP!PgBv0Fmti zuk||(r2_N2siB7UGp_chV?0WfB20RE%5wK3S&q9`~ z4R)n?$5pD!BwxNjJ#64LA*O=b*a!?*=8MhPKn1F*cciJ&JT`LYZiJsSRezL;DuB02 zJ-?@L5}c1QK5my!ODVpGAY=TRsE4>Lagctd9^NF+QTP^nG$sBIT}C$-U$5rYA){Lh z@*toYR_?G+Zzv)iT}{ZPPnDK?EMLS&6(v%7fpNwSpY* zqrQ5-{w^Ih-hH?w%D{af2LVo3?@GrS9w2gP9Xy1_iEas@VLKi}gg(UpNj|fgaV9>~kC)@`@D-+yOKD5Vf2IFxPY-X#u>hWnsq>YJ7-4mN`x%$1({q_n|E94~Q?p zXMB>F|0)~mC-5HTdw7F!bv!k{Az=JBR6@e1#erFWYM0jVydO@2a;X~xHaO1b6_C&3 z5)|6Yq61Y`i>Nezyt`cCriYO{in}Y#u85q^&)~&K4u6HiKjPr$1r-sh=N;__??$rl zEAV{Mj)tH~sEyjKpNj-QL|^3{IL($&;b^^cCE}_dOU=PXMCzMyGX3)qx*#)_MN#Lf zXTzIctHxLTz*6x3PR>r*4#$Vf5taTZU zt#^P4EhwU0kXzfHtgPC@fQb)e`MlpMk2kiZQx4E_U{>M;DU05m?E{>^>}I*^eE=-r zk?VZUjY>sBN0hf3SVwSJ zLSD%_efXmU6~7i-La89Q7*wfca0XTZg{^~01p$fi$0f8N z3|q%Xa-wC+{2H9ZrRzi7Z0T{9Nobin?qbcXBIIJc?OnBL2e@I zUy8?#4K9l3D2v{Kk*NOMDya+Bs3GB0y+n)3tju;c!mLr9Unv#;ahZgfcijIVOrM^y zktuRr5=Aa!id@{1B2n2xqRidq&y7KoDs1BXL8)kLXOiY)?fwU8@~BxB$%lB<1%gN2 zo-}GTddb*wvGSN>8+?_B3b69L>Exsl*@k#&@!N{_j_gbJ!wSCpxO*9 zNTTH;A1dS^Z{&V1rRFVa?l(%s&$O%~u&INQ-;G}dJGuf#C_{0(&Sc!MJVq}jQ~WsL9h9=8F}!08IyV)|55X~xQIpnB3RNo;a5q*cgO97&zO}U{43~foq@vyiKHnHX(C1y%S{kD61_)@ zarkAZw83W;R-h;zYLYK>DQSF==!x|}F(}%!r+}zB`--*%B^DK!--Px%lc^u{>1^^t zX3AblAEE8(F-6w%S(S$`-LHhJ0td-A8~=O&FlF8%SYCy`kQTXu?1@X~Eu;wD{so9^ zfZKrI1J#OogaFZ-0RiYG7_5>$7R=|DE9gTnrw@r=SZ1D+p+4sPH9L z>C2!VA*C@Fdn(hwZ5hVyRHR|$>%akOGFyf0isTS z^cGiZNP`|m38eYfGIA|sz)W}@NubQW2|j^8UvAt+DmLT@Sw_gBiCr0YT;K6DGAQlY{@Uko`t9y%eLEB ze-RH{&MuT_!~%u{dJ?ROPn8{F($&aXZwDMIG&;tU>gPsTd^XwKfrRK$#bTa2!N2Li zXRZei;4n2s!E8%TB&iTjjpFOMKpra#fKTw1MY__3CV2tFwix3%&&1=yZ^UwC_F83? zN&cvyq9yDU#!ZLuK6+*1`9aj@P?6hhHu=||2|AU)04=IUJbGaRsYIj;F)pwmRgGF3 zYC|9_Nd*UmChhY>uq%AVZlgZF5@+Le5)d24k^%?KHU*H}b+FgG=xS5+BC&7^%@)ef#;KjxKVimu*OiF%Q z8@!)h*~)~hU21>G9*;=6!PR=ktMZrzQlS;=9jfJWjXMt7=F`uqgbT=dQ$8Nc_~17o;XAxtb_u$-)g|T+^W|>58q`rgo6kW% z++b|`!}OZ~7Wa;6HTNn@2}nf+E0CI$@H{fy5TzO~)Z6yEhS0}pI2+9S@D&bbM98)R zqv0j|V%$-0`d0wId9A)Bze&INANWn1{t13Fu0Dm|FvjwkrK3u^-#n7cBWtTvN}(}J z6{Y0~mQev;SsWquQkh^c6$$pj5(>zJQAtWDqcH)In8qB9BsC@^6#EuFMME+I9{_&G z7(`G62DykC90*5r$jOt+r`5ra$VFH{?q4KXDtrY2IgO{;$HjB(KWS8cyGCWa(n`D5j3Ro*_X(6PT}SvV zEh3Ah6aF$X(`YD3mo7Gn{;=$71fQacB{n(Jce)xN(0S`K!qHOcCCod`_ikDgjC5c3@y->%`;&XkYjjwf|?%!=g0qV+9K^ z);Wx;F~0c=v9i}oX?XuzKsV@5;rE&Xy55N$kLhKA7%neF2j#=!%u}!p$ZKqENk0AL zdhMrQ0+kmhPG)4SpSC7;IbLS`8yyGE$ftNk z@zlu;rqRfU@dBaME_D7^y{na37ov)EVjph!(3KpoaO=tVc_=aUWvx!#m6-aX#MBoi zranJ0^-6Q<=i$^}E{1=m=JBY1b;8s0<{XnMy{jir6EliAba|L;^mQi^z_?y3&x~lE zRcD&n=)}y%C1$oRF|+N7nQckTOqer!9H1cD;<(WQpH@rv&SG~lf}$SbMH!au&px+3 zdxv^iZIGQ7HYF4P=_uy+;OQ^)I~^h_|9HxeH`WfWN9@;UxD$Dc-_ApM3EgaD3VoHb zOZ9G%TyY83_YgiZOVM`~V|xyW&6i-t@RLf>1LqNvm{(wz`G-W)xea{5`Uz1lT1)HE zk!bBX)CYc7^?9S2`LZBCk30U_vMqE1olJM&$iF;}e@B=}V_$XH*GK3W0mlfo=+f6r z-AlU$)Jl6*7;%v}Kb9t^(}jl@{(jnd>{NUeY-{34Euksa(#~7Aj69KA`ruoc7Fqea zoM&N>oT9xG*v<)b8_7l%bV!3%w5Z?CrA5(;g)4CO0k?^6l>eeP;LS^yTgebzrpU0VCtqn2I4@~d1=uIh|CcjExODJdBPX{pAu&F1}4N?PFvkHL`C zCE3XzYmHl*Ek4h_^T7)n%;({%-~}bo_NC+rigU>IBGkAV8G3>?C*{kz`m%<2IRV_t zlNnhgK^s_&L(?(BWn&}jaIajv$)lTDglOiq0n*lyPwc#L1nPB4I7*P<7Kna3T*pSg zZ(W3b)Ty>)B4ZBrlt907{;|CInCSQ7IftF4^Oj*rsz-&XzrWQs8So*(!?uMLo0~Jl(~@&yynI7Nlj!Kd~+uDo8NC> z%^#l?==h2fevdVO2cw;!okZ4Mwpa~`9N1icyrf*?n&EQ-0k`TVILd4NV|Y6}X&L%x;8X7=m^u zb-M()0?JQd)naVk2G zCE$A1`-c+VKqhKxKu69pI&vtTZ3mCd2?CiC-OQOL_Z18IbeW$xEu@Z#?DW`2PPZ;Z z(UrV1$$o8}h=&L{mMpd*6@C{7I}=h>GE(7E0wG*%PC=Au&cpr8k^32YWNam9YuG2c zG+9!NaoJ(Of=eQYg1Hhs4xNKRAA!?hhfsDf1&OO&J>$VHEZ?+}r+qXbC^J$IFjC|4 zLn-nu$xz-i5+WnBA+0X7J-vdELx~KhD^~)8xT;%2oR2(5;tk~TMh51qNXTd#+7OzM z=((Ppu!(V{%4mqfMu74tEMcVGElxiVv5^XH$eGeWgcZh+=9U#AlBi#2uA#{vYmHM5 zTO=XA?!hT~4x|$$@SWij-ZzUH9;4mohdLQPrSv7KVVx;`WzrhC1(L$MZH_H{y+Wb3 zd`qb<*}&&g6(j$;B#PM1KW;xZMVxkeVuBV$*g6s8=#Ge-0ZfXZ0<7ClYp||LB}KSR zm7eOKT+(2{Bf0_+K`e07SnP*GCUuiAEO^wL@EAp5Y~08sn@{PtCGxD43K^@rI=ekW zqyJJc;|e|pm+&AwWG$Ib62M{m=@O|YxuxC%J-49Yzp@e&=d~nvCi)UqvPD(`3BQYv z=|!H54M+}?@Sg{k3`C0q5|NM;75*!Y1jdDyScpHP>p3tOI0|YbS@< zw1>Hffy)SM>nrqZ9Dij>tYNLiWmdSGtvAtD+Jv^!1|@tVh#KV$PW80)p;(R^xHwg|p1reCU+inlZ9cyF)F>51RQNAUeE=$5a| zqJbun6S9WhQ;_@{7u#} zo&;mD67I*_m1kn|M&O1}5<`gpc-vmH{d1!ZfQ3WqDvXmCEf^a7H zYxN_`T3Q{?pfDY#2P1YASCk~ONQqDiEV_9Cj6WKE5A(vBiDV- z&^7&uzO>6(dY(tiMc>R7MA+l2b1+nn$=0YiLYuLWHp7OY#tlv8Fo!qfZ&D8*g3s6! zcqhqH5MGrQc4h=*wA*MR8;-TEWpKB#l|mBfjI_qW-Q+}pONpAS2e@TaQyd;Rq*Q0$ z7h?=zRqLK2W_>U)Kh5nORgt1v7MD_>A6V_$EqilsE2|6#92I)>wJ!fS^~hKOclzkyGU5$2;Lh0aB!{|GqF{2f-uVA zO?D$(#$HnIOS91*gRr9(Vj3x;^kRKjZr zBPsu)%+vvVdN^fo*31kGl-#A7Gsjqo693HPbTQi(dz_i?) z5v_{4L@E9QN_FSgUzH^ynkknI3dw6v#AN|D;7o;&l4K{-e_44S=5nUI!VHfR?j#dT zQ0IkHJvmDFBN6~UkfG6LlCZf1I}F#S-|<9SgblS%8-+^9!`5gv%&MsnTs`7 zUZr(l^ZUA5ICMQ3DW(FZ1@et+(P{S7owWBDzqcL0&ypjk-<}Gb0*L_U>hNB0X8!9 zCh1p36tUkLvG6!vc?!fl$J=%o_b(-9T}BQg#6+vM*g>2TWvqkd+4c;VTad^wZcUxJ z2I(^?eut9FY5T>_hWdEy?Mli=(4R<9B5IV2thkMlu!2fI#!Vj(w`Xye6A|kc+BY3z zr=a;n^b|Tw+pszhzdv`B*N7ekP&&gW0+la$>$;{URXX-gJp9Gz$mwH4N!ADY$33EvpX3_@gBWBc?F}HO9BLkV;tpZ zBFNjFOpx0pLDor%6UhYWkbO){%A}>0*pTGQ_6>>oaRwr*69DmtkJEY)mfa5`p;2Yliy-1M7Fc;WYz0_H~SQ9qL z=Th(0d#BT3q3K#zFqWNSnx?8}2pp zx7qT|e+TFFI4obO6Q&;!GhEnuKO$bhh1a?VWiI)egY|J+P8>Lo2Z>GXm_OuE`ZFtu z4yVOgat^Z-dzG)3>4nzoUPjI#d0?DP9#FNl#+|f`wZ_1Et@>*JH2;-tt@(e@);|BI z|7bb?6aQ)cf1llQ{=d48J^!_5w>tmt?&0}=e2=|897;^z*^>Uts43kPM@D)k!iG;| zfn+2XiyUXto?F~-WCgH-S?s+K^tw1`Q2w+1 zGz8^;uyV7Qfs%j@KcB4>e}%ArVT0n%R@ zBQ!nr{-T8YWtftSMkI;3fHcfug(zGgQJAxgeZX(o@_kAaE^;yomrE2bvIL-TD!;2u zYp`aCnH21uVg9?Wygx;DDG2`%v(tEsXnB~tYEu($5T`nW4VusyHt3VYJrT*%he@7( z++sRe#5Ig>kFb0|KkLkJEV(yZ+|riiT_)Yy#Dq;&69BFS^6m|tS>EM*oZQ}+awH+| zN*mHlnF%aQoZp!xFJ@AoByo?VJZhVcnDUoj4`w4#9(6RtIc+LxKGmUL(<=aZlt?#O zldHoCB>h|=^Ms-1b7Ny_zAMC6Kj7;}33>XMOe|_=*pih?E?#R~e8iSl<8r6*S3@iE zCf7RLFY?deRp(eZiFjtNm-1M?)|9v}rsAtZJcE?*I?B{9Q^l&roA&%&$g@~d+(V_R z4~r|M3c!N#<5DW8;jrivOn~zKp_%!3C)0t$q=VZn3BDCN7$&uVI?2i%k`B!Lxsndt zDRkgIHXW>tC#EX30jo2>c6Vo{1Gk+H@DK4Qz4(cxz({WHFsWedX;@sn)Pcw863q7a zgqi=pwftr>CEi2Hrs>xmCb~{JjW>?q)?(vu4#r>2mLG2t;4p`qofl!5;Ho1m_uJuX zVp*NUGFpj=WzR?r06XA$TPQ?!T72fPo>{XrhQ@959i7S*zp{5<5tsDD?Bd{yY$ei<_LB0)Z&juH02&34z}9nG*FOnXl!0&v*);F~@b9XZ zh5?<6wV0KRr_eFlOJY1d@ir^rk^kU9c@1p>+7dMrol87ZY^Yx8khds^xs?)g?KdiM z@zYUrK3trAiizBpoW{sq>98R;{vqC=S8!O6hEK50bHwY}r!criTWZE=@sMm@#5tc$ zJ%bCokCHFsSuf-XpM0U!>bw`8LLxVBTyjBe=95n8Pz~J>$O3KyF$s_%keGC{$QJB0P}9?zc@%XP zM`zU;b#z8WT)>1S0aw5cS8%1;$l?agmj2FitGc=q)OntH-{<}QzX?>=t*TqM&b{~C zbI(2ZEOp^mI=jTnMqWkl8ClsM{#&PETsDevDT?cO6j3h!CPqECIA3;CT>L6c{;RF< zlot%Br@nF~66Mt%MNQWtkCVKphzG_1!5o1TQkQAhD9YPKowQh)@1y z|Fbq-9xW5{cqK^qEQHb)b?_NRkUT`?BJLNAR!`0}4->iq??aRQCPAHT!V6J}n8*oP z|0a-?oL-TbTh=kv!E3@fCPC6N*-w^Mp`4Qf1i_2S8jjxH4Z59kQbRYb_Kay?pRbMF zjkM{2<1$o&j>I`W7@&YU@gp%9v?vbx;3Q96>;jW^bHsQ<2TIoor#8kB>J=l@9UGy) z_-~9*5koNN#97AZ?H8PFjHaFtW7M4+O&Ft}pLc=@RMQUJJbF;bT@$(t&`Fkb8}o`Z`jHq9ZVTQGZ|rwM=X+9H z2dAK4G^lCM@FV9X#NUMHzlY}(O@s5O3dv=UY{8*@V|YQo`1p3?MxB8C_7Zn!p4B^0 z4z2>uanzO}@QK{x-U}KhUhTb9U6+C}+-N_*EjbUs=(XP<_LrPlpYWyTuMsHC>nw&* zPN6GKZ1_|}j-{?aU+7LRmyD5vY4r;+3z=j)jJbqISeqf5hzVe?9a% zKos7zKccTk1?7$wS@ESTe5sFkiGo1BsAov)cpmVHBj?zqR$NW~b#Alax=+U|bDI$? z^*(`NnS^1zq!Wht$@={Bjo^E*m6yuFB(wxSjAXwEooor2V-zQ%yl9aPqkD*HC{qq* zk-D|{EA?LFLA4km6Xn4u=^;0)exP&|J5CObdhB{Lt#wR5gxo+GGuIL~Tg{%+w%8n1!-XNJjgyVxzt)F)9E zq&}?gB6Slg?RI*YIv)@Q@DjefAdRsl8L)F{xAH-^vMXzE771?lyoWW!sKdCOgf&z8 zr&DdAhJnkXq`NCyr9rqh9uQ@^3b*p$7V^!#S=j#A6u{k76>)t>hlD@pad_~XQ`m^D zn$A(RJcaj`-@eFf>e!1J-vWB*|LnA{_qG`R@XmFxhaCE;CD5{J3VNRjrR2%22U6Uj z${snoJjLjOb1li&yK%v}un)?Ww`HQc&6nf~XNoQvJ#zhx=qb#8gWURAitKN*gzb>G z*3(=Z?BhI&!kizDuq8_Orft7r%CtYD=WJ@-i7g4EMwqd7)1Py)i(9l@!tS+ zXs}+7>e1mw_{jC!;@2ZI05SG-sGv>*iG|5CXa}ibmInPSHIGVOo&$MhEw4;@f5Le) zwY-^Xf6fcFD18 zLB$}8*D3>wvo$I7fWr#BTFW+alNuZ@`#(MHJI6qe(II5$M#LajJO-uahrWPE*Pv+VD z2a?B|?b4ks=nR&!#)@i^68C=KFpAD{J1|&-RQMWB;pYo!&wH>O#>Mbu$O)s%sD1Jp46C+Uy1fV9 zngDIoDE;C|Ktfo1^}%3%k0-N|KvptqC+C{^`U<`d{1UG1$AID`^Lp8twJYmgJ9^wh z&<{ZcrKZ#*@^lLgKp?`M<&YC?E{gHVX6!(B?u$~>b13}E{nnQk{wJzIG}Gj^I!cO- z?b2-nk}=#<#2JYCW+UFo{vDZi{|>V&_id@E5xq&}9+sMxPymr`lPG7J8?ejlMZ-to@dZO9AAy_l@&qyW)~laL{|YJ0`Gc1Ch-F`Xs}Z> zXea4-E@*9Szjq0+qF%jlWxQ^S6Kj^AnI?*veJfrdypL*JjqrmrKZ@VDNNUFh%89b5=B zyTcvBnG3M7kaJi6a)v8Oj`9F&G?aM_E4}6v?mpFF#E$=;At!{IWiXdlRZEObRh*SAOy$#AU zH2%aSV{^lYro(U|>hkG9ox1c!Mjm$xfxMjGF2T6<4$}bf3<|qoF%$Ynr&vCT8Kzab?Jzti+vz8hxD{ZP8}(h(QONxP z-TD*6*Pr-G(N(@D_jLUixM6E{lSqEtrRh@BJ&4Hd+p$Q%`*3;G7~dT7qWc@jXqOzV z2^coF8NcTJyGJ=ATCUwqZl(tT@%mhy_y%-Udn+{;d*^L)4>}5L8Za!aE@hi%(8mCf zvS_5J&@)3@gwIsMj?Bv4B0iR+~4tR}VwpjvtBk zHjLZnP4VMa3KXBlpv3UXWZDnD(GqJ7`6U^3po=sxRm60}R~fQr^dk6H0an zDlav4(uB0qgm^jQ7~|#LxZm_C^$9o2rKk1&`32gHajVopHYPIRt)~nX-6xBRPM!=E z4egCY9m>vdzLw>4$nvC?8 zmw5XjS<)UQ;Ugq#*L?7d|FatrXB8{+wOiY3YwlA3OY29IA-G~;?uUH1Wz<@2cs zDB*g;`XpFv!1g&5b9Ly;nEw@?9whrN$NgqQkux z8`f!ZXoYp3%)ZEdFJ`rDBghOT7PBGsDXk5?g-v^XgVC!tg7D+uc_jZe7U;0#qiLO!n=v^#Pz zP1<-q$rdkfJULuy+D+!^E7J3xZea!-O3VCOeyC$WcX#O(bBbPAO?oCQLu7vo?SkZF zwRH63d8-ZR$v4tkT#GrJghB5> z!?`8rNesd|=qO~B)-5MR>W|zQ<990z_pLNHO%A18*_M)?OloBsUf?w0-;w5479N!q zrz&ksNnh`b04D(y=mZh&)6&}aF`;yJ^wr^f(cC?p-z>f=0nUqG#pOb~Yta5ULKV@# z{YJXAN4MbO-fvzHRH*=vb9YFAX=EA#eYYjgr1d09YEdAeOtN`XgPH!eJj{`kwO8G< zpSMM9ZrU;m7TM&ABu%m)hiZ~6F#cRY^#6Y$3|8Rcr&`g;p!q9#(7yF>(9qauu&Ga@=Y&*nFowd%NX+kERA z$ETYJ8Kl56ps5{wbUsJ6C1V`n9&v1COg!R96pzG9MuzM^i)7?{-0{&QYeF&-?xpK% z06ahsaTV^wiSh!Wpo#Ee(>FPF0}Q;PJ(58?^xE-2f?n{SNrQE-*xk3GG7g6RXz?Zm ztr(*kd&b~?UqsgkjqFWfmnd}fB_D`h>(XJ4Bnw7?zYT5vQ5v5KBN&GgMF*kKI{nj$ zOgl|ZX=4p^fcYy}Tmasw8xM-U>-$ZF)Fa)>$_zwhTF${L8G(28;tJ77;4X9Lj!a+u zyKs$Re@owkh0emJiXBY-rRA zd15{vpAYl->K7uh=5hI7MV1E!w<&y;&R6MgHfwJt;hWAEkcMmzPeK1ua4sm&<8xDB z1}5_pO}XwAVXNuGl7r#sexHOaag>YQc+5aVS@Zqb#?96?sGm5og+zJ-|TtE~Tlyr(DrH zunYa!U{mPwRbVfCU!YGBp)x}jY;8#+q~12)s8af2a|o5 zA^ySn8F?I_u=jFVQ9Cvo;A6SNJu&(Dc3>?cUE~Pv&^)pO`{FIyh{D3{$_~5#(`4Vp za3AQpYNkCZ>VN`Uc&u2xUKx#c)t}Mj-EL(E>CgDTm_@r|uyAgwrm2g!C`n@|L~00F zFiiDiV({4kRGm8{HT9*uD2gk!2$dJy<3nB!w>P(7z90p%!JW;(-pL{F)yXc&@h!48 zp^{9P&zxU*a9hz1#LJB7AC_f^RSA2fna19$aT#r3sCJFiN_!fgt$`S|F zmG2@bBm#uRWoUsJm=mdKw%8r8x^mx;*1e5{Bqi-e%;Hg?)7ui^G59@M~Pg| zN-)6C@s$=hS-X%`A=fbv9YMHK(!;%&UXwurVgf~dCQN`%&qyX-R+z#f0)$agi}W2n zOnO<2VZ=geQ(pKUo!@!}ce}&C?bNQjz;UGp$Ei*u!t;9{uwC@0LjhyP;-ngy@HVE0 zar$LU|M&&o;!UM3UM#X1bqh&_ZmmdJ)fJzysPvl?`hFizAWXiuVNe{6l(+X_^3_ug z7Fy)?LP6jsSq$sL#P<#J2XsnV?6qL6MK4f7ijD~NBRM$Wncl20Q3^vaG&!nxET|RK zQ%oB$FtwIF5}koc5=1?HV}hl9D0d&o?b{oljfShG<2jhmo+14RskPM7@gUY$zwXn~ zM)96R_)UZ^t|l6Imk96*VKxpGMU_(0<*;yQNVEsVz;Z`4{f(fr4`m|Vjd#UE;Iz^> zfAqj6@qMSI<0<^Ue%+_zC6-t8j9bsk{)s37Fzjc}wBR1lUT?2pK7u0M*%H4Wt36MV zEAlPdaQ_yUI~TEgv>w!z3iJzhBkkW6QX2Wkak$GH%!5^jHzOpQk4pdO?fV*o?c&4B z_`yYpAWF{|JfgX90Su5g+e_TRdBj&0&_G8fb6n~*(1^bAz_q}59d&Wf6qBym^hr;H zX48+=NA^d$YBrHRqH@rFL-as%qJ9%jhw=4?1&F^TL)U)-e(|V5B(SsxPsmmb#L@I9 zS$#tVl{eYs9@XHMilvVghH;Ha@Y$N`{!C<-r9ddzNQP1G#pcRwk=FehL+oH!N;gU? z_N#s0L^@SqVKvC$C35ajjH-opU$E@miClJ$Z2lTUbt&(Yb76P-9H}Y27wuYfoZHND z$Iqmu=@wi!tQcq-J~`wVX!3sMR=%cHw`LyZ9)!Ds>TjM$&Upt$VKc72RkxzL2OYqo zZhfbhE+#|((j3a+XK>RWXZSp+DI?V+Y_@^`44UO&8I3C}(cx0l9X(kXQfCl*WPB|@ zg!^BUh5cC`bsq*IH!%NaqQ10_tY)afP^`iYLrqekcMnZ+dw9ubB%r&!Cz*hFE!aD^ z_M}LsKwZmB^57eA`9)$}EH#rlru9^E^=r7i%zD>g$Ad~gwqvbOoGZm-@^3Yx(qEZf z*^OI3=iq)XO2Cy5l&yeD4rLo)2+U+ruNUP5Fe|Nno+Q;fIwX{b6L`|vhe-axz{4-L z|5u{@-RZJ>(C4(vpkBH~>@Q&B$%IdTMO;A%?P2NGwa|3KF)a;%rtpsi|DR3)d0irvPp zcKoey@v8dsS2S%^4I^}Y)%~AG;`CLKdaKvHa#nTniO3E?16EuHKc)n&& z?N-{TS-&Q%rf&kfW9cv zL&*z@#%3}sHudj9K^kGPC3}>W8A6c4TO;TO87R);TRh6aj&p?^q#edn=i+%VmL?D( zm|*gL9ve&h-5A3Vm9O_c!z?83)VT(I(aoku1PYRF{SuozcQ;V8-S}cAl8a<)T#B!O zl}+}ZM{$r_fg7X!A@XRW6A=pG%9N#Jt3DiQxW1Lb#3K9#$xL<<@o#$MR5Y4w4gW=$ zIaz6b(DxXIQ%nip<%v>uY2zeqUzA<8#E7UyV+jX{HULE>PINunW}=GodXqsK#a;@C z9o7gg-dY;I16>V;oSCddc!bbU@3;G27yWkZ0AjY2M4B^Q?amAu3dpH=0h^LhgC3`QEHocC}uj=>@X-rs<#?9eR00!o$=}*M3W1JQ_7cpwxr^&44No$ZiR0}yF2to#q zJ>r-xq%{$T1fMe!yu9iAkbvoGWpX?c#3QzaB$*oirMZ+zfX=gz+S?{Yl4+;!N8vk7 z%nxf*>d0T0oN_Xc!4 zhT*`4s3qvIL>Tinv`8CUj_(7I=Z8l};>N!|Q@8J6R0OmNe?-n9fk){w^CsVrJ}Z2e zAR$WuBlaOJ1B76^gjO~dIrpEMOeGn~3Q`eg1m(=@1;Sdw`v76x#*~Fj&}4ElaA#J($;?+SQWip$Hqo z;WgSL7>ew8$enw%eukLoC`8xc*nAg$`o#!G)jJ6b?rR4NvFVFLU=4Wglj0HX%wD5C zdJG?Z{RAx)|8O~^k3TE2;TG&gS~dl$Kb|nW^`Z8t7$4omg*&nE zUq4Ih(C|Y;*#PQEac&mplj8hmaXvQmL^tv-T|a%z7wdayGBlXMQya$)_x?=GqIqm# zip!Ik+AW*dn`FH}Km;!nd3YaP?m5yM)b)RlkX{<@ThQL$46}i8MWNGTvlbT}?Nzah zCWlG}n%MUS_9FXdcv$!o;9gbpUS+oIo_8apSZ(@9mnaG+EQl_GpF!sAhGgcaEIJe9 zZ{;ZLDS|n(xPq=2b9OT`XUC~QG`~BVUl%OK;Mq&CX!i>i?f!0AH04#&bv?K}qPqwX zcCC6bP_LX1BXKU5h)sKZdnD#?N#oRXcS{>SAWm(4BBy2wW-H!wuh?O6h-N44%iz$X zk!0hdip(qr7h2E-(5-8F@=R@E6AfHj{bMIWFolfmWog|4kweCnhXvyng>fS=kNB9V zM>(oCK7w=CGzYA3 zzME{01V%tZ(JY-$qF{2Vv4pfwTaYO%qOE^YLb-ud&<<()zPO$^A~ijjO8Y>AVXhf6 z*bB?ElVZL&;=q-tm;uw&7ylt-cn;*uXc~O4`)TlqbSrP)?Z&2?Ma950L~|lc=|u>A zh6nu);3Ti?7W3f_m=B#mm>0r)=oIterQsB_HXn|^5<$FD3S6A5slj}uyYv z;7B9k!rjr|aF42)3|^of4sByOgLnx9LDR8f;XC`t!;ssNe$as4IBkdJ=}FT!R~;xWX8;Pgq(4)1@se)c<-xEGWWn5)4O4J(~Bo zwY_bZ*xSxMXPv^@>z!!+k^I5k4tMGH;H}L z$)vB~R!(T+%RT5zj15Jrs)c_?bbwU%0}C}2u(VrWB8B!BU@Xy#IfR0=$hagb_`Ty= z`JO=sVKl4f{oSCh(G9=%nRM&*#P3Cz-)j$VJWcDBG+M7f1)n`B)+_%!$*fKew`dJ? zlTeZKVxd58@=V?o93p4KOBnK*;YDY7ZGhb|pJ;?wA=tDP0`7U-vQzZNp4Vf&(V#67 zm?|5)rO<{5t|NsMs6L~?BsE1&&?l{8IYO(Di?t8by>47R!m|uxCx@RSzLxYd%(8;v zJz)M5bFDrH11Dvsd>p4>0B_B?c>!)y`)=X>%@FI_9JZf&%XJO9HEF1=fgk*qE>$? z8Vo?u5$INpz9IScUu4vpTYZJ#u)h2;a8)B8ijcmmmOp&tB=e8WI{#=SY2l1h(HI{$ zQY-2&SXB6LLIDrA-7nT21@X}3Rjb=t(EI(+o_--yM#=>kYUCFUdHf{ z=F;?pt$Dd3*&Q06hZ4}%gDI}iYK!W6h%{j=y!-DC)mdET{SIY*ijdKq@=kFp-|G9* zPLBG{iY0Pz1dfS~+i{L-u#rwlHQ`i2hGzePdOxn*{l4wg2^g8)p=9X$vE&2^r4PkX z_TPWYvk~D!0`E=`YaNSv6Wk9Ei?T8DSkW%|bZ!qjjqT%7j^P&Q84_vxzW|2kCvtE& zumPys=0c4DY9(u6uP+mKIRib>LdO3|vb)!(Fwf&2t?X9RZtV~4xb+qSK8rT8aEo*- zyqxPyk$#Z{iJ%8HSTRPiCASqvk2JLva;67bR!xGDlkQP~_8oN%Iue>5jY&V;7vvDR zrTNO+)1o`aIJ{d|5@^XJfr0M>lrQFD$-l7S6n8sv=|TQPwp;-TZK8CAYEmr3-5qB= z>9$OD^K;ZUKvD}Ma&Cw3fXiQHI!&gKiFRit2E{5lRMV~9*(*<7@X*cICe3 zbrU*@`LkPm{K-}WKEC~Iclh`o<6{m>czq_t65GDSf)M$>K0}c&)q|TDC3EQR`)3#> zbJSPiK3SGfE#wN1i5d(hPZBLayPKcUvPV)h%R(xf>u4A30-;7gIsP z)>a(!G?l=pAGC8ysQ)!E$mM&Ght6Q2(LWLD(3vCgdi%7Yj;+JHbgA2rVq6pw(M5vCbsyP4hj9Kp>PZ;kNRxHXgx$xABO6PFz24 zJ3;={G{@4gjOp|al!0Fdj!u2!Wu&$~8#{a$^QTBucqHtzhqkvZ?1*ujQ6GYQ3@FFR zo<>c1iByPtk{dwZ#i-}c9%l@KgyyGtFL>#F!~j}wP5dzVF4`qE-KLrTp&AlkPJazW zE$lRo6@YsL&x3~TuWWS$E7SY4U*Ge+eVtjKAO}GD&)Z3a9vXQLEC8Qt=N11D%)usG{}yBrrw9*k|6No6+I2y_xUDIsIn(;-x=iJ!_iaY zzMDx|!D+KA?RNh`sK=v(fL7G;iW$DHuma}q_f8jf1LQ&l2XJr%^q)JpAcJNE^H(18 zx9YjiBP)bmT=^mn0C&1AnVOgA+4f9Szd(6DPA^YlAIfoL8|8z+QBQ}HP0x~I{&a)h zVz0NQrr|{Qx0@-r6#^Q2#)41c zqkiE)jb1Y{_5oycizr@PcqU)`xq&$?I^w>ozCKLzB! zDX9zc!%T0rpjIzNyn;?Gwkao2VedoU8L{HR9@rz&g=$=JA?_!aq>zvf4MU?qZk$<% z@{YAb>8~fFqLl1E2t;B&r1P54>e0-|AqAY|UUCJlTpX--Ot5FFFa3jctr9lvE;6wK zcmP`&S$wpx>Pc?oE=`vL7bc6HIn>MwVz{zQb;d@6!cyakG=%nWGOvK<=uY8m>fipM zIT#|xZUz@a%`ZmI=3oiub=sqmc?FiEtDT>EMyM{&XlK=B92*zO+VTt5P=*zl+YBV# zX`?ZOyEDIQk8lW=BkIR5B+^NAC3)-N6ybZ1=;Wd&@f$Vpd2EKJ69!vejIxfkCDW|~ zh6hRBLb7Aok?9ULWDsc!IS(Lt3oS%t_}#!!c+8zhPlj_{j;d?h5ZOIPlU=NE?W0Xf zVdCd|Jlv?$Cv;G7WoN>EshhnsiCuAQF%+f;GpVcKJMB+L4bD)Hs~5rN@}!N2xLZi7 zZt$I}3o5A%cL+~Pyva^t*$0KYO$__42+-HD<`C!fs_qI=WuY(}!@l z43@UZnc*i+8|?$fgnwzg#$mG$Xt_pYSCTi99QBF6>k57=nMq|Q6HapYl*9PHQ{?eq zZ4UoQ_?3bYO&Y4y{ksPL ztxB8P@)!{5AlqLyb%1i zdc#v;2gF8l*adKd^<4g{3;9&(kcCsR>IBkC7>4zWhHQFhp?a~ z;eS7`@eI`YB}8nrFon_}U)UWr`t20{w{A1Bh;vyxH~UgXf5g?;-c&itfP#4zE;mFd zC76?T6c4J`|3gC<_#OcjY}ifoJcc;eo)jB|hJlc{zZE$hzrUry6J8LFMiXi6XV`Op z#8RJ$iT_dZGia+jSPfYQxpLoF;?W#)x2sP+)}7kylFMVRyYIjvizu?yghx_f#!mV@ z2{3+->0|d(dIP3Ezn^Dv>xDdXmxy!Og)F+*a1mb@iu2J6`2MFCqQ9_&`Tbt((vwl| zRFwC)T)Er5L(vzUQNGLaT=Yhi`@)hr-gIg8f4)QnjSIm15 zM{wuEk!Z(b*t+P~k@%;w?jXeFQdcN#@lYnA>|cknEY>K(i4V~Y8hgZ$kXp8V6AJB~ zHfz&^e`gZ0p=wIIu~|h4IQ~Sv`u~;IQn1QLn^9M&jBQ5UlH)5i1J+rj?Ys<-6@~RY zk4k~+s0eg_P)&iFhp!dVpGg;-(CHf1p4NEZ*GE5oKB14&u?cDoO)%m{Qk{&`%NP9> zcqkH$dm7W{=lYF&5Y-B)a_ljtYRq|3E zAk{pVvV-xVRL6(U)ikQm4)1y7NJM*Nf2ZFxa@<`-Q-ovwmZ{AE<+nCD}Zue^py6S=prTv?Bq0pX^ zuDzO=VASIlB z7U@9>5<>lvKbpUYZwsfNIU0NP>#Z!jDq^u6`Y^fZFA>dI+i|1SK=k>D?g>?D8YZ+? z*lyrscox1y=R?U)ybT?x<&k69n71Ccb@Xi!EKV1{m6_y{Ey15GcM5mU@$hNl zs^JSfKT;VT&!E{+Xw-$hkg{(j`TOo(=Gx;K1*v}Y$<6pq{ zL(j0P!UgxExX612;yz(~sz1lP`o~=nUf_Evpm)cID9=TFM|4#4pTMER2nzH1PMFRf zBpih@EsSeu>pN*TGC>#oy?b08`ai){+cO4S^|y43tMA3(YNzS!xO()zkE?h8@hrG{ z`1vlly5Nu9<7)9{Bd#{Y;p!N87M?@)Cq_KoE4I81__=WN+3|DG_u;1{+8ur(z73QZ z?~)_~GIpMe{`na3WaT(J@$`R@qsk~>R6a$u4OoC!T!9U7D`;e3+#yvo}RZ z9^FnmEC873Itwk!KE%c*4~{6)CLQL#e@Fk_PyL5cguIM87DM-uki*us`-F$xH-FED ztHN{zJ#Zeu{u{Q1`!Ckj4`WUQQ;P({^6U-IMzr{U*K14=^BeJi;szGA32@99Ke9R2 ze*=-1f8<$B|1rM*#-~&FVSH@(B=-;H>39ctRJH*+hZY|1tGR#RR$cQ?o=;EgFz7$q zXCjBeKG9=-snPrDYx0^ecx$s~%pW?eVTC_*^`9HDINW_vj|U^;1KYq zYqsBG>Q3&0{?AZAsO(>lJ5cXIItLAkUco1?JV8?PKB!)_mD3xK6`*6e?IzMY;dqEF zifKoKKVp%VbEF;Q&uttfPs1+M3PQb^u3>pDoh$qlm!w~oQ<8qEbmvy`RQIfjor!%8 zXa01nDHd;WfYh{ymwBYo*3=?P&NJ!*3cGS4c{BwB^3DS|E;VBTJ~yg|TQfWECj~e=?=8X02a8Z`M-@63t z5h@fO5jDn#$iVwnbc_TeGCWS;FL{eX%Zyz>`^hQ}`U9H-%|M&>db6<&S0ur0tp1%_ zn=nuXOprca`UGLF51*^g+XSD|O8y1>A0~UVxzPezqm{v$7T97p`a7v;+U0vyY31h8 z-T*|voj>m*ti1s+kU&)mxKS!J4l6KD7*udsz9;11g^go}@r;4a06QKq*vFxH+UK0Z z_fbd4iCe1EP`PUTwPb6L#*i0G_L7HOIaJ?CVj=b0zu>}EUrnpd$9bN91eOx0NiX(EmdSr<(ejbr%2Dzwr9t!DQc9?lqCu_d1CqZiN*HhOm(W z3 zP8-l}5+U^C5}PPaG?GI%7jw&lNxY#~vMpplktsDjhhcJqlXsG6$d$WGT36hI z{f2vR+d022#UkD`sQia&EV|V8Dw%v>Ug* zTMh4^>lAwLxqo(f&!1tIHs&`A+m@@TeUP)OaGDGn{AtXeC9M-!<-6&p@X$ZjEZtUW=746aNy8zk{u$OQ!bfai z0qLhL-3Mf04kw`l0;M!m^X^Af3dnGQs2~Ndp|MR;`Oox7Qx`QyL=e@Xu92oU4S1LzGcAO24g#0+%`h} zHS@@1XVCM4UIZ;$gvBV{vcZ*NtJIJps&162Y_~n5iuPCpi@Py!*;b zu77cdj4^ab5_%Ms0((q6j2c&1ac^%q5rwFF%b#(ott70{-}Au;&)+R(ru?H^Qs8z` z(IRpLCM4nxP1%s#_rx}->VKy#;m8+Qn{m%IQ|%8Uq2p%sC$NCzZQJjp<-SJ5J~_!N zr1$?sQ=laFZqZT3TPKbF0^)afGrH{VX2y1RNxlZ%DJRhq8hE0(oy|;j_nn5F%?#tt z=0@Nh8v(%p5q^G>)!Hi7L*uWH#jizf9!cuoXdD5fs%d{^Qr#Ph37^wgw+#Lq3hF01v;eR*d@pK4bQ7fKvq$0K^`y6&f4|(G{~)cdly-df z0zR8~f|v3a(^9YqdnQA@{}GMsU__JHV$gv$N2k!cXdF$^%uwq{Z{EbjC4?ZHl_Tv_l3mJnq0o=oCq>tT=Sb*d)2Xjpmkw0y&3X7CM$2dL!0Xm%wT|B(gGqpiCpW{P@e~ZrE7*o zL2v_pw#co7FsGUd!|SJV@JYOo2m6|5%dMSBF6CQvP(lnZGVFG;FDEGAyIVtAzDC*O9uyWG zymAG55WvfId&o=f0)34Q}8MYyF$yN`~s%%dlrLpE~8|$nZac z>FYd$hooOiU0S7eDcaf5l4}HQ>~d*?H&A1=o=g%5FSkaLX^ErU~C-3j>ex)VI_-GLW7PQ>Cj(R?5) zui#{`iz&wIZe^?H*gi*ncNO8&OIzY6gZ_TQWbnW(`ebmqW|9N*fVIm!aN*WuvCiOm zKs~fB64h1eXrN+W7uaY50H*WI9f({7nMl!Xy4w8%A)XC1%I^*>pM|pmv?fjv>RZ$c zP-XzzKyk(Uv?{d zM3cRsHJPkFxRRReSDWLT?87yBleMYdWrq2aXDXOFmv?Qlk6YrWPW73!aZMIYY_b>r zt80^4Rqrpj$v93zDS8#mp@|eZK@?xz!LQA7g?!puY3en<&>C`ekw;P4*`;c^9UF3` z){t^SL(YtF!(A@U+Vz#rru>#L> zIN-x-$?d!u@Z24dsP3T=LJ-SdVnO+tM^6eyipjG)s5eIA!U>v6Rz*hM{p z$JMb(wp0-~$kD!SZgb+beWqP`6_5c&5PpzEk})Y0F1j%~gyxeA7^TbAU)@WKkIPNI z8J@tQRYTj7O}r}g4cU}JB(guy<6Bg>`QSN|Y=A2fAio{fxw^c7{8_!uD)EVNFJZ;k zMyx42uTovXhf{EW+a2_!xr0vND8KUL9+mv*NxT+E<4fSC3eD)X@3ul(Yi@ZJR^S?&`NbcIZwE|4oF`?VdsHQs7~eC>K!P>NcNpn>&%4x8UZb zALaYT&%H%}5m4-DW~y0ecOI1oedQk1BKto#)2{2(t?&VI*LQn8%{K++y!GR-Qg|PV zaB&a;{K~I*t}_z^cw--bmcVi=r@||uG5IY_yl!+`wV(B?5EyJJb0j=E%Kr3(e>4~q zTrU7#1`?2~N}+xzu0g-kuZR{V`zPurtdDmw_OA!}m-?0D#(H^0KtQEH0h#b0T9smN z>&fl5i98Wv6!C9>fctl*gugJ_i*Oz+uHzl%_hay3-Du`PEyiGJ8rdncCChHf|66<; zn#B#x;z7T}8&P_z;hxmgh|ymj(B)Ff{%}Rq0Iy76hQ{XlL;tP10P5~tV8EhL6#0DR4gI-h^YG{5r>41{>r`17x3_2FUuJ!I%h#RzE{8lao>! z3*jRqM&W)7_vvKcz{>9M3G|1`$&OfZ!8dwxJ|q+3+0uqDDZowA#;o!h4q_O%6KQO# z@BS)+t~Xbm<3OLy6P-e-LlD3eWXm`5BnH7amGz9Q5_hsoej46ZY(}Y11giaUP>w;JXaOua z-;~X7$>u#SWtA0oe*vu`(%LCVA2#+xxNe_su&3A})<&!4+;648?PdY-X#w#~xS{g2 ziT@g%sCfn@iZFmEf7uj!e}~kx19CZ=qTWMZ*VMz5QbS*J|d<>Yby}7nf3K4V$%iuzJ4S z$l~i|f4iBQ2`+|0>(Cd%d5{-?k($Ow4PISVQ8`)-oZK*C+`eHiz-Ll=ELsbVjw)n+|tye@|rfB zqt!*VJd5A8KxiMfs~thI+BWgz_1jcd&H~nETmiIw9~u}IoFLHrQK4O`>)>YAA#HwK zk|}L$J?1Dh+oZs6>E-1>pHPnw++rLXh+l5=R#zww=bI(xg}*fkc?wP> zxmy?ahOZuTOf}oQhtOJYP%Byyq7lZs%&J*k=GSHO%Q6fJe<}?L3ppH?et||tcJvyq z*Q(u-N-R#tXv6&?yng|+K7m6%Eq>RQ6siK^`jK;%*wioX))X_kw|~VIo!P#=4~&mu zbo6g#kFMB&I0-cCbECMC!my%$dTV$xfJzFFMCybex`S?Z>&VoC=^xPuER(#qK?BR? z-Pi!cf>I;gdWt5yWSCiTZffPm2)&Aw>jWTP33-o(k76`W&c!n##hoHO6#p6X#mCyn zWX~2uLd=QrHtVoH9ZjL+HdsuA=N;D9iGsg$DQ_}s zX>=X^84pAQb2(i7Z37L+;U-@xQ4kn#s|MS(sHA~izALvdkEv5o#HzmlbKTL4<67_X zz8|Og6F;9N@|9#UG0q7?a|YBpXl4F1Bm;x@igX+8XPt!h31TDI(Om?ZsJ`PswO6z` zn*vkxE3{aK!qn9HSbL8Z;UUX`@WnhI82G!bTm*7bvGGn-8mCq1Hmz;2+e@@= zrydXYB7Hl03gB#E&g|GKOAI+$q`)W0z`c?Zeox~AV_X^OCpS}B9j_VozYXwdwOkh) zSJYNob2Q8Y+LIy^1A0ultr>@B3^k!gkOf^G7mv?ae)vA(0gtVkrPnM;1AH(%q7hCi z3Nfg)K_K1sci1Hp}57{@=VG7LNP{Bn{+V8(f}3S(4$K--^g z-Uuy;ViQ^+_@%d%=JYK)W^O5g=4TV&X5;yWuab-SU@*&KUX2 zw~YLyvbE#CV%%i4#!V(8H+i|nKYok+V;}A6AYOeL8$EwkyTn7&y??x+Z8`;)0J6+Z zYfAz?>jTNZ4Rdbnffo3KzDC-+3Ks4?$TS`RnIoHFt#95Aw0T8Uj5c8NUoQu5#PGCM z@!sm4u3%Y)Yg}1o!`17PT>iogGd+b|=miWu)-aa!Lf~fZ*NguFU+oA=8;@$0o{#>G zU$VCW$+*6YTqtfG@7=GJ-0`H&PxOQ;2+&$I(82@bh&S@r#`fS~+LNr<7UL!XYJ3Tq z96@xYZAV}V!oSwq5l0cp4R=uMe2z^M>L1|waJy{A5FzS{YMrgID=k=r_Xgq%DR9Vc z^xEx@q^y1%a0wc!FtcI0Lt#{e1_Er$kaOQ`sDkqSZ9ugfaDMY%qA}wQe+0-n{-*IM ziOrx-V1?u4*fJ?y@M~R$LEN* zw)`w{e>HqbO}zbCFty*qvGQK7>aM)E7K!o}bt#WlR44gQq4?y2pC`hb+g<)oYIr3!{^#Po zZPk&Oe-Adnh&R8$jr}X^oBC2G^u66Mn zpCrbMaiK8P;6jrG#Pj7~k{r5#qBX(llFWc{1rzwWa64Y4Z|mmiJH7r+v()55?ug*j zoC=5f9&npYY9>HpCvj5j!S=UdPQK^{O&>f|WJS{r8=5)h?&0}^g2xukm25JQp2zq=*0!U+Lnx=UT(!lp$X5PibmDZ*j%9r7vbBV zS7AD}LVGh|ydqi(l(eXws}Yw!#Bh(iWwTX%sDhfh|DQFYkW8U7Xf!x59;NbSFq`Q7 z42!yoGavkup85KO@5Sf8jP_$vpE`T~Z3*-;@tPtLhBqo&Jl8F#?GXM;?3$k6rC-bA zMh$|mu~Lj4_2MuBphdm7RDEhiH&HL<3cr@|@h!Z;LN~<_|C55NB#h zrf`I{I#YGlMcBtwaOhV!U4)jZa_$jdZoIp!%Q;t?_BdY-E=OY=z{!-R_DG2d@Ez7Dc#N2S)HNXLF- zoENx$pzHd=z&=4$f#dC?Zd(=6mp3j2Bd={!YnReMas+eQ#r-z*H!v~SgBLoLYf#?? z7usPYyXZG&m>kMGUkaeTM&nYmNeVoLPehr{;58(nyAc+Q6b46~-le4b5=werFX>4` zNm?<%%e0buLP=1*UAasv>5cf3nl@lbIm3KbQgH6wxHQQmHT|3zXN=c%pi8_i%=|HB zexEasM8$+X&4In%KK_$^eG(Mj$K*2h(s-%O4Rf);(s zBLVB5<^pMlggrRguAEDA%pkJI*@hELSOBe?!gO5L&++SBI^_#YV;XWIuNkHq1vPa&A*A7evq_ z)_Ga)0{%6gJV#plbCk}9D$(laFqWEwFWuOvTf%;{l6`Z9R;I1LAw5sMX$5N}=a8L_ z?%f#`SDB$&X;WXBD-6kld67U1M=`nWOWGtH@UvfOeAs>|u#y~w7o@Qs6nyxTh6vkk zlV8vE&J1B9azwpFD^q`&{avAtKh2?3*<8&oN6YgB1v}b4i`1(O+ybfdKh>$J^FKl< zY~3>`i~gN%mkA~J_jmS{0v#rDvIjGF(*YCvn??Ea^EB25Y`7=c#Epk784D(cYb8-T zb=d;FAt^?qnzsD=Te7LDo0gU!qpPkD}cckQ`Mjo+W}PuRroU6T0T!=3z| zO|4P`H_2#%b%-%XC{8<>N6z2_D`6F`F)Gy@@A1;*k|fc%$aUzAKciO zkDE9rVjSiyxF(u4doj~2y&wCehbgY@HK7m@PzgfZ7{(iXV__Eo!p3{cIYMbi2Nvza@ zLw~#>em!T^)^k>M8t1YY)^p={IX7ytzMPw@_y1jIThFz7jO)3bcb#oLcc159UeDot z>u*Vm`Onlhc#GxWL~;bNhKRveS;y3Y(HX}u^%M-#ckxT_eK)_f=`8$`v@x$J#*b{lP#5?o z2PHW;JyRY$Jx6XmnIZ@6vOL(HAxn?Gi7_$ckfZUG9O@4^WVgWsa_bBa+d__{sL>u6 z%b#xGzkmbE&y>gI=XlSN{c4)Ne~>Q&+z~nT067I!(}ezN2{6ReNLJ*-f+!0-yM9ieruY%gQX|KdnM0+sJUm@yYNO z^U2fV_~aek^2v|J^U1%#c0EdP0I1>GIHA3PfBrl1&;K&Nf88DboBY1fKQ(!#2IiC8 z){cN4a7r7O6tUKOaNw_-li5ZL?GJVzw);Obhta%7>u=vtIaIparOedCQY(+Df4`A* zPE{mO?%ab?;0*Cbz5`m818R`7?9;RSfwHXJ&4jGx<_Ial1eXGiEwxHb$e%zehxHp| z|B+0)wDB0~zqdNr%y2B}J&bb&YcpNrYI7tq(AYv~2z2*1KGeUO3CQ`gh#Z<6aVgVe zIkbTu2cO(ckwt5Bpc;8__c6NU8ugJwoAI&w_6=khv(wDX2>~78*IURtH|NE)`UvOU zWXwB=@@{^N@YCbA7hlgnnx-GI0PrT6*?(-ZUmwNvD`V16LC z#=LX%yzdr5-sw8uYnZl|qWs@*jTS0~X>F6?(Mm|gC~=^kDS2Fy;o^5&4WBY&FuBrbEo953(-BcYRX2eR{CTPcS3?^pODML>Ey%%Zfw_VTv z=e5wvP=Fj9P7x!1{SsP&oYu>mPvw=QTXlEGX{y&wqCzV)Uf?|PRS$F)N;SwLiGOx= zJ3k|e?g12CbsN*R+&J`nDt^)%5;y7nI@UrRx6N%f%y-)p=DR&H`Xy>OOAb!UgavvA zEbeXYU~LZj;3MU};4~RSIk5NJV6ByRxlnl!)u-0}mR2#iB^Dg;STLD(+@@hrtPELs z8T|$Zhj~JO#v!2TVfwVV39x!;n?*{UY5IC&2RYgES+y)y^^cszqG#DlSyq~u&NbDb zCy*VPp4=~de{}iVEbiQIm;4-kKT{aaOj1|INNPX=|A;GDT=PI4?*afg`txL3+D=3K z@flWC!)6h2jlngPmXbb=hXlCJ;Vdz@K4AJQ;Q9hJS1}T9?qS~_QFky6AoMPRkN*7U z$z;Sbt(*4PI5VL=ZtT(?cg##^k8|VN!@I!H9wK^94w1{d%&b5OH)J49vohpRwS_kn zbKhS)P@n(DG0FFDv#1Z?K4tFv7$;N|#OFE-uL$MV&ysa%_ARxMg!NAl>B-zUdSWB> z&Q3Ly57gv*qdpC+e<=S?;_{y_^52O0dl>Q?2+UgveDvK=*7zXNzQ)A0*K4%xcv$U= z<+bs;%gT8x67x2RydT;zWG3hR&5#bIG|L1)pH=7{>6( zF4p6Aq{}XPC?q{{f-^@{$_o})SwtjDw~aR&L_}95$3#RjDkjM4ia9I_n&l#Y5aQu1 z3jBwq&e2NE)JvTu-S(!j)ZZHfPqVPpS?W*bu;^(%3STb5xszi1rPxvH%qElWqLPGxE|Evp z^US0?s3<~XBx5dd1WUWsx76fKFLy7n+9>!v9JjJCC0>dH{tWwzS39nYL><9QyT6kK zG8dsYFL4$M_{Y#&;*m!y+m zKkx$S9+Hy|WF7nyE?Z0E9D&8$eMD|zaRa|K=1vQTI)&d6QQr~W*Y{FUUwwU#3#m16 z^TC6GuJgfdLKc>xE*}q#v$`|pe{aIlK-c+Tte$@g<{#V*KiYLZNPw$PxPR0T-(`X| zkVw#^+Z|`L?|eKCzBB5K0j>j0n16I!{w=4q{EuV)M^ASH*8>S~wTB(s*y7c`t*bs{ zoUaBEGA=j?hV>HQ(q>ywZD!E7vJ#eCPb9lSZpkc%#`ltQPc3%JgI<*PbjYnACpYb# z9O`pQmYi>+-z``2rRfy7@heoQTze90kKVigMwD&8>MBFeE`q+gb5FUIh%6OsbBAh@ zlXR_72@N#Yy>7zD!Q*jiqaAX$(t#>U>c;Unr23@uW_g>7gzs_Sq#!u^Ts-WGEN=7H za_(2&a}X#1p{HyS|S4LB)f=` z>$ma}Lg{fo=C*mCfJxFK4|+>B?^oUM<&Hn9fg(+R?rBZ_Bix|8K>{jZj-d-+VLNyx zNrT*qDi5B7!k|3~!k|euc%TV`T4nQY`593ldJK@7T8P=2WI?Tf!586DrS&90{*63n zH`%kUMLF>ESO;~^I7E}fxGJK78C;Nwq0T&^DvULt?wLy)I~HOOODahdXkcTq2{}rX zAwu3X_0nPzdCK-SX9f;t5oNjbJ#sA!Sw!oF{u(E-OqZHYWo-lf;r6KQj6-WibU0-N_t(*DCTUL zb(+3kr!Mwq2k}Hff3k?Y;N4ucO*kFDS{8YQs#$br(HSNw!an2FvJaLxAxk#L65k}vZ ziw#kV6P%U$7;t98X>3vdM-e&H$I8|p^C%nX_icl$88nZK1CE12hlUytXdXG77#yz% zXVw&1@jypD$E#@@s}LgFq5dSB7$_UArdK>qertaN{MYQ&LV~l=lpw*` zkRZW%(Uc&;A%7b2@?isL(E}R3t5X0OgBkuaeZ3Xx#2blDQ%vKmDBZl|^Wij_o%GWGbo|NYf&V$jf!m41qgd-c( zINZUZZ!J&Ov^dZx-8H+4PlWsd@HWc~ySdnSS+HEPNUF;0R zU*s(z0SJt-IB}?qbLL1*4>4X^vAVis#^`UZ2#Wq(YPzob{lo&XpNJEJd+@xR*nHt? zJ)Po~9{o_88nkJ_73%N!{%PT%q_}AT<^+90SYs9w0<@S#oiYl0)rs?=J6M$oy_9te z_EIuq4E9igv4_xUNP*Tv1#vx806p}&v4_wqJF$lrl>Dnb^jBk%HRkvpy0nCQNb4Or zHYWke39aWj$%&*ak2)=wFZM*jg=o*B_fOyM`O#x%v^Ym1-^lL!aX>U7-|X)5$s(UN z556>Q>>ka9LfdjbpV&DK)=5(Arb-n|-=D zuj!Z+h?r?>yIsBZdb3ofq5o3W(yTXkY{s+))8|X zd}=r4B9}dRaQ89hq;A*pr=2zWrk$Rli%3OzuAd9ZB&MxYYD#p^%dhj|ON(1Z4xr zGK^1>ni>F%@yWj4xSb{imL%(@%b8jOhxf$A(+$=^^Zo9CIUc8)9)?UEf8hO(B{Uwt zN*s?@lWgyp`u0#5F#}@zIQte;{(mOsf9nkA|10KyLC_)f6c9YIy@4!bSlg$<;1SDJ z^)#^1L7xeoN+L-T4rAy$b@(0M!nkit5->UO8)I2EDKG9i-lvFs12Eq;-O5jiv>C^{ zC4Rg&$B*{{l^jb20p_#`EGV-P-~BQoPH7R<(xfrU!2!Q%U|CtFK~|Qbh6-6$mV>gg zJjCz*#(IX3t>;5E)cpQPt&E+@Og&N4$IU9LOCK& zhMp%Si3LJ7!uTo_&zxU^E>4ZM#N;(6&_8jnFfiJfDJ^`}nYg_#NjPB6KtEc#2eVR` zR)VD{D-1-bSJ4@*_X5mlqct)5Tu4b*L&Pr`E4X}OVg-L`O03|_iHQ~bjmcQSr(p@A zW)}+qhAP9VDwyU!)z{a{iD61FL&kK(j7U_uk#Tqc%_fKuhp7etSfx7>#UNIT(1`lY zGjS~IXN;%!H_*8GRpPi|hk>Z)RC_gmV5jBKgnG>FtBA`vSeE*^N z-uNKCH`?M9lRAEF7!KtO$LIA3$ILi5KGZd{HV*sIG%Xx>M^A60}L@t~} zv)l+D@V_9w{GguNiQN65$7!t^&VIZbf3zaPc5H+5Ew|X#cN!^=l|<2fjW5vpW!)W4yaAh;Y|#1>&RmcB3xi}<(13OD3v3S~L!D$a}2_Y5s> z2IZ}!yqdMpo6{oE>$e&8N4nVSoIjA!2QGc))94SSv2 zJ^x$wIv05UKVz?Ra^e5e_7vAI{Et1w|6kkd{CdIv)A)7jXaB*k|3mgVq?pA%<=JG% zq7HC$W3sbzLKl;rKI!ULC=>3JZZOzU$zW#(8SJb?gPlip`;!g5d)uD%E( zBa)H=ZMKNWh~(zKj)zhMWGN`p*ta6}`Al9H6^Xc({2p}Zg&x*dSc>bYy7dLK#8T>@ z`io32RIAK@Fg6){#%mB9af){*#XupYGgoLEnaC6Z3{Ky&QBmrnN=Dz;g{pS z&#p6ID5s%kdWte1RVR($pj8yh0zLf-tr-g0@{t=xwo}F&m8>*W6kevoN##*Ru{_fD zKs~!}vxWa=cH-5}eZ!Vx=-yoYW)fyVH5#N1;a{H8?4)8EWO2D;p3^b=DU21h9dC>h(gfmCkf*IdIqv8I8s!Zc+OW$|U*WtKQqK~3(GL`NtM*7iNq#)gGx# zbB$H(4vxXutSL8%w#yb3#rD<051KT8X=Hcgyx*l18tjfXUWKE7>i>BAB%e{c z#L}@roiY|^|BYC}g<1*XeS@LNuME=t6>;O~?DjZ$y0|)HbfP^@Sx!t`{nc+tT%9NE zaWq>MS+mCZ=e_aPIPZ+=YK`-g(J^bBtM8>r>B2ZCsycjU-)edly5jJ4-Pz+j`Caxn z_ZXV#7eCA%hxFYvdqP-$!+K~YoTtGOY+erUx=oVZp`Qt>jo@sdn})ttG490LJ85(i z-Sh-knp~kr4`}vkE@T(P&UKOc%9S{VR%g0GlbBa<1t&4D@WcdsvLr*xo1y-J^I9Np znwFP&h4qwoA`kOZIcRv&KF6JV#`j+?{|*brq_s%v8fbF{b=Y#<7^9YStjFDuZuNQ@ z{~HX;fzelE0FS?^vjU_jXa> z_UC?#by<;~>CywYyY#^A_l?Jg!jS~Mkf8>}3l@AKO@DzQSTtTlG$arXjKQYaJ_o<; zTk8s5!^>5|xQ4N4!r9ME*7?Nan?7dk-&_*G~Ii@ zHg6l-^@A(U)~?&fCARB7uQ*$~-ZRe7uIG%=+V#?O-!Da_0)uI@EY5OI(?@Byh9_Op zoxO&bwpb{%)6_+_h?>RgOVTa6#m3Pr(YkE0u|vK6GTw-uLyZ5^aTXiobK{A0TnZv< zzf@n0(th-F>5qwA^WC9`)9>e%@luoe@Mw}fxfK!iwY@2wV&Y+jCdy}0*N+zF9Zl)9 z$AlIhmy-Iz3RqmTvFP*oE%kR2(yA7tg-0G5c$AfC1|Be2^Q^LF%V9LJ$g{$u3^)@v zFrOCaYm?{+-B}8W3=v0g1yqAwr$dF{z76BZuGcCBH*&Bd>qSNMrcj5C=Y?b%e5wet z{~HpHpuikWn6u$B7Cp?@#Xd_Z^U55)KZgg$VOW^UYqldY zC+fWdwU{4^xolNGwh1i}v3_|i1MNaG?EW*ch2}6+Ja{G>?LulayO68m?Lscc?JVcr z2D^|JO%E)y1oxvC*@Jn!v?^k&khjRr!z6?W?Q9v6f_X`#;H!ccc(GN)JLrGWUTDV+ z^m|zE?Q5yloxapA^^-HgOU@+fx5BzA&(hHh`Jfl>q_%~uMMdGwnjiUCzCInl3h%#* zx4Zk_-Nhg7|9yLi+=2gNdx*cB^FOnP*qGj(J%n}i|9N|e@#$m_;k#VeL+JhvVvaF1 zVLtVQ!7M`4dxfPau20cVM#$ZG%Aos-Ytl9uV>9fQpDE=(GpWB$r_npfA{(tDbPZUH z3&ti9p5BNks9>}p6NLaIUO>-DZd7kqR$4qXKcI9V;x?-&u8y+)9m>`%F8>)xT1T|Z zf5z;qw@Vv)uE&TE3#}9$FTX8iI1JU58EVM@bgwU&1-Yc z`T;f-#x`$8$wzZXUKjg{^z*UE1+uVF(&7Lk?YZ`HQD+v*VI;LQ3X0aL{uD*~)C9qm zmhdPx&G^SxP~ImQ2>*olk3f3gxugi*k%~V=&I(Bmq?u{t3};c3tw*An#_xchsejF8 zGmSM@u$hK(4Hi!F3<{DFySPaxpz4+>Q%?GyDsIX|( z8p@RaC2NfXJ%5n3#?w6$tu@AZDB3}2d0Na~BWA3DQdUpSdgmO{TqKi?HniGsn>#hb z4Yb;j6*TuqNeA`}+iNmgRa#JcE|a58`=fx&K^)!wDA4IFF#}2)P3uwFdby6%6HUb7 zHU0>30vN#d0)f-ZQ7oU?RscBt_)tWps=T&>SqAeD+QC8l4_J78NQ4pw>nu_}{T%Hz z4yw;)(DLf?Zfrm(z$^42^ZNsS?-AA;8Ri7*jRgtT8`BbW>U@*qC26yamK&P zY)2^qO|=GHwY_k8EG0dOCw;CM${61MN&NVsP%*}GvZ8V7cn`5a`satCa+}lHMr3d^ zpNGOZ{1*N!Zf4VxGtF#TGNhUPzn8|MS+b-Q7LdVOv>us55jDk&;>7FuNyLo|)) zb{R%YgayV{sfl=gKmoW34`G}IIaoR=Q7NSuB{c(ZRSaIXU1%#vGpS3m1aS^6XUmRY zu~_0jsprwAR4LvB3S0`%;cfy@VpQW&N^@`!LTO^C^GKi(a77lGCd|S>s`7g0EEjc} zzhw@YJG;igWGcKV__tfIzPc#ELH5XnX;MFD8tZb$_HS^899(O#6Omibq@s<8^k_I{ zCsL9yPnzE_Ops(Sq7r5X#XQ-KnMk%~CZc8}WAiMx2s05E`NI&hrntT+7K^>Dg0H5& zDE`;_qGR}X^u-p_f3q((4ClTO-Jn~ExPZ&j%tVO2!I&s{)Inq^LQ-~Sd9ZJ=m-POb zk|*`^kyoP=St90RZ~ z?y2b~8torwjIh3gW&&|CU5s4%>rU(q6Nf-a3fFJcqsh5Nt5IHj{s$U zM>(vHy^^J;Zz0i4#-$KyWP5p`;E=}_5(j>o&DX%8^RezFb0MSWJpcz1%lmZhH3?PO^#kxS) zKO9l79L(Zgw?W+NVsWpF#l0RO?sX-IdtE}@`=J#}AaSqDAntV;#JyXt#w;;$uSnI^!G0I5Whovh=0y)R;R#>(4NfZ3I&#q zCT%}P`2cWWx9Wx(21h_!-QIB@;K6QM%pwA*Nqvo00jU6hI?;w@nM7HrkRszcI7imR zG$e~zkzPmqjGK30VSa5xm#69#1BEE2tNua{gyI|$Zs4doZ2C@{0chZXPSL>MniCuN zabYu1r^^Q(JXh!$xZ`y^nlo6(L)OItt3=KWc^t;~Jy$5=qyBG((EcFg7>644dtji3 zvy3r+ncKOtiv>ZS&N!X*Gx0j>pT;Z*NQN$AbN?6MZ18-Pcz+qQAUK~FkQDhFGOLF! zNyUYl`r1;tdMkN^C@5W_$wH6D+yZy(#hm^UC%-@a-#blmei*Rrf zhl5*zi>|=CA{?BA;owGgqcd%=hcm7>!+kGFhzHj-PUFvr6mXzMXVx*-^Ctdl6#VeE zRZ}ov-C{ZD1Fir$fwyH0cX}Kp2Dv9>Y1*r@|Abk(O~GPualca!yeQ|sDXqn*zS73? zprq9s+;n|HbsXT$ZTxPX-+RNF_0aUbgb zf+-*`f$&ws&t(5r3djiXVEoqlP zGRE_6;&~1}jKQc^8SPate&PB~20%&x0HB3AAJ-M=_C*9w`^8$o&3_qxej7dhKf#{? zeZCie7Mt}rpK<6jSI3|0DM%e@`v+G74tcCN&YhEc;v0^#X-Ldq|IKIY=}}_>A@*cJm(-@$A3i;>ipAdZ8Qqn%fP2b^Ia@ zmzIAQF7-xSx*~>4e{0h1X@YU;-OUsTjFdZ4-yW;SF(c6&+K!Ezux(tj$=8o8=rJtV zkhF+quh=r7iy!2D!v6W2<55&^adh>AO!3g}K6adgjQ#Y?@kD=L!PMzv(cVWyD6=3$ zz*tX;sC%xUo$4F5q0x!*T6kg;#&6d)QqyGAg$PpA`91-rmz4LHM-vhUd z+tsu$kHg}3ha8gAFi@cPdYOXKqAuGR8@|yh2Zz20P@vPa#Ypo*UUrjcQ7=7xJjzlz z;Zu58Yy`2s_0V5pJBB=I9XsF}*fo=Vy)&)jVclMP{rE(`LaU#}FZ5Jre+}*SDD!zj z_T^G;G}+r61JX=k++j5uX|}^^q-p_-d9{B`AF@;qU64Tz?L@aiU!su1HyT>@cusdc z{9!Ki@Kt&bPrfkTzu$K2jU;r@t|#mq*QMXL3jfz%0sI@g^n1L&>(yw$6@WG%;T>9W zU6R#;c3k}_q}GD-(3VTOvxS0hb+K1#OI6G%CQDnYpHD0Kw1iJL^JxK}s`xaUPuKFP zm`@%)P2!WCPviJBiciD&Gzd>I{VBjSmvX|T96h!c)z$O7y&AXd$0xpXT>hmwCaLLb zTxPboLl+z{rIlPSh2P5*Jljc40pf_8? z$zRKVCeQ*^Vm*`9Vn4QqE8N@O_%zqJr^~-A$K;)cLttCugk#ZUlf@NmM7k;ko^9my zfyI8Tkzcgf+ZyRbl1dSBkv3%2EFTX?!1PT~7+2altzWkd0}PD^hNSnMsp7!i#yn$?)PP z@uClg;iR6j|3E|zTICRmEc#s^^QR=O+q60o%{$gM2f7AQ&aA!k)-OADYULGqKM&ur zT94;=5tL^^blC{ctZvEimfO4+)@;lEA_vc-!m&T3r!Zeq$D7)Etpcx8P)UrhrRO=r zlMHu|A3p#slC?K$mm!{B8c%WW+WjA|cD?qozqO~k*E>z`F8$PhVj`<`_&?5*nlOyL zt9=^|Ysdvz$ey+NUnnnp70D@^ac?$!Tq-&kF_r=@kMSploWrnT_Q-vQ51f$%-6yk1T@{WECO0>`(5Hr~JWH2?G6PTBGdUdYyx+Dx0z=vl-vD1@ki(5M=do(UPdbV{}2uw%~ zqaBDNs9&n+P(pfMTqlS3;bZA3{dy-o-y*J)!kg&%M*aFhv^GDLB;7U{KRpE+p)*u) zMy}W;8o~RL)y*vd%?B9w5(e#l-HPxj&^F-}q|UwsTRBM%x!LyMp_4dh;eyucVRV?- zc=ApuP>CA98z)ib@hMVM3(7FpO@zDS&FpE^DQ)Zpq?bah$M^@h(cc))McEm)kt2@6yizCEHI^#_(&W4KMKc{;v0kkOfhx|05t|x1tM2 zeT+kW(^WaOa z++FZ7yY#zO=)Yaz62q$K-1tVsbDg!`avYVQO9;{L~gn{T%6-S~3TIR@X`W-04M-T8Bdi z&bJfC)~_Uej@0jl^g6h6_x=3jzQ^dvpVAxY%xYg!zb8n=N9xCFbyB~k^cFh*B7HZV z?@T{H=ijCu#W5aS*TTg;AkL5O=JQhrh*f#!z%}>{+{wppSk3$m8=M<@H$InsInMvS zJ}Bc{3S|ET8hdK&H!ziJnW;oWC0BbPZ7KyD^KgQRn0-IxIAFnM^fv522?Jy_#{L0{ z7)qV^Z8A*EH@u#AtSP;x8B062@wxtKW*R37+J?daAqlk-xFhF?O;2mHB z;6|I%WJaf@vVR9GZnjxbLl}83SMFgcP)iITuBEX$uHaoQGz07g3^+Qm@mcisWb#`0 zhC0!utfl8`wqtuH>ev12@c;5#5#xd?A@E0PnhHR5*kba(WX@wgpywC@IWW9^_{wO^ zpK$PexngVMb18%^KAX(da%|7jU;7rd4BAD0!o24i$Wm^54BxCMoq5>kA0Ji68prnl zx_leuP9o3DgcD?M);QtzuV|UImX}%c8+e(OqnBxEYvK{ZdoS>8DH$1t^D%4t8XQ*i zDP*!UEhsZkKDEzuW<~8~z*cYEXR!Kuy;xRW#5HeBfBsGy>vAwCBlp$%`9xRpovb37 zyQje;ZR`mgfmvzuf7SvEojmVl@Z0E}55Fzm{PDx3b*=T0C?MlnV)dH+2PVqWqy9Ox z9sL%`lKoh)JNHQa9df8@-}PFz-^g~It?-8b!-cq6=vSoo@X)B zsIriQJS4;9N>sT6u`nx|wX5Bav<1V)lYA$eh0R9|_}320wWXgTQ;I5D(#FT@%xsz) z^6XTv`;x_SL8n&Nutd2gne~Hay;gYv{PAsfMSIccShHEQzn} zfiOfo!RHYHo*qO)4>-RMaILTSZQKK4KW(M>4SDv;8x(wtj>#oewZ2QD2+FzleS4hkZwf|E%9bhS2K&EKdr&l%mfEfOCF!m5ab! z7!QnD024he8uz>LOL-ROGyvHsLp^(bW>7y%SmL%bIupH+9(|TzQ=ZKb*x)<;?`!|~ zs$X)NtL{3!FQN8k!#A7%ZQpz7R9sW1h>zWQ>R;^l@9ys)w(r`w1whyv)q2zM-T0n3 zUQ++{@v`G2f9r?jcPY;iyN3N767MyCH~vWLa7~Ih-Sp}i<1z~Jkghj2C9YGxi~rT; zXI!nU>wglv<+GG_#|Wa~;pCHgDJ17Q>-!yB^lXmr|IWiFV&6ecweW9F7&<=h-!b09 zHhtLUeb2bnhS!BBM0fp=@%yii_ti{a*b0mGJ(yc>ErOLukzxMP}wW zB-wx9X!y4$H2L1ssQHoAqHkl$%5k=Q`&xd;)!sxXNSsBxupkj!2C)>Va9K@GKY58E zE8n_8Po$&NR&G@%%AplWQFYcR6cn;IfY(K46wi7>K41?5I1RcgoGGqBZLZKyd!fGl z;_&gPy>V5qDgZdyEHxc7lV;5-OI~9%Sz5Oy6&=U5@OnFw<>g-)*oWOrUzETc>JMD- z#rE%7&;H6sMiRW0oA4ue1|`kXN&*M~ppaSYcYOEv=R>x(z|HUr{KNT;CvTCOyk>+w z+5`>vW(pF&ZDy3^q;-sB|7Ry>NKJQ}F;OHnZKOo8)O0T;@}R(MrVt9P2mSOzH#0@B!aP#8>P;& zln2^rlaygO4zQ%As1|^Qf*WVVEh1<>1}x}3UkXG?RmuwZaSob{$jXML$ULdKy^gd| zYiOC99U93MvL|7i2Y%6Mn6JC^m)z?ug0qbR5t^a#%{&20f(9ht*(gxnmz6Dl&3LJICnrW}lt6OJ^YnZ5ysV>nxXe|(A*aLn)e^Cbeyja@@2VN1eB=8Q$zslH@9A9=^Q4>FlM&rvFrk5k^&>C}ODKHa9&NJ;T5)!af zIk(6x1<+BuOIWkPYX5#(|2&3Q?E#&^X%8Sp>q&$Jce>i0#C4Ed$QOtdXBJ^RpcN8M*+fg9i+boTooPtIYZE;4yw6>krWN z|o_bJEZPHUa z_0&E+rJ6Jgi_ii7^c*>r=Lm!=REO?rXc1!)WzKo~{*Y23<=e4{l&b9g z|2_RtvPoTX;5cOTH8f60{+Ko-k5{1TVr9DJSb(KcJ=+4Yolg9=as;NgBC~F-LI#?7 z8ZtsUN36=#AAN!J;9df8&GvhA(Ff}_H%?H{F_y2XEwvF6mbTPe_~hl&B0kOM(@lK3 zflp<8D&o^*J~{Yw4WDxOl+C9heEJEWYjr~%p!Z- z&PO>-v>fF$=gG<)ShMiJxc#(ENs0ZK5ML}v`z(Vx-VHxhj`}RIc*CgjMGac4wPSFS z)g4@tM(rtwZa~CNNyqI)pwB$EnS}3v`R4;vs$O+08nr9!&_ccZkyI&wstK-O|8%=Q znkwuuf+^`9ce`eVFHl22#tjYgA>lYd;0~XyjVEhu zyd9$k-Qx@eB2@q;@fsrt@H-@EqXW`!AwzMJCJo##?EP-9zl{jRur{K!}j?{{%P^}ks^_hBf5TSuAInf>)CUf!!x$d!q_a8J~19^5S zCx}89yZo(C&bNTgOUcswfE?lt0=JMuJp>82@{9CD^31%y`qryFaIendHw86!}NT9%K~_|l#(j?1LBLUmg`x5 znb?0Udqo<$dCqB^*gEBq&uTA4MflJodBFal>+3%k!R%KohX#b+OE%3Yf)<=l-VsYJ z>M2-|eJ#}n@NGDU>iE2&knST1$NUZbbwA9 zj&k{?PAbnzr$=mbdNMvfwg|EK=P!|XqJF}q?9$c~MA6JQ@T_s?4s7OQfs3F_8t18~nrHI$Z5*EraJ+N9m^e1zM@V0@nfT+5 z-|F)N_6>He9Nd7-;u1lZU_gGT8+HqfIKUWy z-2`(hyd*k(vp|_YAEo{9&#@0hPd|x0?NZRSPr>LL+Vpv55ArQkWDhL5LKU%#Zd5AJO zi1P5K(~XT%zp7@b-@^N)e!j=l8QdG_n6ta_Km+Kw`qG=!Kl4cye)F6t_s_AD|I_}# zK7l^M<^f_EdW1TQ`{+n<=N_Gc>(_wbkUiM7;zH?-oO_b41TkZ=!2V>QMD6bnhA3yqkx{)8mm2{#oxIGDCk| ztL1%VdM)R?-W{&}Jo2yNnqi7=W+xS$IJNZQ$>adX%@FintG^b*l4%9b*qtl&*)xm25;u&nS5(g(CZpUkW@)&^N= zTYu z_j*F!6pKS~r}vSABT%}CPAF5-QRWrhO>3tLcm^%x3cDovgK43WFX7fa#WjY^qj3SS zEZY?XM)>@Yd#Kr^TqrBa_S~0O4RBYyELXIKs?Boifn-|9xR7{G_%G2?R&Y~YLltYE2humK|;s3C%@dWB3zv4E(fcmmF zmty7hPAK1~{0xg04G+%KvatO0DJ(Auoo-V7sQ8qQ`{W8v+!fPX=8OSt-E%Zfzt|xZ zj6KRbcK=7KT_j<3_uA`hdUxr^VNc9%hTm)c&iu5ah29hFq~a`*it|=hasCK0g_Gii z9e@`s+6c|YZ3OIeb?~0!QE8*cLOThKCz7RgZ{sRsWv^Sj=Q~O2oaRuF``6Z&E#}6h zQPa|68k}48TVFSxFtfbLXn&#QmqR!9#&`kRwY0IcH+nj=G@hK{yRxHD#5XzV#^p`E z&yR9uO>7TYyaO9g7WocH8*@-@EGyxxWBAm6aJ9OR^ghqWa^8jZ61Wdgu6p`39IYVjyLT)8{Fm9WlKQ8o_4bOKeT3H_-nJ8-K4<23pY)Qz`E zP5TLu-^1_tOkb4;&2R0}Q;u|-vUTp7k0L$it~rTv4_xriZB>(D5IJ%q-X8Wwce*Ww zB-?VR*kYG9Qf#)Hfho-c{@A-*QF$*UaAB0fQJGBP%Y~iA_#!FrXA^GW9P79P+7IRS z?3j-5QrDX&x&1$<#r*6YYo8+peh)X;?_{2|@r}6ydq!G6O769Lt{v^P!>GcawKx1k zr$HYVD`g4)BsOlaFKA~f$Z>CtdnS5Eb$l2eJq@j!;U}TLOLQ5m{|l@1)Fd0XOk{l2 zJ0Ep$>Kaelyvr8PYdo3hn*lShRr3#yF)KcViA{B(Z}6v9+OX}&xDlxQ+}0z>P^G9k z1UDOlH>7Km%%$l#$>`pMn-R&cz#u_?=W-u}R%xCJtL^p^5A8H?l zVne8DuM`-9w2QacJN9Y)dosn_5#BvT_dDYM2zs<-3VMip)tPk&y#wJI0>L4;5T>kS z>gnSIQVfv5k|-I+1I<~6#I?w~CA@5k-ru+_Ou{ZGGdwNkrwH+924w3vDEPAAA`3Tc z(_gh6K|@nG(2=LQ`ZyUVKr;N5<_B5Jn04&=D0QqG?T8Pl#m7a*W&xFcHT-_39(UOi zZa<^L0a-WWd*R2=;HGZ)Nwjo*dNLsG6O%Q2X&ql**W4Dx;p@|h_Q6I0L(-rsb&13oy~1GXv(ICkBhG>`NRk=&`26tj}X;B})A{J_Y8n zPFcr4oc~5+yXaVr_V=tu8N>UR;f0R(5I+cCP3CU#^#M7CuRP06h|O~VCJJQ}^#Kfc zeY3!8YZttJ;G3>(c*i$7u5U5w^J)bo;(J9mWlZ}<8v}cB4B#$3;s26u@W0{=P38-* zb+$|b{C^sMo|qIjA>(+El@qe&Qd6Vfvw|}+Em6Gc(XY99AHT{%6uzeOy!)NoKFpG$K7yb0< zHhJ6y1Ah)*4&Iz0HBkgs<%0frBXoh2AR2XSJ6`>>(X8u-%I*2P#hLbmWMu{{*|uiN zxo`SDh8N$1H=sx4_SC|*WQIVw;3>GN`|1+i#xcTS{kJU~G~y$`+a2D^xudF~6e%!^ zbo4K%+@8#B{LLAZUA_(-1pSTsf5a)ca`)8trG3ZTFQr>|pk$-hS5nhdL|}mm)aOg&u}*4~`9h+XpO^$?evwuI4ag_CVcmp7 zOT7ezDH}_Z8c#;Oy&G31k7FkQOh?gQP6++fXx{xWk(WZx&u2S}U;!EhvYvdVx|u{_ z1?!EG46K&7Z_fSVTeu?c^?nIUm*N11RE^0 z7*O^|8&7IL)R?uE6958bo4LJs(p9#qhmWw6cDx|}WS5g%zs2r90E?`hSln(O;GF!0V6A&Lo`6Z`bz-eC@H?r8;Ho-++kE~5 z5?00LHh-RV43==0Lv=g|7McE-RkyiC&P{GeaVra8Tth48al1)@yG+!|U!&LsCy=}H zp_vcMN-H@_q{b{GY2$tm&Tt;!z0*9oA4yH0pw(KC$i~2;RvfgGGCVLTXM|rkC0_hp zCw>IxTsss>I&I-%D70yp_p9)*e6h|5UycuP)0`XzvYHEadiWf85blwm;D7gw!MUom zai;CqR3J61G>89IQ=~n#yP}_|Wm2Z$S7~v$lWkgH`ShK+V1Df^;D-V(vv)HriC3kABavBVZuv~&G#w2aXi0G&LVlgHIf%hRLHT1-%B!?Rmm?(-C!{cq${z z7VU{A=u5L7bK0N*PLgB43u!+63}a*9;G}qFhoQPIf15?U_GmQ9S$tucVp%96I-HGG z4m9%QT-hQ8{zN4V?Fq<@<)`>Ao@+mjcnvr6Rk8~nhaD+7RrFRX6K39%#A-@uz%g3b z?=n{9eR5E2x5`?a%+RRIpG&4Nks0WS7daz7_9lTAM~E9^>i|NB2MxI)7xF`DeXM2Qd=qicJHM$u7IP!h+uC7T9&?u&Cszy ztjh-e3iII|Klxn%aLCbp*0HR;$Qq_)wRBu!ut#^lWhKpGGE!{uUgq+zXt!d8+pWG2 zU5fiSJZ>|0?4PUSN1hu!#&RpOaVgEHMHZK`1OUso$jQ)9;{Xw)KsH8PQ1)_nsap>6 z7?MQpd$+TC{Y8 zM15}{KVKd16J~pq&qSEPJd4X*Xfaj>hPAr+X?Bm4=ORDaz)5>-W+IvWPP3nLBHkZy zdl(##IgmR-!X4g$Gp=$td;#qd*I-Q3uiQA}99CqqAdL~_$>w_S1C!fQ_<8+$nX{0a7zh?O1xy43WOD04(GW@mLG02XN1 z*6DeWsr$hWr0J!_KvqSJVJQyHlafpBqB~d1LSY-CCE=cO^|>6vl4 z$KY?(;Scr-%Y?Cc#431`za0B=bs{Auf)t33Sj+D5wLCm zmi^0d{O$JC+ny5ear`WlVIU5_M#vy5r;vcQ5l1j|ID#ku7=Zv>!vM_2FT)3C$f3T) zknT7?X0HP*P6j?3EeDIz(6d}HFGJ3K&G#9)@)ujA8cemvc|~_VZdc1F$=4mCU1;9y!r*zqW3%}SIcPnxHP%l5wNpd^%TpvF5`0+&j zZq45W?U4At$O)!)K8YPD1y<1v`We7?=OJXlUKhL*ACHv_ zUxuQW(7?YwksOP+fpHX`U|+^f_cKHp46&@Fu7fA)3ttlRi?9b%7e2w5{v$bfP6zKN z6=e`g!_8DV*V1qphoG$d2%Gv3;q%~=u;dH>kwhI6IvL>Tgn!d+`X<;;dnr!$#QhY-4if zR*lZeG8I?V*|M{3*_qj+Y+1Quvqz219BnGDS+;1Ysn}cY^)=+z)K)C0syEH|dg~g- z4j^Mm_R59Ti-uL!)R7XkPWAs)EJk^_iJtOa-;R zno8TETCZ(x^`c5!^&)Ro{oL{j`jUxX%Py{}Ut9&bv$PvrL`kjTLB;&4h2_P|8oX5t zXB%=(DqmRTT;#3xR#!FPZM>dQ)j$vN?P@+%)tBMZsa4)3we<`5j(AL^4KJvzuNu}+ z3pH7|u&BldpEoUBIJ;_TMUAhr3fluO>#G*lF0L}(bXPZcZQ@3yt*)kgSyjCapEO|p z8hC2R-C&~jZ?H8`XV@xg7cMNPHi6`#hT57ct$(kN>#iGZGw8#WRI+VgrEP9~?LzId zHvG!4-rc@eEb=cYZ=f#FAQjoWrp7k6yt<~U5_+q$_Ycb7 z;H#*pYG|12tLY|x>7tt2@=B~YppUmo1EWj6skO02rItHO{hV=`5T!WZ@bbz^Xwl&n zwLZi*MBxQh4fD(E>xS1+=Qbpwu_^97#D?KFRWBM|Q@zNy6gshdVZC?s$S&V^Lv1n! z*(#voRo%5uAvK=OTg%8_a8~TRqWk*A-mhK+C|+JueM^-M3*muq#o5}=P%$2Q&<>T5 zJ24;DGcLnf$}7aj#!}CQZ{2-&i0vky*Cqy-t-8ThS6|gowFq%`)F|7?99vGV%?XJt z+o&=0JK8p~z?S2%jd0i|ihp>Uvy8Nj%*8hxBfqn~sJ;1V5zsGhK}|J$5{Ft%^-Wbo zUb<-yV|xqq7Z`4v$wxK2x^wu@b#*0fa&J@?u5~i_}pGuX`lk$+C&;4#)GZg zNQ#(R2%1yt^Va#iT0b*g`Ht+y@)PER*~POf>Z{7VNVKMAWyWTJtSnct?5L`#ngRA?F)qijKqY7f>y8tbm|K9S?)=-%+CuU}6 zj>sIDIVy8>=9tW!%-k%fZB};Hh^&!Wqq0V4jmgT%$^}j%D?2-TME1z+QQ4!j$7JVZ z=Z?r6ku@TF#E20iM~oUVdc>F!IU{mMW{%7nnLTpE$dMyQjT}94%*dRPxuY^iWsS-n zHDc7rQKLqU9yMlE&ZykcnWM8tXOA8+dgSO)qeqV(GdgE4vS-!@`YjD9+7IiqZaqithG#j}F5W3!3Lw`dVu zRGPk*uDW6`&33`WWUr~=tA^Qih1D?KYJ?HShoSt~AK-OQdoV9Fvf283#*0s7ql;DbcwK#LOGm#B$XsDjIDB)&ibiD;s+dG5qMS>S?aQ9$ETeP@aixn+J0>O%F(L%7|?*8$-@44^&?m73KGue}@&1CnV z*`3YoZ$>WE-I7~6BGEg?nu0>nk$eRVMOdT~e|{0hyP;&=VntUFSg&3(oQ-%<6P-nc z8<7O8ltozb(NZD>K=I#JWM7V9!t(V0aY6=A{gH*Bczp=0v;&JshW3M3A~v>>Y$HN| zZsB?Sa;FP9?J~lJj~2A&hDW<~hr9WLVCxo4`@u9qgvUrPvMb~R9ej-$vImpI#GcnP z0rr6*Z_YbpXq%A7g0x$t7TB~gD_fX-3b5E#KF9kdu0_f9)jNPxihZ*Dc{er27t*Js1!2x*K;`XwB-;E$+ zN4IDYD@bZr2-h?aG6r6wfQ<1{Q+v_E(Wl>yeH_1sIl?WaX`7Q@^=X&+1XuBXmg)T| zPD3=6H%ovmE+CI@tsCC~j2D9C`6(AkltE$Av>>#qXG8=$ccPFt=qto9^@ueH?bebT zgjNJXABn`qwx>Y_-r+$~ks(+!aj-lK>5QH{`aoRT!WD1q_{UK6bH=e37p1T}g80Fe zE$lu3q_OMR5(1{~GlIk;TnLEj4`q?5)38M=i_1v<&XAq^tu#Ag+R@GsE)`N#Iu29jVYow0Y15$~{ag+o+t&7#2!i9m!L zAi!tzB%y4uymxZ3(1eRW5Lk62lCaMf)=G>WQ5i%YF93@Tw!%gGmDWa#3aQway0rGMK?kcGN$F z0CxO2%rR6UypSp%XY|fYe^EK4Zaw>oH6j#; ztyI_=_;tS|V?MKY9_z+Yl=oEsCBiM&&fg~>;99T+*C8Xk1}oxrE&4V;6aO2kIBDHy8t`-qe?=v~nSrytte{B)2u~R3pc_)OsH<3qXUp1% zU*Z6Dq1mb6s@T*=&x{djj}FO>LuBBHlZIHfls7iM=+hPGXqE0;M@~jLCK20bD0CPW zZnGZ5(c6Vam(cQW6U+=*q`z8A=dyROuf?#z{=uzi!8-N*k6O|n$9Bt>Ic!?Jd*)`# zmY@FPlEGHyV#y8e-4mb3E;eGQgVBvRKIQILn!IV~*L_+civeFz0(yULoSDrF{(NlY zv}SSaz60|sx*7K(2IQiekFa%S>ZvT9FpEv0>y%5n?{z}sP)eqnyPWSe&b#c>^)|H+ zc`M5*Dp)^L-ZSOa<6QBifBvd0G}L<*(f^?uxb(9^kOABkAE)8wXcFLLq8BhM=pCK& zsa3Yg$Wgr=mQ!#_%R(iv_%!<4Q#|_pbIRU4D zm%%vdmU8v+~<&5J2yD0B)%v6r6kGAKB%# zKFTRT9I1l&y9i34J5-I;OD5(A+AK#$59Xam#l+E?Tku3%M5 z*&rvNp3@T*c)9Pm>nzNz7fl$}zncm-{lRFHrr}pdkF>G26`747aTui(9}JIui!VSw zcIkuml7gqvnvc#P@}!1J&&}yv&+Y4GCOBkc%9EdGX{WVS7@$dVyJn^fs7_Y-gtyUAO6>MqEK8nNC8?^8*#5yDZsn>Q>3YHX~!e6w(8zaT5gpYyA1d)2pUBgw)~&SM_o)l1&dm_ubJy;b>^yWhCKo%tEH1p->xz+@`HcxyF3 zDvV>f{Rs+3-#1JR@&hMj$oWu~__k}It)J#Mew}DkHt@bW_82E9jpKy2Eumz#+U$DR zqWJ@7{E9=9MV`5<1&`=;ej1nPX#XSnQJM@jB0+V}N&5{25q-2ez4_Z>p_;u$~qL>0p1i6>r@5w9_jPP9$mkabl1}mPSN}w~s^PAfT~s_ml^D zkyW>Q%Tl}h;|D$o{&jqZ^AbZ!FurD+l+;EHl&^Z`GZNF1VH`vcJcdVCw*xnEw>~25 z_=mb{u3}8|-tleV4<$@o%?Y#~{vF0Pj^P5NZF*kzzh$Fms~`Q4#>6duiN4-vYbWzI zYEqcirs2~Hq25ckNPeDbhi5b3ku8EIb=hb3sqjl7~$&3jL^K@4s9lM59*oxJ1(I6B% ze{w{XEv>y*!v*tL)c}ee>)8@d-ilM7>z3H(Ql2yKO>6T83#s%Fpec!pHwOF}As?TA znE!KGFaVNu7psi_2;u(LX5u_Sn0zxAkTTt{_=81ANI88mls{*f{9DC$zS7Ee1LZl& zcauIg(;CLNcRQHg7rHNp63FA%~-@Q4ERv{N!IV4?eiFj4*H*`d(RGzTQ=_qZl(6GJ4vJ5He6>O=_va5y@X@Rq-g+06XM)?mdMce*YFulvT4Ks*%-7{HFR51# zk45s1O>qf?YTqho7^3k6FiDnm1!Ote#}`}=LXTdq-&Qzqo!_MDIf&wXxjVtsOF6KM zzfyPA)5y-pG7x#WF*QHH#dKeStqDCbp4Cn4L?5-c=_3QzTxY4dgln4${jyTspQG1! z-wm-g(``#k{C%_n_p8lG9;D>M_%OH&qe-5YuCJvS)Ws1>-eRo668`$j->`C2;{D+c zGxTG{w^UF^bkpf>h-h`iQ?UAG(uI+{KNwc8dUFBk|6nb)l*8#yXHa~e8rj0XX2lAJ zFe&Rybkwqh@b)oB=9GrNbg%FnAOUjc8Cb}qE@~)6{xx?@c|@}|So+VQzWokwL}YwL zctf#AGXl8&y+X9TSEVdp-}5d``(2vkn10GM`O?+Q#?!O0LQ(_xoX;e87=fSnD|QLZ z@4#=^Zu3)kI5~+6~_c-cev~fEh;$V!QQtca>&1l?Yq(LP>;P zR1J>axXR}U%5nd&-OW_3TRS{0N;^vLZ7pn+XWxQA*{9QHhHbgZmc2%}GDHfCuI5)s zO8daH16e|!OeRZ4C=3W{NKY6o6)!=5uKcXeH&R%dHwP*Ew%CoKH1@9+qG7$s@!q$b zmTx{L4eO)n{-|oiqDKBBc`qJ3L1?)$hZx!`j;_|1k3Mf0OyuuwiWz7dvraKFZRmXb zc|$)b&-hKG`XPVGg?O`br-mp3QpxI=TtruZi|*jx=G3Uz9$uIK=Nuew`;I>&E@2z@ zRQaIdq({$$+a?o6_~WO6sblH49~Efg{Wy_?56xL{qa7o|H=|7b+I$=P3EhW1C&%m_ zKQ-m0E2qzlahD|qXIhdcHyi}mI-e}-X}7mz7#eSWI+pe0zMLU<@%}9mI}q2#j-jc? zp#YB_YAma0UD7AQhcdR-VmhF;)(}*oFNL8t3U4pQPY7v59HaJcLOc|zsSLcWr^C!FT(pBU3cY|flW^|JK0TWBEp}8=Gu{J5GR=SP9BNtf*>*qV?~4WJ11z zQ!$|))+6}B;hRk6ar$;INjO~gwOOH~+VS67 zYy>E`S3$c|xT%>R2>l_z(hMdw7^>@A$sudg4m!Tz+20%uR$krd#x0$M-XFQb99duGjeN zWkJ@Jl&(}lz~~Ds{@DGYy#cw#5QRGBF0dmasBQZvuX9eP&j*!Q`j`aG8avBe+ZtSS z?#S8ZCE*04We8Od%ZYgIv5McmRsFGtbQ9uwMfB>bho<)InYV~(mX-qj^-JlArPyLO z)a)fz?qP`AxPyODE4i8kYWCqp?k&Oxo%XWh;&0#Muw?XgN4Rgg>FvW>5DUXU&Tz|- zr9+vA?CXbY9}xiG-;UDTwa2MCZWQRp=50cdZF`U{eGz4|QUj@1>Qy6m5DH zsqKC`Th%GafrE0d;lbk=67MkRS|s^&gjnWb`tEVE@Ymt}$0e4~T$vDtZ3!73+#{+fl(6&LlOFNdHnNa@i?(Infg|aUD@_ zBC;-8L>J-S?g*Dz1_ZS~fAB}Y`~L|vFf+iz=eoPGNi)$?WiZb)fsd_A#MuW0-&m$>OBGUbRr2Kl;i5W%|1CD#K8H`;FxD zw&4D748c2!1%dq%GY*2_aHFn|F29AZJha@PEr4A~q+w`oXflm+iMR`PS2Er*Uzk=G zQeLOR!9Lmv;|~=oEZ6Qx?c>}&{hbSHa}g8pYr)iFXC+6Z5{E1I)8_8c`!NR2Bz&9B z%HNvO!w8)(4i%hK8P8(8}sg0jaPdw$z6`UsS7Euba zmqNbPHV$TY(ZeunlzqO)VbJK7ieCZwZKxe)C7@swEoZQMd#+H*Cs?d+S0<%+SoX$LXfXy2ZmarEks=kSPnA(3-0Vh z-wT(2#g;y(U3*h^>hkcJmO9(c^0IDe@*iY#$BT6^{oe$BKngu!B<`Fq1sYHu z<%?!l_=-y^#KFG<2cIj4Xn(A(1|*1p9T-9^E6}lR6Xd%C*!AP*u^CDzT57(c;QJWt zj%D=jU0+OQb)~k1(fMm@eaCRATi-AWXJ;SLg>?BBk~t?^2+SJreK6oDDS}t!{j71U zz|41VPlaXhtj6o3rnJ40V&w0MA-fimEWXUi2CXr_$Ulw(cEaCKjKD0C(p>dkE9&KC zc!%0s^a(1z5vN*jQecKCT2&>Y73RD1(3#iRw$Kug^jP~yoTqqDpjtw2O+q|c7t?R|1^mPer=Vq|_*`)xO-T`|h-Ae?cT=XRyPEqPEfjix!k4z(`JFhof<^EKG$0iP zrufPe92Gu70;o+(&A=s1;QsX{3+1O6K3DbCKeU>RT(g0aEZvuaoWc$_k4ojkCp@X( zB3K3x6S+?XpMq(GHAP`H^=mXq)sX#o<4ie3K;aA2k^1DFx5j;goi({lz9q7s;^>Vw zBj~P~!2F#e)tNt2*C) zYpIxdwRHf4KfpXmj2x!?PSv@Q@gpeLkU(1lzClg*e-=BDfZu%WD%o#dI7eY1-n`LA zYlcrh<7|JoH^9gDM+YZ7P)Eykx+E3qlQnig=HSIhJRK)!$H_tXI#^;(wnuDxEUBkw zuE%I1rEKU6>Vk8*^Uz-pDy6PBGK7nlV5@^-BJi&iB8al0x;8LftHCUp>`| zU>uzwo>kH~n)V_gY0QUKl`NS1FbEF{iizf@Vph_7lUV;M&+=y&uNoS)A1Aq zOs>?Ty#Vi6K|1CM`%NQmCFAwe%c%QZkAF{`9P#y2$2~9GV{}{ua{mu@+rKUh&rBfy z5$xD&n<=-)qqe!Xk=vpRclX=Vh}L`3=o{Ybf301d`cPY6+;0jlZuYj3uCK`1Gkle# zFOBL*C26wRX|l0zqP^k8PSdC6j!U|GIR_}E4bu@paQ2~+31I^Q5IP|b2-DpADNAuH zNa+xaiN3!V+dV{075iROxfhLpOE|m#r)7&tmfF{hHNwvvJ%;c2c(XW1Ah)ZAIh-WU zD#_8xse=1oRembEiIqCUed2U+C<#;>-5C1_tgj#1HSx@L>#d(CU^eJ8mZ~DL70h!}3KV2=HhAN8>Wj~CWd#fgNWVrBN}_0( zLolM#t8?6`rAR1-5kN{nhiHtCF@ElGbY!jp$8LQAiOxsfaIKhYyHPZ+e41hgDd@Es zKrLkb&cdKM&6s_nxuDct%bpyLOL9QMy8?gpQ6*V3TLdZBa89OC?4Mi^o8|h6Y?HJ{ ztbUc&$c0G3g{Tb@X_}?LKax+m`K*WBVayKKwiei8LH9)BQX4#f^11)yJ<%k|hy}WP zkNAJccfjzwg7ReTAMfN)szG)i+<|+L+=T95BsXJZ% z-eX7iZ^h0*1(p_?6jwpAJkNO=xqy2ESB}1q$~0G+Pu7-x6#l>I-@_%6MPzlYrkpSS z#4@bZNBwL350yNn4gZ_|=i`6gI6NPA`VVQ?J=b_j|BHr~nKP;th0S6QnP0iPvM~QCOEB$v_ z=QTDaI4LBF-YA`E;ztZRYuKRPk`FIW{yVB4A$KHM&4{ow-*N1BoWh$h$R3Y#-e8w* zky3TowVo0SOLPX=OA3eLs7$UrWo8!V@}nUQK?qg%G{(Ny6qd`s--8+%lj1z;*VM0J zo0ywkL%;KCXy7&>XpMsSjXI$3Ho(v_w>1dmHh5c#T)00EJ}ft;r9@_AKm^8OND?izZ( zX4l{v)2i=m2o;GVN(=cnUhX^ulbyv)^jrhj_=bFoIa9imLD%S>|L@$!r1|cm8I-a$ z)FbqD+>6t=SZKxTZON29$&?8nt~npB;#0;i8`NcjMA&jiQ{dqlHtcE6Kd+m`yU)tG z{;-cT7v`=X{l2Fm&lmlZHJ_B&T|W8r&PZ2Tw;`7KqnP-z>gE@{CXJQJwkVnDvk(=KWF5n`d;nU7eYaHYC~V=dWtYvC0!WZW~=9d zc^l@usE*fgrps&<7y0Soc(OCQ{-^f$H_N2=eg9KH!rdgD#l_TTnJV;WvblRfK~Og7 zBf71w1I(0I^AnavyzxlcsLz;w0zo1tbyjU1$(1z_Lsmrqc52Es0 zQ7*JVf6|H-Vl|Xv)pH#kqmZR{`aRV%vYLq$5*0(ojIxQ8hrc0Sd1ticIQFqsy<4SCn|H7|%*~97i_H40~^UFcZ=>i)&stLbe`d9OD&fatmGr3&c z_%x`8uPXjlSZiz=G|g93^tv7Lm$G!eXVNXVM5TqF$j`w=rMir(Cm_%U%&5zYp19p- zfV(D1ruQ7o7MKvJ%{-YfuC|TSmi^IsD&-%>aSCpADPx!w%$-2Qx>e#oEIUCJ zFP&{ouD=@LEYI3{IQS!z6#?DRl+q9@-8>I@}X4Zx%~G z12E$-?+ix1F258vUe1_!4f1gCIi26Q6=|shrWK1O2)*A@<5y~HuljUGyF^&^CX^e} zEU#*^Qe5>$TPTR+YM^M0d?SCy!ldu;C4s#<(eJ!slIfhU1Q`#m00AoN*5!rLp}C`d zozj$TwjS|7T=|3R3tl(T0H#LcUVVE#o!1^89%0$KTa#OG>z#9FtDmIX@MG;nQ)@ji zRnNz$l{DN6J13wHVb+Cku#$K{K4YQgH>93k#OFdiEuzb-`&Qk}9h=O#&wC#{c@_rZ zOT{fkp;*iz9~dcW(2jLC_pyedtRTYPP-^0uBs--^6v*ii_IHB2isGbD66j8-?sBd8%{p){Os_w`uC zll2*{k}LDi&#fwfMU2`Y&QIx|RamK`6~C)UX3!D73LDS*;4I9a!N40up%hbKBTN#f zWcikxI>EXRtrp6|o=P(qv(blV5nfx6P8HK#Akccv=xqHS$o*l%;HQ30%2SxGaQ)BL zM$ftJdw2#v_2uKPjS;wjt!amzM{@P#8@Tj~6OC6fV1$bO^tr|iSF~ZJu3IH;pSC7O zqsB~bXd7I@YChzBX!|ojXL3PsSD6(1v1d61r~!N+$}`H7`sg(m1Kjn3T^)I~?BOYT zKAZfwbg)_4fo$;ze#ARb>UZEC3x3@D(bu+YoeNwE2v*N~){pe`oWl+Y0(~Gnx()up zcxQ&9>PQrpolwGg1a4&om|XD6?mjG96aQVXHY2WQ*z&-+#ZmDGc%WxAej9w?9cz+J z+mCQXYXDZF-vGF$p*YR--+g88PLh zg#=OMq!FF(HH6t=Pu)w0d;a!jja9g@ksy=w~lNw#jwH(fz6L6UNu&IK1`0CdAd_(S+yZ%T0UoV3~Uh>?_Hwn!B!Ms`sbvNwyr` zW8-KRR&kj`29{&(XdjY3)mC+j@^07Y6I*9@O{wX3tK=ja(L!wEURgtFTeR)oncWL) zRf*mm-H~k4Y{%Bo?^&JGuJXJ2*-C!LJkv~p$Xk5wHhOBn_qqA?st`$&n!1YQdlB{8 z?m3coD*k$_mn8UB=$^0rH7#t!EyKDANp1%s8d=+UYq`RX6G)H~&!yA63tNNPtNGVN zNz76=slTTZxh(*CHzr*4bNjFERAYnax<3%uEOOJ?|1STrG*LSu9_9jXUAJv# z)R4|SCfJ5;##uO~5_u&iD3gpHX{B{%-X*a<{}S)@2cs8juBW{@>)7gAVL`){>U=5X z2fgb*e}ko@w4aGCgXcf|z535C1>@iMHLu|IBGi7+23h#~GiKWmL>Whzk(eJf(pla$EZC(-fOfEN9It}cdlrg7; z#M9YKn#5iP_RNA)=>A=Zf@H>L%?FwUM?P9b;?i0edk{;E@TS!v$%w5YuLJql*sE*S zcy6U6;vcvqM$#B+*OGIPL_!5A%6V~qvo0gf^j+H#SxU{j3Z7XFhd+Vv=4kPL7Hn%aT{guf~0<-@?11@|}E9>>_V}@qePsPh;88gTI zb*mXB@OQ=@XkxF<82DebZtT72()qWjncj5G)@56@%`CYFWfD^v?COCt@C2p6{$((& zGvf2Ld^$o+K5BXoj>Po84HWrj+O@2~AR8~}d$tefrjAT3-1BjfGI!Fz6dO9F!tFZj z2>3#4iz*6YjQq(x^@`~9_4X^*bVLmKI(X8-CK0I~U?CPK+^e?m+r_k*DUG(oekw_L zV$pNeirS8TUNVu^W=_>?HHEd{Fo>b|n{~ItCH99R!y^E7m>}6YbZNpld0h5+M zqIu)sQ71lxs0bxWON0^{GmPmy@(&H=RtxyJU>rQ-$Oq^#<2nsP`(FDKF!)r_kHPe*mM0hPE*5yo_UwHQ|`;;~fUYKG|uH`PhU9X_soO;4cq_@d=7H3`e!A_vA zvUqaK(JrQep|)m+FWZ$6D>we1bjR4+{GVlR)w-#u)7LepYk-2@a#vsKWpua~c$`i1 zF9+Ygn9RwXYJUEjzok(+Ye zC$qu$x*Y6Gx?{8-hrMh6iKw-u*JRFqzfg2LPX1No?XAzlt>~?7FBu}xl2=K{Z)f*X z!schWt>O5bZUv9Qm}pqtYQa);&*^JUqJ%bWbODEU`QhBRZdsFIhiloOnE3v(LZ7PQ zR8DK?x9O*Q(QVn9c}boA-x}G+HrvGx`4Z!QR_ zk#FrbMlUm z%F2(Nc-^m6P6;xAU&hH9W?b)4_14z|JC-ZNu|1tcgQDW=RQV=#zGNYgIpqY~ZR(`S zvz}`B)M!&SvJ7HBcS6vTt02mKmiJuzbtV6PKE-mJR*P0$#qF)|J?HT}W8K0ZnXYzB ztQ0=jkf&y2b&}ku=ZM?BKkdbSyW^*9w|HmUO+{{6r2{?jnUVf%wHfIHi~@iy#nZmz zizFAe;d+6+_bZ=`^)IWhk!2!iA))^$_>x1Ey+`1k!?t4n%hXp@qE$^ zPXg9o6vo~W07}a74?nvc&*g9hqh7Za@D1~&Ix*yk3}DPt3+JP z#PvLtZP0xGZt~Q9Ip3A0%jV9!qn0W0EuBbyJA4XdEmfQL9l)8m{Jll!*5IE0?cDY9 zMMB-mJ3AiH37H#%Ck&p@y8Y$Ip% z?l02m_C+319_S7Fn>m;vb9gq<6sGS-;63$+zp#bj-QCl8R)TkH+Qqwj zN|bgK-TN|!rNzI3EN&G3XsOM_qePYhLiSHHttq|R&mPY%i|@xqO)-9T5Y=OES>_>S zN%h&I1epSVBxeG6^Yrr^tY?RVzXj8yQxl%K<#pzT`R3lctv7pLB>-YFNT3p^9yZZeeiphDn^<^PLI5eX-b{D$a7r?q&%`@ zOnz+TS}BZvmOv8|Y1R4^hBSNHVG#^M1^rcy!rjLG_3R2)5!Vk3%8gP>k#|JT(r4>N zUn99FvuDad%hKWRwn1P6JFsYd+IOcWrUSPJ0H4(*tL2jCp3BZg;ijwunqnNC{SFke0( z5Bj4i-UddNOV~3O;LI||D?(JG8Lj~K(eW?%(-nokyxnWTKe^%F3`f!kEnwXNu#D385YV@xIRngapjj!WRsKMS<}cL#Eu_J;8@)&X}!k zbX&j!boFY0ze*H7;P93(r}Ar!Od#lAYH;{&cr)&rC{8U6td}M6!L^1TDuei=91g;0 zCOi^G-1O!72iL~QOQJQS9}TI#$>|G^0xVr(OwqswlH?_^AbXrlIT+u4jH2#?-{KLERtE4$2>vFlVXTjTfpLe9(nq*>;QB?SzId8GOwd&4K`;$akwYW4LTff9 z*a7$sEoTzo2{6WlC3jE0Ga!SMzv3$-TOVwC-yj~PZ*CJ63I#M5EX<zRpT@)!rTy*x~Z>^3+3Sd3ki)8LlukuIP(!$on;1 zVvQ2Mo5C&XBgwolf#3#V?#?^SZ?lsyToE?|>0Kv0r|Zeu%t4w+A371$o(hs~X)sVo8 zSZRY%IES|N&DZY;!MvEafizl;b~!@h#5T}LPLawDp0i+`8gA$$T3Zq6qUVL@OHZzC zSE6m#42@feI-anfmC5sb$G524>f#*KOKZTm%NNDztS*iHWFe14_N;49bXliXD2 zI3Eq8BS1FTF4VV;_AR?P&U?Vf4uad=oaTKf^Z5N~F3#ralR~?(d(Dp|CywQNbB;J6 z-t8I^d(1oMm?BQJN~lgs9nDaYeb02b-}%~sd}brs2%-botthfTq}KTDnsT9jW(9C& z)?zY!Sx9V*?@1ZJj&a-+iE zp&nfK%oOjc7z3)6o^aB$S|&>F(f(A`*eM$;-1?AjplO;oO+J7M?u^539XNB3Fd?E= zlMk4FDCH`afR&z_OQXySbWmhRB%$bReMi?rW`Ai)H>I?Qitn=Hq-W>(QR?ooEhs?$ za}I13Yr_2HHUTLNpJ36VkV%1|8Q|;OVAlp?@y8n>UZ^L8VFaR-&N_xmOz=cIb22$D zn-=PoSA4gc4d-pC#yX7f+7&-aoPZ{EK7L z!D;?Ij5en^!rc#kgWI=~e^%VCY*z|JUOLSSHly)HPQT5(@PMF=hMopOCvTu+rZ~F{ zEOhIltt5Y>H6;MQQ0HK@kD+e4c~T@nC>(Xfua!^+?dtqp)p;QZQQyWT#(wq{Izt%g zk!tND%e-nje6+K@)Nwur29>(zTxt4{5qS(xdyo`~HuzN6(U+P$plxzU}Gd3r~e)k&Fz^HatnDi4U;*VR2cqtHEXYAbM zB<@%p^4cf7N_DlT`Ngr@ViLXTR@l5-5xaY*^i~9uDnA6R4Muyj;tL9P0l_oPaY~?| z5w@J?TM^@%ML|r`qrcN*uMp1Z!E)*FFxSNupBzM+axJl)v^FLj1ZDSUG zF@7zj`pQxo6aNJhNx_89y2#FuKb4;oxg!~k0SYyQ5$2+?2*%hh zInV;*J@X2(0SvSR`PI8L%kC-n>D@cY$L`GpO&R?mSZy%s8*?-)6ahik&IbI+ z!4!Okz)8NGS*yW+0cCJ^VqMOsj7I=yDQ{tIvkM$+&xg#|md(kk3R{~+pC?%2GW?O7 z(SLF)TLGOth;F;mJ~*=cO_zBkRMdyN)qx+7E`zbh*?`r1pC(m;|jB1rD-CYK~D2{+$jU^kY z{o0h`Db@yK-KHmW%VcU3iKR6%7H6PsohmLOp*pY6E%-5z;G5~>6R6p((d+Ac%8L~~ z7=~|G9;KA|2c`>6CS$YLgz{bvubq;0aQCn9O$NtE9~(5!LPOSc?8#nesh4x8V;pG_ zS>uNAxLjEM_tLIPQ_GV?ZhCf-r>`sq{< z`J(){BBeoL+}(GM6I8w{Ac8JjQ1~PmNV;8{c!@N9=o(f}KM3>`U!ZCRrx!c(nM?ox}*-b3pQui_qGb3ALtddw4r zi^U=^VmqnQ;nSPY$N6Me1%6{dSPh{PR5TXJs7_Qeg|*coUECN&J0g|lZlEX$CGnIS zC0q~dUje%l=Chw6&n<{cx|iabZRz)^d+7)|dBKetXHZkRw(RAxAnfz-YmarBWS#V2 z1xn~6-vp;h>&&yHZ>pfi(&^TespX3L9XQa|s3*_ivEH7#TY4{40D`uL zT{KO0-s1r^ataA-4)(`IMy(IZ*=;b&gnHOb;}jlhee(cc1Mk?)Bu^*o)lW82^%*}^ z<_GJkQ{8V=j0iu|=iCUNk^}}xR#rrNZB5!W;I7VasXoMNA zT&#z_rbg`8VmjYhe}e4)Z8wcw2*$94Vf3yv&q}aW{!yTeRS;byxCdjR!w$H*!ks}O z_)xOOPS9QiE(op);pkIBw`;&^SuxrQ5!ec+>6U56j6m@aD9jLEVegvLigdB=HOtNK z*5k<%??nbe+{5Z;>|Wv_!M_$2HSLv%rFH3c*@)(>+yui2$V=gQ=h!&dSY^`tCu80oy%GNP-3G-(c zF;WnWLYVFzl0&`gH%+k_BmF9ob9i9cU)Fn!j%6@l1_6#;;4aT|;*Vw5EZ4BXYXWEhE@zb;~M@6_CiXd6R+C(BQu zAVV7lgaE@})Dcj$h!uiZ#LjyaF9>mO9(Hd&@e3%WdYAOp&)^$$7P(b^R|ugA`WybdpA5SF%V2JgWxd6Ujt*Ir;!AL9-mr4vDFa(cN3+XC^6cww-Ba(Flt{c4(z7q zW?K<&XE7TFe|vpKGJ)WhU@Z3hTfCEPk?oJ=eN9Qu?@0JTKR?~zSiiK= zsFbkB{ou;VLi1wL1GIUDBoHBz~~=i^?FQu&Ojx&(=aw=@IZO{Nb>$V`yQ8 zfZ!EpY2iBYUiiFa5k5g@C76ijKrW$g93N{1px*To+!}ut=>mcA-#jKBVx%0T1j^{Oaw|v^UGl_YB?3GS5DO!gup7oz4PrE^Fw0m-BOEW%ek=XhW-br(#?d zfO0|F9@=r^-t7+*dW9bo8?QavN}gB@H#sUM-w zh>$q3h*_epp!6fJ3F5Ar0-12!bYFv!E1P7$$}HTGvi1hSs^4W#JDH~kMYJ`?~9yyX2>9Q>u-7>63Glx1`dKx|fMpWd50h0tx&W202F8w)Aq}N^gm?7PjOu zL_k6Dh%0s+ExxJ%uEKxSNcuB*(LMNcP(;r4Y?xe`l$_+s9;sl*t6TBB# zd%Tto^()fZFmy033;2k9^_pd`!CII1KuS%J>j=JAohK7ZrwX~EJWA4>jd5Sios}WF z)jFo}g_7Jr_pV~8pEOd)LsjfNP9eM1RBNd~Bz;+S`dgsf_XEE1m%=pBz5^}}@m~J{jSq#V}#bmWI zlh_CFyq5Sq!6SdC)R}SWTLDl+bgt?nJP=IuE%&nz!#2?DCtqO%)RAq2x}}P}eN^S~ z^IMk{`-wHfyPueTU^Eu+)9C=Javgu_fT=xc_LpcOmia2vDlYn3a#HS~f5ct*lIq^0 z@jU+yacn0mfx5Nsz1!6(+Da$KUNA1`*)_ik@m7Sw$!$+8b%5r)*u=YanD(OF%;{au zi(K<(5m20X1ei7w7Zj=5Oyz4IO!I}fcDuvQIlboihc2HWGL|-X9p*sxU zW8QQ`n1V5s&B-(okgSOL-6Cvvg}xX#_FphY8<;>M-~U|$<%^Bm3X6}VH(h`%xQma3 z{E+!y;p;nz3H%7COe}&aJ^1a`gVc?dnxCdv@LPj>lABh!ho>DVl5sCg0PO_ovg!$7YA zzNn|O$BbR@Ds$QTYZ*C@cmL*=cLnLYHSZRA@}PecNmuct!!hjrEE#&ukwHw=oigc* zwvid3Z`mIlyB8Z28afey61q)C0nN)C_q{|7R1pqd9GBnV*pvtk$1s6e-V^j1Vp41i zvp@#;{Y=eMHpnr|WtOnv(((y^u10|^?=nncs`dY)>8rz<{NDdn6jVw@LWzk8h%~nslo7kF z_L`v=mEiYwe-JZj0}QdGt!7*oyUyf!oo`iU3h|j3hV_|)G6h&Y2HF%PUVeGUMmeY= z)Jx{5C`+E3Gt7#cxbj%hnhDDlC;$C3+6ET&3CWADI1^;;iGQ>*hFQ+z%L^E1NDVve zmY=#D{!Z}!ZOImDE4C2Rd>Ii3yqC)|z)AN41=uw2WtgU_H@pmo$WV8A-s4;F|J~A9 zGJ3GV6C=Ew_hAgW!C*jOI84tIjp3+Q?#}baGE6t!fUk;SMNoMkf3_wE6PV6}_8FMN zN$X?VqfcP@>wBU9eAj5{g;7>T7{lx5RD+S<^ARGD)Ih^hYD?T_KVZ`3ZDocm?Uyy zx_1J!gS050cKy9_(b>K^H49xMGs{msWP>N+R1agV>XrRQ{&K}Bk4nm?psku1^G1<& zU{Cb*xxtLdKLx<~X*BIcRqQ1qb`V#=ED&`DP-+i#Vf1AshS_IFZJKk0g*$d=L8FT>GN)PeqFKIX%C= zgy?df)GO(wXSlpHRiF%Ggf$Oc7Xw?!Rkm=V*wskudvUK0q%I>xWNs~c@?hI5#%Sy5 zHW_C+uekn?3n`B=c2(1;+S~-W7iWJK|DJ-Pn8)(fG_BV6aLR7i!PfUHQQYXMFlo&u zmw&9Pf3IMdv>^i?Z0RUefkh&!8p3}_5e+&R*dnhsGmwNkLque*FMHkxS>Fe(KEZay zid|{!d^F{s$5s z{5g7rv%ccaEL+~NSa-cVvOn@BAOfkW80lqfWj6foaK&x0YoNOGlBqo#Kg#- zJs39EFAJu7jNU+wwSen!QSxj|Cu(DqDd;rC@V^KKb*Vi8VK^L`5xsByxR0`hyqt%%&zR* zKwSlfL5?M$a@$Y5$%Oiu&jKe~U>pt};Tz25vje*7vqQYG zOBE`5_*URIG3hc#v(1K$dToP8tKH=LCG)|e(!be_$bZboj4e>*;5>3;3N1g0$a>0p zA)PeZX%xjz*A@Z%K$1H^A$DjNtv#7=8+c4LO_wJ{5~>ipEy;QmRzF4#TDuxrO%t(t zC8o>fd)VC_P-t-Y;dRmr#wi@nipK;41$KQ7X>`Qc+^G!7`yVWe$h5J0etw~Z{mjKi z;5omw?s-G2OHhs3n{f|2e8CifQ2#i}XW8SQHOBdv~`S!U7a zhI`U_o!nOOL+nrBLsBH-hq>% zEX5Q;Eya#Rhw>UYPeR3X6LrNB_{@I~|Dw?33pohpF@OS~Y+k$rhA)(B+;*!iJtFSd zQhyP(<^ZP)ttmr4L`@NBl6`Cjqdfd-h*|Hv+ z`+U|MBkfPhb0Sv=9{?A5G}L*F5$3hdHz<-@%)S~Ww@Y`-5k49mbez$!TYn&%Fn?B` zW2~q8IBmM~MSMre)3ER-%?R-hi1W3~7-OsT&p1y?&gd8;+@guFxu>f1LI%JWJa^p| z@PvacQu%GBbXmg-Mvm~8GN@RvOb6zAR(NHo!}NbxW!5d5IZ7>;#zJo@{_hTVvOeE! zy4quXuSH3rY!CSAteUE4Y3FJeAj9At+u2U}!cApQL0_n=VKY#pZS@*kIAo_J*MMpa zd~^4PttS&*aMtBH8>x$LheGDU6C+IO8Tf!v$j9XWj>^?McEY{pXqd#VCwpFx*cvUR zKY&KsShBc(6dK2wP9EM*qcXiAi%%j)8787PHzpIPJ)+?qp2 z`GA(v&^6?Fr)VN3w;eingILW-ZGDp(8IvP+U7D7$mrOmu+;9siS2ojr)0{S6Eul(` z+9LOfxiKRXtw6lkEkby-!}OD>;0;>eu8I$U7GSun`IY*QogwaXRB$nhCdY|wOaMOi z$TslHE#jz4JQTYcl-CdjqRJP$z3zDrw5U#VPG7d&Rk$HY=YI#fBbW4vGHem*J7;vO zoGPG>-?^8c7sStKEIjkScRgVHJRP|P$fA@pCg;I%+LqPZY@cn|zSxRgF< z+KKR*yR~eQqRS?C75)?dWDib5sJ+liPlKc!Vj;=iAas@7L}tp5k&b`YOIwDA9l zXZNVT6qLK z6fTEy$&l=2XLX>@a5fwfB0PXRm(Mti;CE#T-Mt}pZILoE%A=b*G;q&55vvbtXl6T~ z#&obPU0L^}r6jo{nidANDnZBGpR|;6xKGJ9pYO_C$@gUIv3|X8r5+e|l~S|>pKfb6 zh5C)rZc`9(r`Y~|OBLDAhc3SX+Q*Lct59Y__1y>?fL8lWtxmrW5aEli_D48m1OY8T zBSxoYw_73BWNQthWSw(AK;SP1t(X5Z>ZHsoDJ_$4ChpEdSlXK0Sig7}V=wvx~v zve_Gl9b_st?469qT~MSzz!;-+*G*S*txuk8Admc|4zVl@kCNDR#YTM*o0~I|`84|> zhw{H!#cpy67d+qpQh9eklCGUnWa11vkxbw`R`+o3xw#0gYAVp7YL%3%LmWc$A35_6 zRRo4R+xi-4p(a3dmx_4zGUO1GpsP7f6(^b+D6mt-+*k26q^r-iU@>v$Napkk zbxu3d{)}5iswydu=VFW$8NV#e&;)>hG%lHDn7lWj(*{VuNkZE@fk zVXHhyI@;9Plne0$w&-hjK3%#=1z0TM;9mojN2<>~MWO>ruV@837yk%fJ(oA=RsTa4 zTVo`0t=$UE<+ohkp;@%P@83lcc>jLMcCIt)(U+g5-uYtolYQiss4tk4Y)yG?Rkl#h zv6JrXQc5Hw%!THQReKg6=f*%O+mv<=U!e382mz%f`gTh-`n-8aCdF$zG_&p2(npF0 z7pK_+v~d1pXs7;7%zr~v8|=QhanRxu0^Mb3W$jok4RmC&gxZ>eFOLArE=AKhsr8ee z7Z9IVSnq3K<&!-txrsLay(VR;Tv%$#CI!8pJ$RoPCKweUilYfAwcJ5mg$8YMF`h%E zkdb2m>i;s(A#% z<9yu(!A`|^>}Tb-t+7~H-NW5G4OgdRA7qWbfz?-Fz+H;d#Jyu$tKa>aVcRkc5s+*pcA>p@YYL$v_d*nFp@pDm zeC^`D!R+Jpf1 zCIH?l*<6WxL0;dv%A@-iwKV zhUi~%lMe2YUdniPgw#59`@77i^inuW(4ob%>-85F&a}QACX~iiXuF(9`JKpEvFq|S z9JsE(+^thheH7D?bS9D-CNAT_yV|b0bFm>JNyp=LgCCe*`=GxZUvLE zO_3Cjk==&Qzg>o|{mFjh3UBMwSgge8W2Fz2%@c}EcO&9>v)#WG@9PP$-P+d!ODF3n zwoXyAh1ZUuG=n4TNiTwb@_*$jvk%si>--n~NAuHNQXjlMTD{loCPr_dS6G7U3D~`x z#Jodg%RRx=Qn_3hY%}EXB*(@{?J4URy~8G6Y}b>0H9SC|_n?66wnLNOm=ByfoGYx8 zA7hkS;Xb&s>lqni^oC}qIr@_6#N!_6CTLk%u6+#L`aXLJz|jR|179H@rkpx&pkC<8 zSmn5YzXpf8&(XuhZc=&vudYO_%CUuec`=q@I+xExrmqmI>3jY@)e4S3>uT>RSbvE9 zOtIwTXZtR2BFv#8O;=l1S$0Bd$7n4A1}~&H|GJxy`8aLv`}b4L#wU=(uJ+no5~h$I z$Lvz=Ph7v4rW`X`PzWr=DetloCwGWQUhSetXJbbcp5rIRu-$bX`|3a(8wr`C4fX79 zv@=&dzZ2j|N6p2bZGF!$en3wC)cXC*e1HHW_5}djDZ=&{oDU=E5U#F!zCOEu4rM$p z_6mqEFJ5O*ow23h@)*(>RWT;f&u4%_;U3gb{#2@;_XO1i^xKLUWpyt@vL`K8L6d-U z!)87)XUl!ObQ5PS9D{iMY3xK|wGVS9B8gYp_xNev{#W&wz6aG##`MWafclC0GL!+k zO7x_rwmu~`g`QZ`Np;9zmGPM=%9Qd=u+M%#-jw!@y$hgF_UgO;6T3UFOi4{DeU*)Q zfdL4R#~2$a7r5H3jA^^7ud3Q4w*?WUKrf{CDGB`wWgc2qxFKTKlGhmIxLz|F(=buI z%vYFD7(%-_ zB$)bn1)REP94*fldPGb)R{Ek;e;L8mbXC>*c8~QzegV~f#6pNhMaW&5TTEhCsb~Zw zdA2Y{rMm+=_7MA1%j5zY=sm&W0N0!S>TZ94&KsjuezL^uihQGe`GUx?-MRU1a0q0Rj z7x47_B7SR$u<>*W*eDRcyUZNO(3lC$VQMUs-^^Q5(V4Blsf@Ikm9oe#mvKgC(RT$2 z`GO1&n#bmwyhU>-t^B@#<7)4Yzj9Enos2ce67n_-n0g;Ocgz>9#TV_oad@}u70EBV z+G1CCN5r?qaGq5TZD@F&<=z?)SIf}<%E8Y}ySUc9hE%LDCER;$Mi^CzRjUQ-q=Pf` zq5S46xYUYYM=lM5>rB)wT9zsR<&V$%?V@-;)b#qAve);0KX!Bxl88VqeC6x)$yF4G_vQ&u4NC)|Yf?95UpTB)h+3n>fvlZtUBz$NyB>Qkii`^m~l1 z4_k~b?|p0*B4nKyp6F+0XWJLi(pcu4?0PL@^n=I44A%KPK9g6MwN2SCXY3OVjPe>) zq!=?$k53+9*$6EzV1wRg~P&hH>rG@U)(EWZ_7; z_gNObApV~$99On2!_FeNOzXouVpRL*v5B7T&a5gYM%Jly035HfXD=BO(+`@a=3Dz7xOy?v$tX8WW`&empR<$}_QVD#o>{1wu%)!? zc(xcW9BAhH83qhmMfWp~JKdB|&O0dW8tWfL4kuC1x*Hv<)AvSe?GM)HA%fW#_F@*x zs9)c;ih5j;r29)V$y1KHv5bpH*KlDpizj1DQO(pepO~Mgkx0{1Y>1UYT%D(rAo9?p z2=m58nzHo?ZU1Sg&gF5Y?isPV^k2UGU!QdMO*1gRrn@20};ae+;Tc?kr~Ml3B*_ zZyc5kPaU=AkMm~N&kI2Z4ikdzf^iX+A{%Hv@D5J1&O64=&t=W(`Z7mKt?0MQh;nyT z_F6Gi&l}6jg(OxtNmKSirY20AZ|g-y6Oa?H7Dbp@YfF)G&g^b32&|fH^^P})TP>Z& zT};S;PkF*+HV>vB9s$Y7MuGF{NL$P+^F4f#qGgMPaNYJm3b0De%#aZ}&Cyz$H@)jF zcz-*1aXFMwi54aTVI!1J@`^Wpd4kMC36U9Ym)gFfgmWR7cF>@SrY1SQy#KM!Sjm5; zc7A;<#&#!(fkG0ZuyYm@ei)@$7^?|frQuq};$vE#Oozl+?y}lGzJzI0yGfr72F)6w z5Z6i-snGI;$7My=WQ1UWdICZcjIjBR4;hRm1CPuAwSY0V0RO64EfIXxFPSfoLtnujfvQemv18b}#MF z!myWiOf2&c?a)H7dY{cWml~l6*9w(}tMg4N4L9b$t4PTkjXYr;G$)8b8vFJVD{A^4 zCdL}uarSkxm|U5!R+))+y*batH-88AGTQY$;?4bMTxM#CrzV$~uV>_qmk_S6XF|&d zo-BS7`s@lw*6KQOkA|DtS+H0l1iMPm1xIq)$TLN(~M8^NHQyg&(9)?|YkOC@M zC(+B-o>Q7D2(1mJIn=slKR1K6(r45i>5sSufhuoeYeL{EfH{tSGV5%eW~dO@fM*k; zXp4jwTAdHcf{_0Sopc*a}uBoq-0PjEY zizzFW2uMSYwnXLbvNS=Ys4{m*T32vLnnpY`GINRbnw@$5N0ckU%Mvj;#=4GvyVK6Z@tcau*Cm(aoQj$-byaN;INK$+g9+TRw>HLMg1~u=FLNm z+{NP=DfqDWevm3c#8(rHgtlI!bS0#lF+ReClDhck zf2uviS&U`#I_N`>J(l|~n!&B-VHcM{?PjWD<=Zr?1=N3$OZl%%7=A5!x28nr1S`3! zHul9glzH?A2M3O}Hl~J@9wecn2Zf+189vaC0;8WxSp>1Y^gq2dL~JndQ1&bK_@PS- zcDSzr5yL&K(p`!*@l$5*x;2IaZ2&5PRi3|4oHZw!OMi&hCz)uvMCZ)*io8kdgq%FBf-cFJLEM zsTVE0`X=*}l}J{6R+J-wn*M zgn_?X^rPYw5$=P%J_ZymF-AW2yTpYjJLJc}#<*m-#BQQV3nIM(=>T;Y8iy{q4ff`C z_04qXS&q#H#$)JKAPIUBY5u_li#zF6efYt8Ju5MCd5+5WLgJ~ZowEBpUW>UxH1=`yV**T_MWx}^Ja>dvk5jVy{HT^azV0$` z*)%I>-Mh42fslm-7?kZt00owWJPW2e_>kL>*ND5xdKl^cr9Qa?aOV@V&lC*duBh3= zYEzQix02)^a2nN`@mwg)zi~OEdS2SV(SNY6LfVjZK=+s4;vQ)EJ0s-y&*h5BH4Eus z^%B}|y;o<>%{-d@9w?FkseY^PNv@F_^VjU?`>>*8=+o8TYjE4$TvK7<GY|LXagvH2I(R06 z1`%|_9be>>^@0fTL)*`$nEOxoAlDPX>J$D>2#co$RJ>y=2CztX%s`xD!HdI07uo_6 z!+I_hnR1c!uGerO^qgeJQ41Mj$vn1EgzZ4cwZU&z{iz#!_mu!E9@-;Y4+%Ae4{A#O zrLx;9_IBRq^_z+9@P-LUP*3GkuzKp zPL$K(f9r-Nf7iBd$Q3|JJ%6Xcndb zI6k{(zv(MvxkNwivWkJU=p;V_D+FhP_`31AxUHGCk-I8t3!7Qih9LWWjhWQnd(C4m zO)g?gl>VVNf1YFEQ4qAPuwAb7?UrRF(CzYfOs4+c>^%%TzBXe-b3ASE_k^Rk0Dscq zVf3>(Qd-K(SE(*zf8>4`=vzp28>@pI_vO} zk@XB(rzF5`d2e_V0}r@!CATI6_w%lDx{;+`$d;aRUVrH z?X3R31>FJ|!T!(Xy$?KKJj({pde50h^ZQo+k`r8OZDe&0SjXd= zZ`rTePTLhQ=aiX&k<+qy&l32*Y6yj3?s(QYWo;b}OUvI!?#tctcR;vcE7E)vn*FNv zh3kJ8_K=cPrg9do7QR4@k8O{kBh)5^={)0s6{G)$wR+<-yr zVTWLKCVf`DijpUhQ=t>cR`q{(*9hOH#=lzS(xzaKD)frvvMhU^u4#I8lpZf03yQ9E z4$x-T6>pjdnT^aOdfCqyL+d9$%DLzpBgVa5%8_v%llXj2KL}i@&!p|{!|*8G=i9YT zre0)UKSWmDfFrkbQ&qDVS$aMB@G@RSB@OFekqD}Gf;^K)Jp^h1nbduL2A(UX-}2_D zo&C1RxXT*(uXvhmfnyk@8I#|yH2JJ_#p?VhAM;$`^fdzMT$58agfrUG1HJdJaAIpz zUm~eYYT#^z4;r!B@$a2o?5u)$AgB6Dxub;XXOQ|WqBAqnG}iBp?5>Hw%dC-(5Yb{i zudXXnVzzujW9GN_wwmauhpseQ4QuLB`E-7+CO&BwfY}(L$I{IDj9bdP4EAA)q#dM0Zey`G_qTYL-wWD0Rnwlh zB{ySe-fKEIQ^PB1umWw2Q-|;J4)unJT0tYV#aoe#MmpI(t}plh_yRG({RQ;=%$TB{(HW&UzAMZB(^_j=YJj>-OJXx8{qMr(x3ErR8Ajiu~yG?}SCYsV?3a{a6 zpJ_$!v!-)4eOyd}mDqcTy8JEMt@!(5k`NlG^?EI3)J1b*@1cIJZcMtYBIihtiVo)9 zWJlgU{JYoQhUvwr<|(+Cw*eL;9vv(7YwuBzli;`^59!H~167LxzwNm0`+sTx9+B=` z+p>Xko>P#ksCMhx4O{pTa`8B59I_XI@m!FQ)x2zN2w+DKSfXt(Wp!@<-ru0Ijgbqk zE;@)}0RQTmG~s*_$3DhgEmX*rio>opEdO~ov3FCg`CT-kN_PP%%Gx`)aC{PaBZb(v zkn$~>?2y{yl~_-AQ3m2*{`J^N>MJzFR&OsMz8|z7^iR~-Zymy{@nKpNU-8}XA}bQ% zJU=B>|88w6BQ_cPvPRT#!STOB_cXa_6FxYM;LNTuGJk#0t!zG0Gd;*%U_L3?lO6d+ z{&J3t@+^#xx_5|eNxAUx${xZ!NN2{2OE73yL(ig87Ty(A4CLmcYhrp?W`%0sq)pAm zi=?rw&vGw(JqK!)Bo|te+PaN(P1;6tgc}W)*Now6C;xKX1o5RUBT|tsJze~ltrgu{ zM0835C-^9o?$B?zs;VnhSlYg4$%?FIGjt#tP`Qd9ec(bfEDVypXCg^eK1>uiwNed2 zPEhPAo^2TmC3Wow?;VOA4q9FZOin#TjfnT$Y;GIF;5m{}X-*}wCBLn1t$jS;EnKJR zFS8lC_Z_b96r3)s&u=mVFmoOe6?mq$D=1R*@@E*FnH-w_5RC&V+0U|4-6M;-ENmnT z6r!4UmkyMwQoef_^~G7+^pBX;d2`!f??#Z-FtRa0g08$6sTdg>SI{0=glj^y@~4hp zqHcgj25QlvZc=!2CZ6mhYSJqTC2x92O_~~I1pW%}&YUPfTsnF|Ji3l}0~h5A?;Ydu zESaOndoD_JkM#^3Ek4wN@?ewgTRQ=DWcG>_+U)XM-@+~u-hC%zi=hH@@O zOIElP*XzjN}U3I+W-p~@O-d=jrEWhxxIuEyboZBZ|O5m%)1CtejCB4~C<&=mb zZtm?9oehXaDI?t3%qn!&Uf{G!QLvyjkY3uE{rB7WQs-x}dC>!r=a#;^8K&upmE#VL zo1@d3?5I-%Y}>QKmA>MR$LN)qS&*SwLxjf1uB4nx_Ff=rTENdQ!$*bJcKavs<#zjx zk%Wq6+3K+e3YDD#JP!t4tda?>ytd|W(j4p7pmOU_2TSJ2&2Yr4ps3ax-X2?a826da z;O5}pEmh9=^-h^vfxFKau_yQAbc0SoQte1_UvnRQ4X_ceG%c-}spStF)555*bY@zK z!>)DHo@8dNTht_SX?}W*&R6Uw-6O|<3*ty6Z_A@rve)(XSTj8kG($Vr7VG^KeOFtp zuW?LoFCv%=VA3)(X$X2`wG~3uRDqN%#0BFCMcynGdtj;Ugo>^Q4Z@M$==Tk-k*?7R zzSBY#Vw)$ag8{bW%zyG|Aw1M^DS7Jj7XjGU@Hl8ZF;)GC&p;B0Thr4$nq!?wA{w8v!pxF zV=*Kzj)JkDK!(bsQ*|kABsX$^}+=K zH+C{Uw;O_iWSi|Lc`Idyw3a#eHcQ};sYs5au%=}W5 z%`HsH&_f(IqBA(s&-xLskG()WL-`B32U%#j&hUR*i~>>S-Gm3`$6`VQqx7hL(J=EE z?U78N>V|RK*|N+#W@bS}(^M8=M}jTnZ?3T_4R`0isx;JVBkWCuCey?YtNWZ2=}jm+ zj#`*PR=A^w;$2mKjYae={d7>5Lcn_HAFd#Ua6|wy}0c$!6<`p z%`H4|6Qik_Jx*R-Ir7&4_x;mf2oc}Q;7`^IaD=V2w98aEBZZ}@EkZIk0MUd{G1xqi z<-&Paq9?&%J-~Q!1)OtGk56Ym)mU(IOZT|RvM}9w9y;mM`e)v!PSXik!|xzaFExJN zbgA@Yrg$FHeQzn)G6#yaCXygSDgK zr?8F1aEQ^?`a3%xlzItnO=hfxGZh$wPVQewdKH9tAWe^9+g`yc7#HO>x=4-Smva(dnn7N)pSIPDT%)d%wZjsfzCj3ygNmEb;G44YGNG5Yw@1jaqY zhZ3K;H%=5H3jGy7_nYyeL*!sP{UCS#VwCe zHxBH(`-F$ff<17wDUH32ySqDQa}FmCJ;md)7Y??S&VP79ToqyT-A9h%n-#N=Jo`=i zciKpV4@U5h^1@e02@t9-aDKgP-77v2TI88y>@SQFPz*Ku2tSCL)kaS>_k-NwZp*fd zSi+S!CdKp9h6kPTcSv{N-&1St4F*iZNYjTgtz|l*wHZZKp{XX&%L4WErp3A|8D`MS z1>2sMKLCb7)D4c5i*wQSm?go;&C$Lnlk2q$ZV~g7H=akCk>6o+zZ1n!Qr~g?Mj5&( zYzI$qjhDmKRkNtFtv7u0qh5y5P@h5sul@x=FK#pPfr~F^^Yd(n4Z*%nSilpdlOKW0 zwax~lxYuOH7#WP8F@(|WGr5AdoM$6z0;jAw;9cuS6gKvIQRt&_Z^V4BhZSmFUZLdW z2mwmGlnI6EmiQEoD7<~B)4yEy`(Ws{k!RV8092q(w()SvKdeZRX*msUH16j}vYb$O z$d0iLm%MkbJ8*PuBX)xjet!AW1e0mI6x8&hxCzr^$rf}0XJ06M9)qg^1UipS5OlgC zh?}a$7Z)@zZL-9n1zTYCp=17K%5E903x>$6c4JhaA`Nuz&7n+aS(ag~d5_fpmAg)C zsl6}(Uq%Kxw~j*{=WBan`#4HcTI6%7aa*$Y`gVPeG39=?{9)P6d;u@*1QWp0Ko&U@ zO!S5@ZAtdUC8PXw#us@oiGS7pwvWM)3sHRjs2dW9+~?mx%+Z`qu2UYze+%>UjF;F+ z2g@t1lk;p0;3+G0O&d(q<5#d7G3-=O%rzXu3X09Q@jquBQ@ef*QB?=0}??>+X^skt94{XoVR8EMr?)D$P$`-ZbVvTGIUD(#J1BTj{H6xo>FpY`EBa-rcHTnvf(kpXcPRw zHe1HEOm5NgNTUW3@c7g}r3uL!c=?atZJuzebsl&t&C1-;Q4Vn7ZMK`~mzgfk3ZCmj z9_nrphW>gT$2sm21J!fscUb0u6^Hkvxt2KeFQww`Dw{o0Jd2cmJ2fh}?mJ+T>DBfo zRXZ~}M2Va)mvec0WX@$KJ0vdNplWr}p>oI~j2suyd2+ti((PQqE%BeOM6-f?Bj<$9 zJvP4@s>YW~Ehi3Xnj=i0Di~e;4;PU^%^&npJ4k9|Fl8_B=R9ZzURDvN_>s$P4+B_p zXA3xpAcfb~@^4k`_FKrn^F0Ptp{qV4&Q7}9{{4*|lk>8+k#$DB=-9y4S`ejvbKh zc!Ls7bPIsIi!o4iyBT6aQZOo0VmUbbUPL_RUXM+IPH!(JT_k@;f@Lb)nO}}) z5nfNi!x6I0>H)1@AIsPSIHtz zp*2|HL2Y*_hHljlJF~>_glwmz{sZyfT~52n7!x0yycF*heDLTW^O+bur^CsZg5r0Aydh%l6^!uSau{cyoBKaGY6LT_;g;^!ri6 zSe-m-#5Li9R9M%dJK+v*{n_=)tSoMX;f~RvUryM5S&c5|p3?c-bs`;Un3J;gI>3%N zIg8ZEivu@{DGB>fciTeC?GDrc4zurMIjz*o3cCsSK&YiGRC>K|zQ-8Rl z)VONS`FG=3h&%g7=_3JX?;1W$d)DCTkyeZVLzl(CE6 z2Iv+paVCx&rvF%(Pk`xxAKKrkMQu$MR8;ew{>$q0bzIH5?2~T9VY(VAx}`EoCQ z7HW*FLM{HZ>`CnZQMyh9NFX=I)3SpC?Z4}NuS&I&Zrcm=kux3H^;>Z$*nCd2jh+tP zds#1Cfui+O@b{ee6m1ME!{}<5eLwNo?4UrK8(KT9|3-r$zvxYX5+{pym-}9=ydpe3 zsfyCy$fC8iB+|Er4jn2RoseiYx~1RmQwW10hQy1A2ZuA(&FqvcDb?@b<34` zb4-OQwOEUGr#)M$RVAL?%lW`m)QvXeMv`^|z&hdi#ev&JqXI_;rWs$2*@H-Ic?Qn-jV_MF>48M0fd@-uQA&MOWT4bI+AV=NZwFPCcpJ(p5B%2YFucYVIpKRW zoxa%1DlNX`+BuBZT)uyZ5GiebvaP!Jg6Z@Zdalkn1z|smH!Am-IjHECG!R|XD6?*0 z_$2A3JE44Wuh+*91bP#spksUzuUn>e>Rb9ecicUo$JP7Rc$2_e9DUd##Ly9K+u*8S zH7f82V-@GF&-xX~I<=X;b9$mn_d4j7J^(G^*WzedC){_DNTir9wFPI|^->Pic0zw{ zK6?KQc9Q4h!6aY#ifnFzLtc|ky`@~E!bfYyJSou zJ;l{UI0}||`*iCpudH)4a_+_)dvwmcvNv8!Y5taSq~4h$H@xG3mHKN87A%U@N+MCt zj9?ef5#6G zj)$`_+jhv1ejO8&{fec;a<+@GEY_gVq-s*Aq{KUYAm%tbHrhVNMWT)Tfy`5R8 z==NGFO6Yw_Mfz#FeH#8eHX!uE%M9#fx}1WE{-L?N;#%@H+IfF;OQo6pP?gw=Y#5xN zv}y*mLSPUOA09FNaVSVU;Ku|oyqpy0OR9*1$+1a$2ZtxwV;VU;6VK@Mt&0C?B4W3U z+pN@s!0)}dIELA9$bonpv(rnCTY6ALN1Me&@w!FtH(*J1T{&KteyX0ipkBX6PPCP7 z+4Nb(X??#%bkH-!zCwF6@!>OERDk>B=&YP!^D$b7Cv21J4cfttBfTZ&G=!J1-@KDn zD)nvc9~VW)ZQFl4`)&W8PBU%`5%sG+U(sm3mI@slq_5fJtuuHeZbUL4+6b@16wFG0 zL)ASCkp8{=;P=JE;YtJMmx$!u$n-)C7=k+XC}*8Ozd7HUlT77;PY+ba6VKEqO)@n+ z78&E&(EqGZ(omco_3{^^;%Uqi(fB3&@+^yT1Jg6`fkx-8tUehf){$P^aJ)%t3A@=V zCnES(FNv_AwT;Ju+aZ&_FHq7yU;gd}5QUblvd)`dG`a>`WEyUN{aKwZusFpj3-~i! zH)XZoj~C>Omyi8-+ry@>`lv6!idA+!a!WoX%`fpto{p&Fy)`&2bPv#|3Xx8? zpkjQVtq+NXn^e`>?CsMz;hr%)j9e(bT-a>Z`)B4{I#LhVg8_Yh8%pYR1El};${wqw z*W}FiTe~P-3~1!oTE0Zp6MwLfKbnFUWiWYVpCA7Y)k}GS8Gw6hR$!Z<)3lq9lN(_F zIZy!Isu9uAlw9<~%YS2Isd;Ka(@|91<@tnh4=a6NPl94Gytq1lvvX#feD<82(>fApF5@}={bIfOn zH8o2eHEduSI(+J|n9yerYsi*@&w3YliR_eLvX4$k>DY`$!gE=36`#h8FJ^NGO~0Jk zmG8nD@M5NRwyiRzwBib<{aQJ5nGx@N9Ksu34g@el41g&kxo)Py!>Hrn$ zHMjN+)#c|BMW1gHM*sOq1)W!1@HR^@H*T{<54*<3r`OEyZ-iD$u}rTUfg`;Jj{dt;H=AohuHlkNQ7%N6|mlg9GY z8;N-C|D)(SfSUN8uoYCAiu5KTBGN%YYE%T2`a=YygEWyQy(SS0NbemI1r(9qJ3$db zk8}bgp$7;gK!A{hB!B)hH*@#qm3woy@AlsAxBCHZGU%qQN*8p6E+cmeM@9WLy#NBT z8Mh*x$iJg+ca;DI8Cb^6Lh$)VK4~>>riPsdrMaNkh?&fW7#;k4$Vyl1-%b&d z4I>8c%DA6EO@fbajVaC17lK{PD zaqPEZ+f#HxdYn)nxY1T}e0xFihl66WxAkN49~#sf2`c&{@MowJr^Vtadyo8S#!o!B zZp{$DFnri)!izJZ}3y$JB_f7SnyQu-XpR)1&bnVZ33uve^>l+I-v2#%QXxDNVv?M@oj}Y+w8P ziBGAKQtg03s>$5KNPjy$#UhC8+n$+=V_XB+#Bo!1+-;tA<*fz8!IUO##n#4niU6S! zm7sV3l`#wwTM8}fvK<+X^|i=N&F6@OM+5xFd*NdTvXzn*;tqzN|Ni52eeZ^7GM0l(w1>LhM3Zul9=xz?1D1SEz;B! zsXOaJ0V+_`fD8fTSDon?=>)Ih0q-y(~wD(on(bn{H_jQgT)=4O;Skov|;%e0u(766C})hseAPiY{c{ytv_oY05j;trwERq&B5)bypQ6PxI8fsRSO2B?DvM08L1RQDer z?nSn(qxo#pB0Q9B=$3<|d6vz)D+|1JmHqz2@e_Wp;X86a*OE@Q4g()Q>#ByB$_UyDxhe)0nrOMx0PycO< zaK2Z2Su(hmCyXb8(n@dc&S*4YbA;%s*%;9BD39_hSHh|f)83ABZU`j()O0J8@0s; ztLBt7oSp$5^t?dr9ieRGM&-2&K55kZYs5f*^XV=KUBrN)x8IPYsFg<~j!c4Yo8Wx! zFxc;oPW0ukb?Nv)f^SazzjUS!ITwPMIA*KEd#`RTm7&%*D<(tl|5 zsNX7$8LF9hTq3f-Ze;XPd%fqk2?uiw+vZE6~CVY@7 z+siIkOKZA!)lFk>Ga(%Q!)mVKSEBO7lMYJ?V7m>FZpyPdQSrpae9B4Aqaq=+cdvM* z=83>|*0GqU`f!eAllu&k8IQ0 z>)ZY1sGqhyWh+ygekY@>OmxBX9S^%cBhnfsZ6V36AUcmqBGk3O!EK~@qz#f?gDmFa zt~sDWj~|c%_zn$>${!kQNjg0DS23<914zMr+ATrPDRNUQxl<@-lU%%VK`!`BbYIc# zppq$j+O^UhSIs=~Pga9ps+(O!2hs{mMyda^vwD{dJRXbKg$E zHc23BaLZVaE^t+dGEdI;Q%PzkWw$EHx@!?>ziWRqwb#J1VOV(v`?_Z$AFYsW!#mGfRq9NC8eWsZTb`VPZW{#@VWz$@DFb0Da5NZY2iqSY z%~cy-9bNr%YCmXjAj^5e>iF8V;~60|{T{o0{Oi5huFF<8ax0{)sF}oi19K#`dUk%? zw#)aj)AZy%nv&Hx%hu#}Kw#sBTWMuYc-==>avjQCUa0VUoD5$D?yZKu zBDvKQ*TF7mV}q0Lz(+@_V>D0joDt(iqh4!=r{b3PN-f`%9B7+ZI!GIeTBBxbEpQ0B zuhML6=#?ED3F9z92SF0ZB?!&~2VSzOJO#P0Z~W|lznJscS_$3K=Wt_OElk3^t_m4J z65j+Kt~*P6E2;!y9qtZv0;i$@#M6!TU{BMHN=yB@!`JAsOw{?n$d)GyYrsTK1K+(b zRKJC4cqg4{eONscC1Qo9agPx`CH%_ji1_v);yJbU1?dHd|EHOaUp3g~;9JP>TIqjB zhap#YiZi!NL_mfGIi}$3hqjG20Ns0uenps!5V-`kmX5o^{xeT0w>nwpppuC(2k9#$ zMUyS%^;8|4ojI&Aca(Pvck}{dtlXy^(dk@O-WyU2dKtc6!P0CK;G@z(^KBLS?R}h) zKuK-sBVy;4GlEIwDEB~lp#mAR&{TOVpJLf(FpGabD zQYy8xB6wb*ms3GOWwk11LQVw@0z{@^Pm>4vL)q=wYa{dWq@BJF9wPk|E$*ZhO$z?3$Z{C&3q)-@|2_nWyCl&LRP}p5EME@dS zW)Vx7P}&OLBUX-xgPORu2BG@gU!{&)xd3LG(NGMg5(;iQu4yTN*70nA*OGatRGh>K zu=G-fX37*We1>4p=kNz}VCyA|zowb?o4W#s!E`Gm&>!xk(`JL!n}J!P-1h>uq_s)l zlO={BNqEb!V&)$$3UHzq2<=AT>+5mdNoZ0DHJ!nULcI_{D6FrE%vR#hi(}rDe~kcu z`Vb0%43rJSz0LPlL2LjU$`^4D-R|o+ON5|u zVovj_$@9>J7?BgR`GlFBmhX(7NLHfF-xCgB{uS0%PpGDdM6j}>M7aGODjhYX3P|Wl ziY~kn`~!jb=^I~IN({Eh+Zm=NEf5Ab2r{a|gE2v$kx3+VE8uEJ`bv^Yz)E=v(wHOo zXt`~tx$zLBT*S7zQE(!S=d8&hv~&S(BN@+7VBl(7obR?Zd#i` z!rtNXUq)!8W)c9H&A)=C%;N@L5oOeE&T0$uGwUZ z_J<&qTuqP^a_|)eX<9Pe`({{#?{rp43Oh7wN_)Gk?FGoKvjjV9eF{T7$b`dJa+0_E zBDb8#!Zxl%nH+?zSy<#w>AC6XgxYr#1iIJ?PT?fb&hxkx>qCn~tl(~dMmuGTE#jej zM(qMD3|ePWwfe@5Ig4?gI4Eg*8UfA_Bv;E@#4Td`9d!$(L6G{*&V)<|1DcRof@XK{ zO)%v^ABgZ32ZK#U+4$Nd>=}RwVA{I{72YC1g-3N0JT@r7;krw!8uFhP-;3~C0f=Jd9n&d9w+5%n(hQ(+oR z{QuxiFk-NCB#_dVw%3@z*>+hz8cGr%z5i=>)rwS@yRH7R@Hi4$AFjFqN!LvIfnkK& z9tkMv_*N!~l{fcKiv@@&foJ6DE!!bCTogw!2^H6JKS7O%Yh=#nC>ul9;SHbK3DmZ%rus@WuJq~$dJKRn4G7UQfQio&EBcYh(gv|Fj~SVybeJU zljDs<(&Y~VPE!2-<{2J=Tpt5;|CHthrrjx;3N;>WVZ^I*;Em-MOiPmxiK*@KI0v(5 zVn`TXo7*pVyl@$8sP%O{uRH)8Ud#P^#A3ma3tC*ippY5z=3~>iC!Y)@;x$nu zo2Fch3Il1ABji4xZkPmU+xpne0|HF`Eb;@muy-#-g_IZ2hQnHX2PN@`yfU75Y@Ihd z`Sle<7XWJ)>vnNbBW%aWrx3h9=zDvluWS~lN@_a}8Y{8Z8H=KpVZiw}VR%VdD)G)L z@Uj6-Z#u-p&u(87*IC+96(TCo(6Xb=-FA8%lTz7I+G3x4Q=q25Z)l?#{SRR~v*LO% z@3rAxg_CsAqxmfIMx7Z^ZPsL9 zYUs8b5ie7fomBc|rjudc>GgNylFtdjT2Ah+nVijGxaxCM($j?S))PwxE?hOyxQd!U zeAw$sdlt~?Rb<@YWPIo5(TN2JnvUN&)$ z-^L_NK#5YS(@PkYx0MVpS4=`_ZEyJsy2F!XRO>5qbl~~~;n=Dv*461mSJHq{xEo@3 z0b-E(U*U}j_`4j>SH-NIO4FH*XEm0 zxjS%GERpt_AzDnEm|%>bysGD@pA8KQ(asr3$Zne$0=ThZWDok(!9Gf0X^-*;=hN{pLsy4MHl!MI!p_&;-0l@`;o$jt|J_8LJpM%U_T46 zoBLsC8NA5Q&r%%>57<-{gO?g1o?2{3p}Iz2=G9N9l85a<$P0&Rq=PY!8A}66S%>7%)KKKIUh`edn}=Cxv7C0Ik|HBZW^iwo1KJ*r>mqM zaKhB&4IGc2o8=0X;zw^q{5QT5&6CjKE1Q8dh$GsIFqRSBoP7@wDT!hNPu)~DTZK<^ zk381p<7*08KU{b-+ng8cpp?U=nJP))Hac{frU$vs<=BR`-;8LQx!ke{wIOP6ZBZnc)W@qlog0dm+&YTSbh7C5FmX&zd&fN^2K`gH?WFdXMWW$cu za?(z@dA1{8%dWNIBv&E{l?d!~&k-_U?47y5^N{UtRV-^a!Xic<9Zh@~iP<_ed9r90 zn(A#vWV@p5Qh>h>#<#IPkuh#0#=B-W;E`eLN)ZER~Mu~27Fcx^tgbq4dO?)!L=O6!&l?CZ;KP4hQM+5v$ z_B8e8txDXN1b({gmaVTa#UBWq{fv?6Q$1{hPUr!krXoCGI=LWBuKl9&Q4#wXn(M0kYzsxUH02Tg3)0?@L5H4DL{W@ufk=$6$QT|Jxge||t ze*Ml`>so?)9AB=KW!cZ4{r|BS^u*{sAK(?wl?*A-3%|8;2ep)Bm|ZpdkTWDY-{t4a zz?Ig*+#EITdzZ=oY3t|=+(^8yP;8WezAvsEj3?Md>?Ajmv_g|mfXIjRqi`_J8Ah-s zP-bx`-#6ule@+Sqr(+LL)kGlZ`EzJ>B=eHxq2>&b6U2POscxz`r4sxRYPRS)K~jDC zE{6WL^}Td*m`G-t)dmEPVst*R^U*!Ww*e?O4#Zl!C6R~f%+go*i!|89I65fh+!RWqB-tZ6Ppr%LhNRL4;3 z^izcSg{o!J)2iTiT%GXNEFHuYYgNYMRNTXsj*kUHBAPRITl&~+k^dMgS7xTh0=~m8 zGAO{*@@uw0LO_-3SisbW^276~o|kN8MBY{9js+Y>l~dloA@y|sV*f%9y|Z0>jW=E| zpkih_8Q^jRH61Yy=Gjtr#E&|wJkoM@G6RBR@tUTEZ*C4WbxRxq(<(86&2NZ=a zYoV0@B*j#2+>Je!-pr%?;@mc@48n7mM3TvD?}zU}hlo9- zMz=CF>m}YY+Ijr-0PA#8Z~^j`{$-x zsABCyRR9WuvejS{^Hs3nHSR=H+x|bWaDZnsdo^EO=3)D#@~{ zeqar^Y}YUKsbS)7bt6?ea{q9UBMZd3na@zZ2DuG%Xhtl$S4{%NrKscej&QD+784Mr zOX(Eu9R-ibsTQl8?x|zA(PqP_NeVa(M*B=Zy zvi2QxRH8a%{^xs_)xM$wNJt7j0H2O|<0VyZBK(L_g=jVD3Un~k3e$AK^|ko!V0ao$ z&=*_B+KM4E57)amKQLR2pLkj049IxpSn`D z#aVz`-e_%lU%pY&|A48g`}ycv62z0&7VVcR#i@MXvmoF($~53R{W85Ss$BTg)K`Tl z#{Ocm#HiewInxpjTe1~7T}5nFS(j5ixeq$RJ_OJd!mB=Ue8Z;oo1d-Hj}7R&u4yUR z5}AIw0xnBO_&@1PFGPW_RQRP~YWt>fmYyW&GSXC=aQn z7F)H^D2{NO4rTl4n|3?RoYGqHo}>0XVYSRtqT>YiMUv6hD}%7WC(4={*YM)VTzz44 z>59*3dRLm~Ma5BGxIizOJ1@mKeUj=|h8LdI7L#w%d+1yphBos6iBu(zi9FE-yN#b8 zcFmp)FcT0;YX2F9B+F??_0}^R?hKueCeBuP-!-_p$!;oa6fxYkSM-W|-y!;@*=EXW z&Jpe?r|&Vmx*?30>JxJ?{~MQI4}S$QqUDuj9hQf*9%y6}z?tssOL0T0H;F&9}_Wd&7K`Wn8cVM5W6TREA5j_{%_!fNh>|Q*K zspP^dH)?A|mNbT!J}{v}hR&m)8U`8jh7py^cALoC(yRIK6^77LKxk44<<&M_#nG=D zZ|QB6%Y%`Eb=x9m#L2HqWVEemxeeys`ca!RBA)Lv�##!j1czv@HmPgR?jdz3Y?= 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 R<;Ef}{|6|=4g>%g5CCU^Pi_DJ literal 0 HcmV?d00001 diff --git a/Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-windows.tar.gz b/Modules/CS2-SimpleAdmin_StealthModule/METAMOD PLUGIN/StatusBlocker-v1.0.3-windows.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..050a3a9d708a677b31f1ce60cbaf923093786c47 GIT binary patch literal 190719 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 J+(uVy9@~*6a~heIrsq8IPuI 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

    =I>D|Dl@LP(4Ot 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

    7=8yxH+95?L(EpkWhH= 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

    9YF+*JKH+IJnx4vmClOsUWjwCypTVX4VbPq) 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.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 ImzC-N09G0d5&!@I literal 0 HcmV?d00001 diff --git a/Modules/CS2-SimpleAdmin_StealthModule/PluginConfig.cs b/Modules/CS2-SimpleAdmin_StealthModule/PluginConfig.cs new file mode 100644 index 0000000..0261405 --- /dev/null +++ b/Modules/CS2-SimpleAdmin_StealthModule/PluginConfig.cs @@ -0,0 +1,11 @@ +using CounterStrikeSharp.API.Core; + +namespace CS2_SimpleAdmin_StealthModule; + +public class PluginConfig : IBasePluginConfig +{ + public int Version { get; set; } = 1; + public List Permissions { get; set; } = ["@css/ban"]; + public bool BlockStatusCommand { get; set; } = true; + public bool HideAdminsOnJoin { get; set; } = true; +} \ No newline at end of file diff --git a/README.md b/README.md index d62e0bf..aa1bfca 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,40 @@ # CS2-SimpleAdmin +--- + > **Manage your Counter-Strike 2 server with simple commands!** > CS2-SimpleAdmin is a plugin designed to help you easily manage your Counter-Strike 2 server with user-friendly commands. Whether you're banning players, managing teams, or configuring server settings, CS2-SimpleAdmin has you covered. -## 📜 Features -- **Simple Commands**: Manage your server with an easy-to-use command system. -- **MySQL Integration**: Store and retrieve player data seamlessly with MySQL. -- **Ongoing Development**: New features and improvements are added whenever possible. -- **Performance Optimization**: Lightweight and optimized for minimal impact on server performance. -- **Extensible API**: Extend the functionality of CS2-SimpleAdmin by integrating it with your own plugins using the API. Create custom commands, automate tasks, and interact with the plugin programmatically to meet the specific needs of your server. +--- + +## 🚀 Features + +- 🎮 **Simple, Intuitive Commands:** Manage players, teams, bans, and server settings using an easy command system. +- 🗄 **Full Database Integration:** Reliable MySQL backend with optional experimental SQLite support for persistent data storage. +- ⚡ **Efficient and Lightweight:** Designed to minimize server resource usage while maintaining robust functionality. +- 🚨 **Real-time Notifications:** Instant in-game and Discord notifications to keep admins and players informed. +- 🎛 **User-Friendly Admin Interface:** Plugin menus for quick and efficient management without complex commands. +- 🔄 **Multi-Server Compatibility:** Manage and sync data across multiple servers seamlessly. +- 🧩 **Modular and Extensible:** Tailor the plugin with API access to add custom commands and automation. +- 📜 **Complete Auditing Logs:** Track all administrative actions rigorously for accountability. +- 🌐 **Discord Integration:** Stream logs and alerts to your Discord channels for centralized monitoring. +- 🤝 **Community Driven:** Open-source with ongoing contributions from a passionate community. + +--- ## ⚙️ Requirements + **Ensure all the following dependencies are installed before proceeding** - [CounterStrikeSharp](https://github.com/roflmuffin/CounterStrikeSharp) - [PlayerSettings](https://github.com/NickFox007/PlayerSettingsCS2) - Required by MenuManagerCS2 - [AnyBaseLibCS2](https://github.com/NickFox007/AnyBaseLibCS2) - Required by PlayerSettings - [MenuManagerCS2](https://github.com/NickFox007/MenuManagerCS2) -- MySQL database +- MySQL database / SQLite + +--- ## 🚀 Getting Started + 1. **Clone or Download the Repository**: Download or clone the repository and publish to your `addons/counterstrikesharp/plugins/` directory. @@ -32,22 +48,48 @@ 3. **Enjoy Managing Your Server!** Use the commands provided by the plugin to easily manage your server. +--- + ## 📁 Configuration + The configuration file (`CS2-SimpleAdmin.json`) will be auto-generated after the first launch. It contains settings for MySQL connections, command permissions, and other plugin-specific configurations. -## 📙 Wiki -For detailed documentation, guides, and tutorials, please visit [Wiki](https://cs2-simpleadmin.daffyy.dev). +--- + +## 📚 Documentation & Support + +Access full documentation, guides, tutorials, and developer API references here: +[CS2-SimpleAdmin Wiki](https://cs2-simpleadmin.daffyy.dev) + +--- ## 🛠️ Development + This project started as a base for other plugins but has grown into a standalone admin management tool. Contributions are welcome! If you'd like to help with development or have ideas for new features, feel free to submit a pull request or open an issue. +--- + +## 🤝 Contributing & Feedback + +Help improve CS2-SimpleAdmin by: +- Reporting bugs or requesting features on GitHub +- Submitting pull requests with improvements +- Participating in discussions and sharing ideas + +--- + ## 💡 Credits + This project is inspired by the work of [Hackmastr](https://github.com/Hackmastr/css-basic-admin/). Thanks for laying the groundwork! -## ❤️ Support the Project -If you find this plugin helpful and would like to support further development, consider buying me a cup of tea! Your support is greatly appreciated. +--- -[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Y8Y4THKXG) +## ☕ Support Development + +If you find CS2-SimpleAdmin useful, consider supporting the ongoing development: +[![Buy me a coffee](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/Y8Y4THKXG) + +--- ## 📄 License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.