mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-09 18:49:03 -04:00
m_dccallow Add config option to control max entries on a list
Default to 20
This commit is contained in:
parent
bbd8815115
commit
748b3a0d89
@ -671,6 +671,7 @@
|
||||
# length - Default duration of entries in DCCALLOW list.
|
||||
# action - Default action to take if no action is
|
||||
# specified, can be 'block' or 'allow'.
|
||||
# maxentries - Max number of nicks to allow on a DCCALLOW list.
|
||||
#
|
||||
# File configuration:
|
||||
# pattern - The glob pattern to match against.
|
||||
@ -678,7 +679,7 @@
|
||||
# that matches this pattern, can be 'block' or
|
||||
# 'allow'.
|
||||
#
|
||||
#<dccallow blockchat="yes" length="5m" action="block">
|
||||
#<dccallow blockchat="yes" length="5m" action="block" maxentries="20">
|
||||
#<banfile pattern="*.exe" action="block">
|
||||
#<banfile pattern="*.txt" action="allow">
|
||||
|
||||
|
@ -58,6 +58,7 @@ SimpleExtItem<dccallowlist>* ext;
|
||||
class CommandDccallow : public Command
|
||||
{
|
||||
public:
|
||||
unsigned int maxentries;
|
||||
CommandDccallow(Module* parent) : Command(parent, "DCCALLOW", 0)
|
||||
{
|
||||
syntax = "[(+|-)<nick> [<time>]]|[LIST|HELP]";
|
||||
@ -140,6 +141,12 @@ class CommandDccallow : public Command
|
||||
ul.push_back(user);
|
||||
}
|
||||
|
||||
if (dl->size() >= maxentries)
|
||||
{
|
||||
user->WriteNumeric(996, "%s %s :Too many nicks on DCCALLOW list", user->nick.c_str(), user->nick.c_str());
|
||||
return CMD_FAILURE;
|
||||
}
|
||||
|
||||
for (dccallowlist::const_iterator k = dl->begin(); k != dl->end(); ++k)
|
||||
{
|
||||
if (k->nickname == target->nick)
|
||||
@ -264,7 +271,7 @@ class ModuleDCCAllow : public Module
|
||||
ext = new SimpleExtItem<dccallowlist>("dccallow", this);
|
||||
ServerInstance->Modules->AddService(*ext);
|
||||
ServerInstance->Modules->AddService(cmd);
|
||||
ReadFileConf();
|
||||
OnRehash(NULL);
|
||||
Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnUserQuit, I_OnUserPostNick, I_OnRehash };
|
||||
ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
|
||||
}
|
||||
@ -272,6 +279,8 @@ class ModuleDCCAllow : public Module
|
||||
virtual void OnRehash(User* user)
|
||||
{
|
||||
ReadFileConf();
|
||||
ConfigTag* tag = ServerInstance->Config->ConfValue("dccallow");
|
||||
cmd.maxentries = tag->getInt("maxentries", 20);
|
||||
}
|
||||
|
||||
virtual void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message)
|
||||
|
Loading…
x
Reference in New Issue
Block a user