* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
+ * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
* the file COPYING for details.
/** Base class for /FPART and /REMOVE
*/
-class RemoveBase
+class RemoveBase : public Command
{
private:
bool& supportnokicks;
- InspIRCd* ServerInstance;
- protected:
- RemoveBase(InspIRCd* Instance, bool& snk) : supportnokicks(snk), ServerInstance(Instance)
+ public:
+ RemoveBase(InspIRCd* Instance, Module* Creator, bool& snk, const char* cmdn, const char* a, int b, int c, bool d, int e)
+ : Command(Instance, Creator, cmdn, a,b,c,d,e), supportnokicks(snk)
{
}
}
}
- CmdResult Handle (const std::vector<std::string>& parameters, User *user, bool neworder)
+ CmdResult HandleRMB(const std::vector<std::string>& parameters, User *user, bool neworder)
{
const char* channame;
const char* username;
return CMD_FAILURE;
}
- /* route me */
return CMD_SUCCESS;
}
+ virtual RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters) = 0;
};
/** Handle /REMOVE
*/
-class CommandRemove : public Command, public RemoveBase
+class CommandRemove : public RemoveBase
{
public:
- CommandRemove(InspIRCd* Instance, bool& snk) : Command(Instance, "REMOVE", 0, 2), RemoveBase(Instance, snk)
+ CommandRemove(InspIRCd* Instance, Module* Creator, bool& snk)
+ : RemoveBase(Instance, Creator, snk, "REMOVE", 0, 2, 2, false, 0)
{
- this->source = "m_remove.so";
syntax = "<nick> <channel> [<reason>]";
TRANSLATE4(TR_NICK, TR_TEXT, TR_TEXT, TR_END);
}
CmdResult Handle (const std::vector<std::string>& parameters, User *user)
{
- return RemoveBase::Handle(parameters, user, false);
+ return HandleRMB(parameters, user, false);
+ }
+
+ RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters)
+ {
+ User* dest = ServerInstance->FindNick(parameters[0]);
+ if (dest)
+ return ROUTE_OPT_UCAST(dest->server);
+ return ROUTE_LOCALONLY;
}
};
/** Handle /FPART
*/
-class CommandFpart : public Command, public RemoveBase
+class CommandFpart : public RemoveBase
{
public:
- CommandFpart(InspIRCd* Instance, bool& snk) : Command(Instance, "FPART", 0, 2), RemoveBase(Instance, snk)
+ CommandFpart(InspIRCd* Instance, Module* Creator, bool& snk)
+ : RemoveBase(Instance, Creator, snk, "FPART", 0, 2, 2, false, 0)
{
- this->source = "m_remove.so";
syntax = "<channel> <nick> [<reason>]";
+ TRANSLATE4(TR_TEXT, TR_NICK, TR_TEXT, TR_END);
}
CmdResult Handle (const std::vector<std::string>& parameters, User *user)
{
- return RemoveBase::Handle(parameters, user, true);
+ return HandleRMB(parameters, user, true);
+ }
+
+ RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters)
+ {
+ User* dest = ServerInstance->FindNick(parameters[1]);
+ if (dest)
+ return ROUTE_OPT_UCAST(dest->server);
+ return ROUTE_LOCALONLY;
}
};
class ModuleRemove : public Module
{
- CommandRemove* mycommand;
- CommandFpart* mycommand2;
+ CommandRemove cmd1;
+ CommandFpart cmd2;
bool supportnokicks;
public:
ModuleRemove(InspIRCd* Me)
- : Module(Me)
+ : Module(Me), cmd1(Me, this, supportnokicks), cmd2(Me, this, supportnokicks)
{
- mycommand = new CommandRemove(ServerInstance, supportnokicks);
- mycommand2 = new CommandFpart(ServerInstance, supportnokicks);
- ServerInstance->AddCommand(mycommand);
- ServerInstance->AddCommand(mycommand2);
- OnRehash(NULL,"");
+ ServerInstance->AddCommand(&cmd1);
+ ServerInstance->AddCommand(&cmd2);
+ OnRehash(NULL);
Implementation eventlist[] = { I_On005Numeric, I_OnRehash };
ServerInstance->Modules->Attach(eventlist, this, 2);
}
output.append(" REMOVE");
}
- virtual void OnRehash(User* user, const std::string&)
+ virtual void OnRehash(User* user)
{
ConfigReader conf(ServerInstance);
supportnokicks = conf.ReadFlag("remove", "supportnokicks", 0);
virtual Version GetVersion()
{
- return Version("$Id$", VF_COMMON | VF_VENDOR, API_VERSION);
+ return Version("$Id$", VF_OPTCOMMON | VF_VENDOR, API_VERSION);
}
};