38 TC_LOG_INFO(
"warden",
">> Warden disabled, loading checks skipped.");
46 TC_LOG_INFO(
"server.loading",
">> Loaded 0 Warden checks. DB table `warden_checks` is empty!");
50 Field* fields = result->Fetch();
57 result =
WorldDatabase.Query(
"SELECT id, type, data, result, address, length, str, comment FROM warden_checks ORDER BY id ASC");
62 fields = result->Fetch();
70 TC_LOG_ERROR(
"sql.sql",
"Warden check with id {} lists check type {} in `warden_checks`, which is not supported. Skipped.",
id, type);
76 TC_LOG_ERROR(
"sql.sql",
"Warden Lua check with id {} found in `warden_checks`. Lua checks may have four-digit IDs at most. Skipped.",
id);
82 wardenCheck.
Type = type;
101 if (wardenCheck.
Comment.empty())
102 wardenCheck.
Comment =
"Undocumented Check";
114 std::copy(str.begin(), str.end(), wardenCheck.
IdStr.begin());
120 _pools[category].push_back(
id);
123 while (result->NextRow());
135 TC_LOG_INFO(
"warden",
">> Warden disabled, loading check overrides skipped.");
144 TC_LOG_INFO(
"server.loading",
">> Loaded 0 Warden action overrides. DB table `warden_action` is empty!");
152 Field* fields = result->Fetch();
159 TC_LOG_ERROR(
"warden",
"Warden check override action out of range (ID: {}, action: {})", checkId, action);
161 else if (checkId >=
_checks.size())
162 TC_LOG_ERROR(
"warden",
"Warden check action override for non-existing check (ID: {}, action: {}), skipped", checkId, action);
169 while (result->NextRow());
std::shared_ptr< ResultSet > QueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_INFO(filterType__,...)
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
constexpr uint8 WARDEN_MAX_LUA_CHECK_LENGTH
std::vector< uint8 > WardenCheckResult
constexpr WardenCheckCategory GetWardenCheckCategory(WardenCheckType type)
Class used to access individual fields of database query result.
std::string GetString() const
std::vector< uint8 > GetBinary() const
void LoadWardenOverrides()
std::vector< WardenCheck > _checks
WardenCheckResult const & GetCheckResult(uint16 Id) const
std::unordered_map< uint16, WardenCheckResult > _checkResults
std::array< std::vector< uint16 >, NUM_CHECK_CATEGORIES > _pools
static WardenCheckMgr * instance()
WardenCheck const & GetCheckData(uint16 Id) const
@ CONFIG_WARDEN_CLIENT_FAIL_ACTION
std::string StringFormat(FormatString< Args... > fmt, Args &&... args)
Default TC string format function.
std::array< char, 4 > IdStr
std::vector< uint8 > Data