void MessageFilter::SetSystemFilterSet(SystemAddress systemAddress, int filterSetID) { // Allocate this filter set if it doesn't exist. RakAssert(systemAddress!=UNASSIGNED_SYSTEM_ADDRESS); bool objectExists; unsigned index = systemList.GetIndexFromKey(systemAddress, &objectExists); if (objectExists==false) { if (filterSetID<0) return; FilteredSystem filteredSystem; filteredSystem.filter = GetFilterSetByID(filterSetID); filteredSystem.systemAddress=systemAddress; filteredSystem.timeEnteredThisSet=RakNet::GetTime(); systemList.Insert(systemAddress, filteredSystem, true); } else { if (filterSetID>=0) { FilterSet *filterSet = GetFilterSetByID(filterSetID); systemList[index].timeEnteredThisSet=RakNet::GetTime(); systemList[index].filter=filterSet; } else { systemList.RemoveAtIndex(index); } } }
void MessageFilter::SetFilterMaxTime(int allowedTimeMS, bool banOnExceed, RakNetTime banTimeMS, int filterSetID) { FilterSet *filterSet = GetFilterSetByID(filterSetID); filterSet->maxMemberTimeMS=allowedTimeMS; filterSet->banOnFilterTimeExceed=banOnExceed; filterSet->timeExceedBanTimeMS=banTimeMS; }
void MessageFilter::SetActionOnDisallowedMessage(bool kickOnDisallowed, bool banOnDisallowed, RakNetTime banTimeMS, int filterSetID) { FilterSet *filterSet = GetFilterSetByID(filterSetID); filterSet->kickOnDisallowedMessage=kickOnDisallowed; filterSet->disallowedMessageBanTimeMS=banTimeMS; filterSet->banOnDisallowedMessage=banOnDisallowed; }
void MessageFilter::SetAllowMessageID(bool allow, int messageIDStart, int messageIDEnd,int filterSetID) { RakAssert(messageIDStart <= messageIDEnd); FilterSet *filterSet = GetFilterSetByID(filterSetID); int i; for (i=messageIDStart; i <= messageIDEnd; ++i) filterSet->allowedIDs[i]=allow; }
void MessageFilter::SetAllowRPC(bool allow, const char *functionName, int filterSetID) { (void) allow; FilterSet *filterSet = GetFilterSetByID(filterSetID); bool objectExists; unsigned index = filterSet->allowedRPCs.GetIndexFromKey((char *const) functionName, &objectExists); if (objectExists == false) { char *str = (char*) rakMalloc_Ex(strlen(functionName) + 1, __FILE__, __LINE__); strcpy(str, functionName); filterSet->allowedRPCs.InsertAtIndex(str, index, __FILE__, __LINE__); } }
void MessageFilter::SetTimeoutCallback(int filterSetID, void *userData, void (*invalidMessageCallback)(RakPeerInterface *peer, SystemAddress systemAddress, int filterSetID, void *userData)) { FilterSet *filterSet = GetFilterSetByID(filterSetID); filterSet->timeoutCallback=invalidMessageCallback; filterSet->timeoutUserData=userData; }
void MessageFilter::SetDisallowedMessageCallback(int filterSetID, void *userData, void (*invalidMessageCallback)(RakPeerInterface *peer, SystemAddress systemAddress, int filterSetID, void *userData, unsigned char messageID)) { FilterSet *filterSet = GetFilterSetByID(filterSetID); filterSet->invalidMessageCallback=invalidMessageCallback; filterSet->disallowedCallbackUserData=userData; }