X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmodules.h;h=ba84c4ccc30a308a035637e2c03709ef764f91ac;hb=c60f88bb5ce23d1291dddfd3e15ba71c801b7d3c;hp=9355712bf5dc87a058b8b5d39962691b25f770ab;hpb=ef48486b09587a73568a35a1dfe9e3cab7a44ebb;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/modules.h b/include/modules.h index 9355712bf..ba84c4ccc 100644 --- a/include/modules.h +++ b/include/modules.h @@ -216,18 +216,18 @@ enum Implementation I_OnUserPreInvite, I_OnUserInvite, I_OnUserPreMessage, I_OnUserPreNick, I_OnUserPostMessage, I_OnUserMessageBlocked, I_OnMode, I_OnDecodeMetaData, I_OnAcceptConnection, I_OnUserInit, - I_OnChangeHost, I_OnChangeName, I_OnAddLine, I_OnDelLine, I_OnExpireLine, + I_OnChangeHost, I_OnChangeRealName, I_OnAddLine, I_OnDelLine, I_OnExpireLine, 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_OnChangeLocalUserHost, I_OnPreTopicChange, I_OnPostTopicChange, I_OnPostConnect, I_OnPostDeoper, - I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete, - I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin, + I_OnPreChangeRealName, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete, + I_OnPostOper, I_OnPostCommand, I_OnPostJoin, I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass, I_OnUserMessage, I_OnPassCompare, I_OnNamesListItem, I_OnNumeric, I_OnPreRehash, I_OnModuleRehash, I_OnSendWhoLine, I_OnChangeIdent, I_OnSetUserIP, - I_OnServiceAdd, I_OnServiceDel, + I_OnServiceAdd, I_OnServiceDel, I_OnUserWrite, I_END }; @@ -561,9 +561,8 @@ class CoreExport Module : public classbase, public usecountbase * @param changelist The changed modes. * @param processflags Flags passed to ModeParser::Process(), see ModeParser::ModeProcessFlags * for the possible flags. - * @param output_mode Changed modes, including '+' and '-' characters, not including any parameters */ - virtual void OnMode(User* user, User* usertarget, Channel* chantarget, const Modes::ChangeList& changelist, ModeParser::ModeProcessFlag processflags, const std::string& output_mode); + virtual void OnMode(User* user, User* usertarget, Channel* chantarget, const Modes::ChangeList& changelist, ModeParser::ModeProcessFlag processflags); /** Allows module data, sent via ProtoSendMetaData, to be decoded again by a receiving module. * Please see src/modules/m_swhois.cpp for a working example of how to use this method call. @@ -580,12 +579,12 @@ class CoreExport Module : public classbase, public usecountbase */ virtual void OnChangeHost(User* user, const std::string &newhost); - /** Called whenever a user's GECOS (realname) is changed. + /** Called whenever a user's real name is changed. * This event triggers after the name has been set. - * @param user The user who's GECOS is being changed - * @param gecos The new GECOS being set on the user + * @param user The user who's real name is being changed + * @param name The new real name being set on the user */ - virtual void OnChangeName(User* user, const std::string &gecos); + virtual void OnChangeRealName(User* user, const std::string& real); /** Called whenever a user's IDENT is changed. * This event triggers after the name has been set. @@ -717,10 +716,9 @@ class CoreExport Module : public classbase, public usecountbase * @param user the user issuing the command * @param validated True if the command has passed all checks, e.g. it is recognised, has enough parameters, the user has permission to execute it, etc. * You should only change the parameter list and command string if validated == false (e.g. before the command lookup occurs). - * @param original_line The entire original line as passed to the parser from the user * @return 1 to block the command, 0 to allow */ - virtual ModResult OnPreCommand(std::string &command, std::vector& parameters, LocalUser *user, bool validated, const std::string &original_line); + virtual ModResult OnPreCommand(std::string& command, CommandBase::Params& parameters, LocalUser* user, bool validated); /** Called after any command has been executed. * This event occurs for all registered commands, wether they are registered in the core, @@ -731,9 +729,8 @@ class CoreExport Module : public classbase, public usecountbase * @param parameters An array of array of characters containing the parameters for the command * @param user the user issuing the command * @param result The return code given by the command handler, one of CMD_SUCCESS or CMD_FAILURE - * @param original_line The entire original line as passed to the parser from the user */ - virtual void OnPostCommand(Command* command, const std::vector& parameters, LocalUser* user, CmdResult result, const std::string& original_line); + virtual void OnPostCommand(Command* command, const CommandBase::Params& parameters, LocalUser* user, CmdResult result); /** Called when a user is first connecting, prior to starting DNS lookups, checking initial * connect class, or accepting any commands. @@ -841,13 +838,13 @@ class CoreExport Module : public classbase, public usecountbase */ virtual ModResult OnChangeLocalUserHost(LocalUser* user, const std::string &newhost); - /** Called whenever a change of a local users GECOS (fullname field) is attempted. - * return 1 to deny the name change, or 0 to allow it. - * @param user The user whos GECOS will be changed - * @param newhost The new GECOS - * @return 1 to deny the GECOS change, 0 to allow + /** Called whenever a change of a local users real name is attempted. + * return MOD_RES_DENY to deny the name change, or MOD_RES_ALLOW to allow it. + * @param user The user whos real name will be changed + * @param newhost The new real name. + * @return MOD_RES_DENY to deny the real name change, MOD_RES_ALLOW to allow */ - virtual ModResult OnChangeLocalUserGECOS(LocalUser* user, const std::string &newhost); + virtual ModResult OnPreChangeRealName(LocalUser* user, const std::string &newhost); /** Called before a topic is changed. * Return 1 to deny the topic change, 0 to check details on the change, -1 to let it through with no checks @@ -896,16 +893,6 @@ class CoreExport Module : public classbase, public usecountbase */ virtual ModResult OnAcceptConnection(int fd, ListenSocket* sock, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server); - /** Called whenever a user sets away or returns from being away. - * The away message is available as a parameter, but should not be modified. - * At this stage, it has already been copied into the user record. - * If awaymsg is empty, the user is returning from away. - * @param user The user setting away - * @param awaymsg The away message of the user, or empty if returning from away - * @return nonzero if the away message should be blocked - should ONLY be nonzero for LOCAL users (IS_LOCAL) (no output is returned by core) - */ - virtual ModResult OnSetAway(User* user, const std::string &awaymsg); - /** Called at intervals for modules to garbage-collect any hashes etc. * Certain data types such as hash_map 'leak' buckets, which must be * tidied up and freed by copying into a new item every so often. This @@ -965,6 +952,8 @@ class CoreExport Module : public classbase, public usecountbase * @param service ServiceProvider being unregistered. */ virtual void OnServiceDel(ServiceProvider& service); + + virtual ModResult OnUserWrite(LocalUser* user, ClientProtocol::Message& msg); }; /** ModuleManager takes care of all things module-related @@ -1198,27 +1187,6 @@ class CoreExport ModuleManager : public fakederef #define MODULE_INIT_SYM_FN_2(x,y) MODULE_INIT_SYM_FN_1(x,y) #define MODULE_INIT_SYM_FN_1(x,y) inspircd_module_ ## x ## _ ## y -#ifdef INSPIRCD_STATIC - -struct AllCommandList { - typedef Command* (*fn)(Module*); - AllCommandList(fn cmd); -}; -#define COMMAND_INIT(x) static Command* MK_ ## x(Module* m) { return new x(m); } \ - static const AllCommandList PREP_ ## x(&MK_ ## x); - -struct AllModuleList { - typedef Module* (*fn)(); - fn init; - std::string name; - AllModuleList(fn mod, const std::string& Name); -}; - -#define MODULE_INIT(x) static Module* MK_ ## x() { return new x; } \ - static const AllModuleList PREP_ ## x(&MK_ ## x, MODNAME ".so"); - -#else - /** This definition is used as shorthand for the various classes * and functions needed to make a module loadable by the OS. * It defines the class factory and external init_module function. @@ -1231,5 +1199,3 @@ struct AllModuleList { extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION; #define COMMAND_INIT(c) MODULE_INIT(CommandModule) - -#endif