* 'FOREACH_MOD(OnConnect,(user));'
*/
#define FOREACH_MOD(y,x) do { \
- const IntModuleList& _handlers = ServerInstance->Modules->EventHandlers[I_ ## y]; \
- for (IntModuleList::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
+ const Module::List& _handlers = ServerInstance->Modules->EventHandlers[I_ ## y]; \
+ for (Module::List::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
{ \
_next = _i+1; \
try \
*/
#define DO_EACH_HOOK(n,v,args) \
do { \
- const IntModuleList& _handlers = ServerInstance->Modules->EventHandlers[I_ ## n]; \
- for (IntModuleList::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
+ const Module::List& _handlers = ServerInstance->Modules->EventHandlers[I_ ## n]; \
+ for (Module::List::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
{ \
_next = _i+1; \
try \
I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart,
I_OnSendSnotice, I_OnUserPreJoin, I_OnUserPreKick, I_OnUserKick, I_OnOper, I_OnInfo,
I_OnUserPreInvite, I_OnUserInvite, I_OnUserPreMessage, I_OnUserPreNick,
- I_OnUserPostMessage, I_OnMode,
+ I_OnUserPostMessage, I_OnUserMessageBlocked, I_OnMode,
I_OnDecodeMetaData, I_OnAcceptConnection, I_OnUserInit,
I_OnChangeHost, I_OnChangeName, 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_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
+ I_OnPostTopicChange, I_OnPostConnect, I_OnPostDeoper,
+ I_OnPreChangeRealName, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin,
I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass,
I_OnUserMessage, I_OnPassCompare, I_OnNamesListItem, I_OnNumeric,
void DetachEvent(Implementation i);
public:
+ /** A list of modules. */
+ typedef std::vector<Module*> List;
+
/** File that this module was loaded from
*/
std::string ModuleSourceFile;
+
/** Reference to the dlopen() value
*/
DLLManager* ModuleDLLManager;
*/
virtual void OnPostOper(User* user, const std::string &opername, const std::string &opertype);
+ /** Called after a user deopers locally.
+ * @param user The user who has deopered.
+ */
+ virtual void OnPostDeoper(User* user);
+
/** Called whenever a user types /INFO.
* The User will contain the information of the user who typed the command. Modules may use this
* method to output their own credits in /INFO (which is the ircd's version of an about box).
*/
virtual void OnUserMessage(User* user, const MessageTarget& target, const MessageDetails& details);
+ /** Called when a message sent by a user to a channel, a user, or a server glob mask is blocked.
+ * @param user The user sending the message.
+ * @param target The target of the message. This can either be a channel, a user, or a server
+ * glob mask.
+ * @param details Details about the message such as the message text and type. See the
+ * MessageDetails class for more information.
+ */
+ virtual void OnUserMessageBlocked(User* user, const MessageTarget& target, const MessageDetails& details);
+
/** Called after every MODE command sent from a user
* Either the usertarget or the chantarget variable contains the target of the modes,
* the actual target will have a non-NULL pointer.
*/
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 OnChangeName(User* user, const std::string& real);
/** Called whenever a user's IDENT is changed.
* This event triggers after the name has been set.
* @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<std::string>& parameters, LocalUser *user, bool validated, const std::string &original_line);
+ virtual ModResult OnPreCommand(std::string& command, CommandBase::Params& parameters, LocalUser* user, bool validated, const std::string& original_line);
/** Called after any command has been executed.
* This event occurs for all registered commands, wether they are registered in the core,
* @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<std::string>& parameters, LocalUser* user, CmdResult result, const std::string& original_line);
+ virtual void OnPostCommand(Command* command, const CommandBase::Params& parameters, LocalUser* user, CmdResult result, const std::string& original_line);
/** Called when a user is first connecting, prior to starting DNS lookups, checking initial
* connect class, or accepting any commands.
*/
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
virtual void OnServiceDel(ServiceProvider& service);
};
-/** A list of modules
- */
-typedef std::vector<Module*> IntModuleList;
-
/** ModuleManager takes care of all things module-related
* in the core.
*/
/** Event handler hooks.
* This needs to be public to be used by FOREACH_MOD and friends.
*/
- IntModuleList EventHandlers[I_END];
+ Module::List EventHandlers[I_END];
/** List of data services keyed by name */
std::multimap<std::string, ServiceProvider*> DataProviders;