diff options
author | Attila Molnar <attilamolnar@hush.com> | 2016-03-29 16:28:01 +0200 |
---|---|---|
committer | Attila Molnar <attilamolnar@hush.com> | 2016-03-29 16:28:01 +0200 |
commit | a7dedb347b7dcd26ce93d4af81e77cfa3cf82d0f (patch) | |
tree | 391004f3fcf9eab6486a9758f38254b0b9cb828d /src | |
parent | ccc99fa8f4766d60e87bb0ac58be2ce8e77e34ef (diff) |
m_spanningtree Add NUM command handler
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_spanningtree/commands.h | 9 | ||||
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_spanningtree/num.cpp | 47 |
3 files changed, 57 insertions, 1 deletions
diff --git a/src/modules/m_spanningtree/commands.h b/src/modules/m_spanningtree/commands.h index 1f7456426..a65639434 100644 --- a/src/modules/m_spanningtree/commands.h +++ b/src/modules/m_spanningtree/commands.h @@ -369,6 +369,14 @@ class CommandSInfo : public ServerOnlyServerCommand<CommandSInfo> }; }; +class CommandNum : public ServerOnlyServerCommand<CommandNum> +{ + public: + CommandNum(Module* Creator) : ServerOnlyServerCommand<CommandNum>(Creator, "NUM", 3) { } + CmdResult HandleServer(TreeServer* server, std::vector<std::string>& parameters); + RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters); +}; + class SpanningTreeCommands { public: @@ -401,5 +409,6 @@ class SpanningTreeCommands CommandSNONotice snonotice; CommandEndBurst endburst; CommandSInfo sinfo; + CommandNum num; SpanningTreeCommands(ModuleSpanningTree* module); }; diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index d06755c1f..7f88a07f5 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -52,7 +52,7 @@ SpanningTreeCommands::SpanningTreeCommands(ModuleSpanningTree* module) away(module), addline(module), delline(module), encap(module), idle(module), nick(module), ping(module), pong(module), push(module), save(module), server(module), squit(module), snonotice(module), - endburst(module), sinfo(module) + endburst(module), sinfo(module), num(module) { } diff --git a/src/modules/m_spanningtree/num.cpp b/src/modules/m_spanningtree/num.cpp new file mode 100644 index 000000000..047dba432 --- /dev/null +++ b/src/modules/m_spanningtree/num.cpp @@ -0,0 +1,47 @@ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2016 Attila Molnar <attilamolnar@hush.com> + * + * 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 "utils.h" +#include "commands.h" + +CmdResult CommandNum::HandleServer(TreeServer* server, std::vector<std::string>& params) +{ + User* const target = ServerInstance->FindUUID(params[1]); + if (!target) + return CMD_FAILURE; + + LocalUser* const localtarget = IS_LOCAL(target); + if (!localtarget) + return CMD_SUCCESS; + + Numeric::Numeric numeric(ConvToInt(params[2])); + // Passing NULL is ok, in that case the numeric source becomes this server + numeric.SetServer(Utils->FindServerID(params[0])); + numeric.GetParams().insert(numeric.GetParams().end(), params.begin()+3, params.end()); + + localtarget->WriteNumeric(numeric); + return CMD_SUCCESS; +} + +RouteDescriptor CommandNum::GetRouting(User* user, const std::vector<std::string>& params) +{ + return ROUTE_UNICAST(params[1]); +} |