diff options
| author | treeston <treeston.mmoc@gmail.com> | 2020-03-15 19:47:55 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-12-23 21:09:24 +0100 |
| commit | ee5c0e5372308f4a6e52b14a14f5ee6a683b58dc (patch) | |
| tree | 727acb5b082510d2465d69c1f24f3cfb2689dc7c /src/server/game/Server | |
| parent | 31d91c2d49c76716fb25db049ba0f84943b85093 (diff) | |
Core/Chat: Disallow hyperlinks from being inserted in various guild-related freetext fields (the client already blocks this)
(cherry picked from commit 01b2ac3ed425a3f94480c2b8a453c62ae30f6708)
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 6fac054eea5..3a14cf48785 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -689,6 +689,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 (%s) sent a message which illegally contained a hyperlink:\n%s", GetPlayer()->GetName().c_str(), + GetPlayer()->GetGUID().ToString().c_str(), str.c_str()); + + if (sWorld->getIntConfig(CONFIG_CHAT_STRICT_LINK_CHECKING_KICK)) + KickPlayer(); + + return false; +} + void WorldSession::SendNotification(char const* format, ...) { if (format) diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 3ee0c596980..2e34e817284 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -1023,6 +1023,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); |
