#include "socketengine.h"
#include "command_parse.h"
+void InspIRCd::FloodQuitUser(userrec* current)
+{
+ this->Log(DEFAULT,"Excess flood from: %s@%s", current->ident, current->host);
+ this->SNO->WriteToSnoMask('f',"Excess flood from: %s%s%s@%s",
+ current->registered == REG_ALL ? current->nick : "",
+ current->registered == REG_ALL ? "!" : "", current->ident, current->host);
+ current->SetWriteError("Excess flood");
+ if (current->registered != REG_ALL)
+ {
+ XLines->add_zline(120,this->Config->ServerName,"Flood from unregistered connection",current->GetIPString());
+ XLines->apply_lines(APPLY_ZLINES);
+ }
+}
+
void InspIRCd::ProcessUser(userrec* cu)
{
int result = EAGAIN;
current->lines_in++;
- if (current->lines_in > current->flood)
- {
- this->Log(DEFAULT,"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
- this->SNO->WriteToSnoMask('f',"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
- current->SetWriteError("Excess flood");
- return;
- }
+ if (current->flood && current->lines_in > current->flood)
+ FloodQuitUser(current);
else
{
current->WriteServ("NOTICE %s :Your previous line was too long and was not delivered (Over %d chars) Please shorten it.", current->nick, MAXBUF-2);
- current->recvq = "";
+ current->recvq.clear();
}
}
else
- {
- this->WriteOpers("*** Excess flood from %s",current->GetIPString());
- this->SNO->WriteToSnoMask('f',"Excess flood from: %s",current->GetIPString());
- XLines->add_zline(120,this->Config->ServerName,"Flood from unregistered connection",current->GetIPString());
- XLines->apply_lines(APPLY_ZLINES);
- }
+ FloodQuitUser(current);
return;
}
current->lines_in = 0;
}
- if (++current->lines_in > current->flood)
+ if (++current->lines_in > current->flood && current->flood)
{
- this->Log(DEFAULT,"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
- this->SNO->WriteToSnoMask('f',"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
- current->SetWriteError("Excess flood");
+ FloodQuitUser(current);
return;
}
if ((++floodlines > current->flood) && (current->flood != 0))
{
- if (current->registered == REG_ALL)
- {
- this->Log(DEFAULT,"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
- SNO->WriteToSnoMask('f',"Excess flood from: %s!%s@%s",current->nick,current->ident,current->host);
- current->SetWriteError("Excess flood");
- }
- else
- {
- XLines->add_zline(120,this->Config->ServerName,"Flood from unregistered connection",current->GetIPString());
- XLines->apply_lines(APPLY_ZLINES);
- }
-
+ FloodQuitUser(current);
return;
}
}
else if (result == 0)
{
- cu->SetWriteError("Client exited");
+ cu->SetWriteError("Connection closed");
return;
}
}
{
/* Everybody loves boobies. */
time_t time = this->Time(false) - (curr->nping - curr->pingmax);
- std::string boobies = "Ping timeout: " + ConvToStr(time) + " second" + (time > 1 ? "s" : "");
+ char message[MAXBUF];
+ snprintf(message, MAXBUF, "Ping timeout: %ld second%s", time, time > 1 ? "s" : "");
curr->muted = true;
- GlobalCulls.AddItem(curr, boobies);
+ GlobalCulls.AddItem(curr, message);
curr->lastping = 1;
curr->nping = TIME+curr->pingmax;
continue;