diff options
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 119 |
1 files changed, 2 insertions, 117 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 93115f060..f77fd15b7 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -25,6 +25,8 @@ #include "xline.h" #include "transport.h" +#include "m_spanningtree/utils.h" + /** If you make a change which breaks the protocol, increment this. * If you completely change the protocol, completely change the number. * @@ -77,19 +79,6 @@ class TreeServer; class TreeSocket; class Link; class ModuleSpanningTree; -class SpanningTreeUtilities; - -/* This hash_map holds the hash equivalent of the server - * tree, used for rapid linear lookups. - */ -typedef nspace::hash_map<std::string, TreeServer*, nspace::hash<string>, irc::StrHashComp> server_hash; - -typedef std::map<TreeServer*,TreeServer*> TreeServerList; - -/** A group of modules that implement InspSocketHook - * that we can use to hook our server to server connections. - */ -typedef std::map<irc::string, Module*> hookmodules; /** The Link class might as well be a struct, * but this is C++ and we don't believe in structs (!). @@ -126,110 +115,6 @@ class HandshakeTimer : public InspTimer virtual void Tick(time_t TIME); }; - -/** Contains helper functions and variables for this module, - * and keeps them out of the global namespace - */ -class SpanningTreeUtilities -{ - private: - /** Creator server - */ - InspIRCd* ServerInstance; - public: - /** Creator module - */ - ModuleSpanningTree* Creator; - /** Flatten links and /MAP for non-opers - */ - bool FlatLinks; - /** Hide U-Lined servers in /MAP and /LINKS - */ - bool HideULines; - /** Announce TS changes to channels on merge - */ - bool AnnounceTSChange; - /** Synchronize timestamps between servers - */ - bool EnableTimeSync; - /** Socket bindings for listening sockets - */ - std::vector<TreeSocket*> Bindings; - /** This variable represents the root of the server tree - */ - TreeServer *TreeRoot; - /** IPs allowed to link to us - */ - std::vector<std::string> ValidIPs; - /** Hash of currently connected servers by name - */ - server_hash serverlist; - /** Holds the data from the <link> tags in the conf - */ - std::vector<Link> LinkBlocks; - /** Holds a bitmask of queued xline types waiting to be applied. - * Will be a mask containing values APPLY_GLINES, APPLY_KLINES, - * APPLY_QLINES and APPLY_ZLINES. - */ - int lines_to_apply; - - hookmodules hooks; - std::vector<std::string> hooknames; - - /** Initialise utility class - */ - SpanningTreeUtilities(InspIRCd* Instance, ModuleSpanningTree* Creator); - /** Destroy class and free listeners etc - */ - ~SpanningTreeUtilities(); - /** Send a message from this server to one other local or remote - */ - bool DoOneToOne(const std::string &prefix, const std::string &command, std::deque<std::string> ¶ms, std::string target); - /** Send a message from this server to all but one other, local or remote - */ - bool DoOneToAllButSender(const std::string &prefix, const std::string &command, std::deque<std::string> ¶ms, std::string omit); - /** Send a message from this server to all but one other, local or remote - */ - bool DoOneToAllButSender(const char* prefix, const char* command, std::deque<std::string> ¶ms, std::string omit); - /** Send a message from this server to all others - */ - bool DoOneToMany(const std::string &prefix, const std::string &command, std::deque<std::string> ¶ms); - /** Send a message from this server to all others - */ - bool DoOneToMany(const char* prefix, const char* command, std::deque<std::string> ¶ms); - /** Send a message from this server to all others, without doing any processing on the command (e.g. send it as-is with colons and all) - */ - bool DoOneToAllButSenderRaw(const std::string &data, const std::string &omit, const std::string &prefix, const irc::string &command, std::deque<std::string> ¶ms); - /** Read the spanningtree module's tags from the config file - */ - void ReadConfiguration(bool rebind); - /** Add a server to the server list for GetListOfServersForChannel - */ - void AddThisServer(TreeServer* server, TreeServerList &list); - /** Compile a list of servers which contain members of channel c - */ - void GetListOfServersForChannel(chanrec* c, TreeServerList &list, char status, const CUList &exempt_list); - /** Find a server by name - */ - TreeServer* FindServer(const std::string &ServerName); - /** Find a route to a server by name - */ - TreeServer* BestRouteTo(const std::string &ServerName); - /** Find a server by glob mask - */ - TreeServer* FindServerMask(const std::string &ServerName); - /** Returns true if this is a server name we recognise - */ - bool IsServer(const std::string &ServerName); - /** Attempt to connect to the failover link of link x - */ - void DoFailOver(Link* x); - /** Find a link tag from a server name - */ - Link* FindLink(const std::string& name); -}; - - /** Each server in the tree is represented by one class of * type TreeServer. A locally connected TreeServer can * have a class of type TreeSocket associated with it, for |