]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_hostchange.cpp
Fix the cloaking module on C++98 compilers.
[user/henk/code/inspircd.git] / src / modules / m_hostchange.cpp
index 201c4b59b3abad3eaa4114ae004cd695d6e77e01..47c831d2970269ef4b0d19d9a6465888ced0aabc 100644 (file)
@@ -1,9 +1,13 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2005-2007 Craig Edwards <craigedwards@brainbox.cc>
+ *   Copyright (C) 2013, 2018-2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012-2014 Attila Molnar <attilamolnar@hush.com>
+ *   Copyright (C) 2012 Robby <robby@chatbelgie.be>
+ *   Copyright (C) 2009 Robin Burchell <robin+git@viroteck.net>
+ *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- *   Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
+ *   Copyright (C) 2005-2007, 2010 Craig Edwards <brain@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
@@ -34,7 +38,7 @@ class HostRule
                // Add the user's nickname to their hostname.
                HCA_ADDNICK,
 
-               // Set the user's hostname to the specific value. 
+               // Set the user's hostname to the specific value.
                HCA_SET
        };
 
@@ -47,7 +51,7 @@ class HostRule
        std::string suffix;
 
  public:
-       HostRule(const std::string& Host, const std::string& Mask, const insp::flat_set<int>& Ports)
+       HostRule(const std::string& Mask, const std::string& Host, const insp::flat_set<int>& Ports)
                : action(HCA_SET)
                , host(Host)
                , mask(Mask)
@@ -76,7 +80,7 @@ class HostRule
 
        bool Matches(LocalUser* user) const
        {
-               if (!ports.empty() && !ports.count(user->GetServerPort()))
+               if (!ports.empty() && !ports.count(user->server_sa.port()))
                        return false;
 
                if (InspIRCd::MatchCIDR(user->MakeHost(), mask))
@@ -136,7 +140,7 @@ private:
 
                        insp::flat_set<int> ports;
                        const std::string portlist = tag->getString("ports");
-                       if (!ports.empty())
+                       if (!portlist.empty())
                        {
                                irc::portparser portrange(portlist, false);
                                while (int port = portrange.GetToken())
@@ -168,11 +172,13 @@ private:
                        }
                        else
                        {
-                               throw ModuleException(action + " is an invalid <hostchange:action> type, at " + tag->getTagLocation()); 
+                               throw ModuleException(action + " is an invalid <hostchange:action> type, at " + tag->getTagLocation());
                        }
                }
 
-               const std::string hmap = ServerInstance->Config->ConfValue("hostname")->getString("charmap", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_/0123456789");
+               ConfigTag* tag = ServerInstance->Config->ConfValue("hostname");
+               const std::string hmap = tag->getString("charmap", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_/0123456789", 1);
+
                hostmap.reset();
                for (std::string::const_iterator iter = hmap.begin(); iter != hmap.end(); ++iter)
                        hostmap.set(static_cast<unsigned char>(*iter));
@@ -181,7 +187,7 @@ private:
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides rule-based masking of user hostnames", VF_VENDOR);
+               return Version("Allows the server administrator to define custom rules for applying hostnames to users.", VF_VENDOR);
        }
 
        void OnUserConnect(LocalUser* user) CXX11_OVERRIDE