/** InspIRCd major version.
* 1.2 -> 102; 2.1 -> 201; 2.12 -> 212
*/
-#define INSPIRCD_VERSION_MAJ 202
+#define INSPIRCD_VERSION_MAJ 300
+
/** InspIRCd API version.
* If you change any API elements, increment this value. This counter should be
* reset whenever the major version is changed. Modules can use these two values
enum Implementation
{
I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart,
- I_OnSendSnotice, I_OnUserPreJoin, I_OnUserPreKick, I_OnUserKick, I_OnOper, I_OnInfo,
+ I_OnSendSnotice, I_OnUserPreJoin, I_OnUserPreKick, I_OnUserKick, I_OnOper,
I_OnUserPreInvite, I_OnUserInvite, I_OnUserPreMessage, I_OnUserPreNick,
I_OnUserPostMessage, I_OnUserMessageBlocked, I_OnMode,
I_OnDecodeMetaData, I_OnAcceptConnection, I_OnUserInit,
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_OnPreChangeHost, 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_OnPreRehash, I_OnModuleRehash, I_OnChangeIdent, I_OnSetUserIP,
+ I_OnServiceAdd, I_OnServiceDel, I_OnUserWrite,
I_END
};
*/
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).
- * It is purposefully not possible to modify any info that has already been output, or halt the list.
- * You must write a 371 numeric to the user, containing your info in the following format:
- *
- * <nick> :information here
- *
- * @param user The user issuing /INFO
- */
- virtual void OnInfo(User* user);
-
/** Called whenever a user is about to invite another user into a channel, before any processing is done.
* Returning 1 from this function stops the process immediately, causing no
* output to be sent to the user by the core. If you do this you must produce your own numerics,
* @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.
/** Called whenever a user's real name is changed.
* This event triggers after the name has been set.
* @param user The user who's real name is being changed
- * @param name The new real name being set on the user
+ * @param real The new real name being set on the user
*/
virtual void OnChangeRealName(User* user, const std::string& real);
* @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 loop Whether the command is being called from LoopCall or directly.
*/
- virtual void OnPostCommand(Command* command, const CommandBase::Params& parameters, LocalUser* user, CmdResult result);
+ virtual void OnPostCommand(Command* command, const CommandBase::Params& parameters, LocalUser* user, CmdResult result, bool loop);
/** Called when a user is first connecting, prior to starting DNS lookups, checking initial
* connect class, or accepting any commands.
* @param newhost The new hostname
* @return 1 to deny the host change, 0 to allow
*/
- virtual ModResult OnChangeLocalUserHost(LocalUser* user, const std::string &newhost);
+ virtual ModResult OnPreChangeHost(LocalUser* user, const std::string &newhost);
/** 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.
*/
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
virtual ModResult OnNumeric(User* user, const Numeric::Numeric& numeric);
- /** Called whenever a result from /WHO is about to be returned
- * @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 numeric Numeric to send; modifiable.
- * @return MOD_RES_PASSTHRU to allow the line to be displayed, MOD_RES_DENY to hide it
- */
- virtual ModResult OnSendWhoLine(User* source, const std::vector<std::string>& params, User* user, Membership* memb, Numeric::Numeric& numeric);
-
/** 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.
* @param user The user whose IP is being set
* @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
return new y; \
} \
extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION;
-
-#define COMMAND_INIT(c) MODULE_INIT(CommandModule<c>)