Public Member Functions | Protected Member Functions | Protected Attributes

MessageFilter Class Reference
[MessageFilter]

Assigns systems to FilterSets. Each FilterSet limits what kinds of messages are allowed. More...

#include <MessageFilter.h>

Inherits PluginInterface2.

Collaboration diagram for MessageFilter:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 MessageFilter ()
virtual ~MessageFilter ()
void SetAutoAddNewConnectionsToFilter (int filterSetID)
void SetAllowMessageID (bool allow, int messageIDStart, int messageIDEnd, int filterSetID)
void SetAllowRPC (bool allow, const char *functionName, int filterSetID)
void SetActionOnDisallowedMessage (bool kickOnDisallowed, bool banOnDisallowed, RakNetTime banTimeMS, int filterSetID)
void SetDisallowedMessageCallback (int filterSetID, void *userData, void(*invalidMessageCallback)(RakPeerInterface *peer, SystemAddress systemAddress, int filterSetID, void *userData, unsigned char messageID))
void SetTimeoutCallback (int filterSetID, void *userData, void(*invalidMessageCallback)(RakPeerInterface *peer, SystemAddress systemAddress, int filterSetID, void *userData))
void SetFilterMaxTime (int allowedTimeMS, bool banOnExceed, RakNetTime banTimeMS, int filterSetID)
int GetSystemFilterSet (SystemAddress systemAddress)
void SetSystemFilterSet (SystemAddress systemAddress, int filterSetID)
unsigned GetSystemCount (int filterSetID) const
SystemAddress GetSystemByIndex (int filterSetID, unsigned index)
unsigned GetFilterSetCount (void) const
int GetFilterSetIDByIndex (unsigned index)
void DeleteFilterSet (int filterSetID)
virtual void Update (void)
 Update is called every time a packet is checked for .
virtual PluginReceiveResult OnReceive (Packet *packet)
virtual void OnNewConnection (SystemAddress systemAddress, RakNetGUID rakNetGUID, bool isIncoming)
virtual void OnClosedConnection (SystemAddress systemAddress, RakNetGUID rakNetGUID, PI2_LostConnectionReason lostConnectionReason)

Protected Member Functions

void Clear (void)
void DeallocateFilterSet (FilterSet *filterSet)
FilterSetGetFilterSetByID (int filterSetID)
void OnInvalidMessage (FilterSet *filterSet, SystemAddress systemAddress, unsigned char messageID)

Protected Attributes

DataStructures::OrderedList
< int, FilterSet
*, FilterSetComp > 
filterList
DataStructures::OrderedList
< SystemAddress,
FilteredSystem,
FilteredSystemComp > 
systemList
int autoAddNewConnectionsToFilter

Detailed Description

Assigns systems to FilterSets. Each FilterSet limits what kinds of messages are allowed.

The MessageFilter plugin is used for security where you limit what systems can send what kind of messages.
You implicitly define FilterSets, and add allowed message IDs and RPC calls to these FilterSets.
You then add systems to these filters, such that those systems are limited to sending what the filters allows.
You can automatically assign systems to a filter.
You can automatically kick and possibly ban users that stay in a filter too long, or send the wrong message.
Each system is a member of either zero or one filters.
Add this plugin before any plugin you wish to filter (most likely just add this plugin before any other).

Definition at line 72 of file MessageFilter.h.


Constructor & Destructor Documentation

MessageFilter::MessageFilter (  ) 

Definition at line 39 of file MessageFilter.cpp.

MessageFilter::~MessageFilter (  )  [virtual]

Definition at line 43 of file MessageFilter.cpp.

Here is the call graph for this function:


Member Function Documentation

void MessageFilter::Clear ( void   )  [protected]

Definition at line 203 of file MessageFilter.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MessageFilter::DeallocateFilterSet ( FilterSet filterSet  )  [protected]

Definition at line 211 of file MessageFilter.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MessageFilter::DeleteFilterSet ( int  filterSetID  ) 

Delete a FilterSet. All systems formerly subscribed to this filter are now unrestricted.

Parameters:
[in] filterSetID The ID of the filter set to delete.

Definition at line 180 of file MessageFilter.cpp.

Here is the call graph for this function:

FilterSet * MessageFilter::GetFilterSetByID ( int  filterSetID  )  [protected]

