From 945a5587598a3ceb86d83b3ab3c154691995acba Mon Sep 17 00:00:00 2001 From: brain Date: Sat, 10 Nov 2007 15:43:20 +0000 Subject: [PATCH] Allow eline/gline/kline/zline by nick git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8553 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/commands/cmd_eline.cpp | 13 +++++++++++-- src/commands/cmd_gline.cpp | 13 +++++++++++-- src/commands/cmd_kline.cpp | 13 +++++++++++-- src/commands/cmd_zline.cpp | 19 ++++++++++++++----- 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/src/commands/cmd_eline.cpp b/src/commands/cmd_eline.cpp index 83c921d8b..8d1951b3c 100644 --- a/src/commands/cmd_eline.cpp +++ b/src/commands/cmd_eline.cpp @@ -6,7 +6,7 @@ * 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,7 +26,16 @@ CmdResult CommandEline::Handle (const char** parameters, int pcnt, User *user) { if (pcnt >= 3) { - IdentHostPair ih = ServerInstance->XLines->IdentSplit(parameters[0]); + IdentHostPair ih; + User* find = ServerInstance->FindNick(parameters[0]); + if (find) + { + ih.first = "*"; + ih.second = find->GetIPString(); + } + else + ih = ServerInstance->XLines->IdentSplit(parameters[0]); + if (ServerInstance->HostMatchesEveryone(ih.first+"@"+ih.second,user)) return CMD_FAILURE; diff --git a/src/commands/cmd_gline.cpp b/src/commands/cmd_gline.cpp index caed54ebe..13d014084 100644 --- a/src/commands/cmd_gline.cpp +++ b/src/commands/cmd_gline.cpp @@ -6,7 +6,7 @@ * 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,7 +26,16 @@ CmdResult CommandGline::Handle (const char** parameters, int pcnt, User *user) { if (pcnt >= 3) { - IdentHostPair ih = ServerInstance->XLines->IdentSplit(parameters[0]); + IdentHostPair ih; + User* find = ServerInstance->FindNick(parameters[0]); + if (find) + { + ih.first = "*"; + ih.second = find->GetIPString(); + } + else + ih = ServerInstance->XLines->IdentSplit(parameters[0]); + if (ServerInstance->HostMatchesEveryone(ih.first+"@"+ih.second,user)) return CMD_FAILURE; diff --git a/src/commands/cmd_kline.cpp b/src/commands/cmd_kline.cpp index 7058de77f..49880fceb 100644 --- a/src/commands/cmd_kline.cpp +++ b/src/commands/cmd_kline.cpp @@ -6,7 +6,7 @@ * 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,7 +26,16 @@ CmdResult CommandKline::Handle (const char** parameters, int pcnt, User *user) { if (pcnt >= 3) { - IdentHostPair ih = ServerInstance->XLines->IdentSplit(parameters[0]); + IdentHostPair ih; + User* find = ServerInstance->FindNick(parameters[0]); + if (find) + { + ih.first = "*"; + ih.second = find->GetIPString(); + } + else + ih = ServerInstance->XLines->IdentSplit(parameters[0]); + if (ServerInstance->HostMatchesEveryone(ih.first+"@"+ih.second,user)) return CMD_FAILURE; diff --git a/src/commands/cmd_zline.cpp b/src/commands/cmd_zline.cpp index 520bea306..1b765bbb4 100644 --- a/src/commands/cmd_zline.cpp +++ b/src/commands/cmd_zline.cpp @@ -6,7 +6,7 @@ * 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. * * --------------------------------------------------- */ @@ -37,12 +37,21 @@ CmdResult CommandZline::Handle (const char** parameters, int pcnt, User *user) long duration = ServerInstance->Duration(parameters[1]); - const char* ipaddr = parameters[0]; - if (strchr(ipaddr,'@')) + const char* ipaddr = parameters[0]; + User* find = ServerInstance->FindNick(parameters[0]); + + if (find) + { + ipaddr = find->GetIPString(); + } + else { - while (*ipaddr != '@') + if (strchr(ipaddr,'@')) + { + while (*ipaddr != '@') + ipaddr++; ipaddr++; - ipaddr++; + } } ZLine* zl = new ZLine(ServerInstance, ServerInstance->Time(), duration, user->nick, parameters[2], ipaddr); if (ServerInstance->XLines->AddLine(zl,user)) -- 2.39.5