AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
WorldSession::DosProtection Class Reference

#include "WorldSession.h"

Public Member Functions

 DosProtection (WorldSession *s)
 
bool EvaluateOpcode (WorldPacket &p, time_t time) const
 

Protected Types

enum  Policy {
  POLICY_LOG ,
  POLICY_KICK ,
  POLICY_BAN
}
 

Protected Member Functions

uint32 GetMaxPacketCounterAllowed (uint16 opcode) const
 

Protected Attributes

WorldSessionSession
 

Private Types

typedef std::unordered_map< uint16, PacketCounterPacketThrottlingMap
 

Private Member Functions

 DosProtection (DosProtection const &right)=delete
 
DosProtectionoperator= (DosProtection const &right)=delete
 

Private Attributes

Policy _policy
 
PacketThrottlingMap _PacketThrottlingMap
 

Friends

class World
 

Detailed Description

Member Typedef Documentation

◆ PacketThrottlingMap

Member Enumeration Documentation

◆ Policy

Enumerator
POLICY_LOG 
POLICY_KICK 
POLICY_BAN 
1102 {
1103 POLICY_LOG,
1106 };
@ POLICY_KICK
Definition: WorldSession.h:1104
@ POLICY_BAN
Definition: WorldSession.h:1105
@ POLICY_LOG
Definition: WorldSession.h:1103

Constructor & Destructor Documentation

◆ DosProtection() [1/2]

WorldSession::DosProtection::DosProtection ( WorldSession s)
1633 :
1634 Session(s), _policy((Policy)sWorld->getIntConfig(CONFIG_PACKET_SPOOF_POLICY)) { }
@ CONFIG_PACKET_SPOOF_POLICY
Definition: IWorld.h:370
#define sWorld
Definition: World.h:447
Policy _policy
Definition: WorldSession.h:1113
WorldSession * Session
Definition: WorldSession.h:1110
Policy
Definition: WorldSession.h:1102

◆ DosProtection() [2/2]

WorldSession::DosProtection::DosProtection ( DosProtection const &  right)
privatedelete

Member Function Documentation

◆ EvaluateOpcode()

bool WorldSession::DosProtection::EvaluateOpcode ( WorldPacket p,
time_t  time 
) const
1330{
1331 uint32 maxPacketCounterAllowed = GetMaxPacketCounterAllowed(p.GetOpcode());
1332
1333 // Return true if there no limit for the opcode
1334 if (!maxPacketCounterAllowed)
1335 return true;
1336
1337 PacketCounter& packetCounter = _PacketThrottlingMap[p.GetOpcode()];
1338 if (packetCounter.lastReceiveTime != time)
1339 {
1340 packetCounter.lastReceiveTime = time;
1341 packetCounter.amountCounter = 0;
1342 }
1343
1344 // Check if player is flooding some packets
1345 if (++packetCounter.amountCounter <= maxPacketCounterAllowed)
1346 return true;
1347
1348 LOG_WARN("network", "AntiDOS: Account {}, IP: {}, Ping: {}, Character: {}, flooding packet (opc: {} (0x{:X}), count: {})",
1350 opcodeTable[static_cast<OpcodeClient>(p.GetOpcode())]->Name, p.GetOpcode(), packetCounter.amountCounter);
1351
1352 switch (_policy)
1353 {
1354 case POLICY_LOG:
1355 return true;
1356 case POLICY_KICK:
1357 {
1358 LOG_INFO("network", "AntiDOS: Player {} kicked!", Session->GetPlayerName());
1360 return false;
1361 }
1362 case POLICY_BAN:
1363 {
1364 uint32 bm = sWorld->getIntConfig(CONFIG_PACKET_SPOOF_BANMODE);
1365 uint32 duration = sWorld->getIntConfig(CONFIG_PACKET_SPOOF_BANDURATION); // in seconds
1366 std::string nameOrIp = "";
1367 switch (bm)
1368 {
1369 case 0: // Ban account
1370 (void)AccountMgr::GetName(Session->GetAccountId(), nameOrIp);
1371 sBan->BanAccount(nameOrIp, std::to_string(duration), "DOS (Packet Flooding/Spoofing", "Server: AutoDOS");
1372 break;
1373 case 1: // Ban ip
1374 nameOrIp = Session->GetRemoteAddress();
1375 sBan->BanIP(nameOrIp, std::to_string(duration), "DOS (Packet Flooding/Spoofing", "Server: AutoDOS");
1376 break;
1377 }
1378
1379 LOG_INFO("network", "AntiDOS: Player automatically banned for {} seconds.", duration);
1380 return false;
1381 }
1382 default: // invalid policy
1383 return true;
1384 }
1385}
std::uint32_t uint32
Definition: Define.h:108
#define LOG_INFO(filterType__,...)
Definition: Log.h:165
#define LOG_WARN(filterType__,...)
Definition: Log.h:161
#define sBan
Definition: BanMgr.h:48
@ CONFIG_PACKET_SPOOF_BANDURATION
Definition: IWorld.h:372
@ CONFIG_PACKET_SPOOF_BANMODE
Definition: IWorld.h:371
Opcodes
List of Opcodes.
Definition: Opcodes.h:30
OpcodeTable opcodeTable
Definition: Opcodes.cpp:51
bool GetName(uint32 accountId, std::string &name)
Definition: AccountMgr.cpp:228
uint16 GetOpcode() const
Definition: WorldPacket.h:76
Definition: WorldSession.h:323
uint32 amountCounter
Definition: WorldSession.h:325
time_t lastReceiveTime
Definition: WorldSession.h:324
uint32 GetAccountId() const
Definition: WorldSession.h:363
uint32 GetLatency() const
Definition: WorldSession.h:503
std::string const & GetRemoteAddress()
Definition: WorldSession.h:373
void KickPlayer(bool setKicked=true)
Definition: WorldSession.h:402
std::string const & GetPlayerName() const
Definition: WorldSession.cpp:184
uint32 GetMaxPacketCounterAllowed(uint16 opcode) const
Definition: WorldSession.cpp:1387
PacketThrottlingMap _PacketThrottlingMap
Definition: WorldSession.h:1116

