]> 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 894616cf71f910f4cc77e4fb46c041baa1722240..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
+        * the /ADMIN command.
+        */
+       std::string AdminName;
+
+       /** Holds the email address of the admin,
+        * for output in the /ADMIN command.
+        */
+       std::string AdminEmail;
+
+       /** Holds the admin's nickname, for output
+        * in the /ADMIN command
+        */
+       std::string AdminNick;
+
        /** Constructor for admin.
         */
        CommandAdmin(Module* parent);
@@ -36,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.
@@ -58,7 +85,7 @@ class CommandCommands : public Command
 
 /** Handle /INFO.
  */
-class CommandInfo : public Command
+class CommandInfo : public ServerTargetCommand
 {
  public:
        /** Constructor for info.
@@ -71,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.
@@ -89,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.
@@ -107,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.
@@ -125,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.