Browse Source

Some messages are useful

Bartek Bok 14 years ago committed by Adam Johnson
parent
commit
0c1b6bb096
  1. 10
      Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgScreener.cpp
  2. 27
      Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgScreener.cpp

10
Sources/Plasma/PubUtilLib/plNetClient/plNetClientMsgScreener.cpp

@ -144,13 +144,11 @@ bool plNetClientMsgScreener::AllowIncomingMessage(const plMessage* msg) const
bool plNetClientMsgScreener::IScreenIncoming(const plMessage* msg) const bool plNetClientMsgScreener::IScreenIncoming(const plMessage* msg) const
{ {
// Why would you EVER send a RefMsg accross the network???
if (plFactory::DerivesFrom(CLASS_INDEX_SCOPED(plRefMsg), msg->ClassIndex()))
return false;
// Blacklist some obvious hacks here... // Blacklist some obvious hacks here...
switch (msg->ClassIndex()) switch (msg->ClassIndex())
{ {
case CLASS_INDEX_SCOPED(plAttachMsg):
return true;
case CLASS_INDEX_SCOPED(plAudioSysMsg): case CLASS_INDEX_SCOPED(plAudioSysMsg):
// This message has a flawed read/write // This message has a flawed read/write
return false; return false;
@ -170,4 +168,8 @@ bool plNetClientMsgScreener::IScreenIncoming(const plMessage* msg) const
// might break something that we really shouldn't... // might break something that we really shouldn't...
return true; return true;
} }
// Toss non-attach plRefMsgs
if (plFactory::DerivesFrom(CLASS_INDEX_SCOPED(plRefMsg), msg->ClassIndex()))
return false;
} }

27
Sources/Plasma/PubUtilLib/plNetCommon/plNetMsgScreener.cpp

@ -90,18 +90,6 @@ void plNetMsgScreener::IRejectLogMsg(const plMessage* msg, const char* desc, con
// //
plNetMsgScreener::Answer plNetMsgScreener::IAllowMessageType(int16_t classIndex, const plNetGameMember* gm) const plNetMsgScreener::Answer plNetMsgScreener::IAllowMessageType(int16_t classIndex, const plNetGameMember* gm) const
{ {
// Check based on baseclass
if (plFactory::DerivesFrom(plCCRMessage::Index(), classIndex))
{
ILogCCRMessage(classIndex, gm);
Answer ans=IIsSenderCCR(gm) ? kYes : kNo;
if (ans==kNo)
{
IRejectLogMsg(classIndex, "Not a CCR", gm);
}
return ans;
}
// Check based on exact type // Check based on exact type
switch(classIndex) switch(classIndex)
{ {
@ -129,19 +117,8 @@ plNetMsgScreener::Answer plNetMsgScreener::IAllowMessageType(int16_t classIndex,
case CLASS_INDEX_SCOPED(plLinkToAgeMsg): case CLASS_INDEX_SCOPED(plLinkToAgeMsg):
case CLASS_INDEX_SCOPED(plSubWorldMsg): case CLASS_INDEX_SCOPED(plSubWorldMsg):
return kYes; return kYes;
// definitely yes or no (based on whether sender is a CCR) // conditionally yes, requires further validation of msg contents
case CLASS_INDEX_SCOPED(plWarpMsg):
{
Answer ans=IIsSenderCCR(gm) ? kYes : kNo;
if (ans==kNo)
{
IRejectLogMsg(classIndex, "Not a CCR", gm);
}
return ans;
}
// conditionally yes, requires further validation of msg contents
case CLASS_INDEX_SCOPED(plAnimCmdMsg): case CLASS_INDEX_SCOPED(plAnimCmdMsg):
case CLASS_INDEX_SCOPED(pfKIMsg): case CLASS_INDEX_SCOPED(pfKIMsg):
case CLASS_INDEX_SCOPED(plAvTaskMsg): case CLASS_INDEX_SCOPED(plAvTaskMsg):

Loading…
Cancel
Save