diff options
author | Attila Molnar <attilamolnar@hush.com> | 2015-12-05 15:04:00 +0100 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2015-12-05 15:04:00 +0100 |
commit | 0528e83604da80d87ae10f85841a5a9e33274f71 (patch) | |
tree | d3408948e49f2a969955e8d80a584473f6e35d95 /src | |
parent | 860f5cbf1ea159d7d1c3fce2364747a822c50461 (diff) |
Nuke m_cap
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_cap.cpp | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/src/modules/m_cap.cpp b/src/modules/m_cap.cpp deleted file mode 100644 index 2c2178a18..000000000 --- a/src/modules/m_cap.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - * InspIRCd -- Internet Relay Chat Daemon - * - * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org> - * Copyright (C) 2008 Craig Edwards <craigedwards@brainbox.cc> - * - * 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 - * License as published by the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "inspircd.h" -#include "modules/cap.h" - -/* -CAP LS -:alfred.staticbox.net CAP * LS :multi-prefix sasl -CAP REQ :multi-prefix -:alfred.staticbox.net CAP * ACK :multi-prefix -CAP CLEAR -:alfred.staticbox.net CAP * ACK :-multi-prefix -CAP REQ :multi-prefix -:alfred.staticbox.net CAP * ACK :multi-prefix -CAP LIST -:alfred.staticbox.net CAP * LIST :multi-prefix -CAP END -*/ - -/** Handle /CAP - */ -class CommandCAP : public Command -{ - Events::ModuleEventProvider capevprov; - - public: - LocalIntExt reghold; - CommandCAP (Module* mod) : Command(mod, "CAP", 1), - capevprov(mod, "event/cap"), - reghold("CAP_REGHOLD", ExtensionItem::EXT_USER, mod) - { - works_before_reg = true; - } - - CmdResult Handle (const std::vector<std::string> ¶meters, User *user) - { - std::string subcommand(parameters[0].length(), ' '); - std::transform(parameters[0].begin(), parameters[0].end(), subcommand.begin(), ::toupper); - - if (subcommand == "REQ") - { - if (parameters.size() < 2) - return CMD_FAILURE; - - CapEvent Data(creator, user, CapEvent::CAPEVENT_REQ); - - // tokenize the input into a nice list of requested caps - std::string cap_; - irc::spacesepstream cap_stream(parameters[1]); - - while (cap_stream.GetToken(cap_)) - { - std::transform(cap_.begin(), cap_.end(), cap_.begin(), ::tolower); - Data.wanted.push_back(cap_); - } - - reghold.set(user, 1); - FOREACH_MOD_CUSTOM(capevprov, GenericCap, OnCapEvent, (Data)); - - if (Data.ack.size() > 0) - { - std::string AckResult = irc::stringjoiner(Data.ack); - user->WriteCommand("CAP", "ACK :" + AckResult); - } - - if (Data.wanted.size() > 0) - { - std::string NakResult = irc::stringjoiner(Data.wanted); - user->WriteCommand("CAP", "NAK :" + NakResult); - } - } - else if (subcommand == "END") - { - reghold.set(user, 0); - } - else if ((subcommand == "LS") || (subcommand == "LIST")) - { - CapEvent Data(creator, user, subcommand == "LS" ? CapEvent::CAPEVENT_LS : CapEvent::CAPEVENT_LIST); - - reghold.set(user, 1); - FOREACH_MOD_CUSTOM(capevprov, GenericCap, OnCapEvent, (Data)); - - std::string Result = irc::stringjoiner(Data.wanted); - user->WriteCommand("CAP", subcommand + " :" + Result); - } - else if (subcommand == "CLEAR") - { - CapEvent Data(creator, user, CapEvent::CAPEVENT_CLEAR); - - reghold.set(user, 1); - FOREACH_MOD_CUSTOM(capevprov, GenericCap, OnCapEvent, (Data)); - - std::string Result = irc::stringjoiner(Data.ack); - user->WriteCommand("CAP", "ACK :" + Result); - } - else - { - user->WriteNumeric(ERR_INVALIDCAPSUBCOMMAND, "%s :Invalid CAP subcommand", subcommand.c_str()); - return CMD_FAILURE; - } - - return CMD_SUCCESS; - } -}; - -class ModuleCAP : public Module -{ - CommandCAP cmd; - public: - ModuleCAP() - : cmd(this) - { - } - - ModResult OnCheckReady(LocalUser* user) CXX11_OVERRIDE - { - /* Users in CAP state get held until CAP END */ - if (cmd.reghold.get(user)) - return MOD_RES_DENY; - - return MOD_RES_PASSTHRU; - } - - Version GetVersion() CXX11_OVERRIDE - { - return Version("Client CAP extension support", VF_VENDOR); - } -}; - -MODULE_INIT(ModuleCAP) |