Definition at line 218 of file MessageFilter.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

unsigned MessageFilter::GetFilterSetCount ( void   )  const

Returns the total number of filter sets.

Returns:
The total number of filter sets.

Definition at line 172 of file MessageFilter.cpp.

Here is the call graph for this function:

int MessageFilter::GetFilterSetIDByIndex ( unsigned  index  ) 

Returns the ID of a filter set, by index

Parameters:
[in] An index between 0 and GetFilterSetCount()-1 inclusive

Definition at line 176 of file MessageFilter.cpp.

SystemAddress MessageFilter::GetSystemByIndex ( int  filterSetID,
unsigned  index 
)

Returns a system subscribed to a particular filter set,by index. index should be between 0 and the GetSystemCount(filterSetID)-1;

Parameters:
[in] filterSetID The filter set to limit to. Use -1 for none (just indexes all the filtered systems in that case).
[in] index A number between 0 and GetSystemCount(filterSetID)-1;

Definition at line 152 of file MessageFilter.cpp.

Here is the call graph for this function:

unsigned MessageFilter::GetSystemCount ( int  filterSetID  )  const

Returns the number of systems subscribed to a particular filter set Using anything other than -1 for filterSetID is slow, so you should store the returned value.

Parameters:
[in] filterSetID The filter set to limit to. Use -1 for none (just returns the total number of filter systems in that case).

Definition at line 138 of file MessageFilter.cpp.

Here is the call graph for this function:

int MessageFilter::GetSystemFilterSet ( SystemAddress  systemAddress  ) 

Get the filterSetID a system is using. Returns -1 for none.

Parameters:
[in] systemAddress The system we are referring to

Definition at line 98 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::OnClosedConnection ( SystemAddress  systemAddress,
RakNetGUID  rakNetGUID,
PI2_LostConnectionReason  lostConnectionReason 
) [virtual]

Called when a connection is dropped because the user called RakPeer::CloseConnection() for a particular system

Parameters:
[in] systemAddress The system whose connection was closed
[in] rakNetGuid The guid of the specified system
[in] lostConnectionReason How the connection was closed: manually, connection lost, or notification of disconnection

Reimplemented from PluginInterface2.

Definition at line 295 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::OnInvalidMessage ( FilterSet filterSet,
SystemAddress  systemAddress,
unsigned char  messageID 
) [protected]

Definition at line 244 of file MessageFilter.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MessageFilter::OnNewConnection ( SystemAddress  systemAddress,
RakNetGUID  rakNetGUID,
bool  isIncoming 
) [virtual]

Called when we got a new connection

Parameters:
[in] systemAddress Address of the new connection
[in] rakNetGuid The guid of the specified system
[in] isIncoming If true, this is ID_NEW_INCOMING_CONNECTION, or the equivalent

Reimplemented from PluginInterface2.

Definition at line 285 of file MessageFilter.cpp.

Here is the call graph for this function:

PluginReceiveResult MessageFilter::OnReceive ( Packet packet  )  [virtual]

OnReceive is called for every packet.

Parameters:
[in] packet the packet that is being returned to the user
Returns:
True to allow the game and other plugins to get this message, false to absorb it

Reimplemented from PluginInterface2.

Definition at line 303 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::SetActionOnDisallowedMessage ( bool  kickOnDisallowed,
bool  banOnDisallowed,
RakNetTime  banTimeMS,
int  filterSetID 
)

What action to take on a disallowed message. You can kick or not. You can add them to the ban list for some time By default no action is taken. The message is simply ignored. param[in] 0 for permanent ban, >0 for ban time in milliseconds.

Parameters:
[in] kickOnDisallowed kick the system that sent a disallowed message.
[in] banOnDisallowed ban the system that sent a disallowed message. See banTimeMS for the ban duration
[in] banTimeMS Passed to the milliseconds parameter of RakPeer::AddToBanList.
[in] filterSetID A user defined ID to represent a filter set. If no filter with this ID exists, one will be created with default settings.

Definition at line 72 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::SetAllowMessageID ( bool  allow,
int  messageIDStart,
int  messageIDEnd,
int  filterSetID 
)