References _PacketThrottlingMap, _policy, PacketCounter::amountCounter, CONFIG_PACKET_SPOOF_BANDURATION, CONFIG_PACKET_SPOOF_BANMODE, WorldSession::GetAccountId(), WorldSession::GetLatency(), GetMaxPacketCounterAllowed(), AccountMgr::GetName(), WorldPacket::GetOpcode(), WorldSession::GetPlayerName(), WorldSession::GetRemoteAddress(), WorldSession::KickPlayer(), PacketCounter::lastReceiveTime, LOG_INFO, LOG_WARN, opcodeTable, POLICY_BAN, POLICY_KICK, POLICY_LOG, sBan, Session, and sWorld.

Referenced by WorldSession::Update().

◆ GetMaxPacketCounterAllowed()

uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed ( uint16  opcode) const
protected
1388{
1389 uint32 maxPacketCounterAllowed;
1390 switch (opcode)
1391 {
1392 // CPU usage sending 2000 packets/second on a 3.70 GHz 4 cores on Win x64
1393 // [% CPU mysqld] [%CPU worldserver RelWithDebInfo]
1394 case CMSG_PLAYER_LOGIN: // 0 0.5
1395 case CMSG_NAME_QUERY: // 0 1
1396 case CMSG_PET_NAME_QUERY: // 0 1
1397 case CMSG_NPC_TEXT_QUERY: // 0 1
1398 case CMSG_ATTACKSTOP: // 0 1
1399 case CMSG_QUERY_QUESTS_COMPLETED: // 0 1
1400 case CMSG_QUERY_TIME: // 0 1
1402 case CMSG_MOVE_TIME_SKIPPED: // 0 1
1403 case MSG_QUERY_NEXT_MAIL_TIME: // 0 1
1404 case CMSG_SET_SHEATHED: // 0 1
1405 case MSG_RAID_TARGET_UPDATE: // 0 1
1406 case CMSG_PLAYER_LOGOUT: // 0 1
1407 case CMSG_LOGOUT_REQUEST: // 0 1
1408 case CMSG_PET_RENAME: // 0 1
1409 case CMSG_QUESTGIVER_CANCEL: // 0 1
1411 case CMSG_COMPLETE_CINEMATIC: // 0 1
1412 case CMSG_BANKER_ACTIVATE: // 0 1
1413 case CMSG_BUY_BANK_SLOT: // 0 1
1414 case CMSG_OPT_OUT_OF_LOOT: // 0 1
1415 case CMSG_DUEL_ACCEPTED: // 0 1
1416 case CMSG_DUEL_CANCELLED: // 0 1
1417 case CMSG_CALENDAR_COMPLAIN: // 0 1
1418 case CMSG_QUEST_QUERY: // 0 1.5
1419 case CMSG_ITEM_QUERY_SINGLE: // 0 1.5
1420 case CMSG_ITEM_NAME_QUERY: // 0 1.5
1421 case CMSG_GAMEOBJECT_QUERY: // 0 1.5
1422 case CMSG_CREATURE_QUERY: // 0 1.5
1423 case CMSG_QUESTGIVER_STATUS_QUERY: // 0 1.5
1424 case CMSG_GUILD_QUERY: // 0 1.5
1425 case CMSG_ARENA_TEAM_QUERY: // 0 1.5
1426 case CMSG_TAXINODE_STATUS_QUERY: // 0 1.5
1427 case CMSG_TAXIQUERYAVAILABLENODES: // 0 1.5
1428 case CMSG_QUESTGIVER_QUERY_QUEST: // 0 1.5
1429 case CMSG_PAGE_TEXT_QUERY: // 0 1.5
1430 case MSG_QUERY_GUILD_BANK_TEXT: // 0 1.5
1431 case MSG_CORPSE_QUERY: // 0 1.5
1432 case MSG_MOVE_SET_FACING: // 0 1.5
1433 case CMSG_REQUEST_PARTY_MEMBER_STATS: // 0 1.5
1434 case CMSG_QUESTGIVER_COMPLETE_QUEST: // 0 1.5
1435 case CMSG_SET_ACTION_BUTTON: // 0 1.5
1436 case CMSG_RESET_INSTANCES: // 0 1.5
1437 case CMSG_HEARTH_AND_RESURRECT: // 0 1.5
1438 case CMSG_TOGGLE_PVP: // 0 1.5
1439 case CMSG_PET_ABANDON: // 0 1.5
1440 case CMSG_ACTIVATETAXIEXPRESS: // 0 1.5
1441 case CMSG_ACTIVATETAXI: // 0 1.5
1442 case CMSG_SELF_RES: // 0 1.5
1443 case CMSG_UNLEARN_SKILL: // 0 1.5
1444 case CMSG_EQUIPMENT_SET_SAVE: // 0 1.5
1445 case CMSG_DELETEEQUIPMENT_SET: // 0 1.5
1446 case CMSG_DISMISS_CRITTER: // 0 1.5
1447 case CMSG_REPOP_REQUEST: // 0 1.5
1448 case CMSG_GROUP_INVITE: // 0 1.5
1449 case CMSG_GROUP_DECLINE: // 0 1.5
1450 case CMSG_GROUP_ACCEPT: // 0 1.5
1451 case CMSG_GROUP_UNINVITE_GUID: // 0 1.5
1452 case CMSG_GROUP_UNINVITE: // 0 1.5
1453 case CMSG_GROUP_DISBAND: // 0 1.5
1454 case CMSG_BATTLEMASTER_JOIN_ARENA: // 0 1.5
1455 case CMSG_LEAVE_BATTLEFIELD: // 0 1.5
1456 case MSG_GUILD_BANK_LOG_QUERY: // 0 2
1457 case CMSG_LOGOUT_CANCEL: // 0 2
1458 case CMSG_REALM_SPLIT: // 0 2
1459 case CMSG_ALTER_APPEARANCE: // 0 2
1460 case CMSG_QUEST_CONFIRM_ACCEPT: // 0 2
1461 case MSG_GUILD_EVENT_LOG_QUERY: // 0 2.5
1464 case CMSG_BEGIN_TRADE: // 0 2.5
1465 case CMSG_INITIATE_TRADE: // 0 3
1466 case CMSG_MESSAGECHAT: // 0 3.5
1467 case CMSG_INSPECT: // 0 3.5
1468 case CMSG_AREA_SPIRIT_HEALER_QUERY: // not profiled
1469 case CMSG_STANDSTATECHANGE: // not profiled
1470 case MSG_RANDOM_ROLL: // not profiled
1471 case CMSG_TIME_SYNC_RESP: // not profiled
1472 case CMSG_TRAINER_BUY_SPELL: // not profiled
1473 case CMSG_FORCE_SWIM_SPEED_CHANGE_ACK: // not profiled
1474 case CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK: // not profiled
1475 case CMSG_FORCE_RUN_SPEED_CHANGE_ACK: // not profiled
1476 case CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK: // not profiled
1477 case CMSG_FORCE_FLIGHT_SPEED_CHANGE_ACK: // not profiled
1478 case CMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK: // not profiled
1479 case CMSG_FORCE_WALK_SPEED_CHANGE_ACK: // not profiled
1480 case CMSG_FORCE_TURN_RATE_CHANGE_ACK: // not profiled
1481 case CMSG_FORCE_PITCH_RATE_CHANGE_ACK: // not profiled
1482 {
1483 // "0" is a magic number meaning there's no limit for the opcode.
1484 // All the opcodes above must cause little CPU usage and no sync/async database queries at all
1485 maxPacketCounterAllowed = 0;
1486 break;
1487 }
1488
1489 case CMSG_QUESTGIVER_ACCEPT_QUEST: // 0 4
1490 case CMSG_QUESTLOG_REMOVE_QUEST: // 0 4
1492 case CMSG_CONTACT_LIST: // 0 5
1493 case CMSG_LEARN_PREVIEW_TALENTS: // 0 6
1494 case CMSG_AUTOBANK_ITEM: // 0 6
1495 case CMSG_AUTOSTORE_BANK_ITEM: // 0 6
1496 case CMSG_WHO: // 0 7
1497 case CMSG_PLAYER_VEHICLE_ENTER: // 0 8
1498 case CMSG_LEARN_PREVIEW_TALENTS_PET: // not profiled
1499 case MSG_MOVE_HEARTBEAT:
1500 {
1501 maxPacketCounterAllowed = 200;
1502 break;
1503 }
1504
1505 case CMSG_GUILD_SET_PUBLIC_NOTE: // 1 2 1 async db query
1506 case CMSG_GUILD_SET_OFFICER_NOTE: // 1 2 1 async db query
1507 case CMSG_SET_CONTACT_NOTES: // 1 2.5 1 async db query
1508 case CMSG_CALENDAR_GET_CALENDAR: // 0 1.5 medium upload bandwidth usage
1509 case CMSG_GUILD_BANK_QUERY_TAB: // 0 3.5 medium upload bandwidth usage
1510 case CMSG_QUERY_INSPECT_ACHIEVEMENTS: // 0 13 high upload bandwidth usage
1511 case CMSG_GAMEOBJ_REPORT_USE: // not profiled
1512 case CMSG_GAMEOBJ_USE: // not profiled
1513 case MSG_PETITION_DECLINE: // not profiled
1514 {
1515 maxPacketCounterAllowed = 50;
1516 break;
1517 }
1518
1519 case CMSG_QUEST_POI_QUERY: // 0 25 very high upload bandwidth usage
1520 {
1521 maxPacketCounterAllowed = MAX_QUEST_LOG_SIZE;
1522 break;
1523 }
1524
1525 case CMSG_GM_REPORT_LAG: // 1 3 1 async db query
1526 case CMSG_SPELLCLICK: // not profiled
1527 case CMSG_REMOVE_GLYPH: // not profiled
1528 case CMSG_DISMISS_CONTROLLED_VEHICLE: // not profiled
1529 {
1530 maxPacketCounterAllowed = 20;
1531 break;
1532 }
1533
1534 case CMSG_PETITION_SIGN: // 9 4 2 sync 1 async db queries
1535 case CMSG_TURN_IN_PETITION: // 8 5.5 2 sync db query
1536 case CMSG_GROUP_CHANGE_SUB_GROUP: // 6 5 1 sync 1 async db queries
1537 case CMSG_PETITION_QUERY: // 4 3.5 1 sync db query
1538 case CMSG_CHAR_RACE_CHANGE: // 5 4 1 sync db query
1539 case CMSG_CHAR_CUSTOMIZE: // 5 5 1 sync db query
1540 case CMSG_CHAR_FACTION_CHANGE: // 5 5 1 sync db query
1541 case CMSG_CHAR_DELETE: // 4 4 1 sync db query
1542 case CMSG_DEL_FRIEND: // 7 5 1 async db query
1543 case CMSG_ADD_FRIEND: // 6 4 1 async db query
1544 case CMSG_CHAR_RENAME: // 5 3 1 async db query
1545 case CMSG_GMSURVEY_SUBMIT: // 2 3 1 async db query
1546 case CMSG_BUG: // 1 1 1 async db query
1547 case CMSG_GROUP_SET_LEADER: // 1 2 1 async db query
1548 case CMSG_GROUP_RAID_CONVERT: // 1 5 1 async db query
1549 case CMSG_GROUP_ASSISTANT_LEADER: // 1 2 1 async db query
1550 case CMSG_PETITION_BUY: // not profiled 1 sync 1 async db queries
1551 case CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE: // not profiled
1552 case CMSG_REQUEST_VEHICLE_PREV_SEAT: // not profiled
1553 case CMSG_REQUEST_VEHICLE_NEXT_SEAT: // not profiled
1554 case CMSG_REQUEST_VEHICLE_SWITCH_SEAT: // not profiled
1555 case CMSG_REQUEST_VEHICLE_EXIT: // not profiled
1556 case CMSG_CONTROLLER_EJECT_PASSENGER: // not profiled
1557 case CMSG_ITEM_REFUND: // not profiled
1558 case CMSG_SOCKET_GEMS: // not profiled
1559 case CMSG_WRAP_ITEM: // not profiled
1560 case CMSG_REPORT_PVP_AFK: // not profiled
1561 {
1562 maxPacketCounterAllowed = 10;
1563 break;
1564 }
1565
1566 case CMSG_CHAR_CREATE: // 7 5 3 async db queries
1567 case CMSG_CHAR_ENUM: // 22 3 2 async db queries
1568 case CMSG_GMTICKET_CREATE: // 1 25 1 async db query
1569 case CMSG_GMTICKET_UPDATETEXT: // 0 15 1 async db query
1570 case CMSG_GMTICKET_DELETETICKET: // 1 25 1 async db query
1571 case CMSG_GMRESPONSE_RESOLVE: // 1 25 1 async db query
1572 case CMSG_CALENDAR_ADD_EVENT: // 21 10 2 async db query
1573 case CMSG_CALENDAR_UPDATE_EVENT: // not profiled
1574 case CMSG_CALENDAR_REMOVE_EVENT: // not profiled
1575 case CMSG_CALENDAR_COPY_EVENT: // not profiled
1576 case CMSG_CALENDAR_EVENT_INVITE: // not profiled
1577 case CMSG_CALENDAR_EVENT_SIGNUP: // not profiled
1578 case CMSG_CALENDAR_EVENT_RSVP: // not profiled
1579 case CMSG_CALENDAR_EVENT_REMOVE_INVITE: // not profiled
1580 case CMSG_CALENDAR_EVENT_MODERATOR_STATUS: // not profiled
1581 case CMSG_ARENA_TEAM_INVITE: // not profiled
1582 case CMSG_ARENA_TEAM_ACCEPT: // not profiled
1583 case CMSG_ARENA_TEAM_DECLINE: // not profiled
1584 case CMSG_ARENA_TEAM_LEAVE: // not profiled
1585 case CMSG_ARENA_TEAM_DISBAND: // not profiled
1586 case CMSG_ARENA_TEAM_REMOVE: // not profiled
1587 case CMSG_ARENA_TEAM_LEADER: // not profiled
1588 case CMSG_LOOT_METHOD: // not profiled
1589 case CMSG_GUILD_INVITE: // not profiled
1590 case CMSG_GUILD_ACCEPT: // not profiled
1591 case CMSG_GUILD_DECLINE: // not profiled
1592 case CMSG_GUILD_LEAVE: // not profiled
1593 case CMSG_GUILD_DISBAND: // not profiled
1594 case CMSG_GUILD_LEADER: // not profiled
1595 case CMSG_GUILD_MOTD: // not profiled
1596 case CMSG_GUILD_RANK: // not profiled
1597 case CMSG_GUILD_ADD_RANK: // not profiled
1598 case CMSG_GUILD_DEL_RANK: // not profiled
1599 case CMSG_GUILD_INFO_TEXT: // not profiled
1600 case CMSG_GUILD_BANK_DEPOSIT_MONEY: // not profiled
1601 case CMSG_GUILD_BANK_WITHDRAW_MONEY: // not profiled
1602 case CMSG_GUILD_BANK_BUY_TAB: // not profiled
1603 case CMSG_GUILD_BANK_UPDATE_TAB: // not profiled
1604 case CMSG_SET_GUILD_BANK_TEXT: // not profiled
1605 case MSG_SAVE_GUILD_EMBLEM: // not profiled
1606 case MSG_PETITION_RENAME: // not profiled
1607 case MSG_TALENT_WIPE_CONFIRM: // not profiled
1608 case MSG_SET_DUNGEON_DIFFICULTY: // not profiled
1609 case MSG_SET_RAID_DIFFICULTY: // not profiled
1610 case MSG_PARTY_ASSIGNMENT: // not profiled
1611 case MSG_RAID_READY_CHECK: // not profiled
1612 {
1613 maxPacketCounterAllowed = 3;
1614 break;
1615 }
1616
1617 case CMSG_ITEM_REFUND_INFO: // not profiled
1618 {
1619 maxPacketCounterAllowed = PLAYER_SLOTS_COUNT;
1620 break;
1621 }
1622
1623 default:
1624 {
1625 maxPacketCounterAllowed = 100;
1626 break;
1627 }
1628 }
1629
1630 return maxPacketCounterAllowed;
1631}
@ PLAYER_SLOTS_COUNT
Definition: Player.h:668
#define MAX_QUEST_LOG_SIZE
Definition: QuestDef.h:33
@ CMSG_QUESTGIVER_QUERY_QUEST
Definition: Opcodes.h:420
@ CMSG_CALENDAR_EVENT_MODERATOR_STATUS
Definition: Opcodes.h:1107
@ CMSG_LEARN_PREVIEW_TALENTS
Definition: Opcodes.h:1247
@ CMSG_TURN_IN_PETITION
Definition: Opcodes.h:482
@ CMSG_CALENDAR_ADD_EVENT
Definition: Opcodes.h:1099
@ MSG_RANDOM_ROLL
Definition: Opcodes.h:537
@ CMSG_CALENDAR_EVENT_REMOVE_INVITE
Definition: Opcodes.h:1105
@ MSG_PETITION_DECLINE
Definition: Opcodes.h:480
@ CMSG_SPELLCLICK
Definition: Opcodes.h:1046
@ MSG_MOVE_SET_FACING
Definition: Opcodes.h:248
@ CMSG_GUILD_DEL_RANK
Definition: Opcodes.h:593
@ CMSG_LOGOUT_REQUEST
Definition: Opcodes.h:105
@ CMSG_PET_RENAME
Definition: Opcodes.h:405
@ CMSG_QUEST_QUERY
Definition: Opcodes.h:122
@ CMSG_SET_GUILD_BANK_TEXT
Definition: Opcodes.h:1065
@ CMSG_REPORT_PVP_AFK
Definition: Opcodes.h:1026
@ CMSG_ARENA_TEAM_DISBAND
Definition: Opcodes.h:883
@ MSG_RAID_READY_CHECK
Definition: Opcodes.h:832
@ CMSG_SET_SHEATHED
Definition: Opcodes.h:510
@ CMSG_REQUEST_VEHICLE_SWITCH_SEAT
Definition: Opcodes.h:1175
@ CMSG_QUESTGIVER_STATUS_QUERY
Definition: Opcodes.h:416
@ CMSG_REPOP_REQUEST
Definition: Opcodes.h:376
@ CMSG_ACTIVATETAXI
Definition: Opcodes.h:459
@ CMSG_PETITION_QUERY
Definition: Opcodes.h:484
@ CMSG_PET_ABANDON
Definition: Opcodes.h:404
@ CMSG_QUEST_CONFIRM_ACCEPT
Definition: Opcodes.h:441
@ CMSG_FORCE_PITCH_RATE_CHANGE_ACK
Definition: Opcodes.h:1147
@ CMSG_QUESTGIVER_COMPLETE_QUEST
Definition: Opcodes.h:424
@ CMSG_GMTICKET_CREATE
Definition: Opcodes.h:547
@ CMSG_TOGGLE_PVP
Definition: Opcodes.h:625
@ CMSG_CALENDAR_EVENT_INVITE
Definition: Opcodes.h:1103
@ CMSG_GUILD_ACCEPT
Definition: Opcodes.h:162
@ CMSG_ITEM_REFUND_INFO
Definition: Opcodes.h:1233
@ CMSG_ACTIVATETAXIEXPRESS
Definition: Opcodes.h:816
@ CMSG_GUILD_BANK_DEPOSIT_MONEY
Definition: Opcodes.h:1034
@ CMSG_GUILD_LEAVE
Definition: Opcodes.h:171
@ CMSG_CREATURE_QUERY
Definition: Opcodes.h:126
@ CMSG_GUILD_BANK_WITHDRAW_MONEY
Definition: Opcodes.h:1035
@ CMSG_SET_CONTACT_NOTES
Definition: Opcodes.h:137
@ CMSG_QUEST_POI_QUERY
Definition: Opcodes.h:513
@ CMSG_GM_REPORT_LAG
Definition: Opcodes.h:1312
@ CMSG_SOCKET_GEMS
Definition: Opcodes.h:869
@ MSG_QUERY_GUILD_BANK_TEXT
Definition: Opcodes.h:1064
@ CMSG_GAMEOBJ_REPORT_USE
Definition: Opcodes.h:1183
@ CMSG_MOVE_TIME_SKIPPED
Definition: Opcodes.h:748
@ CMSG_CHAR_ENUM
Definition: Opcodes.h:85
@ MSG_SAVE_GUILD_EMBLEM
Definition: Opcodes.h:527
@ CMSG_COMPLETE_CINEMATIC
Definition: Opcodes.h:282
@ CMSG_SELF_RES
Definition: Opcodes.h:721
@ CMSG_REQUEST_VEHICLE_NEXT_SEAT
Definition: Opcodes.h:1174
@ CMSG_ARENA_TEAM_REMOVE
Definition: Opcodes.h:882
@ CMSG_GROUP_ASSISTANT_LEADER
Definition: Opcodes.h:685
@ CMSG_QUESTGIVER_ACCEPT_QUEST
Definition: Opcodes.h:423
@ CMSG_CHAR_RACE_CHANGE
Definition: Opcodes.h:1302
@ CMSG_REQUEST_VEHICLE_PREV_SEAT
Definition: Opcodes.h:1173
@ CMSG_REQUEST_VEHICLE_EXIT
Definition: Opcodes.h:1172
@ CMSG_GUILD_INVITE
Definition: Opcodes.h:160
@ CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK
Definition: Opcodes.h:259
@ CMSG_GUILD_DECLINE
Definition: Opcodes.h:163
@ MSG_TALENT_WIPE_CONFIRM
Definition: Opcodes.h:712
@ CMSG_GROUP_INVITE
Definition: Opcodes.h:140
@ CMSG_TIME_SYNC_RESP
Definition: Opcodes.h:943
@ CMSG_FORCE_TURN_RATE_CHANGE_ACK
Definition: Opcodes.h:765
@ CMSG_NAME_QUERY
Definition: Opcodes.h:110
@ CMSG_ATTACKSTOP
Definition: Opcodes.h:352
@ CMSG_ARENA_TEAM_LEADER
Definition: Opcodes.h:884
@ CMSG_GROUP_UNINVITE
Definition: Opcodes.h:147
@ MSG_SET_RAID_DIFFICULTY
Definition: Opcodes.h:1289
@ CMSG_GMRESPONSE_RESOLVE
Definition: Opcodes.h:1294
@ CMSG_CONTROLLER_EJECT_PASSENGER
Definition: Opcodes.h:1223
@ CMSG_DELETEEQUIPMENT_SET
Definition: Opcodes.h:348
@ CMSG_OPT_OUT_OF_LOOT
Definition: Opcodes.h:1063
@ CMSG_EQUIPMENT_SET_SAVE
Definition: Opcodes.h:1243
@ CMSG_CALENDAR_COMPLAIN
Definition: Opcodes.h:1124
@ CMSG_GUILD_SET_OFFICER_NOTE
Definition: Opcodes.h:595
@ CMSG_CALENDAR_EVENT_SIGNUP
Definition: Opcodes.h:1240
@ CMSG_AUTOSTORE_BANK_ITEM
Definition: Opcodes.h:672
@ CMSG_STANDSTATECHANGE
Definition: Opcodes.h:287
@ CMSG_GROUP_CHANGE_SUB_GROUP
Definition: Opcodes.h:668
@ MSG_GUILD_BANK_LOG_QUERY
Definition: Opcodes.h:1036
@ CMSG_GUILD_ADD_RANK
Definition: Opcodes.h:592
@ CMSG_DISMISS_CRITTER
Definition: Opcodes.h:1195
@ CMSG_CALENDAR_GET_CALENDAR
Definition: Opcodes.h:1095
@ CMSG_CHAR_DELETE
Definition: Opcodes.h:86
@ CMSG_PET_NAME_QUERY
Definition: Opcodes.h:112
@ MSG_RAID_TARGET_UPDATE
Definition: Opcodes.h:831
@ CMSG_LEARN_PREVIEW_TALENTS_PET
Definition: Opcodes.h:1248
@ CMSG_AUTOBANK_ITEM
Definition: Opcodes.h:673
@ CMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK
Definition: Opcodes.h:930
@ CMSG_GROUP_SET_LEADER
Definition: Opcodes.h:150
@ CMSG_ARENA_TEAM_ACCEPT
Definition: Opcodes.h:879
@ CMSG_CHAR_CUSTOMIZE
Definition: Opcodes.h:1169
@ CMSG_BUG
Definition: Opcodes.h:488
@ CMSG_BANKER_ACTIVATE
Definition: Opcodes.h:469
@ CMSG_ITEM_REFUND
Definition: Opcodes.h:1234
@ CMSG_CALENDAR_COPY_EVENT
Definition: Opcodes.h:1102
@ CMSG_FORCE_SWIM_SPEED_CHANGE_ACK
Definition: Opcodes.h:261
@ CMSG_GUILD_DISBAND
Definition: Opcodes.h:173
@ CMSG_ITEM_NAME_QUERY
Definition: Opcodes.h:738
@ CMSG_GMTICKET_UPDATETEXT
Definition: Opcodes.h:549
@ CMSG_QUERY_INSPECT_ACHIEVEMENTS
Definition: Opcodes.h:1161
@ CMSG_CONTACT_LIST
Definition: Opcodes.h:132
@ CMSG_CHAR_RENAME
Definition: Opcodes.h:741
@ CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY
Definition: Opcodes.h:1077
@ CMSG_CALENDAR_EVENT_RSVP
Definition: Opcodes.h:1104
@ CMSG_TAXINODE_STATUS_QUERY
Definition: Opcodes.h:456
@ MSG_PARTY_ASSIGNMENT
Definition: Opcodes.h:940
@ CMSG_ARENA_TEAM_INVITE
Definition: Opcodes.h:877
@ CMSG_GMSURVEY_SUBMIT
Definition: Opcodes.h:840
@ CMSG_GROUP_DISBAND
Definition: Opcodes.h:153
@ CMSG_ALTER_APPEARANCE
Definition: Opcodes.h:1092
@ MSG_MOVE_HEARTBEAT
Definition: Opcodes.h:268
@ CMSG_GMTICKET_DELETETICKET
Definition: Opcodes.h:565
@ CMSG_SET_ACTION_BUTTON
Definition: Opcodes.h:326
@ CMSG_WRAP_ITEM
Definition: Opcodes.h:497
@ CMSG_GAMEOBJECT_QUERY
Definition: Opcodes.h:124
@ CMSG_LOOT_METHOD
Definition: Opcodes.h:152
@ CMSG_GROUP_ACCEPT
Definition: Opcodes.h:144
@ CMSG_GUILD_RANK
Definition: Opcodes.h:591
@ CMSG_BEGIN_TRADE
Definition: Opcodes.h:309
@ CMSG_GUILD_QUERY
Definition: Opcodes.h:114
@ CMSG_QUESTGIVER_REQUEST_REWARD
Definition: Opcodes.h:426
@ CMSG_LEAVE_BATTLEFIELD
Definition: Opcodes.h:767
@ CMSG_INSPECT
Definition: Opcodes.h:306
@ CMSG_GROUP_UNINVITE_GUID
Definition: Opcodes.h:148
@ CMSG_AREA_SPIRIT_HEALER_QUERY
Definition: Opcodes.h:768
@ CMSG_DISMISS_CONTROLLED_VEHICLE
Definition: Opcodes.h:1163
@ CMSG_DEL_FRIEND
Definition: Opcodes.h:136
@ CMSG_GUILD_INFO_TEXT
Definition: Opcodes.h:794
@ CMSG_TAXIQUERYAVAILABLENODES
Definition: Opcodes.h:458
@ CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE
Definition: Opcodes.h:1209
@ CMSG_MESSAGECHAT
Definition: Opcodes.h:179
@ CMSG_QUERY_TIME
Definition: Opcodes.h:492
@ CMSG_QUESTLOG_REMOVE_QUEST
Definition: Opcodes.h:434
@ MSG_CORPSE_QUERY
Definition: Opcodes.h:564
@ CMSG_ADD_FRIEND
Definition: Opcodes.h:135
@ CMSG_QUESTGIVER_CANCEL
Definition: Opcodes.h:430
@ CMSG_PAGE_TEXT_QUERY
Definition: Opcodes.h:120
@ CMSG_FORCE_RUN_SPEED_CHANGE_ACK
Definition: Opcodes.h:257
@ CMSG_LOGOUT_CANCEL
Definition: Opcodes.h:108
@ CMSG_GROUP_RAID_CONVERT
Definition: Opcodes.h:684
@ CMSG_READY_FOR_ACCOUNT_DATA_TIMES
Definition: Opcodes.h:1309
@ CMSG_CHAR_CREATE
Definition: Opcodes.h:84
@ CMSG_BATTLEMASTER_JOIN_ARENA
Definition: Opcodes.h:886
@ CMSG_WHO
Definition: Opcodes.h:128
@ CMSG_HEARTH_AND_RESURRECT
Definition: Opcodes.h:1210
@ CMSG_CORPSE_MAP_POSITION_QUERY
Definition: Opcodes.h:1236
@ CMSG_PLAYER_LOGIN
Definition: Opcodes.h:91
@ CMSG_PLAYER_LOGOUT
Definition: Opcodes.h:104
@ CMSG_NPC_TEXT_QUERY
Definition: Opcodes.h:413
@ CMSG_CALENDAR_UPDATE_EVENT
Definition: Opcodes.h:1100
@ CMSG_RESET_INSTANCES
Definition: Opcodes.h:827
@ CMSG_GROUP_DECLINE
Definition: Opcodes.h:145
@ MSG_SET_DUNGEON_DIFFICULTY
Definition: Opcodes.h:839
@ CMSG_GUILD_SET_PUBLIC_NOTE
Definition: Opcodes.h:594
@ CMSG_DUEL_CANCELLED
Definition: Opcodes.h:395
@ CMSG_GUILD_LEADER
Definition: Opcodes.h:174
@ CMSG_TRAINER_BUY_SPELL
Definition: Opcodes.h:464
@ MSG_GUILD_EVENT_LOG_QUERY
Definition: Opcodes.h:1053
@ MSG_QUERY_NEXT_MAIL_TIME
Definition: Opcodes.h:674
@ CMSG_UNLEARN_SKILL
Definition: Opcodes.h:544
@ CMSG_INITIATE_TRADE
Definition: Opcodes.h:308
@ CMSG_DUEL_ACCEPTED
Definition: Opcodes.h:394
@ CMSG_QUESTGIVER_CHOOSE_REWARD
Definition: Opcodes.h:428
@ CMSG_FORCE_WALK_SPEED_CHANGE_ACK
Definition: Opcodes.h:761
@ CMSG_ARENA_TEAM_DECLINE
Definition: Opcodes.h:880
@ CMSG_REALM_SPLIT
Definition: Opcodes.h:938
@ CMSG_CALENDAR_REMOVE_EVENT
Definition: Opcodes.h:1101
@ CMSG_ARENA_TEAM_QUERY
Definition: Opcodes.h:873
@ CMSG_QUERY_QUESTS_COMPLETED
Definition: Opcodes.h:1310
@ CMSG_CHAR_FACTION_CHANGE
Definition: Opcodes.h:1271
@ CMSG_GUILD_BANK_BUY_TAB
Definition: Opcodes.h:1032
@ MSG_PETITION_RENAME
Definition: Opcodes.h:735
@ CMSG_PETITION_BUY
Definition: Opcodes.h:475
@ CMSG_PETITION_SIGN
Definition: Opcodes.h:478
@ CMSG_FORCE_FLIGHT_SPEED_CHANGE_ACK
Definition: Opcodes.h:928
@ CMSG_ARENA_TEAM_LEAVE
Definition: Opcodes.h:881
@ CMSG_REMOVE_GLYPH
Definition: Opcodes.h:1192
@ CMSG_GUILD_BANK_QUERY_TAB
Definition: Opcodes.h:1029
@ CMSG_PLAYER_VEHICLE_ENTER
Definition: Opcodes.h:1222
@ CMSG_BUY_BANK_SLOT
Definition: Opcodes.h:471
@ CMSG_REQUEST_PARTY_MEMBER_STATS
Definition: Opcodes.h:669
@ CMSG_ITEM_QUERY_SINGLE
Definition: Opcodes.h:116
@ CMSG_GUILD_BANK_UPDATE_TAB
Definition: Opcodes.h:1033
@ CMSG_GUILD_MOTD
Definition: Opcodes.h:175
@ CMSG_GAMEOBJ_USE
Definition: Opcodes.h:207
@ CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK
Definition: Opcodes.h:763

