diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 42 | ||||
-rw-r--r-- | src/modules/m_spanningtree/rconnect.cpp | 52 | ||||
-rw-r--r-- | src/modules/m_spanningtree/rconnect.h | 15 |
3 files changed, 68 insertions, 41 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 0ddb6b291..110496078 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -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) { diff --git a/src/modules/m_spanningtree/rconnect.cpp b/src/modules/m_spanningtree/rconnect.cpp new file mode 100644 index 000000000..a5d921e2f --- /dev/null +++ b/src/modules/m_spanningtree/rconnect.cpp @@ -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; +} + diff --git a/src/modules/m_spanningtree/rconnect.h b/src/modules/m_spanningtree/rconnect.h new file mode 100644 index 000000000..08c7592d2 --- /dev/null +++ b/src/modules/m_spanningtree/rconnect.h @@ -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 |