diff --git a/src/AnticheatDBUpdater.cpp b/src/AnticheatDBUpdater.cpp new file mode 100644 index 0000000..673eef9 --- /dev/null +++ b/src/AnticheatDBUpdater.cpp @@ -0,0 +1,80 @@ +/* + *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..."); + + if (DBUpdater::IsEnabled(updateFlags)) + { + std::vector loginDatabaseDirectories = GetDatabaseDirectories("auth"); + if (!loginDatabaseDirectories.empty()) + { + DBUpdater::Update(LoginDatabase, &loginDatabaseDirectories); + } + } + + if (DBUpdater::IsEnabled(updateFlags)) + { + std::vector charactersDatabaseDirectories = GetDatabaseDirectories("characters"); + if (!charactersDatabaseDirectories.empty()) + { + DBUpdater::Update(CharacterDatabase, &charactersDatabaseDirectories); + } + } + + if (DBUpdater::IsEnabled(updateFlags)) + { + 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(); }