aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2020-03-15 19:47:55 +0100
committerShauren <shauren.trinity@gmail.com>2021-12-23 21:09:24 +0100
commitee5c0e5372308f4a6e52b14a14f5ee6a683b58dc (patch)
tree727acb5b082510d2465d69c1f24f3cfb2689dc7c /src/server/game/Server
parent31d91c2d49c76716fb25db049ba0f84943b85093 (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.cpp14
-rw-r--r--src/server/game/Server/WorldSession.h3
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);