mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-11 11:39:02 -04:00
Split out rconnect command into its own file (this ones already a command handler)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6396 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
a17174ec0a
commit
ae2d82d012
@ -32,48 +32,8 @@
|
||||
#include "m_spanningtree/treeserver.h"
|
||||
#include "m_spanningtree/link.h"
|
||||
#include "m_spanningtree/treesocket.h"
|
||||
#include "m_spanningtree/rconnect.h"
|
||||
|
||||
/** Handle /RCONNECT
|
||||
*/
|
||||
class cmd_rconnect : public command_t
|
||||
{
|
||||
Module* Creator;
|
||||
SpanningTreeUtilities* Utils;
|
||||
public:
|
||||
cmd_rconnect (InspIRCd* Instance, Module* Callback, SpanningTreeUtilities* Util) : command_t(Instance, "RCONNECT", 'o', 2), Creator(Callback), Utils(Util)
|
||||
{
|
||||
this->source = "m_spanningtree.so";
|
||||
syntax = "<remote-server-mask> <target-server-mask>";
|
||||
}
|
||||
|
||||
CmdResult Handle (const char** parameters, int pcnt, userrec *user)
|
||||
{
|
||||
if (IS_LOCAL(user))
|
||||
{
|
||||
if (!Utils->FindServer(parameters[0]))
|
||||
{
|
||||
user->WriteServ("NOTICE %s :*** RCONNECT: Server \002%s\002 isn't connected to the network!", user->nick, parameters[0]);
|
||||
return CMD_FAILURE;
|
||||
}
|
||||
|
||||
user->WriteServ("NOTICE %s :*** RCONNECT: Sending remote connect to \002%s\002 to connect server \002%s\002.",user->nick,parameters[0],parameters[1]);
|
||||
}
|
||||
|
||||
/* Is this aimed at our server? */
|
||||
if (ServerInstance->MatchText(ServerInstance->Config->ServerName,parameters[0]))
|
||||
{
|
||||
/* Yes, initiate the given connect */
|
||||
ServerInstance->SNO->WriteToSnoMask('l',"Remote CONNECT from %s matching \002%s\002, connecting server \002%s\002",user->nick,parameters[0],parameters[1]);
|
||||
const char* para[1];
|
||||
para[0] = parameters[1];
|
||||
std::string original_command = std::string("CONNECT ") + parameters[1];
|
||||
Creator->OnPreCommand("CONNECT", para, 1, user, true, original_command);
|
||||
}
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
};
|
||||
|
||||
ModuleSpanningTree::ModuleSpanningTree(InspIRCd* Me)
|
||||
: Module::Module(Me), max_local(0), max_global(0)
|
||||
{
|
||||
|
52
src/modules/m_spanningtree/rconnect.cpp
Normal file
52
src/modules/m_spanningtree/rconnect.cpp
Normal file
@ -0,0 +1,52 @@
|
||||
#include "configreader.h"
|
||||
#include "users.h"
|
||||
#include "channels.h"
|
||||
#include "modules.h"
|
||||
#include "commands/cmd_whois.h"
|
||||
#include "commands/cmd_stats.h"
|
||||
#include "socket.h"
|
||||
#include "inspircd.h"
|
||||
#include "wildcard.h"
|
||||
#include "xline.h"
|
||||
#include "transport.h"
|
||||
|
||||
#include "m_spanningtree/timesynctimer.h"
|
||||
#include "m_spanningtree/resolvers.h"
|
||||
#include "m_spanningtree/main.h"
|
||||
#include "m_spanningtree/utils.h"
|
||||
#include "m_spanningtree/treeserver.h"
|
||||
#include "m_spanningtree/link.h"
|
||||
#include "m_spanningtree/treesocket.h"
|
||||
#include "m_spanningtree/rconnect.h"
|
||||
|
||||
cmd_rconnect::cmd_rconnect (InspIRCd* Instance, Module* Callback, SpanningTreeUtilities* Util) : command_t(Instance, "RCONNECT", 'o', 2), Creator(Callback), Utils(Util)
|
||||
{
|
||||
this->source = "m_spanningtree.so";
|
||||
syntax = "<remote-server-mask> <target-server-mask>";
|
||||
}
|
||||
|
||||
CmdResult cmd_rconnect::Handle (const char** parameters, int pcnt, userrec *user)
|
||||
{
|
||||
if (IS_LOCAL(user))
|
||||
{
|
||||
if (!Utils->FindServer(parameters[0]))
|
||||
{
|
||||
user->WriteServ("NOTICE %s :*** RCONNECT: Server \002%s\002 isn't connected to the network!", user->nick, parameters[0]);
|
||||
return CMD_FAILURE;
|
||||
}
|
||||
user->WriteServ("NOTICE %s :*** RCONNECT: Sending remote connect to \002%s\002 to connect server \002%s\002.",user->nick,parameters[0],parameters[1]);
|
||||
}
|
||||
|
||||
/* Is this aimed at our server? */
|
||||
if (ServerInstance->MatchText(ServerInstance->Config->ServerName,parameters[0]))
|
||||
{
|
||||
/* Yes, initiate the given connect */
|
||||
ServerInstance->SNO->WriteToSnoMask('l',"Remote CONNECT from %s matching \002%s\002, connecting server \002%s\002",user->nick,parameters[0],parameters[1]);
|
||||
const char* para[1];
|
||||
para[0] = parameters[1];
|
||||
std::string original_command = std::string("CONNECT ") + parameters[1];
|
||||
Creator->OnPreCommand("CONNECT", para, 1, user, true, original_command);
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
15
src/modules/m_spanningtree/rconnect.h
Normal file
15
src/modules/m_spanningtree/rconnect.h
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef __RCONNECT_H__
|
||||
#define __RCONNECT_H__
|
||||
|
||||
/** Handle /RCONNECT
|
||||
*/
|
||||
class cmd_rconnect : public command_t
|
||||
{
|
||||
Module* Creator;
|
||||
SpanningTreeUtilities* Utils;
|
||||
public:
|
||||
cmd_rconnect (InspIRCd* Instance, Module* Callback, SpanningTreeUtilities* Util);
|
||||
CmdResult Handle (const char** parameters, int pcnt, userrec *user);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user