bool classUsers::CheckRecTime(User * curUser) { RecTime * next = RecTimeList; while(next != NULL) { RecTime * cur = next; next = cur->next; // check expires... if(cur->ui64DisConnTick+SettingManager->iShorts[SETSHORT_MIN_RECONN_TIME] <= ui64ActualTick) { #ifdef _WIN32 if(cur->sNick != NULL) { if(HeapFree(hPtokaXHeap, HEAP_NO_SERIALIZE, (void *)cur->sNick) == 0) { AppendDebugLog("%s - [MEM] Cannot deallocate cur->sNick in classUsers::CheckRecTime\n", 0); } } #else free(cur->sNick); #endif if(cur->prev == NULL) { if(cur->next == NULL) { RecTimeList = NULL; } else { cur->next->prev = NULL; RecTimeList = cur->next; } } else if(cur->next == NULL) { cur->prev->next = NULL; } else { cur->prev->next = cur->next; cur->next->prev = cur->prev; } delete cur; continue; } if(cur->ui32NickHash == curUser->ui32NickHash && memcmp(cur->ui128IpHash, curUser->ui128IpHash, 16) == 0 && strcasecmp(cur->sNick, curUser->sNick) == 0) { int imsgLen = sprintf(msg, "<%s> %s %" PRIu64 " %s.|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_PLEASE_WAIT], (cur->ui64DisConnTick+SettingManager->iShorts[SETSHORT_MIN_RECONN_TIME])-ui64ActualTick, LanguageManager->sTexts[LAN_SECONDS_BEFORE_RECONN]); if(CheckSprintf(imsgLen, 1024, "classUsers::CheckRecTime1") == true) { UserSendChar(curUser, msg, imsgLen); } return true; } } return false; }
bool DeFloodCheckForWarn(User * u, const uint8_t &ui8DefloodType, char * sOtherNick) { if(u->iDefloodWarnings < (uint32_t)SettingManager->iShorts[SETSHORT_DEFLOOD_WARNING_COUNT]) { int imsgLen = sprintf(msg, "<%s> %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], DeFloodGetMessage(ui8DefloodType, 0)); if(CheckSprintf(imsgLen, 1024, "DeFloodCheckForWarn1") == true) { UserSendCharDelayed(u, msg, imsgLen); } return false; } else { int imsgLen = 0; if(sOtherNick != NULL) { imsgLen = sprintf(msg, "$To: %s From: %s $", u->sNick, sOtherNick); if(CheckSprintf(imsgLen, 1024, "DeFloodCheckForWarn2") == false) { return true; } } switch(SettingManager->iShorts[SETSHORT_DEFLOOD_WARNING_ACTION]) { case 0: { int iret = sprintf(msg+imsgLen, "<%s> %s: %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_YOU_ARE_BEING_DISCONNECTED_BECAUSE], DeFloodGetMessage(ui8DefloodType, 1)); imsgLen += iret; if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodCheckForWarn3") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_DISCONNECTED]); break; } case 1: { hashBanManager->TempBan(u, DeFloodGetMessage(ui8DefloodType, 1), NULL, 0, 0, false); int iret = sprintf(msg+imsgLen, "<%s> %s: %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_YOU_BEING_KICKED_BCS], DeFloodGetMessage(ui8DefloodType, 1)); if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodCheckForWarn4") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_KICKED]); break; } case 2: { hashBanManager->TempBan(u, DeFloodGetMessage(ui8DefloodType, 1), NULL, SettingManager->iShorts[SETSHORT_DEFLOOD_TEMP_BAN_TIME], 0, false); int iret = sprintf(msg+imsgLen, "<%s> %s: %s %s: %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_YOU_HAD_BEEN_TEMP_BANNED_TO], formatTime(SettingManager->iShorts[SETSHORT_DEFLOOD_TEMP_BAN_TIME]), LanguageManager->sTexts[LAN_BECAUSE_LWR], DeFloodGetMessage(ui8DefloodType, 1)); if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodCheckForWarn5") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_TEMPORARY_BANNED]); break; } case 3: { hashBanManager->Ban(u, DeFloodGetMessage(ui8DefloodType, 1), NULL, false); int iret = sprintf(msg+imsgLen, "<%s> %s: %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_YOU_ARE_BEING_BANNED_BECAUSE], DeFloodGetMessage(ui8DefloodType, 1)); if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodCheckForWarn6") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_BANNED]); break; } } UserClose(u); return true; } }
void DeFloodDoAction(User * u, const uint8_t &ui8DefloodType, const int16_t &ui16Action, uint16_t &ui16Count, char * sOtherNick) { int imsgLen = 0; if(sOtherNick != NULL) { imsgLen = sprintf(msg, "$To: %s From: %s $", u->sNick, sOtherNick); if(CheckSprintf(imsgLen, 1024, "DeFloodDoAction1") == false) { return; } } switch(ui16Action) { case 1: { int iret = sprintf(msg+imsgLen, "<%s> %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], DeFloodGetMessage(ui8DefloodType, 0)); imsgLen += iret; if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodDoAction2") == true) { UserSendCharDelayed(u, msg, imsgLen); } if(ui8DefloodType != DEFLOOD_MAX_DOWN) { ui16Count++; } return; } case 2: u->iDefloodWarnings++; if(DeFloodCheckForWarn(u, ui8DefloodType, sOtherNick) == false && ui8DefloodType != DEFLOOD_MAX_DOWN) { ui16Count++; } return; case 3: { int iret = sprintf(msg+imsgLen, "<%s> %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], DeFloodGetMessage(ui8DefloodType, 0)); imsgLen += iret; if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodDoAction3") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_DISCONNECTED]); UserClose(u); return; } case 4: { hashBanManager->TempBan(u, DeFloodGetMessage(ui8DefloodType, 1), NULL, 0, 0, false); int iret = sprintf(msg+imsgLen, "<%s> %s: %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_YOU_BEING_KICKED_BCS], DeFloodGetMessage(ui8DefloodType, 1)); imsgLen += iret; if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodDoAction4") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_KICKED]); UserClose(u); return; } case 5: { hashBanManager->TempBan(u, DeFloodGetMessage(ui8DefloodType, 1), NULL, SettingManager->iShorts[SETSHORT_DEFLOOD_TEMP_BAN_TIME], 0, false); int iret = sprintf(msg+imsgLen, "<%s> %s: %s %s: %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_YOU_HAD_BEEN_TEMP_BANNED_TO], formatTime(SettingManager->iShorts[SETSHORT_DEFLOOD_TEMP_BAN_TIME]), LanguageManager->sTexts[LAN_BECAUSE_LWR], DeFloodGetMessage(ui8DefloodType, 1)); imsgLen += iret; if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodDoAction5") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_TEMPORARY_BANNED]); UserClose(u); return; } case 6: { hashBanManager->Ban(u, DeFloodGetMessage(ui8DefloodType, 1), NULL, false); int iret = sprintf(msg+imsgLen, "<%s> %s: %s!|", SettingManager->sPreTexts[SetMan::SETPRETXT_HUB_SEC], LanguageManager->sTexts[LAN_YOU_ARE_BEING_BANNED_BECAUSE], DeFloodGetMessage(ui8DefloodType, 1)); imsgLen += iret; if(CheckSprintf1(iret, imsgLen, 1024, "DeFloodDoAction6") == true) { UserSendChar(u, msg, imsgLen); } DeFloodReport(u, ui8DefloodType, LanguageManager->sTexts[LAN_WAS_BANNED]); UserClose(u); return; } } }