39#if TRINITY_COMPILER == TRINITY_COMPILER_GNU
40#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
80 {
"ban", banCommandTable },
81 {
"baninfo", baninfoCommandTable },
82 {
"banlist", banlistCommandTable },
83 {
"unban", unbanCommandTable },
98 char* nameStr = strtok((
char*)args,
" ");
102 std::string name = nameStr;
104 char* durationStr = strtok(
nullptr,
" ");
105 if (!durationStr || !atoi(durationStr))
108 char* reasonStr = strtok(
nullptr,
"");
121 switch (
sWorld->BanCharacter(name, durationStr, reasonStr, author))
125 if (atoi(durationStr) > 0)
169 char* cnameOrIP = strtok((
char*)args,
" ");
173 std::string nameOrIP = cnameOrIP;
175 char* durationStr = strtok(
nullptr,
" ");
176 if (!durationStr || !atoi(durationStr))
179 char* reasonStr = strtok(
nullptr,
"");
209 switch (
sWorld->BanAccount(mode, nameOrIP, durationStr, reasonStr, author))
212 if (atoi(durationStr) > 0)
257 char* nameStr = strtok((
char*)args,
"");
261 std::string accountName = nameStr;
281 QueryResult result =
LoginDatabase.PQuery(
"SELECT FROM_UNIXTIME(bandate), unbandate-bandate, active, unbandate, banreason, bannedby FROM account_banned WHERE id = '{}' ORDER BY bandate ASC", accountId);
291 Field* fields = result->Fetch();
293 time_t unbanDate = time_t(fields[3].GetUInt32());
302 while (result->NextRow());
312 std::string name(args);
334 targetGuid = target->
GetGUID();
348 Field* fields = result->Fetch();
349 time_t unbanDate = fields[3].
GetInt64();
358 while (result->NextRow());
368 char* ipStr = strtok((
char*)args,
"");
375 std::string IP = ipStr;
378 QueryResult result =
LoginDatabase.PQuery(
"SELECT ip, FROM_UNIXTIME(bandate), FROM_UNIXTIME(unbandate), unbandate-UNIX_TIMESTAMP(), banreason, bannedby, unbandate-bandate FROM ip_banned WHERE ip = '{}'", IP);
385 Field* fields = result->Fetch();
401 char* filterStr = strtok((
char*)args,
" ");
402 std::string filter = filterStr ? filterStr :
"";
436 Field* fields = result->Fetch();
439 QueryResult banResult =
LoginDatabase.PQuery(
"SELECT account.username FROM account, account_banned WHERE account_banned.id='{}' AND account_banned.id = account.id", accountid);
442 Field* fields2 = banResult->Fetch();
446 while (result->NextRow());
452 handler->
SendSysMessage(
" ===============================================================================");
456 handler->
SendSysMessage(
"-------------------------------------------------------------------------------");
457 Field* fields = result->Fetch();
460 std::string accountName;
463 if (result->GetFieldCount() > 1)
470 QueryResult banInfo =
LoginDatabase.PQuery(
"SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE id = {} ORDER BY unbandate", accountId);
473 Field* fields2 = banInfo->Fetch();
476 time_t timeBan = time_t(fields2[0].GetUInt32());
478 localtime_r(&timeBan, &tmBan);
480 if (fields2[0].GetUInt32() == fields2[1].GetUInt32())
482 handler->
PSendSysMessage(
"|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|",
483 accountName.c_str(), tmBan.tm_year%100, tmBan.tm_mon+1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
488 time_t timeUnban = time_t(fields2[1].GetUInt32());
490 localtime_r(&timeUnban, &tmUnban);
491 handler->
PSendSysMessage(
"|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|",
492 accountName.c_str(), tmBan.tm_year%100, tmBan.tm_mon+1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
493 tmUnban.tm_year%100, tmUnban.tm_mon+1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min,
497 while (banInfo->NextRow());
500 while (result->NextRow());
502 handler->
SendSysMessage(
" ===============================================================================");
513 char* filterStr = strtok((
char*)args,
" ");
517 std::string filter(filterStr);
534 Field* fields = result->Fetch();
536 stmt2->
setUInt64(0, fields[0].GetUInt64());
541 while (result->NextRow());
547 handler->
SendSysMessage(
" =============================================================================== ");
551 handler->
SendSysMessage(
"-------------------------------------------------------------------------------");
553 Field* fields = result->Fetch();
555 std::string char_name = fields[1].
GetString();
558 stmt2->
setUInt64(0, fields[0].GetUInt64());
562 Field* banFields = banInfo->Fetch();
565 time_t timeBan = banFields[0].
GetInt64();
567 localtime_r(&timeBan, &tmBan);
569 if (banFields[0].GetInt64() == banFields[1].GetInt64())
571 handler->
PSendSysMessage(
"|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|",
572 char_name.c_str(), tmBan.tm_year%100, tmBan.tm_mon+1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
577 time_t timeUnban = banFields[1].
GetInt64();
579 localtime_r(&timeUnban, &tmUnban);
580 handler->
PSendSysMessage(
"|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|",
581 char_name.c_str(), tmBan.tm_year%100, tmBan.tm_mon+1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
582 tmUnban.tm_year%100, tmUnban.tm_mon+1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min,
586 while (banInfo->NextRow());
589 while (result->NextRow());
590 handler->
SendSysMessage(
" =============================================================================== ");
601 char* filterStr = strtok((
char*)args,
" ");
602 std::string filter = filterStr ? filterStr :
"";
631 Field* fields = result->Fetch();
634 while (result->NextRow());
640 handler->
SendSysMessage(
" ===============================================================================");
644 handler->
SendSysMessage(
"-------------------------------------------------------------------------------");
645 Field* fields = result->Fetch();
646 time_t timeBan = time_t(fields[1].GetUInt32());
648 localtime_r(&timeBan, &tmBan);
649 if (fields[1].GetUInt32() == fields[2].GetUInt32())
651 handler->
PSendSysMessage(
"|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|",
652 fields[0].GetCString(), tmBan.tm_year%100, tmBan.tm_mon+1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
657 time_t timeUnban = time_t(fields[2].GetUInt32());
659 localtime_r(&timeUnban, &tmUnban);
660 handler->
PSendSysMessage(
"|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|",
661 fields[0].GetCString(), tmBan.tm_year%100, tmBan.tm_mon+1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
662 tmUnban.tm_year%100, tmUnban.tm_mon+1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min,
666 while (result->NextRow());
668 handler->
SendSysMessage(
" ===============================================================================");
684 char* nameStr = strtok((
char*)args,
" ");
688 std::string name = nameStr;
697 if (!
sWorld->RemoveBanCharacter(name))
723 char* nameOrIPStr = strtok((
char*)args,
" ");
727 std::string nameOrIP = nameOrIPStr;
753 if (
sWorld->RemoveBanAccount(mode, nameOrIP))
@ CHAR_SEL_GUID_BY_NAME_FILTER
std::shared_ptr< ResultSet > QueryResult
std::shared_ptr< PreparedResultSet > PreparedQueryResult
DatabaseWorkerPool< LoginDatabaseConnection > LoginDatabase
Accessor to the realm/login database.
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
@ LANG_BANLIST_CHARACTERS_HEADER
@ LANG_BANINFO_NOCHARACTER
@ LANG_BANINFO_BANHISTORY
@ LANG_BAN_CHARACTER_YOUBANNEDMESSAGE_WORLD
@ LANG_BANLIST_IPS_HEADER
@ LANG_BANLIST_MATCHINGIP
@ LANG_BANINFO_NOACCOUNTBAN
@ LANG_BAN_ACCOUNT_YOUBANNEDMESSAGE_WORLD
@ LANG_BANLIST_MATCHINGCHARACTER
@ LANG_BAN_CHARACTER_YOUPERMBANNEDMESSAGE_WORLD
@ LANG_BANLIST_MATCHINGACCOUNT
@ LANG_BANLIST_NOCHARACTER
@ LANG_BANINFO_HISTORYENTRY
@ LANG_BANLIST_CHARACTERS
@ LANG_BAN_ACCOUNT_YOUPERMBANNEDMESSAGE_WORLD
@ LANG_BANLIST_ACCOUNTS_HEADER
@ LOGIN_SEL_ACCOUNT_BANNED_BY_FILTER
@ LOGIN_DEL_EXPIRED_IP_BANS
@ LOGIN_SEL_IP_BANNED_BY_IP
@ LOGIN_SEL_IP_BANNED_ALL
@ LOGIN_SEL_ACCOUNT_BANNED_ALL
bool normalizePlayerName(std::string &name)
BanMode
Ban function modes.
bool Utf8ToUpperOnlyLatin(std::string &utf8String)
bool IsIPAddress(char const *ipaddress)
Check if the string is a valid ip address representation.
std::string TimeToTimestampStr(time_t t)
std::string secsToTimeString(uint64 timeInSecs, TimeFormat timeFormat, bool hoursOnly)
uint32 TimeStringToSecs(std::string const ×tring)
static uint32 GetId(std::string_view username)
static bool GetName(uint32 accountId, std::string &name)
WorldSession * GetSession()
void PSendSysMessage(const char *fmt, Args &&... args)
void SetSentErrorMessage(bool val)
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
virtual char const * GetTrinityString(uint32 entry) const
Class used to access individual fields of database query result.
std::string GetString() const
char const * GetCString() const
LowType GetCounter() const
static ObjectGuid GetGUID(Object const *o)
void setString(const uint8 index, const std::string &value)
void setUInt64(const uint8 index, const uint64 value)
std::string const & GetPlayerName() const
static bool HandleBanHelper(BanMode mode, char const *args, ChatHandler *handler)
static bool HandleUnBanHelper(BanMode mode, char const *args, ChatHandler *handler)
ChatCommandTable GetCommands() const override
static bool HandleBanAccountByCharCommand(ChatHandler *handler, char const *args)
static bool HandleUnBanIPCommand(ChatHandler *handler, char const *args)
static bool HandleUnBanAccountByCharCommand(ChatHandler *handler, char const *args)
static bool HandleBanInfoAccountCommand(ChatHandler *handler, char const *args)
static bool HandleBanListIPCommand(ChatHandler *handler, char const *args)
static bool HandleBanIPCommand(ChatHandler *handler, char const *args)
static bool HandleBanInfoHelper(uint32 accountId, char const *accountName, ChatHandler *handler)
static bool HandleBanListCharacterCommand(ChatHandler *handler, char const *args)
static bool HandleBanInfoIPCommand(ChatHandler *handler, char const *args)
static bool HandleBanListAccountCommand(ChatHandler *handler, char const *args)
static bool HandleBanCharacterCommand(ChatHandler *handler, char const *args)
static bool HandleBanInfoCharacterCommand(ChatHandler *handler, char const *args)
static bool HandleUnBanAccountCommand(ChatHandler *handler, char const *args)
static bool HandleBanListHelper(PreparedQueryResult result, ChatHandler *handler)
static bool HandleBanAccountCommand(ChatHandler *handler, char const *args)
static bool HandleUnBanCharacterCommand(ChatHandler *handler, char const *args)
void AddSC_ban_commandscript()
@ CONFIG_SHOW_BAN_IN_WORLD
TC_GAME_API Player * FindPlayerByName(std::string_view name)
std::vector< ChatCommandBuilder > ChatCommandTable
@ RBAC_PERM_COMMAND_BANINFO_IP
@ RBAC_PERM_COMMAND_BANINFO_ACCOUNT
@ RBAC_PERM_COMMAND_BANINFO_CHARACTER
@ RBAC_PERM_COMMAND_BAN_PLAYERACCOUNT
@ RBAC_PERM_COMMAND_UNBAN_CHARACTER
@ RBAC_PERM_COMMAND_UNBAN_PLAYERACCOUNT
@ RBAC_PERM_COMMAND_BAN_CHARACTER
@ RBAC_PERM_COMMAND_BANLIST_ACCOUNT
@ RBAC_PERM_COMMAND_BAN_IP
@ RBAC_PERM_COMMAND_BANLIST_CHARACTER
@ RBAC_PERM_COMMAND_BANLIST_IP
@ RBAC_PERM_COMMAND_BAN_ACCOUNT
@ RBAC_PERM_COMMAND_UNBAN_ACCOUNT
@ RBAC_PERM_COMMAND_UNBAN_IP