From bef00db0a6b6470792397e95371d7cb359dd3781 Mon Sep 17 00:00:00 2001 From: special Date: Wed, 15 Oct 2008 23:15:15 +0000 Subject: Numerous fixes for m_dccallow - only the first banfile tag mattered, improper behavior with no banfile tags, incorrect check for adding yourself to the dccallow list, and several cosmetic issues. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10646 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_dccallow.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp index 39c8e33c6..da66d318a 100644 --- a/src/modules/m_dccallow.cpp +++ b/src/modules/m_dccallow.cpp @@ -82,6 +82,11 @@ class CommandDccallow : public Command DisplayHelp(user); return CMD_FAILURE; } + else + { + user->WriteNumeric(998, "%s :DCCALLOW command not understood. For help on DCCALLOW, type /DCCALLOW HELP", user->nick.c_str()); + return CMD_FAILURE; + } } std::string nick = parameters[0].substr(1); @@ -125,6 +130,12 @@ class CommandDccallow : public Command } else if (action == '+') { + if (target == user) + { + user->WriteNumeric(996, "%s %s :You cannot add yourself to your own DCCALLOW list!", user->nick.c_str(), user->nick.c_str()); + return CMD_FAILURE; + } + if (!user->GetExt("dccallow_list", dl)) { dl = new dccallowlist; @@ -132,6 +143,7 @@ class CommandDccallow : public Command // add this user to the userlist ul.push_back(user); } + for (dccallowlist::const_iterator k = dl->begin(); k != dl->end(); ++k) { if (k->nickname == target->nick) @@ -139,11 +151,6 @@ class CommandDccallow : public Command user->WriteNumeric(996, "%s %s :%s is already on your DCCALLOW list", user->nick.c_str(), user->nick.c_str(), target->nick.c_str()); return CMD_FAILURE; } - else if (InspIRCd::Match(user->GetFullHost(), k->hostmask)) - { - user->WriteNumeric(996, "%s %s :You cannot add yourself to your own DCCALLOW list!", user->nick.c_str(), user->nick.c_str()); - return CMD_FAILURE; - } } std::string mask = std::string(target->nick)+"!"+std::string(target->ident)+"@"+std::string(target->dhost); @@ -195,7 +202,7 @@ class CommandDccallow : public Command void DisplayHelp(User* user) { - user->WriteNumeric(998, "%s :DCCALLOW [<+|->nick.c_str() [time]] [list] [help]", user->nick.c_str()); + user->WriteNumeric(998, "%s :DCCALLOW [<+|->nick [time]] [list] [help]", user->nick.c_str()); user->WriteNumeric(998, "%s :You may allow DCCs from specific users by specifying a", user->nick.c_str()); user->WriteNumeric(998, "%s :DCC allow for the user you want to receive DCCs from.", user->nick.c_str()); user->WriteNumeric(998, "%s :For example, to allow the user Brain to send you inspircd.exe", user->nick.c_str()); @@ -348,11 +355,12 @@ class ModuleDCCAllow : public Module if (defaultaction == "allow") return 0; } - user->WriteServ("NOTICE %s :The user %s is not accepting DCC SENDs from you. Your file %s was not sent.", user->nick.c_str(), u->nick.c_str(), filename.c_str()); - u->WriteServ("NOTICE %s :%s (%s@%s) attempted to send you a file named %s, which was blocked.", u->nick.c_str(), user->nick.c_str(), user->ident.c_str(), user->dhost.c_str(), filename.c_str()); - u->WriteServ("NOTICE %s :If you trust %s and were expecting this, you can type /DCCALLOW HELP for information on the DCCALLOW system.", u->nick.c_str(), user->nick.c_str()); - return 1; } + + user->WriteServ("NOTICE %s :The user %s is not accepting DCC SENDs from you. Your file %s was not sent.", user->nick.c_str(), u->nick.c_str(), filename.c_str()); + u->WriteServ("NOTICE %s :%s (%s@%s) attempted to send you a file named %s, which was blocked.", u->nick.c_str(), user->nick.c_str(), user->ident.c_str(), user->dhost.c_str(), filename.c_str()); + u->WriteServ("NOTICE %s :If you trust %s and were expecting this, you can type /DCCALLOW HELP for information on the DCCALLOW system.", u->nick.c_str(), user->nick.c_str()); + return 1; } else if ((type == "CHAT") && (blockchat)) { -- cgit v1.2.3