X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_stub.cpp;h=0695e4d995a7ced2fb6f201d4faba06b7f9b5772;hb=b4a174ee9c32d62ea6bf010e837e8c5b1c3d36a3;hp=28adb9e6a0c9eab8c16e9665f6dd5a822f6f546f;hpb=1f186bd6505e263ccc7ce1ec38cf6a5d5a8a85c5;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_stub.cpp b/src/coremods/core_stub.cpp index 28adb9e6a..0695e4d99 100644 --- a/src/coremods/core_stub.cpp +++ b/src/coremods/core_stub.cpp @@ -1,9 +1,9 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2014 Attila Molnar - * Copyright (C) 2009 Daniel De Graaf - * Copyright (C) 2007 Robin Burchell + * Copyright (C) 2019 Robby + * Copyright (C) 2017-2020 Sadie Powell + * Copyright (C) 2014-2016 Attila Molnar * * 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 +21,36 @@ #include "inspircd.h" +enum +{ + // From RFC 1459. + ERR_SUMMONDISABLED = 445, + ERR_USERSDISABLED = 446 +}; + +class CommandCapab : public Command +{ + public: + CommandCapab(Module* parent) + : Command(parent, "CAPAB") + { + works_before_reg = true; + } + + CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE + { + if (user->registered == REG_NONE) + { + // The CAPAB command is used in the server protocol for negotiating + // the protocol version when initiating a server connection. There + // is no legitimate reason for a user to send this so we disconnect + // users who sent it in order to help out server admins who have + // misconfigured their server. + ServerInstance->Users->QuitUser(user, "You can not connect a server to a client port. Read " INSPIRCD_DOCS "modules/spanningtree for docs on how to link a server."); + } + return CMD_FAILURE; + } +}; /** Handle /CONNECT. */ @@ -33,7 +63,7 @@ class CommandConnect : public Command : Command(parent, "CONNECT", 1) { flags_needed = 'o'; - syntax = ""; + syntax = ""; } /** Handle command. @@ -41,12 +71,12 @@ class CommandConnect : public Command * @param user The user issuing the command * @return A value from CmdResult to indicate command success or failure. */ - CmdResult Handle(const std::vector& parameters, User* user) + CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE { /* * This is handled by the server linking module, if necessary. Do not remove this stub. */ - user->WriteServ( "NOTICE %s :Look into loading a linking module (like m_spanningtree) if you want this to do anything useful.", user->nick.c_str()); + user->WriteNotice("Look into loading a linking module (like m_spanningtree) if you want this to do anything useful."); return CMD_SUCCESS; } }; @@ -68,25 +98,26 @@ class CommandLinks : public Command * @param user The user issuing the command * @return A value from CmdResult to indicate command success or failure. */ - CmdResult Handle(const std::vector& parameters, User* user) + CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE { - user->WriteNumeric(RPL_LINKS, "%s %s :0 %s", ServerInstance->Config->ServerName.c_str(),ServerInstance->Config->ServerName.c_str(),ServerInstance->Config->ServerDesc.c_str()); - user->WriteNumeric(RPL_ENDOFLINKS, "* :End of /LINKS list."); + user->WriteNumeric(RPL_LINKS, ServerInstance->Config->GetServerName(), ServerInstance->Config->GetServerName(), InspIRCd::Format("0 %s", ServerInstance->Config->GetServerDesc().c_str())); + user->WriteNumeric(RPL_ENDOFLINKS, '*', "End of /LINKS list."); return CMD_SUCCESS; } }; -/** Handle /SERVER. +/** Handle /SQUIT. */ -class CommandServer : public Command +class CommandSquit : public Command { public: - /** Constructor for server. + /** Constructor for squit. */ - CommandServer(Module* parent) - : Command(parent, "SERVER") + CommandSquit(Module* parent) + : Command(parent, "SQUIT", 1, 2) { - works_before_reg = true; + flags_needed = 'o'; + syntax = ""; } /** Handle command. @@ -94,62 +125,69 @@ class CommandServer : public Command * @param user The user issuing the command * @return A value from CmdResult to indicate command success or failure. */ - CmdResult Handle(const std::vector& parameters, User* user) + CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE { - if (user->registered == REG_ALL) - { - user->WriteNumeric(ERR_ALREADYREGISTERED, ":You are already registered. (Perhaps your IRC client does not have a /SERVER command)."); - } - else - { - user->WriteNumeric(ERR_NOTREGISTERED, "SERVER :You may not register as a server (servers have separate ports from clients, change your config)"); - } + user->WriteNotice("Look into loading a linking module (like m_spanningtree) if you want this to do anything useful."); return CMD_FAILURE; } }; -/** Handle /SQUIT. - */ -class CommandSquit : public Command +class CommandSummon + : public SplitCommand { public: - /** Constructor for squit. - */ - CommandSquit(Module* parent) - : Command(parent, "SQUIT", 1, 2) + CommandSummon(Module* Creator) + : SplitCommand(Creator, "SUMMON", 1) { - flags_needed = 'o'; - syntax = ""; } - /** Handle command. - * @param parameters The parameters to the command - * @param user The user issuing the command - * @return A value from CmdResult to indicate command success or failure. - */ - CmdResult Handle(const std::vector& parameters, User* user) + CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE { - user->WriteServ("NOTICE %s :Look into loading a linking module (like m_spanningtree) if you want this to do anything useful.", user->nick.c_str()); - return CMD_FAILURE; + user->WriteNumeric(ERR_SUMMONDISABLED, "SUMMON has been disabled"); + return CMD_SUCCESS; + } +}; + +class CommandUsers + : public SplitCommand +{ + public: + CommandUsers(Module* Creator) + : SplitCommand(Creator, "USERS") + { + } + + CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE + { + user->WriteNumeric(ERR_USERSDISABLED, "USERS has been disabled"); + return CMD_SUCCESS; } }; class CoreModStub : public Module { + private: + CommandCapab cmdcapab; CommandConnect cmdconnect; CommandLinks cmdlinks; - CommandServer cmdserver; CommandSquit cmdsquit; + CommandSummon cmdsummon; + CommandUsers cmdusers; public: CoreModStub() - : cmdconnect(this), cmdlinks(this), cmdserver(this), cmdsquit(this) + : cmdcapab(this) + , cmdconnect(this) + , cmdlinks(this) + , cmdsquit(this) + , cmdsummon(this) + , cmdusers(this) { } - Version GetVersion() + Version GetVersion() CXX11_OVERRIDE { - return Version("Provides the stub commands CONNECT, LINKS, SERVER and SQUIT", VF_VENDOR|VF_CORE); + return Version("Provides stubs for unimplemented commands", VF_VENDOR|VF_CORE); } };