X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcommands%2Fcmd_eline.cpp;h=ca95955b7a4d1bb92b82e746b31f53be9123ee0f;hb=5db1d322be106c8462dc691072f9415dc0766ed4;hp=176eef99d32184557c180c3e291c86111cfbfbfe;hpb=568f90949aaa882fd8de88669234894e5235b7c6;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/commands/cmd_eline.cpp b/src/commands/cmd_eline.cpp index 176eef99d..ca95955b7 100644 --- a/src/commands/cmd_eline.cpp +++ b/src/commands/cmd_eline.cpp @@ -2,11 +2,11 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * InspIRCd: (C) 2002-2008 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see - * the file COPYING for details. + * the file COPYING for details. * * --------------------------------------------------- */ @@ -26,23 +26,26 @@ CmdResult CommandEline::Handle (const char** parameters, int pcnt, User *user) { if (pcnt >= 3) { - IdentHostPair ih = ServerInstance->XLines->IdentSplit(parameters[0]); - if (ServerInstance->HostMatchesEveryone(ih.first+"@"+ih.second,user)) - return CMD_FAILURE; - - if (!strchr(parameters[0],'@')) + IdentHostPair ih; + User* find = ServerInstance->FindNick(parameters[0]); + if (find) { - user->WriteServ("NOTICE %s :*** E-Line must contain a username, e.g. *@%s",user->nick,parameters[0]); - return CMD_FAILURE; + ih.first = "*"; + ih.second = find->GetIPString(); + std::string c = std::string("*@") + find->GetIPString(); + parameters[0] = c.c_str(); } + else + ih = ServerInstance->XLines->IdentSplit(parameters[0]); + + if (ServerInstance->HostMatchesEveryone(ih.first+"@"+ih.second,user)) + return CMD_FAILURE; 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 +65,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