X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmodules.h;h=4f363b2a606d754f3d57ff5faa6420968917bf55;hb=503ba19ec18ded4d1b373c799b795e39262088e3;hp=d221803ab0698214da8fcdbab35c6f2634478233;hpb=932e8d13f81c7c94a89dc3702f6d45bc185f5dcf;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/modules.h b/include/modules.h index d221803ab..4f363b2a6 100644 --- a/include/modules.h +++ b/include/modules.h @@ -264,7 +264,7 @@ enum Implementation I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete, I_OnPostOper, I_OnSyncNetwork, I_OnSetAway, I_OnPostCommand, I_OnPostJoin, I_OnWhoisLine, I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass, - I_OnText, I_OnPassCompare, I_OnRunTestSuite, I_OnNamesListItem, I_OnNumeric, + I_OnText, I_OnPassCompare, I_OnNamesListItem, I_OnNumeric, I_OnPreRehash, I_OnModuleRehash, I_OnSendWhoLine, I_OnChangeIdent, I_OnSetUserIP, I_END }; @@ -558,17 +558,14 @@ class CoreExport Module : public classbase, public usecountbase */ virtual void OnBuildNeighborList(User* source, IncludeChanList& include_c, std::map& exceptions); - /** Called before any nickchange, local or remote. This can be used to implement Q-lines etc. - * Please note that although you can see remote nickchanges through this function, you should - * NOT make any changes to the User if the user is a remote user as this may cause a desnyc. - * check user->server before taking any action (including returning nonzero from the method). + /** Called before local nickname changes. This can be used to implement Q-lines etc. * If your method returns nonzero, the nickchange is silently forbidden, and it is down to your * module to generate some meaninful output. * @param user The username changing their nick * @param newnick Their new nickname * @return 1 to deny the change, 0 to allow */ - virtual ModResult OnUserPreNick(User* user, const std::string &newnick); + virtual ModResult OnUserPreNick(LocalUser* user, const std::string& newnick); /** Called after any PRIVMSG sent from a user. * The dest variable contains a User* if target_type is TYPE_USER and a Channel* @@ -853,15 +850,14 @@ class CoreExport Module : public classbase, public usecountbase * Return 1 from this function to block the mode character from being processed entirely. * @param user The user who is sending the mode * @param chan The channel the mode is being sent to (or NULL if a usermode) - * @param mode The mode character being set + * @param mh The mode handler for the mode being changed * @param param The parameter for the mode or an empty string * @param adding true of the mode is being added, false if it is being removed - * @param pcnt The parameter count for the mode (0 or 1) * @return ACR_DENY to deny the mode, ACR_DEFAULT to do standard mode checking, and ACR_ALLOW * to skip all permission checking. Please note that for remote mode changes, your return value * will be ignored! */ - virtual ModResult OnRawMode(User* user, Channel* chan, const char mode, const std::string ¶m, bool adding, int pcnt); + virtual ModResult OnRawMode(User* user, Channel* chan, ModeHandler* mh, const std::string& param, bool adding); /** Called whenever a user joins a channel, to determine if key checks should go ahead or not. * This method will always be called for each join, wether or not the channel is actually +k, and @@ -1034,16 +1030,24 @@ class CoreExport Module : public classbase, public usecountbase */ virtual ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass); +#ifdef INSPIRCD_ENABLE_TESTSUITE /** Add test suite hooks here. These are used for testing functionality of a module * via the --testsuite debugging parameter. */ virtual void OnRunTestSuite(); +#endif /** Called for every item in a NAMES list, so that modules may reformat portions of it as they see fit. - * For example NAMESX, channel mode +u and +I, and UHNAMES. If the nick is set to an empty string by any - * module, then this will cause the nickname not to be displayed at all. + * For example NAMESX, channel mode +u and +I, and UHNAMES. + * @param issuer The user who is going to receive the NAMES list being built + * @param item The channel member being considered for inclusion + * @param prefixes The prefix character(s) to display, initially set to the prefix char of the most powerful + * prefix mode the member has, can be changed + * @param nick The nick to display, initially set to the member's nick, can be changed + * @return Return MOD_RES_PASSTHRU to allow the member to be displayed, MOD_RES_DENY to cause them to be + * excluded from this NAMES list */ - virtual void OnNamesListItem(User* issuer, Membership* item, std::string &prefixes, std::string &nick); + virtual ModResult OnNamesListItem(User* issuer, Membership* item, std::string& prefixes, std::string& nick); virtual ModResult OnNumeric(User* user, unsigned int numeric, const std::string &text); @@ -1051,9 +1055,10 @@ class CoreExport Module : public classbase, public usecountbase * @param source The user running the /WHO query * @param params The parameters to the /WHO query * @param user The user that this line of the query is about + * @param memb The member shown in this line, NULL if no channel is in this line * @param line The raw line to send; modifiable, if empty no line will be returned. */ - virtual void OnSendWhoLine(User* source, const std::vector& params, User* user, std::string& line); + virtual void OnSendWhoLine(User* source, const std::vector& params, User* user, Membership* memb, std::string& line); /** Called whenever a local user's IP is set for the first time, or when a local user's IP changes due to * a module like m_cgiirc changing it. @@ -1073,7 +1078,7 @@ typedef IntModuleList::iterator EventHandlerIter; /** ModuleManager takes care of all things module-related * in the core. */ -class CoreExport ModuleManager +class CoreExport ModuleManager : public fakederef { public: typedef std::vector ServiceList; @@ -1335,7 +1340,7 @@ struct AllModuleList { { \ return new y; \ } \ - extern "C" DllExport const char inspircd_src_version[] = VERSION " " REVISION; + extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION " " INSPIRCD_REVISION; #endif #define COMMAND_INIT(c) MODULE_INIT(CommandModule)