]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_connectban.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_connectban.cpp
index dd9ae4f5450158180cdc98aca7467b1f9dcd3133..aa94adc2e9f66a6407985fd7d2b2705949d55695 100644 (file)
@@ -1,6 +1,13 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2019 Matt Schatz <genius3000@g3k.solutions>
+ *   Copyright (C) 2014 Googolplexed <googol@googolplexed.net>
+ *   Copyright (C) 2013, 2017-2021 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012-2014 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
+ *   Copyright (C) 2008, 2010 Craig Edwards <brain@inspircd.org>
  *   Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
@@ -54,15 +61,31 @@ class ModuleConnectBan
                return 0;
        }
 
+       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("useconnectban", true);
+       }
+
  public:
        ModuleConnectBan()
                : WebIRC::EventListener(this)
        {
        }
 
+       void Prioritize() CXX11_OVERRIDE
+       {
+               Module* corexline = ServerInstance->Modules->Find("core_xline");
+               ServerInstance->Modules->SetPriority(this, I_OnSetUserIP, PRIORITY_AFTER, corexline);
+       }
+
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Throttles the connections of IP ranges who try to connect flood", VF_VENDOR);
+               return Version("Z-lines IP addresses which make excessive connections to the server.", VF_VENDOR);
        }
 
        void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
@@ -78,7 +101,7 @@ class ModuleConnectBan
 
        void OnWebIRCAuth(LocalUser* user, const WebIRC::FlagMap* flags) CXX11_OVERRIDE
        {
-               if (user->exempt)
+               if (IsExempt(user))
                        return;
 
                // HACK: Lower the connection attempts for the gateway IP address. The user
@@ -92,7 +115,7 @@ class ModuleConnectBan
 
        void OnSetUserIP(LocalUser* u) CXX11_OVERRIDE
        {
-               if (u->exempt)
+               if (IsExempt(u))
                        return;
 
                irc::sockets::cidr_mask mask(u->client_sa, GetRange(u));