diff options
author | Attila Molnar <attilamolnar@hush.com> | 2016-02-12 18:30:01 +0100 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2016-02-12 18:30:01 +0100 |
commit | 748b3a0d89e7ecc9a766471b79fb78f63a5ca2bb (patch) | |
tree | ef50b5b36a75faa7fa655345625886972c696398 /src/modules/m_dccallow.cpp | |
parent | bbd8815115acc7e463daa0f7bcd156cb3e51e6d5 (diff) |
m_dccallow Add config option to control max entries on a list
Default to 20
Diffstat (limited to 'src/modules/m_dccallow.cpp')
-rw-r--r-- | src/modules/m_dccallow.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp index 829c1d337..043486283 100644 --- a/src/modules/m_dccallow.cpp +++ b/src/modules/m_dccallow.cpp @@ -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) |