From c3e52465901f11226616a2a93393c3d07295b45d Mon Sep 17 00:00:00 2001 From: w00t Date: Thu, 8 May 2008 16:54:16 +0000 Subject: Rename to m_connectban git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9664 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_connectban.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++ src/modules/m_quitban.cpp | 96 -------------------------------------------- 2 files changed, 96 insertions(+), 96 deletions(-) create mode 100644 src/modules/m_connectban.cpp delete mode 100644 src/modules/m_quitban.cpp (limited to 'src/modules') diff --git a/src/modules/m_connectban.cpp b/src/modules/m_connectban.cpp new file mode 100644 index 000000000..a1ff0816c --- /dev/null +++ b/src/modules/m_connectban.cpp @@ -0,0 +1,96 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2008 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +#include "inspircd.h" +#include "xline.h" + +/* $ModDesc: Throttles the connections of any users who try connect flood */ + +class ModuleQuitBan : public Module +{ + private: + clonemap connects; + unsigned int threshold; + unsigned int banduration; + public: + ModuleQuitBan(InspIRCd* Me) : Module(Me) + { + Implementation eventlist[] = { I_OnUserConnect, I_OnGarbageCollect, I_OnRehash }; + ServerInstance->Modules->Attach(eventlist, this, 3); + OnRehash(NULL, ""); + } + + virtual ~ModuleQuitBan() + { + } + + virtual Version GetVersion() + { + return Version(1,2,0,0,VF_VENDOR,API_VERSION); + } + + virtual void OnRehash(User* user, const std::string ¶meter) + { + ConfigReader Conf(ServerInstance); + std::string duration; + + threshold = Conf.ReadInteger("connectban", "threshold", 0, true); + + if (threshold == 0) + threshold = 10; + + duration = Conf.ReadValue("connectban", "duration", 0, true); + + if (duration.empty()) + duration = "10m"; + + banduration = ServerInstance->Duration(duration); + } + + virtual void OnUserConnect(User *u) + { + clonemap::iterator i = connects.find(u->GetIPString()); + + if (i != connects.end()) + { + i->second++; + ServerInstance->Logs->Log("m_connectban",DEBUG, "Count for IP is now %d", i->second); + + if (i->second >= threshold) + { + // Create zline for set duration. + ZLine* zl = new ZLine(ServerInstance, ServerInstance->Time(), banduration, ServerInstance->Config->ServerName, "Connect flooding", u->GetIPString()); + if (ServerInstance->XLines->AddLine(zl,NULL)) + ServerInstance->XLines->ApplyLines(); + else + delete zl; + + ServerInstance->SNO->WriteToSnoMask('x', "Connect flooding from IP %s (%d)", u->GetIPString(), threshold); + connects.erase(i); + } + } + else + { + connects[u->GetIPString()] = 1; + ServerInstance->Logs->Log("m_quitban",DEBUG, "Added new record"); + } + } + + virtual void OnGarbageCollect() + { + ServerInstance->Logs->Log("m_quitban",DEBUG, "Clearing map."); + connects.clear(); + } +}; + +MODULE_INIT(ModuleQuitBan) diff --git a/src/modules/m_quitban.cpp b/src/modules/m_quitban.cpp deleted file mode 100644 index a1ff0816c..000000000 --- a/src/modules/m_quitban.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ - * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits - * - * This program is free but copyrighted software; see - * the file COPYING for details. - * - * --------------------------------------------------- - */ - -#include "inspircd.h" -#include "xline.h" - -/* $ModDesc: Throttles the connections of any users who try connect flood */ - -class ModuleQuitBan : public Module -{ - private: - clonemap connects; - unsigned int threshold; - unsigned int banduration; - public: - ModuleQuitBan(InspIRCd* Me) : Module(Me) - { - Implementation eventlist[] = { I_OnUserConnect, I_OnGarbageCollect, I_OnRehash }; - ServerInstance->Modules->Attach(eventlist, this, 3); - OnRehash(NULL, ""); - } - - virtual ~ModuleQuitBan() - { - } - - virtual Version GetVersion() - { - return Version(1,2,0,0,VF_VENDOR,API_VERSION); - } - - virtual void OnRehash(User* user, const std::string ¶meter) - { - ConfigReader Conf(ServerInstance); - std::string duration; - - threshold = Conf.ReadInteger("connectban", "threshold", 0, true); - - if (threshold == 0) - threshold = 10; - - duration = Conf.ReadValue("connectban", "duration", 0, true); - - if (duration.empty()) - duration = "10m"; - - banduration = ServerInstance->Duration(duration); - } - - virtual void OnUserConnect(User *u) - { - clonemap::iterator i = connects.find(u->GetIPString()); - - if (i != connects.end()) - { - i->second++; - ServerInstance->Logs->Log("m_connectban",DEBUG, "Count for IP is now %d", i->second); - - if (i->second >= threshold) - { - // Create zline for set duration. - ZLine* zl = new ZLine(ServerInstance, ServerInstance->Time(), banduration, ServerInstance->Config->ServerName, "Connect flooding", u->GetIPString()); - if (ServerInstance->XLines->AddLine(zl,NULL)) - ServerInstance->XLines->ApplyLines(); - else - delete zl; - - ServerInstance->SNO->WriteToSnoMask('x', "Connect flooding from IP %s (%d)", u->GetIPString(), threshold); - connects.erase(i); - } - } - else - { - connects[u->GetIPString()] = 1; - ServerInstance->Logs->Log("m_quitban",DEBUG, "Added new record"); - } - } - - virtual void OnGarbageCollect() - { - ServerInstance->Logs->Log("m_quitban",DEBUG, "Clearing map."); - connects.clear(); - } -}; - -MODULE_INIT(ModuleQuitBan) -- cgit v1.2.3