]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_spanningtree/main.h
da0860eacd0b96c9aa899e29885a062178cfec06
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / main.h
1 #ifndef __ST_MAIN__
2 #define __ST_MAIN__
3
4 #include "inspircd.h"
5 #include "modules.h"
6
7 /** If you make a change which breaks the protocol, increment this.
8  * If you  completely change the protocol, completely change the number.
9  *
10  * IMPORTANT: If you make changes, document your changes here, without fail:
11  * http://www.inspircd.org/wiki/List_of_protocol_changes_between_versions
12  *
13  * Failure to document your protocol changes will result in a painfully
14  * painful death by pain. You have been warned.
15  */
16 const long ProtocolVersion = 1104;
17
18 /** Forward declarations
19  */
20 class cmd_rconnect;
21 class SpanningTreeUtilities;
22 class TimeSyncTimer;
23 class TreeServer;
24 class Link;
25
26 /** This is the main class for the spanningtree module
27  */
28 class ModuleSpanningTree : public Module
29 {
30         int line;
31         int NumServers;
32         unsigned int max_local;
33         unsigned int max_global;
34         cmd_rconnect* command_rconnect;
35         SpanningTreeUtilities* Utils;
36
37  public:
38         /** Timer for clock syncs
39          */
40         TimeSyncTimer *SyncTimer;
41
42         /** Constructor
43          */
44         ModuleSpanningTree(InspIRCd* Me);
45
46         /** Shows /LINKS
47          */
48         void ShowLinks(TreeServer* Current, userrec* user, int hops);
49
50         /** Counts local servers
51          */
52         int CountLocalServs();
53
54         /** Counts local and remote servers
55          */
56         int CountServs();
57
58         /** Handle LINKS command
59          */
60         void HandleLinks(const char** parameters, int pcnt, userrec* user);
61
62         /** Handle LUSERS command
63          */
64         void HandleLusers(const char** parameters, int pcnt, userrec* user);
65
66         /** Show MAP output to a user (recursive)
67          */
68         void ShowMap(TreeServer* Current, userrec* user, int depth, char matrix[128][80], float &totusers, float &totservers);
69
70         /** Handle remote MOTD
71          */
72         int HandleMotd(const char** parameters, int pcnt, userrec* user);
73
74         /** Handle remote ADMIN
75          */
76         int HandleAdmin(const char** parameters, int pcnt, userrec* user);
77
78         /** Handle remote STATS
79          */
80         int HandleStats(const char** parameters, int pcnt, userrec* user);
81
82         /** Handle MAP command
83          */
84         void HandleMap(const char** parameters, int pcnt, userrec* user);
85
86         /** Handle SQUIT
87          */
88         int HandleSquit(const char** parameters, int pcnt, userrec* user);
89
90         /** Handle TIME
91          */
92         int HandleTime(const char** parameters, int pcnt, userrec* user);
93
94         /** Handle remote WHOIS
95          */
96         int HandleRemoteWhois(const char** parameters, int pcnt, userrec* user);
97
98         /** Ping all local servers
99          */
100         void DoPingChecks(time_t curtime);
101
102         /** Connect a server locally
103          */
104         void ConnectServer(Link* x);
105
106         /** Check if any servers are due to be autoconnected
107          */
108         void AutoConnectServers(time_t curtime);
109
110         /** Handle remote VERSON
111          */
112         int HandleVersion(const char** parameters, int pcnt, userrec* user);
113
114         /** Handle CONNECT
115          */
116         int HandleConnect(const char** parameters, int pcnt, userrec* user);
117
118         /** Send out time sync to all servers
119          */
120         void BroadcastTimeSync();
121
122         /**
123          ** *** MODULE EVENTS ***
124          **/
125
126         virtual int OnPreCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, bool validated, const std::string &original_line);
127         virtual void OnPostCommand(const std::string &command, const char** parameters, int pcnt, userrec *user, CmdResult result, const std::string &original_line);
128         virtual void OnGetServerDescription(const std::string &servername,std::string &description);
129         virtual void OnUserInvite(userrec* source,userrec* dest,chanrec* channel);
130         virtual void OnPostLocalTopicChange(userrec* user, chanrec* chan, const std::string &topic);
131         virtual void OnWallops(userrec* user, const std::string &text);
132         virtual void OnUserNotice(userrec* user, void* dest, int target_type, const std::string &text, char status, const CUList &exempt_list);
133         virtual void OnUserMessage(userrec* user, void* dest, int target_type, const std::string &text, char status, const CUList &exempt_list);
134         virtual void OnBackgroundTimer(time_t curtime);
135         virtual void OnUserJoin(userrec* user, chanrec* channel);
136         virtual void OnChangeHost(userrec* user, const std::string &newhost);
137         virtual void OnChangeName(userrec* user, const std::string &gecos);
138         virtual void OnUserPart(userrec* user, chanrec* channel, const std::string &partmessage);
139         virtual void OnUserConnect(userrec* user);
140         virtual void OnUserQuit(userrec* user, const std::string &reason);
141         virtual void OnUserPostNick(userrec* user, const std::string &oldnick);
142         virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, const std::string &reason);
143         virtual void OnRemoteKill(userrec* source, userrec* dest, const std::string &reason);
144         virtual void OnRehash(userrec* user, const std::string &parameter);
145         virtual void OnOper(userrec* user, const std::string &opertype);
146         void OnLine(userrec* source, const std::string &host, bool adding, char linetype, long duration, const std::string &reason);
147         virtual void OnAddGLine(long duration, userrec* source, const std::string &reason, const std::string &hostmask);
148         virtual void OnAddZLine(long duration, userrec* source, const std::string &reason, const std::string &ipmask);
149         virtual void OnAddQLine(long duration, userrec* source, const std::string &reason, const std::string &nickmask);
150         virtual void OnAddELine(long duration, userrec* source, const std::string &reason, const std::string &hostmask);
151         virtual void OnDelGLine(userrec* source, const std::string &hostmask);
152         virtual void OnDelZLine(userrec* source, const std::string &ipmask);
153         virtual void OnDelQLine(userrec* source, const std::string &nickmask);
154         virtual void OnDelELine(userrec* source, const std::string &hostmask);
155         virtual void OnMode(userrec* user, void* dest, int target_type, const std::string &text);
156         virtual int OnStats(char statschar, userrec* user, string_list &results);
157         virtual void OnSetAway(userrec* user);
158         virtual void OnCancelAway(userrec* user);
159         virtual void ProtoSendMode(void* opaque, int target_type, void* target, const std::string &modeline);
160         virtual void ProtoSendMetaData(void* opaque, int target_type, void* target, const std::string &extname, const std::string &extdata);
161         virtual void OnEvent(Event* event);
162         virtual ~ModuleSpanningTree();
163         virtual Version GetVersion();
164         void Implements(char* List);
165         Priority Prioritize();
166 };
167
168 #endif