References CMSG_ACTIVATETAXI, CMSG_ACTIVATETAXIEXPRESS, CMSG_ADD_FRIEND, CMSG_ALTER_APPEARANCE, CMSG_AREA_SPIRIT_HEALER_QUERY, CMSG_ARENA_TEAM_ACCEPT, CMSG_ARENA_TEAM_DECLINE, CMSG_ARENA_TEAM_DISBAND, CMSG_ARENA_TEAM_INVITE, CMSG_ARENA_TEAM_LEADER, CMSG_ARENA_TEAM_LEAVE, CMSG_ARENA_TEAM_QUERY, CMSG_ARENA_TEAM_REMOVE, CMSG_ATTACKSTOP, CMSG_AUTOBANK_ITEM, CMSG_AUTOSTORE_BANK_ITEM, CMSG_BANKER_ACTIVATE, CMSG_BATTLEMASTER_JOIN_ARENA, CMSG_BEGIN_TRADE, CMSG_BUG, CMSG_BUY_BANK_SLOT, CMSG_CALENDAR_ADD_EVENT, CMSG_CALENDAR_COMPLAIN, CMSG_CALENDAR_COPY_EVENT, CMSG_CALENDAR_EVENT_INVITE, CMSG_CALENDAR_EVENT_MODERATOR_STATUS, CMSG_CALENDAR_EVENT_REMOVE_INVITE, CMSG_CALENDAR_EVENT_RSVP, CMSG_CALENDAR_EVENT_SIGNUP, CMSG_CALENDAR_GET_CALENDAR, CMSG_CALENDAR_REMOVE_EVENT, CMSG_CALENDAR_UPDATE_EVENT, CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE, CMSG_CHAR_CREATE, CMSG_CHAR_CUSTOMIZE, CMSG_CHAR_DELETE, CMSG_CHAR_ENUM, CMSG_CHAR_FACTION_CHANGE, CMSG_CHAR_RACE_CHANGE, CMSG_CHAR_RENAME, CMSG_COMPLETE_CINEMATIC, CMSG_CONTACT_LIST, CMSG_CONTROLLER_EJECT_PASSENGER, CMSG_CORPSE_MAP_POSITION_QUERY, CMSG_CREATURE_QUERY, CMSG_DEL_FRIEND, CMSG_DELETEEQUIPMENT_SET, CMSG_DISMISS_CONTROLLED_VEHICLE, CMSG_DISMISS_CRITTER, CMSG_DUEL_ACCEPTED, CMSG_DUEL_CANCELLED, CMSG_EQUIPMENT_SET_SAVE, CMSG_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, CMSG_FORCE_FLIGHT_SPEED_CHANGE_ACK, CMSG_FORCE_PITCH_RATE_CHANGE_ACK, CMSG_FORCE_RUN_BACK_SPEED_CHANGE_ACK, CMSG_FORCE_RUN_SPEED_CHANGE_ACK, CMSG_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, CMSG_FORCE_SWIM_SPEED_CHANGE_ACK, CMSG_FORCE_TURN_RATE_CHANGE_ACK, CMSG_FORCE_WALK_SPEED_CHANGE_ACK, CMSG_GAMEOBJ_REPORT_USE, CMSG_GAMEOBJ_USE, CMSG_GAMEOBJECT_QUERY, CMSG_GM_REPORT_LAG, CMSG_GMRESPONSE_RESOLVE, CMSG_GMSURVEY_SUBMIT, CMSG_GMTICKET_CREATE, CMSG_GMTICKET_DELETETICKET, CMSG_GMTICKET_UPDATETEXT, CMSG_GROUP_ACCEPT, CMSG_GROUP_ASSISTANT_LEADER, CMSG_GROUP_CHANGE_SUB_GROUP, CMSG_GROUP_DECLINE, CMSG_GROUP_DISBAND, CMSG_GROUP_INVITE, CMSG_GROUP_RAID_CONVERT, CMSG_GROUP_SET_LEADER, CMSG_GROUP_UNINVITE, CMSG_GROUP_UNINVITE_GUID, CMSG_GUILD_ACCEPT, CMSG_GUILD_ADD_RANK, CMSG_GUILD_BANK_BUY_TAB, CMSG_GUILD_BANK_DEPOSIT_MONEY, CMSG_GUILD_BANK_QUERY_TAB, CMSG_GUILD_BANK_UPDATE_TAB, CMSG_GUILD_BANK_WITHDRAW_MONEY, CMSG_GUILD_DECLINE, CMSG_GUILD_DEL_RANK, CMSG_GUILD_DISBAND, CMSG_GUILD_INFO_TEXT, CMSG_GUILD_INVITE, CMSG_GUILD_LEADER, CMSG_GUILD_LEAVE, CMSG_GUILD_MOTD, CMSG_GUILD_QUERY, CMSG_GUILD_RANK, CMSG_GUILD_SET_OFFICER_NOTE, CMSG_GUILD_SET_PUBLIC_NOTE, CMSG_HEARTH_AND_RESURRECT, CMSG_INITIATE_TRADE, CMSG_INSPECT, CMSG_ITEM_NAME_QUERY, CMSG_ITEM_QUERY_SINGLE, CMSG_ITEM_REFUND, CMSG_ITEM_REFUND_INFO, CMSG_LEARN_PREVIEW_TALENTS, CMSG_LEARN_PREVIEW_TALENTS_PET, CMSG_LEAVE_BATTLEFIELD, CMSG_LOGOUT_CANCEL, CMSG_LOGOUT_REQUEST, CMSG_LOOT_METHOD, CMSG_MESSAGECHAT, CMSG_MOVE_TIME_SKIPPED, CMSG_NAME_QUERY, CMSG_NPC_TEXT_QUERY, CMSG_OPT_OUT_OF_LOOT, CMSG_PAGE_TEXT_QUERY, CMSG_PET_ABANDON, CMSG_PET_NAME_QUERY, CMSG_PET_RENAME, CMSG_PETITION_BUY, CMSG_PETITION_QUERY, CMSG_PETITION_SIGN, CMSG_PLAYER_LOGIN, CMSG_PLAYER_LOGOUT, CMSG_PLAYER_VEHICLE_ENTER, CMSG_QUERY_INSPECT_ACHIEVEMENTS, CMSG_QUERY_QUESTS_COMPLETED, CMSG_QUERY_TIME, CMSG_QUEST_CONFIRM_ACCEPT, CMSG_QUEST_POI_QUERY, CMSG_QUEST_QUERY, CMSG_QUESTGIVER_ACCEPT_QUEST, CMSG_QUESTGIVER_CANCEL, CMSG_QUESTGIVER_CHOOSE_REWARD, CMSG_QUESTGIVER_COMPLETE_QUEST, CMSG_QUESTGIVER_QUERY_QUEST, CMSG_QUESTGIVER_REQUEST_REWARD, CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, CMSG_QUESTGIVER_STATUS_QUERY, CMSG_QUESTLOG_REMOVE_QUEST, CMSG_READY_FOR_ACCOUNT_DATA_TIMES, CMSG_REALM_SPLIT, CMSG_REMOVE_GLYPH, CMSG_REPOP_REQUEST, CMSG_REPORT_PVP_AFK, CMSG_REQUEST_PARTY_MEMBER_STATS, CMSG_REQUEST_VEHICLE_EXIT, CMSG_REQUEST_VEHICLE_NEXT_SEAT, CMSG_REQUEST_VEHICLE_PREV_SEAT, CMSG_REQUEST_VEHICLE_SWITCH_SEAT, CMSG_RESET_INSTANCES, CMSG_SELF_RES, CMSG_SET_ACTION_BUTTON, CMSG_SET_CONTACT_NOTES, CMSG_SET_GUILD_BANK_TEXT, CMSG_SET_SHEATHED, CMSG_SOCKET_GEMS, CMSG_SPELLCLICK, CMSG_STANDSTATECHANGE, CMSG_TAXINODE_STATUS_QUERY, CMSG_TAXIQUERYAVAILABLENODES, CMSG_TIME_SYNC_RESP, CMSG_TOGGLE_PVP, CMSG_TRAINER_BUY_SPELL, CMSG_TURN_IN_PETITION, CMSG_UNLEARN_SKILL, CMSG_WHO, CMSG_WRAP_ITEM, MAX_QUEST_LOG_SIZE, MSG_CORPSE_QUERY, MSG_GUILD_BANK_LOG_QUERY, MSG_GUILD_EVENT_LOG_QUERY, MSG_MOVE_HEARTBEAT, MSG_MOVE_SET_FACING, MSG_PARTY_ASSIGNMENT, MSG_PETITION_DECLINE, MSG_PETITION_RENAME, MSG_QUERY_GUILD_BANK_TEXT, MSG_QUERY_NEXT_MAIL_TIME, MSG_RAID_READY_CHECK, MSG_RAID_TARGET_UPDATE, MSG_RANDOM_ROLL, MSG_SAVE_GUILD_EMBLEM, MSG_SET_DUNGEON_DIFFICULTY, MSG_SET_RAID_DIFFICULTY, MSG_TALENT_WIPE_CONFIRM, and PLAYER_SLOTS_COUNT.

Referenced by EvaluateOpcode().

◆ operator=()

DosProtection & WorldSession::DosProtection::operator= ( DosProtection const &  right)
privatedelete

Friends And Related Function Documentation

◆ World

friend class World
friend

Member Data Documentation

◆ _PacketThrottlingMap

PacketThrottlingMap WorldSession::DosProtection::_PacketThrottlingMap
mutableprivate

Referenced by EvaluateOpcode().

◆ _policy

Policy WorldSession::DosProtection::_policy
private

Referenced by EvaluateOpcode().

◆ Session

WorldSession* WorldSession::DosProtection::Session
protected

Referenced by EvaluateOpcode().