]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix up to pass User*
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 31 Oct 2007 19:51:03 +0000 (19:51 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Wed, 31 Oct 2007 19:51:03 +0000 (19:51 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8442 e03df62e-2008-0410-955e-edbf42e46eb7

include/xline.h
src/commands/cmd_eline.cpp
src/commands/cmd_gline.cpp
src/commands/cmd_kline.cpp
src/commands/cmd_qline.cpp
src/commands/cmd_zline.cpp
src/configreader.cpp
src/userprocess.cpp
src/xline.cpp

index ff33da7d257c30813a55786310169b04456d3e5d..27e10eefe9db20a5f900e9d41862603c72180183 100644 (file)
@@ -426,21 +426,20 @@ class CoreExport XLineManager
        void CheckELines(std::map<std::string, XLine *> &ELines);
 
        /** Add a new GLine
-        * @param duration The duration of the line
-        * @param source The source of the line
-        * @param reason The reason for the line
-        * @param hostmask The hostmask
+        * @param line The line to be added
+        * @param user The user adding the line or NULL for the local server
         * @return True if the line was added successfully
         */
-       bool AddLine(XLine* line);
+       bool AddLine(XLine* line, User* user);
 
        /** Delete a GLine
-        * @param hostmask The host to remove
-        * @param type Type of line to remove
+        * @param hostmask The xline-specific string identifying the line, e.g. "*@foo"
+        * @param type The type of xline
+        * @param user The user removing the line or NULL if its the local server
         * @param simulate If this is true, don't actually remove the line, just return
         * @return True if the line was deleted successfully
         */
-       bool DelLine(const char* hostmask, char type, bool simulate = false);
+       bool DelLine(const char* hostmask, char type, User* user, bool simulate = false);
 
        /** Registers an xline factory.
         * An xline factory is a class which when given a particular xline type,
index b32c2af91df6caf0fe77e3063e1d7bda9f2b23b2..cd0627178be4e2995c9c514041a3f5f3d258d98e 100644 (file)
@@ -39,10 +39,8 @@ CmdResult CommandEline::Handle (const char** parameters, int pcnt, User *user)
                long duration = ServerInstance->Duration(parameters[1]);
 
                ELine* el = new ELine(ServerInstance, ServerInstance->Time(), duration, user->nick, parameters[2], ih.first.c_str(), ih.second.c_str());
-               if (ServerInstance->XLines->AddLine(el))
+               if (ServerInstance->XLines->AddLine(el, user))
                {
-                       FOREACH_MOD(I_OnAddELine,OnAddELine(duration, user, parameters[2], parameters[0]));
-
                        if (!duration)
                        {
                                ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent E-line for %s.",user->nick,parameters[0]);
@@ -62,9 +60,8 @@ CmdResult CommandEline::Handle (const char** parameters, int pcnt, User *user)
        }
        else
        {
-               if (ServerInstance->XLines->DelLine(parameters[0], 'E'))
+               if (ServerInstance->XLines->DelLine(parameters[0], 'E', user))
                {
-                       FOREACH_MOD(I_OnDelELine,OnDelELine(user, parameters[0]));
                        ServerInstance->SNO->WriteToSnoMask('x',"%s Removed E-line on %s.",user->nick,parameters[0]);
                }
                else
index 4dde5298c5672976a88bc87039ca4d8f5d52ac7a..abe29d18e04b1c85016a13e861960147a6e191b6 100644 (file)
@@ -43,10 +43,8 @@ CmdResult CommandGline::Handle (const char** parameters, int pcnt, User *user)
 
                long duration = ServerInstance->Duration(parameters[1]);
                GLine* gl = new GLine(ServerInstance, ServerInstance->Time(), duration, user->nick, parameters[2], ih.first.c_str(), ih.second.c_str());
-               if (ServerInstance->XLines->AddLine(gl))
+               if (ServerInstance->XLines->AddLine(gl, user))
                {
-                       FOREACH_MOD(I_OnAddGLine,OnAddGLine(duration, user, parameters[2], parameters[0]));
-
                        if (!duration)
                        {
                                ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent G-line for %s.",user->nick,parameters[0]);
@@ -69,9 +67,8 @@ CmdResult CommandGline::Handle (const char** parameters, int pcnt, User *user)
        }
        else
        {
-               if (ServerInstance->XLines->DelLine(parameters[0],'G'))
+               if (ServerInstance->XLines->DelLine(parameters[0],'G',user))
                {
-                       FOREACH_MOD(I_OnDelGLine,OnDelGLine(user, parameters[0]));
                        ServerInstance->SNO->WriteToSnoMask('x',"%s Removed G-line on %s.",user->nick,parameters[0]);
                }
                else
index e1560471135f8b3af416af8913e2c85dcefe685c..de225b0f035384ef26f5c94303461749c9425a2f 100644 (file)
@@ -43,10 +43,8 @@ CmdResult CommandKline::Handle (const char** parameters, int pcnt, User *user)
 
                long duration = ServerInstance->Duration(parameters[1]);
                KLine* kl = new KLine(ServerInstance, ServerInstance->Time(), duration, user->nick, parameters[2], ih.first.c_str(), ih.second.c_str());
-               if (ServerInstance->XLines->AddLine(kl))
+               if (ServerInstance->XLines->AddLine(kl,user))
                {
-                       FOREACH_MOD(I_OnAddKLine,OnAddKLine(duration, user, parameters[2], parameters[0]));
-       
                        if (!duration)
                        {
                                ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent K-line for %s.",user->nick,parameters[0]);
@@ -68,9 +66,8 @@ CmdResult CommandKline::Handle (const char** parameters, int pcnt, User *user)
        }
        else
        {
-               if (ServerInstance->XLines->DelLine(parameters[0],'K'))
+               if (ServerInstance->XLines->DelLine(parameters[0],'K',user))
                {
-                       FOREACH_MOD(I_OnDelKLine,OnDelKLine(user, parameters[0]));
                        ServerInstance->SNO->WriteToSnoMask('x',"%s Removed K-line on %s.",user->nick,parameters[0]);
                }
                else
index 7ccfe60312fece30f7c4bef5f394458ffab8f78a..2922c09cfce250cc6ca066c7c2644975ec056f94 100644 (file)
@@ -37,9 +37,8 @@ CmdResult CommandQline::Handle (const char** parameters, int pcnt, User *user)
 
                long duration = ServerInstance->Duration(parameters[1]);
                QLine* ql = new QLine(ServerInstance, ServerInstance->Time(), duration, user->nick, parameters[2], parameters[0]);
-               if (ServerInstance->XLines->AddLine(ql))
+               if (ServerInstance->XLines->AddLine(ql,user))
                {
-                       FOREACH_MOD(I_OnAddQLine,OnAddQLine(duration, user, parameters[2], parameters[0]));
                        if (!duration)
                        {
                                ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent Q-line for %s.",user->nick,parameters[0]);
@@ -60,9 +59,8 @@ CmdResult CommandQline::Handle (const char** parameters, int pcnt, User *user)
        }
        else
        {
-               if (ServerInstance->XLines->DelLine(parameters[0],'Q'))
+               if (ServerInstance->XLines->DelLine(parameters[0],'Q',user))
                {
-                       FOREACH_MOD(I_OnDelQLine,OnDelQLine(user, parameters[0]));
                        ServerInstance->SNO->WriteToSnoMask('x',"%s Removed Q-line on %s.",user->nick,parameters[0]);
                }
                else
index 9c1b3dfd07fbca6a7db0bf8fba67c84b99144e42..e701867fb7c56c7dbad4244c8f984cf4641944ee 100644 (file)
@@ -45,9 +45,8 @@ CmdResult CommandZline::Handle (const char** parameters, int pcnt, User *user)
                        ipaddr++;
                }
                ZLine* zl = new ZLine(ServerInstance, ServerInstance->Time(), duration, user->nick, parameters[2], ipaddr);
-               if (ServerInstance->XLines->AddLine(zl))
+               if (ServerInstance->XLines->AddLine(zl,user))
                {
-                       FOREACH_MOD(I_OnAddZLine,OnAddZLine(duration, user, parameters[2], parameters[0]));
                        if (!duration)
                        {
                                ServerInstance->SNO->WriteToSnoMask('x',"%s added permanent Z-line for %s.",user->nick,parameters[0]);
@@ -68,9 +67,8 @@ CmdResult CommandZline::Handle (const char** parameters, int pcnt, User *user)
        }
        else
        {
-               if (ServerInstance->XLines->DelLine(parameters[0],'Z'))
+               if (ServerInstance->XLines->DelLine(parameters[0],'Z',user))
                {
-                       FOREACH_MOD(I_OnDelZLine,OnDelZLine(user, parameters[0]));
                        ServerInstance->SNO->WriteToSnoMask('x',"%s Removed Z-line on %s.",user->nick,parameters[0]);
                }
                else
index 4c41cf2474e052afcce3427cc7ccfaf1a73968c3..8311ad58eb3f0ba15ddb8b1ae0af9ef976c548d6 100644 (file)
@@ -1926,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;
@@ -1938,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;
@@ -1954,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;
 }
@@ -1969,7 +1969,7 @@ 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;
 }
index 39d3ad0ecc30147ed7574597033c0db330eeb9ef..fd9d3f074964e5ca3a394b917aa6f48678165dbf 100644 (file)
@@ -30,7 +30,7 @@ void FloodQuitUserHandler::Call(User* current)
        if (current->registered != REG_ALL)
        {
                ZLine* zl = new ZLine(Server, Server->Time(), 0, Server->Config->ServerName, "Flood from unregistered connection", current->GetIPString());
-               if (Server->XLines->AddLine(zl))
+               if (Server->XLines->AddLine(zl,NULL))
                        Server->XLines->ApplyLines();
                else
                        delete zl;
index 1f2782c4d9f53ce9b55279e78d15e26ca1e95959..9d0b12fa31b13241fbe7da74bb10b309ca7610c1 100644 (file)
@@ -126,20 +126,23 @@ IdentHostPair XLineManager::IdentSplit(const std::string &ident_and_host)
 // adds a g:line
 
 /*bool XLineManager::AddELine(long duration, const char* source, const char* reason, const char* hostmask)*/
-bool XLineManager::AddLine(XLine* line)
+bool XLineManager::AddLine(XLine* line, User* user)
 {
        /*IdentHostPair ih = IdentSplit(hostmask);*/
 
-       if (DelLine(line->Displayable(), line->type, true))
+       if (DelLine(line->Displayable(), line->type, user, true))
                return false;
 
        /*ELine* item = new ELine(ServerInstance, ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());*/
 
        active_lines.push_back(line);
        sort(active_lines.begin(), active_lines.end(), XLineManager::XSortComparison);
+       pending_lines.push_back(line);
        lookup_lines[line->type][line->Displayable()] = line;
        line->OnAdd();
 
+       FOREACH_MOD(I_OnAddLine,OnAddLine(user, line)); 
+
        return true;
 }
 
@@ -154,7 +157,7 @@ bool XLineManager::AddLine(XLine* line)
 
 // deletes a g:line, returns true if the line existed and was removed
 
-bool XLineManager::DelLine(const char* hostmask, char type, bool simulate)
+bool XLineManager::DelLine(const char* hostmask, char type, User* user, bool simulate)
 {
        IdentHostPair ih = IdentSplit(hostmask);
        for (std::vector<XLine*>::iterator i = active_lines.begin(); i != active_lines.end(); i++)
@@ -170,7 +173,12 @@ bool XLineManager::DelLine(const char* hostmask, char type, bool simulate)
                                        active_lines.erase(i);
                                        if (lookup_lines.find(type) != lookup_lines.end())
                                                lookup_lines[type].erase(hostmask);
-                                       /* XXX: Should erase from pending lines here */
+
+                                       FOREACH_MOD(I_OnDelLine,OnDelLine(user, *i));
+
+                                       std::vector<XLine*>::iterator pptr = std::find(pending_lines.begin(), pending_lines.end(), *i);                                 
+                                       if (pptr != pending_lines.end())
+                                               pending_lines.erase(pptr);
                                }
                                return true;
                        }