]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/configreader.cpp
Use XLineFactory in ADDLINE, so that it can deal with anything the rest of the ircd...
[user/henk/code/inspircd.git] / src / configreader.cpp
index 96f46116239cdd655b0ca875ea9c81d8a02db219..8311ad58eb3f0ba15ddb8b1ae0af9ef976c548d6 100644 (file)
@@ -31,6 +31,7 @@ std::vector<std::string> old_module_names, new_module_names, added_modules, remo
 
 /* Needs forward declaration */
 bool ValidateDnsServer(ServerConfig* conf, const char* tag, const char* value, ValueItem &data);
+bool DoneELine(ServerConfig* conf, const char* tag);
 
 ServerConfig::ServerConfig(InspIRCd* Instance) : ServerInstance(Instance)
 {
@@ -1925,7 +1926,7 @@ bool DoZLine(ServerConfig* conf, const char* tag, char** entries, ValueList &val
        const char* ipmask = values[1].GetString();
 
        ZLine* zl = new ZLine(conf->GetInstance(), conf->GetInstance()->Time(), 0, "<Config>", reason, ipmask);
-       if (!conf->GetInstance()->XLines->AddLine(zl))
+       if (!conf->GetInstance()->XLines->AddLine(zl, NULL))
                delete zl;
 
        return true;
@@ -1937,7 +1938,7 @@ bool DoQLine(ServerConfig* conf, const char* tag, char** entries, ValueList &val
        const char* nick = values[1].GetString();
 
        QLine* ql = new QLine(conf->GetInstance(), conf->GetInstance()->Time(), 0, "<Config>", reason, nick);
-       if (!conf->GetInstance()->XLines->AddLine(ql))
+       if (!conf->GetInstance()->XLines->AddLine(ql, NULL))
                delete ql;
 
        return true;
@@ -1953,7 +1954,7 @@ bool DoKLine(ServerConfig* conf, const char* tag, char** entries, ValueList &val
        IdentHostPair ih = xlm->IdentSplit(host);
 
        KLine* kl = new KLine(conf->GetInstance(), conf->GetInstance()->Time(), 0, "<Config>", reason, ih.first.c_str(), ih.second.c_str());
-       if (!xlm->AddLine(kl))
+       if (!xlm->AddLine(kl, NULL))
                delete kl;
        return true;
 }
@@ -1968,8 +1969,21 @@ bool DoELine(ServerConfig* conf, const char* tag, char** entries, ValueList &val
        IdentHostPair ih = xlm->IdentSplit(host);
 
        ELine* el = new ELine(conf->GetInstance(), conf->GetInstance()->Time(), 0, "<Config>", reason, ih.first.c_str(), ih.second.c_str());
-       if (!xlm->AddLine(el))
+       if (!xlm->AddLine(el, NULL))
                delete el;
        return true;
 }
 
+// this should probably be moved to configreader, but atm it relies on CheckELines above.
+bool DoneELine(ServerConfig* conf, const char* tag)
+{
+       for (std::vector<User*>::const_iterator u2 = conf->GetInstance()->local_users.begin(); u2 != conf->GetInstance()->local_users.end(); u2++)
+       {
+               User* u = (User*)(*u2);
+               u->exempt = false;
+       }
+
+       conf->GetInstance()->XLines->CheckELines(conf->GetInstance()->XLines->lookup_lines['E']);
+       return true;
+}
+