diff options
| author | treeston <treeston.mmoc@gmail.com> | 2020-03-15 19:47:55 +0100 |
|---|---|---|
| committer | treeston <treeston.mmoc@gmail.com> | 2020-03-15 19:48:13 +0100 |
| commit | 01b2ac3ed425a3f94480c2b8a453c62ae30f6708 (patch) | |
| tree | 84e54ca2513567b1f5c536213eeb90ae97c3208c /src/server/game/Server | |
| parent | 3c4133a2ff872d6e99d63b3657453b0e6f44455f (diff) | |
Core/Chat: Disallow hyperlinks from being inserted in various guild-related freetext fields (the client already blocks this)
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/WorldSession.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 765efafd344..d38516491e4 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -619,6 +619,20 @@ bool WorldSession::ValidateHyperlinksAndMaybeKick(std::string const& str) return false; } +bool WorldSession::DisallowHyperlinksAndMaybeKick(std::string const& str) +{ + if (str.find('|') == std::string::npos) + return true; + + TC_LOG_ERROR("network", "Player %s (GUID: %u) sent a message which illegally contained a hyperlink:\n%s", GetPlayer()->GetName().c_str(), + GetPlayer()->GetGUID().GetCounter(), str.c_str()); + + if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_KICK)) + KickPlayer(); + + return false; +} + void WorldSession::SendNotification(const char *format, ...) { if (format) diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 9edd5f28893..713d9172bbf 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -369,6 +369,9 @@ class TC_GAME_API WorldSession // Returns true if all contained hyperlinks are valid // May kick player on false depending on world config (handler should abort) bool ValidateHyperlinksAndMaybeKick(std::string const& str); + // Returns true if the message contains no hyperlinks + // May kick player on false depending on world config (handler should abort) + bool DisallowHyperlinksAndMaybeKick(std::string const& str); void QueuePacket(WorldPacket* new_packet); bool Update(uint32 diff, PacketFilter& updater); |
