Beispiel #1
0
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;
    }
}
Beispiel #2
0
bool BanIPMgr_Impl::RemoveBan( char const* pszBanIP )
{
	ClientIP bannedIP;
	if( !ConvertClientIPFromString( pszBanIP, bannedIP ))
		return false;

	if( !RemoveBan( bannedIP ))
		return false;

	return true;
}
Beispiel #3
0
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;
    }
}