]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_info/core_info.h
Ensure server names passed to some commands are really server names
[user/henk/code/inspircd.git] / src / coremods / core_info / core_info.h
index f5dd9e6483a27116ec6ac98a66b0e1f8bd8dbb6c..ecfeb4f3678e5c06fa0520aa70e33ef9411dc80e 100644 (file)
 
 #include "inspircd.h"
 
+/** These commands require no parameters, but if there is a parameter it is a server name where the command will be routed to.
+ */
+class ServerTargetCommand : public Command
+{
+ public:
+       ServerTargetCommand(Module* mod, const std::string& Name)
+               : Command(mod, Name)
+       {
+       }
+
+       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters);
+};
+
 /** Handle /ADMIN.
  */
-class CommandAdmin : public Command
+class CommandAdmin : public ServerTargetCommand
 {
  public:
        /** Holds the admin's name, for output in
@@ -51,7 +64,6 @@ class CommandAdmin : public Command
         * @return A value from CmdResult to indicate command success or failure.
         */
        CmdResult Handle(const std::vector<std::string>& parameters, User* user);
-       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters);
 };
 
 /** Handle /COMMANDS.
@@ -73,7 +85,7 @@ class CommandCommands : public Command
 
 /** Handle /INFO.
  */
-class CommandInfo : public Command
+class CommandInfo : public ServerTargetCommand
 {
  public:
        /** Constructor for info.
@@ -86,12 +98,11 @@ class CommandInfo : public Command
         * @return A value from CmdResult to indicate command success or failure.
         */
        CmdResult Handle(const std::vector<std::string>& parameters, User* user);
-       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters);
 };
 
 /** Handle /MODULES.
  */
-class CommandModules : public Command
+class CommandModules : public ServerTargetCommand
 {
  public:
        /** Constructor for modules.
@@ -104,12 +115,11 @@ class CommandModules : public Command
         * @return A value from CmdResult to indicate command success or failure.
         */
        CmdResult Handle(const std::vector<std::string>& parameters, User* user);
-       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters);
 };
 
 /** Handle /MOTD.
  */
-class CommandMotd : public Command
+class CommandMotd : public ServerTargetCommand
 {
  public:
        /** Constructor for motd.
@@ -122,12 +132,11 @@ class CommandMotd : public Command
         * @return A value from CmdResult to indicate command success or failure.
         */
        CmdResult Handle(const std::vector<std::string>& parameters, User* user);
-       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters);
 };
 
 /** Handle /TIME.
  */
-class CommandTime : public Command
+class CommandTime : public ServerTargetCommand
 {
  public:
        /** Constructor for time.
@@ -140,7 +149,6 @@ class CommandTime : public Command
         * @return A value from CmdResult to indicate command success or failure.
         */
        CmdResult Handle(const std::vector<std::string>& parameters, User* user);
-       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters);
 };
 
 /** Handle /VERSION.