diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 22 | ||||
| -rw-r--r-- | src/server/game/Handlers/TicketHandler.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/TicketPackets.cpp | 9 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/TicketPackets.h | 12 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 4 |
7 files changed, 47 insertions, 25 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index d9c81b72702..b01f0c6c147 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -410,28 +410,6 @@ void WorldSession::HandleStandStateChangeOpcode(WorldPackets::Misc::StandStateCh _player->SetStandState(packet.StandState); } -void WorldSession::HandleBugReportOpcode(WorldPacket& recvData) -{ - uint32 suggestion, contentlen, typelen; - std::string content, type; - - recvData >> suggestion >> contentlen; - content = recvData.ReadString(contentlen); - - recvData >> typelen; - type = recvData.ReadString(typelen); - - TC_LOG_DEBUG("network", "%s", type.c_str()); - TC_LOG_DEBUG("network", "%s", content.c_str()); - - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_BUG_REPORT); - - stmt->setString(0, type); - stmt->setString(1, content); - - CharacterDatabase.Execute(stmt); -} - void WorldSession::HandleReclaimCorpse(WorldPackets::Misc::ReclaimCorpse& /*packet*/) { if (_player->IsAlive()) diff --git a/src/server/game/Handlers/TicketHandler.cpp b/src/server/game/Handlers/TicketHandler.cpp index 55bbe96f15c..1ff239035a4 100644 --- a/src/server/game/Handlers/TicketHandler.cpp +++ b/src/server/game/Handlers/TicketHandler.cpp @@ -203,6 +203,9 @@ void WorldSession::HandleGMResponseResolve(WorldPackets::Ticket::GMTicketRespons void WorldSession::HandleSupportTicketSubmitBug(WorldPackets::Ticket::SupportTicketSubmitBug& packet) { + if (!sSupportMgr->GetBugSystemStatus()) + return; + BugTicket* ticket = new BugTicket(GetPlayer()); ticket->SetPosition(packet.Header.MapID, packet.Header.Position); ticket->SetFacing(packet.Header.Facing); @@ -213,6 +216,9 @@ void WorldSession::HandleSupportTicketSubmitBug(WorldPackets::Ticket::SupportTic void WorldSession::HandleSupportTicketSubmitSuggestion(WorldPackets::Ticket::SupportTicketSubmitSuggestion& packet) { + if (!sSupportMgr->GetSuggestionSystemStatus()) + return; + SuggestionTicket* ticket = new SuggestionTicket(GetPlayer()); ticket->SetPosition(packet.Header.MapID, packet.Header.Position); ticket->SetFacing(packet.Header.Facing); @@ -223,6 +229,9 @@ void WorldSession::HandleSupportTicketSubmitSuggestion(WorldPackets::Ticket::Sup void WorldSession::HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::SupportTicketSubmitComplaint& packet) { + if (!sSupportMgr->GetComplaintSystemStatus()) + return; + ComplaintTicket* comp = new ComplaintTicket(GetPlayer()); comp->SetPosition(packet.Header.MapID, packet.Header.Position); comp->SetFacing(packet.Header.Facing); @@ -232,5 +241,16 @@ void WorldSession::HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::Supp comp->SetNote(packet.Note); sSupportMgr->AddTicket(comp); +} + +void WorldSession::HandleBugReportOpcode(WorldPackets::Ticket::BugReport& bugReport) +{ + // Note: There is no way to trigger this with standard UI except /script ReportBug("text") + if (!sSupportMgr->GetBugSystemStatus()) + return; + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_BUG_REPORT); + stmt->setString(0, bugReport.Text); + stmt->setString(1, bugReport.DiagInfo); + CharacterDatabase.Execute(stmt); } diff --git a/src/server/game/Server/Packets/TicketPackets.cpp b/src/server/game/Server/Packets/TicketPackets.cpp index 23814309d4f..9989f6be4a1 100644 --- a/src/server/game/Server/Packets/TicketPackets.cpp +++ b/src/server/game/Server/Packets/TicketPackets.cpp @@ -370,3 +370,12 @@ WorldPacket const* WorldPackets::Ticket::ComplaintResult::Write() return &_worldPacket; } + +void WorldPackets::Ticket::BugReport::Read() +{ + Type = _worldPacket.ReadBit(); + uint32 diagLen = _worldPacket.ReadBits(12); + uint32 textLen = _worldPacket.ReadBits(10); + DiagInfo = _worldPacket.ReadString(diagLen); + Text = _worldPacket.ReadString(textLen); +} diff --git a/src/server/game/Server/Packets/TicketPackets.h b/src/server/game/Server/Packets/TicketPackets.h index e11adf912ed..2cab591b171 100644 --- a/src/server/game/Server/Packets/TicketPackets.h +++ b/src/server/game/Server/Packets/TicketPackets.h @@ -359,6 +359,18 @@ namespace WorldPackets uint32 ComplaintType = 0; uint8 Result = 0; }; + + class BugReport final : public ClientPacket + { + public: + BugReport(WorldPacket&& packet) : ClientPacket(CMSG_BUG_REPORT, std::move(packet)) { } + + void Read() override; + + uint32 Type = 0; + std::string Text; + std::string DiagInfo; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d13cdf267d0..2886b079c93 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -216,7 +216,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_BLACK_MARKET_BID_ON_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_BLACK_MARKET_OPEN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::BlackMarket::BlackMarketOpen, &WorldSession::HandleBlackMarketOpen); DEFINE_HANDLER(CMSG_BLACK_MARKET_REQUEST_ITEMS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); - DEFINE_OPCODE_HANDLER_OLD(CMSG_BUG_REPORT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBugReportOpcode ); + DEFINE_HANDLER(CMSG_BUG_REPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Ticket::BugReport, &WorldSession::HandleBugReportOpcode); DEFINE_HANDLER(CMSG_BUSY_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Trade::BusyTrade, &WorldSession::HandleBusyTradeOpcode); DEFINE_HANDLER(CMSG_BUY_BACK_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::BuyBackItem, &WorldSession::HandleBuybackItem); DEFINE_HANDLER(CMSG_BUY_BANK_SLOT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Bank::BuyBankSlot, &WorldSession::HandleBuyBankSlotOpcode); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index b9f441cbe45..db4ec66ea00 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1365,6 +1365,9 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_GM_TICKET_UPDATE_TEXT: // 0 15 1 async db query case CMSG_GM_TICKET_DELETE_TICKET: // 1 25 1 async db query case CMSG_GM_TICKET_RESPONSE_RESOLVE: // 1 25 1 async db query + case CMSG_SUPPORT_TICKET_SUBMIT_BUG: // not profiled 1 async db query + case CMSG_SUPPORT_TICKET_SUBMIT_SUGGESTION: // not profiled 1 async db query + case CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT: // not profiled 1 async db query case CMSG_CALENDAR_UPDATE_EVENT: // not profiled case CMSG_CALENDAR_REMOVE_EVENT: // not profiled case CMSG_CALENDAR_COPY_EVENT: // not profiled diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index efa9ce6ff81..631f87aeb11 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -456,6 +456,7 @@ namespace WorldPackets class SupportTicketSubmitBug; class SupportTicketSubmitSuggestion; class SupportTicketSubmitComplaint; + class BugReport; } namespace Token @@ -979,6 +980,7 @@ class WorldSession void HandleSupportTicketSubmitBug(WorldPackets::Ticket::SupportTicketSubmitBug& packet); void HandleSupportTicketSubmitSuggestion(WorldPackets::Ticket::SupportTicketSubmitSuggestion& packet); void HandleSupportTicketSubmitComplaint(WorldPackets::Ticket::SupportTicketSubmitComplaint& packet); + void HandleBugReportOpcode(WorldPackets::Ticket::BugReport& bugReport); void HandleTogglePvP(WorldPacket& recvPacket); @@ -996,8 +998,6 @@ class WorldSession void HandleDelIgnoreOpcode(WorldPackets::Social::DelIgnore& packet); void HandleSetContactNotesOpcode(WorldPackets::Social::SetContactNotes& packet); - void HandleBugReportOpcode(WorldPacket& recvPacket); - void HandleAreaTriggerOpcode(WorldPackets::Misc::AreaTrigger& packet); void HandleSetFactionAtWar(WorldPackets::Character::SetFactionAtWar& packet); |
