I_OnChangeLocalUserHost, I_OnPreTopicChange,
I_OnPostTopicChange, I_OnPostConnect, I_OnPostDeoper,
I_OnPreChangeRealName, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
- I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin,
+ 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
};
* @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.
* @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, CommandBase::Params& 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,
* @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 CommandBase::Params& 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.
*/
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
* @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
#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.
extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION;
#define COMMAND_INIT(c) MODULE_INIT(CommandModule<c>)
-
-#endif