+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
#ifndef __ST_MAIN__
#define __ST_MAIN__
* Failure to document your protocol changes will result in a painfully
* painful death by pain. You have been warned.
*/
-const long ProtocolVersion = 1103;
-
+const long ProtocolVersion = 1105;
+/** Forward declarations
+ */
class cmd_rconnect;
class SpanningTreeUtilities;
class TimeSyncTimer;
+class CacheRefreshTimer;
class TreeServer;
class Link;
+/** This is the main class for the spanningtree module
+ */
class ModuleSpanningTree : public Module
{
int line;
SpanningTreeUtilities* Utils;
public:
+ /** Timer for clock syncs
+ */
TimeSyncTimer *SyncTimer;
+
+ CacheRefreshTimer *RefreshTimer;
+
+ /** Constructor
+ */
ModuleSpanningTree(InspIRCd* Me);
+
+ /** Shows /LINKS
+ */
void ShowLinks(TreeServer* Current, userrec* user, int hops);
+
+ /** Counts local servers
+ */
int CountLocalServs();
+
+ /** Counts local and remote servers
+ */
int CountServs();
+
+ /** Handle LINKS command
+ */
void HandleLinks(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle LUSERS command
+ */
void HandleLusers(const char** parameters, int pcnt, userrec* user);
- void ShowMap(TreeServer* Current, userrec* user, int depth, char matrix[128][80], float &totusers, float &totservers);
+
+ /** Show MAP output to a user (recursive)
+ */
+ void ShowMap(TreeServer* Current, userrec* user, int depth, char matrix[128][128], float &totusers, float &totservers);
+
+ /** Handle remote MOTD
+ */
int HandleMotd(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle remote ADMIN
+ */
int HandleAdmin(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle remote STATS
+ */
int HandleStats(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle MAP command
+ */
void HandleMap(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle SQUIT
+ */
int HandleSquit(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle TIME
+ */
int HandleTime(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle remote WHOIS
+ */
int HandleRemoteWhois(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle remote MODULES
+ */
+ int HandleModules(const char** parameters, int pcnt, userrec* user);
+
+ /** Ping all local servers
+ */
void DoPingChecks(time_t curtime);
+
+ /** Connect a server locally
+ */
void ConnectServer(Link* x);
+
+ /** Check if any servers are due to be autoconnected
+ */
void AutoConnectServers(time_t curtime);
+
+ /** Handle remote VERSON
+ */
int HandleVersion(const char** parameters, int pcnt, userrec* user);
+
+ /** Handle CONNECT
+ */
int HandleConnect(const char** parameters, int pcnt, userrec* user);
+
+ /** Send out time sync to all servers
+ */
void BroadcastTimeSync();
+
+ /** Returns oper-specific MAP information
+ */
+ const std::string MapOperInfo(TreeServer* Current);
+
+ /**
+ ** *** MODULE EVENTS ***
+ **/
+
virtual int OnPreCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, bool validated, const std::string &original_line);
virtual void OnPostCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, CmdResult result, const std::string &original_line);
virtual void OnGetServerDescription(const std::string &servername,std::string &description);
virtual void OnChangeName(userrec* user, const std::string &gecos);
virtual void OnUserPart(userrec* user, chanrec* channel, const std::string &partmessage);
virtual void OnUserConnect(userrec* user);
- virtual void OnUserQuit(userrec* user, const std::string &reason);
+ virtual void OnUserQuit(userrec* user, const std::string &reason, const std::string &oper_message);
virtual void OnUserPostNick(userrec* user, const std::string &oldnick);
virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, const std::string &reason);
virtual void OnRemoteKill(userrec* source, userrec* dest, const std::string &reason);