X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcommands%2Fcmd_privmsg.cpp;h=13c81a5a1a3ed4ccb9d0f300cecad0ad8d63a744;hb=436fad2bf0fb122470a47a1453fa24b446104a8f;hp=135ab809e81718667bee64a7810758a654a3895d;hpb=c16cda5d715241bb4bff8050bee942a8a34a72c0;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/commands/cmd_privmsg.cpp b/src/commands/cmd_privmsg.cpp index 135ab809e..13c81a5a1 100644 --- a/src/commands/cmd_privmsg.cpp +++ b/src/commands/cmd_privmsg.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team + * InspIRCd: (C) 2002-2009 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see @@ -30,8 +30,11 @@ CmdResult CommandPrivmsg::Handle (const std::vector& parameters, Us if (ServerInstance->Parser->LoopCall(user, this, parameters, 0)) return CMD_SUCCESS; - if ((parameters[0][0] == '$') && (IS_OPER(user) || ServerInstance->ULine(user->server))) + if (parameters[0][0] == '$') { + if (!user->HasPrivPermission("users/mass-message")) + return CMD_SUCCESS; + int MOD_RESULT = 0; std::string temp = parameters[1]; FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user, (void*)parameters[0].c_str(), TYPE_SERVER, temp, 0, except_list)); @@ -65,18 +68,28 @@ CmdResult CommandPrivmsg::Handle (const std::vector& parameters, Us if (chan) { - if (IS_LOCAL(user)) + if (IS_LOCAL(user) && chan->GetStatus(user) < STATUS_VOICE) { - if ((chan->IsModeSet('n')) && (!chan->HasUser(user))) + if (chan->IsModeSet('n') && !chan->HasUser(user)) { user->WriteNumeric(404, "%s %s :Cannot send to channel (no external messages)", user->nick.c_str(), chan->name.c_str()); return CMD_FAILURE; } - if ((chan->IsModeSet('m')) && (chan->GetStatus(user) < STATUS_VOICE)) + + if (chan->IsModeSet('m')) { user->WriteNumeric(404, "%s %s :Cannot send to channel (+m)", user->nick.c_str(), chan->name.c_str()); return CMD_FAILURE; } + + if (ServerInstance->Config->RestrictBannedUsers) + { + if (chan->IsBanned(user)) + { + user->WriteNumeric(404, "%s %s :Cannot send to channel (you're banned)", user->nick.c_str(), chan->name.c_str()); + return CMD_FAILURE; + } + } } int MOD_RESULT = 0;