]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/users.cpp
Automatically prune the history lists in chanhistory.
[user/henk/code/inspircd.git] / src / users.cpp
index de9271c879b112ccef1eb76a5803e40a60ef09be..8ea0de6bc61d5e04698e3b6527a3c53f1c4c7950 100644 (file)
@@ -469,7 +469,6 @@ void OperInfo::init()
        }
 
        // Compatibility for older configs that don't have the snomasks field.
-       // TODO: remove this before v4 is released.
        if (defaultsnomasks)
                AllowedSnomasks.set();
 }
@@ -1160,9 +1159,16 @@ void LocalUser::SetClass(const std::string &explicit_name)
                                continue;
                        }
 
-                       /* check if host matches.. */
-                       if (!InspIRCd::MatchCIDR(this->GetIPString(), c->GetHost(), NULL) &&
-                               !InspIRCd::MatchCIDR(this->GetRealHost(), c->GetHost(), NULL))
+                       bool hostmatches = false;
+                       for (std::vector<std::string>::const_iterator host = c->GetHosts().begin(); host != c->GetHosts().end(); ++host)
+                       {
+                               if (InspIRCd::MatchCIDR(this->GetIPString(), *host) || InspIRCd::MatchCIDR(this->GetRealHost(), *host))
+                               {
+                                       hostmatches = true;
+                                       break;
+                               }
+                       }
+                       if (!hostmatches)
                        {
                                ServerInstance->Logs->Log("CONNECTCLASS", LOG_DEBUG, "The %s connect class is not suitable as neither the host (%s) nor the IP (%s) matches %s",
                                        c->GetName().c_str(), this->GetRealHost().c_str(), this->GetIPString().c_str(), c->GetHost().c_str());
@@ -1267,6 +1273,9 @@ ConnectClass::ConnectClass(ConfigTag* tag, char t, const std::string& mask)
        , limit(0)
        , resolvehostnames(true)
 {
+       irc::spacesepstream hoststream(host);
+       for (std::string hostentry; hoststream.GetToken(hostentry); )
+               hosts.push_back(hostentry);
 }
 
 ConnectClass::ConnectClass(ConfigTag* tag, char t, const std::string& mask, const ConnectClass& parent)
@@ -1310,6 +1319,7 @@ void ConnectClass::Update(const ConnectClass* src)
        name = src->name;
        registration_timeout = src->registration_timeout;
        host = src->host;
+       hosts = src->hosts;
        pingtime = src->pingtime;
        softsendqmax = src->softsendqmax;
        hardsendqmax = src->hardsendqmax;