mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 18:49:03 -04:00
Make the duration of nickflood and joinflood configurable.
This commit is contained in:
parent
d8a41d73a3
commit
d4f84b8e30
@ -1007,8 +1007,11 @@
|
||||
|
||||
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
||||
# Join flood module: Adds support for join flood protection +j X:Y.
|
||||
# Closes the channel for 60 seconds if X users join in Y seconds.
|
||||
# Closes the channel for N seconds if X users join in Y seconds.
|
||||
#<module name="joinflood">
|
||||
#
|
||||
# The number of seconds to close the channel for:
|
||||
#<joinflood duration="1m">
|
||||
|
||||
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
||||
# Jump server module: Adds support for the RPL_REDIR numeric.
|
||||
@ -1215,6 +1218,9 @@
|
||||
# Nickchange flood protection module: Provides channel mode +F X:Y
|
||||
# which allows up to X nick changes in Y seconds.
|
||||
#<module name="nickflood">
|
||||
#
|
||||
# The number of seconds to prevent nick changes for:
|
||||
#<nickflood duration="1m">
|
||||
|
||||
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
|
||||
# Nicklock module: Let opers change a user's nick and then stop that
|
||||
|
@ -23,6 +23,9 @@
|
||||
|
||||
#include "inspircd.h"
|
||||
|
||||
// The number of seconds the channel will be closed for.
|
||||
static unsigned int duration;
|
||||
|
||||
/** Holds settings and state associated with channel mode +j
|
||||
*/
|
||||
class joinfloodsettings
|
||||
@ -71,7 +74,7 @@ class joinfloodsettings
|
||||
|
||||
void lock()
|
||||
{
|
||||
unlocktime = ServerInstance->Time() + 60;
|
||||
unlocktime = ServerInstance->Time() + duration;
|
||||
}
|
||||
|
||||
bool operator==(const joinfloodsettings& other) const
|
||||
@ -129,6 +132,12 @@ class ModuleJoinFlood : public Module
|
||||
{
|
||||
}
|
||||
|
||||
void ReadConfig(ConfigStatus&) CXX11_OVERRIDE
|
||||
{
|
||||
ConfigTag* tag = ServerInstance->Config->ConfValue("joinflood");
|
||||
duration = tag->getDuration("duration", 60, 10, 600);
|
||||
}
|
||||
|
||||
ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) CXX11_OVERRIDE
|
||||
{
|
||||
if (chan)
|
||||
@ -159,7 +168,7 @@ class ModuleJoinFlood : public Module
|
||||
{
|
||||
f->clear();
|
||||
f->lock();
|
||||
memb->chan->WriteNotice(InspIRCd::Format("This channel has been closed to new users for 60 seconds because there have been more than %d joins in %d seconds.", f->joins, f->secs));
|
||||
memb->chan->WriteNotice(InspIRCd::Format("This channel has been closed to new users for %u seconds because there have been more than %d joins in %d seconds.", duration, f->joins, f->secs));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,9 @@
|
||||
|
||||
#include "inspircd.h"
|
||||
|
||||
// The number of seconds nickname changing will be blocked for.
|
||||
static unsigned int duration;
|
||||
|
||||
/** Holds settings and state associated with channel mode +F
|
||||
*/
|
||||
class nickfloodsettings
|
||||
@ -72,7 +75,7 @@ class nickfloodsettings
|
||||
|
||||
void lock()
|
||||
{
|
||||
unlocktime = ServerInstance->Time() + 60;
|
||||
unlocktime = ServerInstance->Time() + duration;
|
||||
}
|
||||
};
|
||||
|
||||
@ -126,6 +129,12 @@ class ModuleNickFlood : public Module
|
||||
{
|
||||
}
|
||||
|
||||
void ReadConfig(ConfigStatus&) CXX11_OVERRIDE
|
||||
{
|
||||
ConfigTag* tag = ServerInstance->Config->ConfValue("nickflood");
|
||||
duration = tag->getDuration("duration", 60, 10, 600);
|
||||
}
|
||||
|
||||
ModResult OnUserPreNick(LocalUser* user, const std::string& newnick) CXX11_OVERRIDE
|
||||
{
|
||||
for (User::ChanList::iterator i = user->chans.begin(); i != user->chans.end(); i++)
|
||||
@ -142,7 +151,7 @@ class ModuleNickFlood : public Module
|
||||
|
||||
if (f->islocked())
|
||||
{
|
||||
user->WriteNumeric(ERR_CANTCHANGENICK, InspIRCd::Format("%s has been locked for nickchanges for 60 seconds because there have been more than %u nick changes in %u seconds", channel->name.c_str(), f->nicks, f->secs));
|
||||
user->WriteNumeric(ERR_CANTCHANGENICK, InspIRCd::Format("%s has been locked for nickchanges for %u seconds because there have been more than %u nick changes in %u seconds", channel->name.c_str(), duration, f->nicks, f->secs));
|
||||
return MOD_RES_DENY;
|
||||
}
|
||||
|
||||
@ -150,7 +159,7 @@ class ModuleNickFlood : public Module
|
||||
{
|
||||
f->clear();
|
||||
f->lock();
|
||||
channel->WriteNotice(InspIRCd::Format("No nick changes are allowed for 60 seconds because there have been more than %u nick changes in %u seconds.", f->nicks, f->secs));
|
||||
channel->WriteNotice(InspIRCd::Format("No nick changes are allowed for %u seconds because there have been more than %u nick changes in %u seconds.", duration, f->nicks, f->secs));
|
||||
return MOD_RES_DENY;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user