]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_connflood.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_connflood.cpp
index 809055a5ad3a854e4a99c02044ed764a14c37d0b..1f8286e77a8a21cf31a48d8a6b246094fd85cc0a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2013, 2018-2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2013, 2018-2021 Sadie Powell <sadie@witchery.services>
  *   Copyright (C) 2012-2013 Attila Molnar <attilamolnar@hush.com>
  *   Copyright (C) 2012 Robby <robby@chatbelgie.be>
  *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
@@ -27,6 +27,7 @@
 
 class ModuleConnFlood : public Module
 {
+ private:
        unsigned int seconds;
        unsigned int timeout;
        unsigned int boot_wait;
@@ -36,6 +37,16 @@ class ModuleConnFlood : public Module
        time_t first;
        std::string quitmsg;
 
+       static bool IsExempt(LocalUser* user)
+       {
+               // E-lined and already banned users shouldn't be hit.
+               if (user->exempt || user->quitting)
+                       return true;
+
+               // Users in an exempt class shouldn't be hit.
+               return user->GetClass() && !user->GetClass()->config->getBool("useconnflood", true);
+       }
+
 public:
        ModuleConnFlood()
                : conns(0), throttled(false)
@@ -65,7 +76,7 @@ public:
 
        ModResult OnUserRegister(LocalUser* user) CXX11_OVERRIDE
        {
-               if (user->exempt)
+               if (IsExempt(user))
                        return MOD_RES_PASSTHRU;
 
                time_t next = ServerInstance->Time();