From b8253027c8609f7af75e003651dd851b50d6fddf Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:21:35 -0300 Subject: [PATCH 1/2] feat: Implement database updater support --- src/AnticheatDBUpdater.cpp | 71 ++++++++++++++++++++++++++++++++++++++ src/PassiveAnticheat.cpp | 2 ++ 2 files changed, 73 insertions(+) create mode 100644 src/AnticheatDBUpdater.cpp diff --git a/src/AnticheatDBUpdater.cpp b/src/AnticheatDBUpdater.cpp new file mode 100644 index 0000000..4fe679a --- /dev/null +++ b/src/AnticheatDBUpdater.cpp @@ -0,0 +1,71 @@ +/* + *MIT License + * + *Copyright (c) 2022 Azerothcore + * + *Permission is hereby granted, free of charge, to any person obtaining a copy + *of this software and associated documentation files (the "Software"), to deal + *in the Software without restriction, including without limitation the rights + *to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + *copies of the Software, and to permit persons to whom the Software is + *furnished to do so, subject to the following conditions: + * + *The above copyright notice and this permission notice shall be included in all + *copies or substantial portions of the Software. + * + *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + *SOFTWARE. + */ + +#include "ScriptMgr.h" +#include "DBUpdater.h" + +inline std::vector GetDatabaseDirectories(std::string const& folderName) +{ + std::vector directories; + + std::string const path = "/modules/mod-anticheat/sql/updates/" + folderName; + + directories.push_back(path); + + return directories; +} + +class AntiCheatLoadingDBUpdates : public DatabaseScript +{ +public: + AntiCheatLoadingDBUpdates() : DatabaseScript("AntiCheatLoadingDBUpdates") {} + + void OnAfterDatabasesLoaded(uint32 updateFlags) override + { + LOG_INFO("sql.sql", "Loading anticheat updates..."); + + std::vector loginDatabaseDirectories = GetDatabaseDirectories("auth"); + if (!loginDatabaseDirectories.empty()) + { + DBUpdater::Update(LoginDatabase, &loginDatabaseDirectories); + } + + std::vector charactersDatabaseDirectories = GetDatabaseDirectories("characters"); + if (!charactersDatabaseDirectories.empty()) + { + DBUpdater::Update(CharacterDatabase, &charactersDatabaseDirectories); + } + + std::vector worldDatabaseDirectories = GetDatabaseDirectories("world"); + if (!worldDatabaseDirectories.empty()) + { + DBUpdater::Update(WorldDatabase, &worldDatabaseDirectories); + } + } +}; + +void AddAntiCheatDBLoadingScripts() +{ + new AntiCheatLoadingDBUpdates(); +} diff --git a/src/PassiveAnticheat.cpp b/src/PassiveAnticheat.cpp index 7d14b47..ba5da44 100644 --- a/src/PassiveAnticheat.cpp +++ b/src/PassiveAnticheat.cpp @@ -24,9 +24,11 @@ void startAnticheatScripts(); void AddSC_anticheat_commandscript(); +void AddAntiCheatDBLoadingScripts(); void Addmod_anticheatScripts() { startAnticheatScripts(); AddSC_anticheat_commandscript(); + AddAntiCheatDBLoadingScripts(); } From f1ab1a6d50fb9bd03ef2527216fd631783d7e473 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:47:59 -0300 Subject: [PATCH 2/2] Update AnticheatDBUpdater.cpp --- src/AnticheatDBUpdater.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/AnticheatDBUpdater.cpp b/src/AnticheatDBUpdater.cpp index 4fe679a..673eef9 100644 --- a/src/AnticheatDBUpdater.cpp +++ b/src/AnticheatDBUpdater.cpp @@ -45,22 +45,31 @@ public: { LOG_INFO("sql.sql", "Loading anticheat updates..."); - std::vector loginDatabaseDirectories = GetDatabaseDirectories("auth"); - if (!loginDatabaseDirectories.empty()) + if (DBUpdater::IsEnabled(updateFlags)) { - DBUpdater::Update(LoginDatabase, &loginDatabaseDirectories); + std::vector loginDatabaseDirectories = GetDatabaseDirectories("auth"); + if (!loginDatabaseDirectories.empty()) + { + DBUpdater::Update(LoginDatabase, &loginDatabaseDirectories); + } } - std::vector charactersDatabaseDirectories = GetDatabaseDirectories("characters"); - if (!charactersDatabaseDirectories.empty()) + if (DBUpdater::IsEnabled(updateFlags)) { - DBUpdater::Update(CharacterDatabase, &charactersDatabaseDirectories); + std::vector charactersDatabaseDirectories = GetDatabaseDirectories("characters"); + if (!charactersDatabaseDirectories.empty()) + { + DBUpdater::Update(CharacterDatabase, &charactersDatabaseDirectories); + } } - std::vector worldDatabaseDirectories = GetDatabaseDirectories("world"); - if (!worldDatabaseDirectories.empty()) + if (DBUpdater::IsEnabled(updateFlags)) { - DBUpdater::Update(WorldDatabase, &worldDatabaseDirectories); + std::vector worldDatabaseDirectories = GetDatabaseDirectories("world"); + if (!worldDatabaseDirectories.empty()) + { + DBUpdater::Update(WorldDatabase, &worldDatabaseDirectories); + } } } };