aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp22
-rw-r--r--src/server/game/Handlers/TicketHandler.cpp20
-rw-r--r--src/server/game/Server/Packets/TicketPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/TicketPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.cpp3
-rw-r--r--src/server/game/Server/WorldSession.h4
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);