Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
cs_ban.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6/* ScriptData
7Name: ban_commandscript
8%Complete: 100
9Comment: All ban related commands
10Category: commandscripts
11EndScriptData */
12
13#include "AccountMgr.h"
14#include "Chat.h"
15#include "Language.h"
16#include "ObjectAccessor.h"
17#include "ObjectMgr.h"
18#include "Platform/TimeUtils.h"
19#include "Player.h"
20#include "ScriptMgr.h"
21
23{
24public:
25 ban_commandscript() : CommandScript("ban_commandscript") { }
26
27 std::vector<ChatCommand> GetCommands() const OVERRIDE
28 {
29 static std::vector<ChatCommand> unbanCommandTable =
30 {
35 };
36 static std::vector<ChatCommand> banlistCommandTable =
37 {
41 };
42 static std::vector<ChatCommand> baninfoCommandTable =
43 {
47 };
48 static std::vector<ChatCommand> banCommandTable =
49 {
54 };
55 static std::vector<ChatCommand> commandTable =
56 {
57 { "ban", rbac::RBAC_PERM_COMMAND_BAN, true, NULL, "", banCommandTable },
58 { "baninfo", rbac::RBAC_PERM_COMMAND_BANINFO, true, NULL, "", baninfoCommandTable },
59 { "banlist", rbac::RBAC_PERM_COMMAND_BANLIST, true, NULL, "", banlistCommandTable },
60 { "unban", rbac::RBAC_PERM_COMMAND_UNBAN, true, NULL, "", unbanCommandTable },
61 };
62 return commandTable;
63 }
64
65 static bool HandleBanAccountCommand(ChatHandler* handler, char const* args)
66 {
67 return HandleBanHelper(BAN_ACCOUNT, args, handler);
68 }
69
70 static bool HandleBanCharacterCommand(ChatHandler* handler, char const* args)
71 {
72 if (!*args)
73 return false;
74
75 char* nameStr = strtok((char*)args, " ");
76 if (!nameStr)
77 return false;
78
79 std::string name = nameStr;
80
81 char* durationStr = strtok(NULL, " ");
82 if (!durationStr || !atoi(durationStr))
83 return false;
84
85 char* reasonStr = strtok(NULL, "");
86 if (!reasonStr)
87 return false;
88
89 if (!normalizePlayerName(name))
90 {
92 handler->SetSentErrorMessage(true);
93 return false;
94 }
95
96 switch (sWorld->BanCharacter(name, durationStr, reasonStr, handler->GetSession() ? handler->GetSession()->GetPlayerName().c_str() : ""))
97 {
98 case BAN_SUCCESS:
99 {
100 if (atoi(durationStr) > 0)
101 handler->PSendSysMessage(LANG_BAN_YOUBANNED, name.c_str(), secsToTimeString(TimeStringToSecs(durationStr), true).c_str(), reasonStr);
102 else
103 handler->PSendSysMessage(LANG_BAN_YOUPERMBANNED, name.c_str(), reasonStr);
104 break;
105 }
106 case BAN_NOTFOUND:
107 {
108 handler->PSendSysMessage(LANG_BAN_NOTFOUND, "character", name.c_str());
109 handler->SetSentErrorMessage(true);
110 return false;
111 }
112 default:
113 break;
114 }
115
116 return true;
117 }
118
119 static bool HandleBanAccountByCharCommand(ChatHandler* handler, char const* args)
120 {
121 return HandleBanHelper(BAN_CHARACTER, args, handler);
122 }
123
124 static bool HandleBanIPCommand(ChatHandler* handler, char const* args)
125 {
126 return HandleBanHelper(BAN_IP, args, handler);
127 }
128
129 static bool HandleBanHelper(BanMode mode, char const* args, ChatHandler* handler)
130 {
131 if (!*args)
132 return false;
133
134 char* cnameOrIP = strtok((char*)args, " ");
135 if (!cnameOrIP)
136 return false;
137
138 std::string nameOrIP = cnameOrIP;
139
140 char* durationStr = strtok(NULL, " ");
141 if (!durationStr || !atoi(durationStr))
142 return false;
143
144 char* reasonStr = strtok(NULL, "");
145 if (!reasonStr)
146 return false;
147
148 switch (mode)
149 {
150 case BAN_ACCOUNT:
151 if (!AccountMgr::normalizeString(nameOrIP))
152 {
153 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, nameOrIP.c_str());
154 handler->SetSentErrorMessage(true);
155 return false;
156 }
157 break;
158 case BAN_CHARACTER:
159 if (!normalizePlayerName(nameOrIP))
160 {
162 handler->SetSentErrorMessage(true);
163 return false;
164 }
165 break;
166 case BAN_IP:
167 if (!IsIPAddress(nameOrIP.c_str()))
168 return false;
169 break;
170 }
171
172 switch (sWorld->BanAccount(mode, nameOrIP, durationStr, reasonStr, handler->GetSession() ? handler->GetSession()->GetPlayerName().c_str() : ""))
173 {
174 case BAN_SUCCESS:
175 if (atoi(durationStr) > 0)
176 handler->PSendSysMessage(LANG_BAN_YOUBANNED, nameOrIP.c_str(), secsToTimeString(TimeStringToSecs(durationStr), true).c_str(), reasonStr);
177 else
178 handler->PSendSysMessage(LANG_BAN_YOUPERMBANNED, nameOrIP.c_str(), reasonStr);
179 break;
180 case BAN_SYNTAX_ERROR:
181 return false;
182 case BAN_NOTFOUND:
183 switch (mode)
184 {
185 default:
186 handler->PSendSysMessage(LANG_BAN_NOTFOUND, "account", nameOrIP.c_str());
187 break;
188 case BAN_CHARACTER:
189 handler->PSendSysMessage(LANG_BAN_NOTFOUND, "character", nameOrIP.c_str());
190 break;
191 case BAN_IP:
192 handler->PSendSysMessage(LANG_BAN_NOTFOUND, "ip", nameOrIP.c_str());
193 break;
194 }
195 handler->SetSentErrorMessage(true);
196 return false;
197 }
198
199 return true;
200 }
201
202 static bool HandleBanInfoAccountCommand(ChatHandler* handler, char const* args)
203 {
204 if (!*args)
205 return false;
206
207 char* nameStr = strtok((char*)args, "");
208 if (!nameStr)
209 return false;
210
211 std::string accountName = nameStr;
212 if (!AccountMgr::normalizeString(accountName))
213 {
214 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName.c_str());
215 handler->SetSentErrorMessage(true);
216 return false;
217 }
218
219 uint32 accountId = AccountMgr::GetId(accountName);
220 if (!accountId)
221 {
222 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, accountName.c_str());
223 return true;
224 }
225
226 return HandleBanInfoHelper(accountId, accountName.c_str(), handler);
227 }
228
229 static bool HandleBanInfoHelper(uint32 accountId, char const* accountName, ChatHandler* handler)
230 {
231 QueryResult result = LoginDatabase.PQuery("SELECT FROM_UNIXTIME(bandate), unbandate-bandate, active, unbandate, banreason, bannedby FROM account_banned WHERE id = '%u' ORDER BY bandate ASC", accountId);
232 if (!result)
233 {
234 handler->PSendSysMessage(LANG_BANINFO_NOACCOUNTBAN, accountName);
235 return true;
236 }
237
238 handler->PSendSysMessage(LANG_BANINFO_BANHISTORY, accountName);
239 do
240 {
241 Field* fields = result->Fetch();
242
243 time_t unbanDate = time_t(fields[3].GetUInt32());
244 bool active = false;
245 if (fields[2].GetBool() && (fields[1].GetUInt64() == uint64(0) || unbanDate >= time(NULL)))
246 active = true;
247 bool permanent = (fields[1].GetUInt64() == uint64(0));
248 std::string banTime = permanent ? handler->GetSkyFireString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].GetUInt64(), true);
250 fields[0].GetCString(), banTime.c_str(), active ? handler->GetSkyFireString(LANG_BANINFO_YES) : handler->GetSkyFireString(LANG_BANINFO_NO), fields[4].GetCString(), fields[5].GetCString());
251 } while (result->NextRow());
252
253 return true;
254 }
255
256 static bool HandleBanInfoCharacterCommand(ChatHandler* handler, char const* args)
257 {
258 if (!*args)
259 return false;
260
261 Player* target = sObjectAccessor->FindPlayerByName(args);
262 uint32 targetGuid = 0;
263 std::string name(args);
264
265 if (!target)
266 {
267 PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUID_BY_NAME);
268 stmt->setString(0, name);
269 PreparedQueryResult resultCharacter = CharacterDatabase.Query(stmt);
270
271 if (!resultCharacter)
272 {
274 return false;
275 }
276
277 targetGuid = (*resultCharacter)[0].GetUInt32();
278 }
279 else
280 targetGuid = target->GetGUIDLow();
281
282 PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_BANINFO);
283 stmt->setUInt32(0, targetGuid);
284 PreparedQueryResult result = CharacterDatabase.Query(stmt);
285 if (!result)
286 {
287 handler->PSendSysMessage(LANG_CHAR_NOT_BANNED, name.c_str());
288 return true;
289 }
290
291 handler->PSendSysMessage(LANG_BANINFO_BANHISTORY, name.c_str());
292 do
293 {
294 Field* fields = result->Fetch();
295 time_t unbanDate = time_t(fields[3].GetUInt32());
296 bool active = false;
297 if (fields[2].GetUInt8() && (!fields[1].GetUInt32() || unbanDate >= time(NULL)))
298 active = true;
299 bool permanent = (fields[1].GetUInt32() == uint32(0));
300 std::string banTime = permanent ? handler->GetSkyFireString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[1].GetUInt32(), true);
302 fields[0].GetCString(), banTime.c_str(), active ? handler->GetSkyFireString(LANG_BANINFO_YES) : handler->GetSkyFireString(LANG_BANINFO_NO), fields[4].GetCString(), fields[5].GetCString());
303 } while (result->NextRow());
304
305 return true;
306 }
307
308 static bool HandleBanInfoIPCommand(ChatHandler* handler, char const* args)
309 {
310 if (!*args)
311 return false;
312
313 char* ipStr = strtok((char*)args, "");
314 if (!ipStr)
315 return false;
316
317 if (!IsIPAddress(ipStr))
318 return false;
319
320 std::string IP = ipStr;
321
322 LoginDatabase.EscapeString(IP);
323 QueryResult result = LoginDatabase.PQuery("SELECT ip, FROM_UNIXTIME(bandate), FROM_UNIXTIME(unbandate), unbandate-UNIX_TIMESTAMP(), banreason, bannedby, unbandate-bandate FROM ip_banned WHERE ip = '%s'", IP.c_str());
324 if (!result)
325 {
327 return true;
328 }
329
330 Field* fields = result->Fetch();
331 bool permanent = !fields[6].GetUInt64();
333 fields[0].GetCString(), fields[1].GetCString(), permanent ? handler->GetSkyFireString(LANG_BANINFO_NEVER) : fields[2].GetCString(),
334 permanent ? handler->GetSkyFireString(LANG_BANINFO_INFINITE) : secsToTimeString(fields[3].GetUInt64(), true).c_str(), fields[4].GetCString(), fields[5].GetCString());
335
336
337 return true;
338 }
339
340 static bool HandleBanListAccountCommand(ChatHandler* handler, char const* args)
341 {
342 PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_EXPIRED_IP_BANS);
343 LoginDatabase.Execute(stmt);
344
345 char* filterStr = strtok((char*)args, " ");
346 std::string filter = filterStr ? filterStr : "";
347
348 PreparedQueryResult result;
349
350 if (filter.empty())
351 {
352 stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED_ALL);
353 result = LoginDatabase.Query(stmt);
354 }
355 else
356 {
357 stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED_BY_USERNAME);
358 stmt->setString(0, filter);
359 result = LoginDatabase.Query(stmt);
360 }
361
362 if (!result)
363 {
365 return true;
366 }
367
368 return HandleBanListHelper(result, handler);
369 }
370
372 {
374
375 // Chat short output
376 if (handler->GetSession())
377 {
378 do
379 {
380 Field* fields = result->Fetch();
381 uint32 accountid = fields[0].GetUInt32();
382
383 QueryResult banResult = LoginDatabase.PQuery("SELECT account.username FROM account, account_banned WHERE account_banned.id='%u' AND account_banned.id=account.id", accountid);
384 if (banResult)
385 {
386 Field* fields2 = banResult->Fetch();
387 handler->PSendSysMessage("%s", fields2[0].GetCString());
388 }
389 } while (result->NextRow());
390 }
391 // Console wide output
392 else
393 {
395 handler->SendSysMessage(" ===============================================================================");
397 do
398 {
399 handler->SendSysMessage("-------------------------------------------------------------------------------");
400 Field* fields = result->Fetch();
401 uint32 accountId = fields[0].GetUInt32();
402
403 std::string accountName;
404
405 // "account" case, name can be get in same query
406 if (result->GetFieldCount() > 1)
407 accountName = fields[1].GetString();
408 // "character" case, name need extract from another DB
409 else
410 AccountMgr::GetName(accountId, accountName);
411
412 // No SQL injection. id is uint32.
413 QueryResult banInfo = LoginDatabase.PQuery("SELECT bandate, unbandate, bannedby, banreason FROM account_banned WHERE id = %u ORDER BY unbandate", accountId);
414 if (banInfo)
415 {
416 Field* fields2 = banInfo->Fetch();
417 do
418 {
419 time_t timeBan = time_t(fields2[0].GetUInt32());
420 tm tmBan;
421 Skyfire::LocalTime(timeBan, tmBan);
422
423 if (fields2[0].GetUInt32() == fields2[1].GetUInt32())
424 {
425 handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|",
426 accountName.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
427 fields2[2].GetCString(), fields2[3].GetCString());
428 }
429 else
430 {
431 time_t timeUnban = time_t(fields2[1].GetUInt32());
432 tm tmUnban;
433 Skyfire::LocalTime(timeUnban, tmUnban);
434 handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|",
435 accountName.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
436 tmUnban.tm_year % 100, tmUnban.tm_mon + 1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min,
437 fields2[2].GetCString(), fields2[3].GetCString());
438 }
439 } while (banInfo->NextRow());
440 }
441 } while (result->NextRow());
442
443 handler->SendSysMessage(" ===============================================================================");
444 }
445
446 return true;
447 }
448
449 static bool HandleBanListCharacterCommand(ChatHandler* handler, char const* args)
450 {
451 if (!*args)
452 return false;
453
454 char* filterStr = strtok((char*)args, " ");
455 if (!filterStr)
456 return false;
457
458 std::string filter(filterStr);
460 stmt->setString(0, filter);
461 PreparedQueryResult result = CharacterDatabase.Query(stmt);
462 if (!result)
463 {
465 return true;
466 }
467
469
470 // Chat short output
471 if (handler->GetSession())
472 {
473 do
474 {
475 Field* fields = result->Fetch();
476 PreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_BANNED_NAME);
477 stmt2->setUInt32(0, fields[0].GetUInt32());
478 PreparedQueryResult banResult = CharacterDatabase.Query(stmt2);
479 if (banResult)
480 handler->PSendSysMessage("%s", (*banResult)[0].GetCString());
481 } while (result->NextRow());
482 }
483 // Console wide output
484 else
485 {
487 handler->SendSysMessage(" =============================================================================== ");
489 do
490 {
491 handler->SendSysMessage("-------------------------------------------------------------------------------");
492
493 Field* fields = result->Fetch();
494
495 std::string char_name = fields[1].GetString();
496
497 PreparedStatement* stmt2 = CharacterDatabase.GetPreparedStatement(CHAR_SEL_BANINFO_LIST);
498 stmt2->setUInt32(0, fields[0].GetUInt32());
499 PreparedQueryResult banInfo = CharacterDatabase.Query(stmt2);
500 if (banInfo)
501 {
502 Field* banFields = banInfo->Fetch();
503 do
504 {
505 time_t timeBan = time_t(banFields[0].GetUInt32());
506 tm tmBan;
507 Skyfire::LocalTime(timeBan, tmBan);
508
509 if (banFields[0].GetUInt32() == banFields[1].GetUInt32())
510 {
511 handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|",
512 char_name.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
513 banFields[2].GetCString(), banFields[3].GetCString());
514 }
515 else
516 {
517 time_t timeUnban = time_t(banFields[1].GetUInt32());
518 tm tmUnban;
519 Skyfire::LocalTime(timeUnban, tmUnban);
520 handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|",
521 char_name.c_str(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
522 tmUnban.tm_year % 100, tmUnban.tm_mon + 1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min,
523 banFields[2].GetCString(), banFields[3].GetCString());
524 }
525 } while (banInfo->NextRow());
526 }
527 } while (result->NextRow());
528 handler->SendSysMessage(" =============================================================================== ");
529 }
530
531 return true;
532 }
533
534 static bool HandleBanListIPCommand(ChatHandler* handler, char const* args)
535 {
536 PreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_DEL_EXPIRED_IP_BANS);
537 LoginDatabase.Execute(stmt);
538
539 char* filterStr = strtok((char*)args, " ");
540 std::string filter = filterStr ? filterStr : "";
541 LoginDatabase.EscapeString(filter);
542
543 PreparedQueryResult result;
544
545 if (filter.empty())
546 {
547 stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_BANNED_ALL);
548 result = LoginDatabase.Query(stmt);
549 }
550 else
551 {
552 stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_IP_BANNED_BY_IP);
553 stmt->setString(0, filter);
554 result = LoginDatabase.Query(stmt);
555 }
556
557 if (!result)
558 {
560 return true;
561 }
562
564 // Chat short output
565 if (handler->GetSession())
566 {
567 do
568 {
569 Field* fields = result->Fetch();
570 handler->PSendSysMessage("%s", fields[0].GetCString());
571 } while (result->NextRow());
572 }
573 // Console wide output
574 else
575 {
577 handler->SendSysMessage(" ===============================================================================");
579 do
580 {
581 handler->SendSysMessage("-------------------------------------------------------------------------------");
582 Field* fields = result->Fetch();
583 time_t timeBan = time_t(fields[1].GetUInt32());
584 tm tmBan;
585 Skyfire::LocalTime(timeBan, tmBan);
586 if (fields[1].GetUInt32() == fields[2].GetUInt32())
587 {
588 handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d| permanent |%-15.15s|%-15.15s|",
589 fields[0].GetCString(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
590 fields[3].GetCString(), fields[4].GetCString());
591 }
592 else
593 {
594 time_t timeUnban = time_t(fields[2].GetUInt32());
595 tm tmUnban;
596 Skyfire::LocalTime(timeUnban, tmUnban);
597 handler->PSendSysMessage("|%-15.15s|%02d-%02d-%02d %02d:%02d|%02d-%02d-%02d %02d:%02d|%-15.15s|%-15.15s|",
598 fields[0].GetCString(), tmBan.tm_year % 100, tmBan.tm_mon + 1, tmBan.tm_mday, tmBan.tm_hour, tmBan.tm_min,
599 tmUnban.tm_year % 100, tmUnban.tm_mon + 1, tmUnban.tm_mday, tmUnban.tm_hour, tmUnban.tm_min,
600 fields[3].GetCString(), fields[4].GetCString());
601 }
602 } while (result->NextRow());
603
604 handler->SendSysMessage(" ===============================================================================");
605 }
606
607 return true;
608 }
609
610 static bool HandleUnBanAccountCommand(ChatHandler* handler, char const* args)
611 {
612 return HandleUnBanHelper(BAN_ACCOUNT, args, handler);
613 }
614
615 static bool HandleUnBanCharacterCommand(ChatHandler* handler, char const* args)
616 {
617 if (!*args)
618 return false;
619
620 char* nameStr = strtok((char*)args, " ");
621 if (!nameStr)
622 return false;
623
624 std::string name = nameStr;
625
626 if (!normalizePlayerName(name))
627 {
629 handler->SetSentErrorMessage(true);
630 return false;
631 }
632
633 if (!sWorld->RemoveBanCharacter(name))
634 {
636 handler->SetSentErrorMessage(true);
637 return false;
638 }
639
640 return true;
641 }
642
643 static bool HandleUnBanAccountByCharCommand(ChatHandler* handler, char const* args)
644 {
645 return HandleUnBanHelper(BAN_CHARACTER, args, handler);
646 }
647
648 static bool HandleUnBanIPCommand(ChatHandler* handler, char const* args)
649 {
650 return HandleUnBanHelper(BAN_IP, args, handler);
651 }
652
653 static bool HandleUnBanHelper(BanMode mode, char const* args, ChatHandler* handler)
654 {
655 if (!*args)
656 return false;
657
658 char* nameOrIPStr = strtok((char*)args, " ");
659 if (!nameOrIPStr)
660 return false;
661
662 std::string nameOrIP = nameOrIPStr;
663
664 switch (mode)
665 {
666 case BAN_ACCOUNT:
667 if (!AccountMgr::normalizeString(nameOrIP))
668 {
669 handler->PSendSysMessage(LANG_ACCOUNT_NOT_EXIST, nameOrIP.c_str());
670 handler->SetSentErrorMessage(true);
671 return false;
672 }
673 break;
674 case BAN_CHARACTER:
675 if (!normalizePlayerName(nameOrIP))
676 {
678 handler->SetSentErrorMessage(true);
679 return false;
680 }
681 break;
682 case BAN_IP:
683 if (!IsIPAddress(nameOrIP.c_str()))
684 return false;
685 break;
686 }
687
688 if (sWorld->RemoveBanAccount(mode, nameOrIP))
689 handler->PSendSysMessage(LANG_UNBAN_UNBANNED, nameOrIP.c_str());
690 else
691 handler->PSendSysMessage(LANG_UNBAN_ERROR, nameOrIP.c_str());
692
693 return true;
694 }
695};
696
698{
699 new ban_commandscript();
700}
@ CHAR_SEL_GUID_BY_NAME
@ CHAR_SEL_BANNED_NAME
@ CHAR_SEL_BANINFO
@ CHAR_SEL_BANINFO_LIST
@ CHAR_SEL_GUID_BY_NAME_FILTER
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
@ LANG_BANINFO_IPENTRY
Definition Language.h:401
@ LANG_BANINFO_INFINITE
Definition Language.h:397
@ LANG_BANINFO_NEVER
Definition Language.h:398
@ LANG_BANLIST_CHARACTERS_HEADER
Definition Language.h:923
@ LANG_BANINFO_NOCHARACTER
Definition Language.h:392
@ LANG_BANINFO_BANHISTORY
Definition Language.h:395
@ LANG_BAN_NOTFOUND
Definition Language.h:385
@ LANG_BANLIST_NOACCOUNT
Definition Language.h:404
@ LANG_UNBAN_UNBANNED
Definition Language.h:387
@ LANG_BANINFO_NO
Definition Language.h:400
@ LANG_BAN_YOUPERMBANNED
Definition Language.h:384
@ LANG_BANLIST_IPS_HEADER
Definition Language.h:603
@ LANG_BANINFO_NOIP
Definition Language.h:393
@ LANG_BANLIST_MATCHINGIP
Definition Language.h:406
@ LANG_BANINFO_NOACCOUNTBAN
Definition Language.h:394
@ LANG_CHAR_NOT_BANNED
Definition Language.h:926
@ LANG_BAN_YOUBANNED
Definition Language.h:383
@ LANG_UNBAN_ERROR
Definition Language.h:388
@ LANG_BANINFO_YES
Definition Language.h:399
@ LANG_BANLIST_MATCHINGCHARACTER
Definition Language.h:921
@ LANG_BANLIST_MATCHINGACCOUNT
Definition Language.h:407
@ LANG_BANLIST_NOCHARACTER
Definition Language.h:405
@ LANG_PLAYER_NOT_FOUND
Definition Language.h:487
@ LANG_BANINFO_HISTORYENTRY
Definition Language.h:396
@ LANG_BANLIST_CHARACTERS
Definition Language.h:922
@ LANG_BANLIST_NOIP
Definition Language.h:403
@ LANG_ACCOUNT_NOT_EXIST
Definition Language.h:390
@ LANG_BANLIST_ACCOUNTS_HEADER
Definition Language.h:601
@ LANG_BANLIST_IPS
Definition Language.h:602
@ LANG_BANLIST_ACCOUNTS
Definition Language.h:600
@ LOGIN_DEL_EXPIRED_IP_BANS
@ LOGIN_SEL_IP_BANNED_BY_IP
@ LOGIN_SEL_ACCOUNT_BANNED_BY_USERNAME
@ LOGIN_SEL_IP_BANNED_ALL
@ LOGIN_SEL_ACCOUNT_BANNED_ALL
#define sObjectAccessor
bool normalizePlayerName(std::string &name)
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Definition QueryResult.h:94
Skyfire::AutoPtr< ResultSet, Skyfire::Mutex > QueryResult
Definition QueryResult.h:48
@ BAN_SYNTAX_ERROR
@ BAN_NOTFOUND
@ BAN_SUCCESS
BanMode
Ban function modes.
@ BAN_ACCOUNT
@ BAN_IP
@ BAN_CHARACTER
bool IsIPAddress(char const *ipaddress)
Check if the string is a valid ip address representation.
Definition Util.cpp:229
uint32 TimeStringToSecs(const std::string &timestring)
Definition Util.cpp:181
std::string secsToTimeString(uint64 timeInSecs, bool shortText, bool hoursOnly)
Definition Util.cpp:127
static bool normalizeString(std::string &utf8String)
static uint32 GetId(std::string const &username)
static bool GetName(uint32 accountId, std::string &name)
WorldSession * GetSession()
Definition Chat.h:43
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
Definition Chat.cpp:221
void SetSentErrorMessage(bool val)
Definition Chat.h:114
virtual void SendSysMessage(const char *str)
Definition Chat.cpp:153
virtual const char * GetSkyFireString(int32 entry) const
Definition Chat.cpp:68
CommandScript(const char *name)
Definition Field.h:16
std::string GetString() const
Definition Field.h:228
uint64 GetUInt64() const
Definition Field.h:141
char const * GetCString() const
Definition Field.h:213
uint32 GetUInt32() const
Definition Field.h:105
uint32 GetGUIDLow() const
Definition Object.h:120
void setString(const uint8 index, const std::string &value)
void setUInt32(const uint8 index, const uint32 value)
std::string const & GetPlayerName() const
static bool HandleBanHelper(BanMode mode, char const *args, ChatHandler *handler)
Definition cs_ban.cpp:129
static bool HandleUnBanHelper(BanMode mode, char const *args, ChatHandler *handler)
Definition cs_ban.cpp:653
static bool HandleBanAccountByCharCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:119
static bool HandleUnBanIPCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:648
static bool HandleUnBanAccountByCharCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:643
static bool HandleBanInfoAccountCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:202
static bool HandleBanListIPCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:534
static bool HandleBanIPCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:124
static bool HandleBanInfoHelper(uint32 accountId, char const *accountName, ChatHandler *handler)
Definition cs_ban.cpp:229
static bool HandleBanListCharacterCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:449
static bool HandleBanInfoIPCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:308
static bool HandleBanListAccountCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:340
static bool HandleBanCharacterCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:70
std::vector< ChatCommand > GetCommands() const OVERRIDE
Definition cs_ban.cpp:27
static bool HandleBanInfoCharacterCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:256
static bool HandleUnBanAccountCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:610
static bool HandleBanListHelper(PreparedQueryResult result, ChatHandler *handler)
Definition cs_ban.cpp:371
static bool HandleBanAccountCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:65
static bool HandleUnBanCharacterCommand(ChatHandler *handler, char const *args)
Definition cs_ban.cpp:615
void AddSC_ban_commandscript()
Definition cs_ban.cpp:697
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
Definition Main.cpp:41
#define sWorld
Definition World.h:910
bool LocalTime(time_t const &time, tm &result)
Definition TimeUtils.h:57
@ RBAC_PERM_COMMAND_UNBAN
Definition RBAC.h:140
@ RBAC_PERM_COMMAND_BANINFO_IP
Definition RBAC.h:135
@ RBAC_PERM_COMMAND_BANINFO_ACCOUNT
Definition RBAC.h:133
@ RBAC_PERM_COMMAND_BANINFO_CHARACTER
Definition RBAC.h:134
@ RBAC_PERM_COMMAND_BANLIST
Definition RBAC.h:136
@ RBAC_PERM_COMMAND_BAN_PLAYERACCOUNT
Definition RBAC.h:131
@ RBAC_PERM_COMMAND_UNBAN_CHARACTER
Definition RBAC.h:142
@ RBAC_PERM_COMMAND_UNBAN_PLAYERACCOUNT
Definition RBAC.h:144
@ RBAC_PERM_COMMAND_BAN_CHARACTER
Definition RBAC.h:129
@ RBAC_PERM_COMMAND_BANLIST_ACCOUNT
Definition RBAC.h:137
@ RBAC_PERM_COMMAND_BAN_IP
Definition RBAC.h:130
@ RBAC_PERM_COMMAND_BANLIST_CHARACTER
Definition RBAC.h:138
@ RBAC_PERM_COMMAND_BANLIST_IP
Definition RBAC.h:139
@ RBAC_PERM_COMMAND_BANINFO
Definition RBAC.h:132
@ RBAC_PERM_COMMAND_BAN_ACCOUNT
Definition RBAC.h:128
@ RBAC_PERM_COMMAND_UNBAN_ACCOUNT
Definition RBAC.h:141
@ RBAC_PERM_COMMAND_BAN
Definition RBAC.h:127
@ RBAC_PERM_COMMAND_UNBAN_IP
Definition RBAC.h:143
LoginDatabaseWorkerPool LoginDatabase
Definition Main.cpp:54