* ---------------------------------------------------
*/
+/* $Core: libIRCDuserprocess */
+
#include "inspircd.h"
#include "wildcard.h"
#include "xline.h"
current->registered == REG_ALL ? current->nick : "",
current->registered == REG_ALL ? "!" : "", current->ident, current->host);
User::QuitUser(Server, current, "Excess flood");
+
if (current->registered != REG_ALL)
{
- Server->XLines->add_zline(120, Server->Config->ServerName, "Flood from unregistered connection", current->GetIPString());
- Server->XLines->apply_lines(APPLY_ZLINES);
+ ZLine* zl = new ZLine(Server, Server->Time(), 0, Server->Config->ServerName, "Flood from unregistered connection", current->GetIPString());
+ if (Server->XLines->AddLine(zl,NULL))
+ Server->XLines->ApplyLines();
+ else
+ delete zl;
}
}
// AddBuffer returned false, theres too much data in the user's buffer and theyre up to no good.
if (current->registered == REG_ALL)
{
- // Make sure they arn't flooding long lines.
- if (Server->Time() > current->reset_due)
- {
- current->reset_due = Server->Time() + current->threshold;
- current->lines_in = 0;
- }
-
- current->lines_in++;
-
- if (current->flood && current->lines_in > current->flood)
- Server->FloodQuitUser(current);
- else
+ if (current->MyClass)
{
- 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.clear();
+ // Make sure they arn't flooding long lines.
+ if (Server->Time() > current->reset_due)
+ {
+ current->reset_due = Server->Time() + current->MyClass->GetThreshold();
+ current->lines_in = 0;
+ }
+
+ current->lines_in++;
+
+ if (current->MyClass->GetFlood() && current->lines_in > current->MyClass->GetFlood())
+ Server->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.clear();
+ }
}
}
else
// This user didn't answer the last ping, remove them
if (!curr->lastping)
{
- time_t time = this->Time(false) - (curr->nping - curr->pingmax);
+ time_t time = this->Time(false) - (curr->nping - curr->MyClass->GetPingTime());
char message[MAXBUF];
snprintf(message, MAXBUF, "Ping timeout: %ld second%s", (long)time, time > 1 ? "s" : "");
curr->muted = true;
curr->lastping = 1;
- curr->nping = TIME+curr->pingmax;
+ curr->nping = TIME + curr->MyClass->GetPingTime();
User::QuitUser(this, curr, message);
continue;
}
curr->Write("PING :%s",this->Config->ServerName);
curr->lastping = 0;
- curr->nping = TIME+curr->pingmax;
+ curr->nping = TIME +curr->MyClass->GetPingTime();
}
}
}