mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-12 03:59:03 -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,47 +32,7 @@
|
|||||||
#include "m_spanningtree/treeserver.h"
|
#include "m_spanningtree/treeserver.h"
|
||||||
#include "m_spanningtree/link.h"
|
#include "m_spanningtree/link.h"
|
||||||
#include "m_spanningtree/treesocket.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)
|
ModuleSpanningTree::ModuleSpanningTree(InspIRCd* Me)
|
||||||
: Module::Module(Me), max_local(0), max_global(0)
|
: 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