X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_info%2Fcmd_commands.cpp;h=4e81bbb1b07ef7ea718848524079906a4a7ad6a4;hb=a30a0074edac353cb60e134b43fa8ff0ffb67f8b;hp=e15d178f55a36702e53a403adde429ecb8d460a3;hpb=da29af8cba49d51e53d6e68237ccbf6370b6dd1f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_info/cmd_commands.cpp b/src/coremods/core_info/cmd_commands.cpp index e15d178f5..4e81bbb1b 100644 --- a/src/coremods/core_info/cmd_commands.cpp +++ b/src/coremods/core_info/cmd_commands.cpp @@ -1,8 +1,13 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2009 Daniel De Graaf - * Copyright (C) 2007 Robin Burchell + * Copyright (C) 2013, 2017-2018, 2020 Sadie Powell + * Copyright (C) 2012, 2014, 2016 Attila Molnar + * Copyright (C) 2012 Robby + * Copyright (C) 2009-2010 Daniel De Graaf + * Copyright (C) 2009 Uli Schlachter + * Copyright (C) 2007-2008 Craig Edwards + * Copyright (C) 2007 Dennis Friis * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -21,6 +26,13 @@ #include "inspircd.h" #include "core_info.h" +enum +{ + // InspIRCd-specific. + RPL_COMMANDS = 700, + RPL_COMMANDSEND = 701 +}; + CommandCommands::CommandCommands(Module* parent) : Command(parent, "COMMANDS", 0, 0) { @@ -29,25 +41,24 @@ CommandCommands::CommandCommands(Module* parent) /** Handle /COMMANDS */ -CmdResult CommandCommands::Handle (const std::vector&, User *user) +CmdResult CommandCommands::Handle(User* user, const Params& parameters) { const CommandParser::CommandMap& commands = ServerInstance->Parser.GetCommands(); std::vector list; list.reserve(commands.size()); for (CommandParser::CommandMap::const_iterator i = commands.begin(); i != commands.end(); ++i) { - // Don't show S2S commands to users - if (i->second->flags_needed == FLAG_SERVERONLY) + // Don't show privileged commands to users without the privilege. + if (i->second->flags_needed && !user->IsModeSet(i->second->flags_needed)) continue; Module* src = i->second->creator; - list.push_back(InspIRCd::Format(":%s %03d %s :%s %s %d %d", ServerInstance->Config->ServerName.c_str(), - RPL_COMMANDS, user->nick.c_str(), i->second->name.c_str(), src->ModuleSourceFile.c_str(), + list.push_back(InspIRCd::Format("%s %s %d %d", i->second->name.c_str(), src->ModuleSourceFile.c_str(), i->second->min_params, i->second->Penalty)); } std::sort(list.begin(), list.end()); for(unsigned int i=0; i < list.size(); i++) - user->Write(list[i]); + user->WriteNumeric(RPL_COMMANDS, list[i]); user->WriteNumeric(RPL_COMMANDSEND, "End of COMMANDS list"); return CMD_SUCCESS; }