X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmodules.h;h=bf8b65343045cc6917af81465f503b55819c9028;hb=9982ec4e5b027ed24b1fda5e6fd3ab35b98de1a7;hp=45d2dd492e82479c40172aba51652f177bcf41b0;hpb=87bbf574bde2149daed9f9967f33ceae13250b70;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/modules.h b/include/modules.h index 45d2dd492..bf8b65343 100644 --- a/include/modules.h +++ b/include/modules.h @@ -107,7 +107,7 @@ struct ModResult { * and numerical comparisons in preprocessor macros if they wish to support * multiple versions of InspIRCd in one file. */ -#define INSPIRCD_VERSION_API 6 +#define INSPIRCD_VERSION_API 7 /** * This #define allows us to call a method in all @@ -214,7 +214,7 @@ enum Priority { PRIORITY_FIRST, PRIORITY_LAST, PRIORITY_BEFORE, PRIORITY_AFTER } */ enum Implementation { - I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart, + I_OnUserConnect, I_OnUserPreQuit, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart, I_OnSendSnotice, I_OnUserPreJoin, I_OnUserPreKick, I_OnUserKick, I_OnOper, I_OnUserPreInvite, I_OnUserInvite, I_OnUserPreMessage, I_OnUserPreNick, I_OnUserPostMessage, I_OnUserMessageBlocked, I_OnMode, @@ -223,7 +223,7 @@ enum Implementation I_OnUserPostNick, I_OnPreMode, I_On005Numeric, I_OnKill, I_OnLoadModule, I_OnUnloadModule, I_OnBackgroundTimer, I_OnPreCommand, I_OnCheckReady, I_OnCheckInvite, I_OnRawMode, I_OnCheckKey, I_OnCheckLimit, I_OnCheckBan, I_OnCheckChannelBan, I_OnExtBanCheck, - I_OnPreChangeHost, I_OnPreTopicChange, + I_OnPreChangeHost, I_OnPreTopicChange, I_OnConnectionFail, I_OnPostTopicChange, I_OnPostConnect, I_OnPostDeoper, I_OnPreChangeRealName, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete, I_OnPostOper, I_OnPostCommand, I_OnPostJoin, @@ -307,6 +307,16 @@ class CoreExport Module : public classbase, public usecountbase */ virtual void OnUserConnect(LocalUser* user); + /** Called when before a user quits. + * The details of the exiting user are available to you in the parameter User *user + * This event is only called when the user is fully registered when they quit. To catch + * raw disconnections, use the OnUserDisconnect method. + * @param user The user who is quitting + * @param message The user's quit message (as seen by non-opers) + * @param oper_message The user's quit message (as seen by opers) + */ + virtual ModResult OnUserPreQuit(LocalUser* user, std::string& message, std::string& oper_message); + /** Called when a user quits. * The details of the exiting user are available to you in the parameter User *user * This event is only called when the user is fully registered when they quit. To catch @@ -932,6 +942,14 @@ class CoreExport Module : public classbase, public usecountbase * deny the message from being sent, or MOD_RES_PASSTHRU to let another module handle the event. */ virtual ModResult OnUserWrite(LocalUser* user, ClientProtocol::Message& msg); + + /** Called when a user connection has been unexpectedly disconnected. + * @param user The user who has been unexpectedly disconnected. + * @param error The type of error which caused this connection failure. + * @return MOD_RES_ALLOW to explicitly retain the user as a zombie, MOD_RES_DENY to explicitly + * disconnect the user, or MOD_RES_PASSTHRU to let another module handle the event. + */ + virtual ModResult OnConnectionFail(LocalUser* user, BufferedSocketError error); }; /** ModuleManager takes care of all things module-related @@ -982,7 +1000,7 @@ class CoreExport ModuleManager : public fakederef Module::List EventHandlers[I_END]; /** List of data services keyed by name */ - std::multimap DataProviders; + std::multimap DataProviders; /** A list of ServiceProviders waiting to be registered. * Non-NULL when constructing a Module, NULL otherwise.