X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Futils.h;h=7d5ffa21629f05df95f6e0fda4c8e0e741f24b3d;hb=c05ad37bfd03486475889485606ed5cffc7bf5a2;hp=2f8fc75dbd14a123cfacfb6aa243f8d4d1816607;hpb=6d03943426dcce76ba66567a9b18425a5ebb4c0c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h index 2f8fc75db..7d5ffa216 100644 --- a/src/modules/m_spanningtree/utils.h +++ b/src/modules/m_spanningtree/utils.h @@ -1,18 +1,27 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2009 Daniel De Graaf + * Copyright (C) 2008 Robin Burchell + * Copyright (C) 2007 Dennis Friis + * Copyright (C) 2007 Craig Edwards * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * - * --------------------------------------------------- + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ -#ifndef __ST__UTIL__ -#define __ST__UTIL__ + +#ifndef M_SPANNINGTREE_UTILS_H +#define M_SPANNINGTREE_UTILS_H #include "inspircd.h" @@ -20,63 +29,21 @@ class TreeServer; class TreeSocket; class Link; +class Autoconnect; class ModuleSpanningTree; class SpanningTreeUtilities; /* This hash_map holds the hash equivalent of the server * tree, used for rapid linear lookups. */ -#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED) - typedef nspace::hash_map > > server_hash; +#ifdef HASHMAP_DEPRECATED + typedef nspace::hash_map server_hash; #else - #ifdef HASHCOMP_DEPRECATED - typedef nspace::hash_map server_hash; - #else - typedef nspace::hash_map, irc::StrHashComp> server_hash; - #endif + typedef nspace::hash_map, irc::StrHashComp> server_hash; #endif -/* - * Initialises server connections - */ -class ServerSocketListener : public ListenSocketBase -{ - SpanningTreeUtilities *Utils; - - public: - ServerSocketListener(SpanningTreeUtilities *u, int port, char* addr) : ListenSocketBase(port, addr) - { - this->Utils = u; - Hook = NULL; - } - - Module* Hook; - - virtual void OnAcceptReady(int nfd); -}; - typedef std::map TreeServerList; -/** A group of modules that implement BufferedSocketHook - * that we can use to hook our server to server connections. - */ -typedef std::map hookmodules; - -/** The Autoconnect class might as well be a struct, - * but this is C++ and we don't believe in structs (!). - * It holds the entire information of one - * tag from the main config file. We maintain a list - * of them, and populate the list on rehash/load. - */ -class Autoconnect : public classbase -{ - public: - unsigned long Period; - std::string Server; - time_t NextConnectTime; - std::string FailOver; -}; - /** Contains helper functions and variables for this module, * and keeps them out of the global namespace */ @@ -105,9 +72,6 @@ class SpanningTreeUtilities : public classbase */ bool quiet_bursts; - /** Socket bindings for listening sockets - */ - std::vector Bindings; /* Number of seconds that a server can go without ping * before opers are warned of high latency. */ @@ -115,9 +79,6 @@ class SpanningTreeUtilities : public classbase /** This variable represents the root of the server tree */ TreeServer *TreeRoot; - /** Represents the server whose command we are processing - */ - FakeUser *ServerUser; /** IPs allowed to link to us */ std::vector ValidIPs; @@ -135,18 +96,10 @@ class SpanningTreeUtilities : public classbase std::map > timeoutlist; /** Holds the data from the tags in the conf */ - std::vector LinkBlocks; + std::vector > LinkBlocks; /** Holds the data from the tags in the conf */ - std::vector AutoconnectBlocks; - - /** List of module pointers which can provide I/O abstraction - */ - hookmodules hooks; - - /** List of module names which can provide I/O abstraction - */ - std::vector hooknames; + std::vector > AutoconnectBlocks; /** True (default) if we are to use challenge-response HMAC * to authenticate passwords. @@ -164,37 +117,39 @@ class SpanningTreeUtilities : public classbase */ SpanningTreeUtilities(ModuleSpanningTree* Creator); + /** Prepare for class destruction + */ + CullResult cull(); + /** Destroy class and free listeners etc */ ~SpanningTreeUtilities(); + void RouteCommand(TreeServer*, const std::string&, const parameterlist&, User*); + /** Send a message from this server to one other local or remote */ - bool DoOneToOne(const std::string &prefix, const std::string &command, parameterlist ¶ms, std::string target); + bool DoOneToOne(const std::string &prefix, const std::string &command, const parameterlist ¶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, parameterlist ¶ms, std::string omit); + bool DoOneToAllButSender(const std::string &prefix, const std::string &command, const parameterlist ¶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, parameterlist ¶ms, std::string omit); + bool DoOneToAllButSender(const char* prefix, const char* command, const parameterlist ¶ms, std::string omit); /** Send a message from this server to all others */ - bool DoOneToMany(const std::string &prefix, const std::string &command, parameterlist ¶ms); + bool DoOneToMany(const std::string &prefix, const std::string &command, const parameterlist ¶ms); /** Send a message from this server to all others */ - bool DoOneToMany(const char* prefix, const char* command, parameterlist ¶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, parameterlist ¶ms); + bool DoOneToMany(const char* prefix, const char* command, const parameterlist ¶ms); /** Read the spanningtree module's tags from the config file */ - void ReadConfiguration(bool rebind); + void ReadConfiguration(); /** Add a server to the server list for GetListOfServersForChannel */ @@ -220,14 +175,6 @@ class SpanningTreeUtilities : public classbase */ 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(Autoconnect* x); - /** Find a link tag from a server name */ Link* FindLink(const std::string& name);