X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_stub.cpp;h=460068da5dc8b4dd2ba605f64e358b4da8b39c1c;hb=635cb9d65f6d7f6758ae8ed874da00c8d94b6e39;hp=0b7cfaa322a5ef014c43799765a5dfec98db9b89;hpb=6cfabb0064cab52bbbab59974e53dc0fa1954da7;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_stub.cpp b/src/coremods/core_stub.cpp index 0b7cfaa32..460068da5 100644 --- a/src/coremods/core_stub.cpp +++ b/src/coremods/core_stub.cpp @@ -2,7 +2,7 @@ * InspIRCd -- Internet Relay Chat Daemon * * Copyright (C) 2019 Robby - * Copyright (C) 2017-2019 Sadie Powell + * Copyright (C) 2017-2020 Sadie Powell * Copyright (C) 2014-2016 Attila Molnar * * This file is part of InspIRCd. InspIRCd is free software: you can @@ -28,6 +28,29 @@ enum 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. */ @@ -83,38 +106,6 @@ class CommandLinks : public Command } }; -/** Handle /SERVER. - */ -class CommandServer : public Command -{ - public: - /** Constructor for server. - */ - CommandServer(Module* parent) - : Command(parent, "SERVER") - { - works_before_reg = true; - } - - /** 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(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)"); - } - return CMD_FAILURE; - } -}; - /** Handle /SQUIT. */ class CommandSquit : public Command @@ -175,18 +166,19 @@ class CommandUsers class CoreModStub : public Module { + private: + CommandCapab cmdcapab; CommandConnect cmdconnect; CommandLinks cmdlinks; - CommandServer cmdserver; CommandSquit cmdsquit; CommandSummon cmdsummon; CommandUsers cmdusers; public: CoreModStub() - : cmdconnect(this) + : cmdcapab(this) + , cmdconnect(this) , cmdlinks(this) - , cmdserver(this) , cmdsquit(this) , cmdsummon(this) , cmdusers(this)