Allow a range of message IDs Always allowed by default: ID_CONNECTION_REQUEST_ACCEPTED through ID_DOWNLOAD_PROGRESS Usually you specify a range to make it easier to add new enumerations without having to constantly refer back to this function.

Parameters:
[in] allow True to allow this message ID, false to disallow. By default, all messageIDs except the noted types are disallowed. This includes messages from other plugins!
[in] messageIDStart The first ID_* message to allow in the range. Inclusive.
[in] messageIDEnd The last ID_* message to allow in the range. Inclusive.
[in] filterSetID A user defined ID to represent a filter set. If no filter with this ID exists, one will be created with default settings.

Definition at line 51 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::SetAllowRPC ( bool  allow,
const char *  functionName,
int  filterSetID 
)

Allow an RPC function, by name

Parameters:
[in] allow True to allow an RPC call with this function name, false to disallow. All RPCs are disabled by default.
[in] functionName the function name of the RPC call. Must match the function name exactly, including case.
[in] filterSetID A user defined ID to represent a filter set. If no filter with this ID exists, one will be created with default settings.

Definition at line 59 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::SetAutoAddNewConnectionsToFilter ( int  filterSetID  ) 

Automatically add all new systems to a particular filter Defaults to -1

Parameters:
[in] filterSetID Which filter to add new systems to. <0 for do not add.

Definition at line 47 of file MessageFilter.cpp.

void MessageFilter::SetDisallowedMessageCallback ( int  filterSetID,
void *  userData,
void(*)(RakPeerInterface *peer, SystemAddress systemAddress, int filterSetID, void *userData, unsigned char messageID)  invalidMessageCallback 
)

Set a user callback to be called on an invalid message for a particular filterSet

Parameters:
[in] filterSetID A user defined ID to represent a filter set. If no filter with this ID exists, one will be created with default settings.
[in] userData A pointer passed with the callback
[in] invalidMessageCallback A pointer to a C function to be called back with the specified parameters.

Definition at line 79 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::SetFilterMaxTime ( int  allowedTimeMS,
bool  banOnExceed,
RakNetTime  banTimeMS,
int  filterSetID 
)

Limit how long a connection can stay in a particular filterSetID. After this time, the connection is kicked and possibly banned. By default there is no limit to how long a connection can stay in a particular filter set.

Parameters:
[in] allowedTimeMS How many milliseconds to allow a connection to stay in this filter set.
[in] banOnExceed True or false to ban the system, or not, when allowedTimeMS is exceeded
[in] banTimeMS Passed to the milliseconds parameter of RakPeer::AddToBanList.
[in] filterSetID A user defined ID to represent a filter set. If no filter with this ID exists, one will be created with default settings.

Definition at line 91 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::SetSystemFilterSet ( SystemAddress  systemAddress,
int  filterSetID 
)

Assign a system to a filter set. Systems are automatically added to filter sets (or not) based on SetAutoAddNewConnectionsToFilter() This function is used to change the filter set a system is using, to add it to a new filter set, or to remove it from all existin filter sets.

Parameters:
[in] systemAddress The system we are referring to
[in] filterSetID A user defined ID to represent a filter set. If no filter with this ID exists, one will be created with default settings. If -1, the system will be removed from all filter sets.

Definition at line 107 of file MessageFilter.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void MessageFilter::SetTimeoutCallback ( int  filterSetID,
void *  userData,
void(*)(RakPeerInterface *peer, SystemAddress systemAddress, int filterSetID, void *userData)  invalidMessageCallback 
)

Set a user callback to be called when a user is disconnected due to SetFilterMaxTime

Parameters:
[in] filterSetID A user defined ID to represent a filter set. If no filter with this ID exists, one will be created with default settings.
[in] userData A pointer passed with the callback
[in] invalidMessageCallback A pointer to a C function to be called back with the specified parameters.

Definition at line 85 of file MessageFilter.cpp.

Here is the call graph for this function:

void MessageFilter::Update ( void   )  [virtual]

Update is called every time a packet is checked for .

Reimplemented from PluginInterface2.

Definition at line 257 of file MessageFilter.cpp.

Here is the call graph for this function:


Member Data Documentation

Definition at line 183 of file MessageFilter.h.

Definition at line 180 of file MessageFilter.h.

Definition at line 181 of file MessageFilter.h.


The documentation for this class was generated from the following files: