void CBanManager::DoPulse ( void ) { time_t tTime = time ( NULL ); if ( tTime > m_tUpdate ) { list < CBan* > ::const_iterator iter = m_BanManager.begin (); while ( iter != m_BanManager.end () ) { if ( (*iter)->GetTimeOfUnban () > 0 ) { if ( tTime >= (*iter)->GetTimeOfUnban () ) { // Trigger the event CLuaArguments Arguments; Arguments.PushUserData ( *iter ); g_pGame->GetMapManager()->GetRootElement()->CallEvent ( "onUnban", Arguments ); RemoveBan ( *iter ); iter = m_BanManager.begin (); continue; } } iter++; } m_tUpdate = tTime + 1; } }
bool BanIPMgr_Impl::RemoveBan( char const* pszBanIP ) { ClientIP bannedIP; if( !ConvertClientIPFromString( pszBanIP, bannedIP )) return false; if( !RemoveBan( bannedIP )) return false; return true; }
void CChannel::SetModes ( const CString& szModes, const std::vector < CString >& vecModeParams ) { unsigned int uiParamIndex = 0; enum { ADD, DEL } eDirection = ADD; CServer& me = CProtocol::GetSingleton ().GetMe (); const char* p = szModes.c_str (); while ( *p != '\0' ) { switch ( *p ) { case '+': { eDirection = ADD; break; } case '-': { eDirection = DEL; break; } default: { unsigned long ulMode = ms_ulChannelModes [ (unsigned char)*p ]; if ( ulMode != 0 ) { if ( ulMode < CMODE_PARAMSMAX ) { if ( eDirection == ADD ) m_ulModes |= ulMode; else m_ulModes &= ~ulMode; if ( ulMode >= CMODE_MAX ) { // El modo lleva parámetros switch ( ulMode ) { case CMODE_KEY: if ( eDirection == ADD ) SetKey ( vecModeParams [ uiParamIndex ] ); else SetKey ( "" ); ++uiParamIndex; break; case CMODE_LIMIT: if ( eDirection == ADD ) { SetLimit ( atoi ( vecModeParams [ uiParamIndex ] ) ); ++uiParamIndex; } else SetLimit ( 0 ); break; } } } else { // Cambiamos flags de usuarios o bans if ( ulMode == CFLAG_BAN ) { if ( eDirection == ADD ) AddBan ( vecModeParams [ uiParamIndex ] ); else RemoveBan ( vecModeParams [ uiParamIndex ] ); ++uiParamIndex; } else { CUser* pUser = me.GetUserAnywhere ( base64toint ( vecModeParams [ uiParamIndex ] ) ); ++uiParamIndex; if ( pUser ) { CMembership* pMembership = GetMembership ( pUser ); if ( pMembership ) { unsigned long ulCurFlags = pMembership->GetFlags (); if ( eDirection == ADD ) pMembership->SetFlags ( ulCurFlags | ulMode ); else pMembership->SetFlags ( ulCurFlags & ~ulMode ); } } } } } } } ++p; } }