summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/channels.h21
-rw-r--r--include/modules.h155
-rw-r--r--src/channels.cpp166
-rw-r--r--src/command_parse.cpp25
-rw-r--r--src/commands/cmd_away.cpp10
-rw-r--r--src/commands/cmd_invite.cpp8
-rw-r--r--src/commands/cmd_kill.cpp6
-rw-r--r--src/commands/cmd_nick.cpp17
-rw-r--r--src/commands/cmd_notice.cpp20
-rw-r--r--src/commands/cmd_privmsg.cpp22
-rw-r--r--src/commands/cmd_stats.cpp6
-rw-r--r--src/commands/cmd_user.cpp6
-rw-r--r--src/helperfuncs.cpp4
-rw-r--r--src/inspircd.cpp9
-rw-r--r--src/mode.cpp22
-rw-r--r--src/modes/cmode_b.cpp14
-rw-r--r--src/modes/cmode_h.cpp16
-rw-r--r--src/modes/cmode_o.cpp16
-rw-r--r--src/modes/cmode_v.cpp16
-rw-r--r--src/modules.cpp64
-rw-r--r--src/modules/extra/m_geoip.cpp4
-rw-r--r--src/modules/extra/m_ldapauth.cpp12
-rw-r--r--src/modules/extra/m_ldapoper.cpp6
-rw-r--r--src/modules/extra/m_sqlauth.cpp12
-rw-r--r--src/modules/extra/m_sqllog.cpp8
-rw-r--r--src/modules/extra/m_sqloper.cpp6
-rw-r--r--src/modules/extra/m_ziplink.cpp6
-rw-r--r--src/modules/m_abbreviation.cpp10
-rw-r--r--src/modules/m_alias.cpp12
-rw-r--r--src/modules/m_allowinvite.cpp13
-rw-r--r--src/modules/m_antibear.cpp12
-rw-r--r--src/modules/m_antibottler.cpp10
-rw-r--r--src/modules/m_auditorium.cpp6
-rw-r--r--src/modules/m_banexception.cpp24
-rw-r--r--src/modules/m_banredirect.cpp12
-rw-r--r--src/modules/m_blockamsg.cpp10
-rw-r--r--src/modules/m_blockcaps.cpp14
-rw-r--r--src/modules/m_blockcolor.cpp12
-rw-r--r--src/modules/m_callerid.cpp22
-rw-r--r--src/modules/m_cap.cpp6
-rw-r--r--src/modules/m_cban.cpp12
-rw-r--r--src/modules/m_censor.cpp14
-rw-r--r--src/modules/m_cgiirc.cpp6
-rw-r--r--src/modules/m_chanfilter.cpp14
-rw-r--r--src/modules/m_chanlog.cpp6
-rw-r--r--src/modules/m_channelban.cpp6
-rw-r--r--src/modules/m_chanprotect.cpp28
-rw-r--r--src/modules/m_cloaking.cpp6
-rw-r--r--src/modules/m_commonchans.cpp8
-rw-r--r--src/modules/m_conn_waitpong.cpp16
-rw-r--r--src/modules/m_connflood.cpp12
-rw-r--r--src/modules/m_customtitle.cpp4
-rw-r--r--src/modules/m_dccallow.cpp24
-rw-r--r--src/modules/m_deaf.cpp8
-rw-r--r--src/modules/m_delayjoin.cpp6
-rw-r--r--src/modules/m_delaymsg.cpp14
-rw-r--r--src/modules/m_denychans.cpp12
-rw-r--r--src/modules/m_dnsbl.cpp12
-rw-r--r--src/modules/m_filter.cpp46
-rw-r--r--src/modules/m_gecosban.cpp2
-rw-r--r--src/modules/m_hidechans.cpp14
-rw-r--r--src/modules/m_hideoper.cpp10
-rw-r--r--src/modules/m_ident.cpp16
-rw-r--r--src/modules/m_invisible.cpp18
-rw-r--r--src/modules/m_inviteexception.cpp6
-rw-r--r--src/modules/m_joinflood.cpp6
-rw-r--r--src/modules/m_jumpserver.cpp6
-rw-r--r--src/modules/m_kicknorejoin.cpp6
-rw-r--r--src/modules/m_lockserv.cpp10
-rw-r--r--src/modules/m_maphide.cpp6
-rw-r--r--src/modules/m_messageflood.cpp16
-rw-r--r--src/modules/m_muteban.cpp14
-rw-r--r--src/modules/m_namesx.cpp6
-rw-r--r--src/modules/m_nickflood.cpp10
-rw-r--r--src/modules/m_nicklock.cpp12
-rw-r--r--src/modules/m_noctcp.cpp12
-rw-r--r--src/modules/m_nokicks.cpp10
-rw-r--r--src/modules/m_nonicks.cpp17
-rw-r--r--src/modules/m_nonotice.cpp12
-rw-r--r--src/modules/m_nopartmsg.cpp2
-rw-r--r--src/modules/m_operchans.cpp10
-rw-r--r--src/modules/m_operinvex.cpp12
-rw-r--r--src/modules/m_operlevels.cpp6
-rw-r--r--src/modules/m_operlog.cpp6
-rw-r--r--src/modules/m_operprefix.cpp6
-rw-r--r--src/modules/m_override.cpp43
-rw-r--r--src/modules/m_password_hash.cpp9
-rw-r--r--src/modules/m_permchannels.cpp6
-rw-r--r--src/modules/m_redirect.cpp8
-rw-r--r--src/modules/m_regonlycreate.cpp10
-rw-r--r--src/modules/m_restrictchans.cpp8
-rw-r--r--src/modules/m_restrictmsg.cpp10
-rw-r--r--src/modules/m_rline.cpp6
-rw-r--r--src/modules/m_safelist.cpp16
-rw-r--r--src/modules/m_sasl.cpp4
-rw-r--r--src/modules/m_securelist.cpp10
-rw-r--r--src/modules/m_serverban.cpp2
-rw-r--r--src/modules/m_services_account.cpp32
-rw-r--r--src/modules/m_servprotect.cpp24
-rw-r--r--src/modules/m_shun.cpp18
-rw-r--r--src/modules/m_silence.cpp20
-rw-r--r--src/modules/m_spanningtree/main.cpp24
-rw-r--r--src/modules/m_spanningtree/main.h28
-rw-r--r--src/modules/m_spanningtree/override_admin.cpp8
-rw-r--r--src/modules/m_spanningtree/override_map.cpp6
-rw-r--r--src/modules/m_spanningtree/override_modules.cpp8
-rw-r--r--src/modules/m_spanningtree/override_motd.cpp8
-rw-r--r--src/modules/m_spanningtree/override_squit.cpp6
-rw-r--r--src/modules/m_spanningtree/override_stats.cpp14
-rw-r--r--src/modules/m_spanningtree/override_time.cpp6
-rw-r--r--src/modules/m_spanningtree/override_whois.cpp8
-rw-r--r--src/modules/m_spanningtree/precommand.cpp14
-rw-r--r--src/modules/m_spy.cpp6
-rw-r--r--src/modules/m_sslinfo.cpp8
-rw-r--r--src/modules/m_sslmodes.cpp8
-rw-r--r--src/modules/m_stripcolor.cpp12
-rw-r--r--src/modules/m_svshold.cpp12
-rw-r--r--src/modules/m_swhois.cpp4
-rw-r--r--src/modules/m_timedbans.cpp4
-rw-r--r--src/modules/m_uhnames.cpp6
-rw-r--r--src/modules/m_watch.cpp4
-rw-r--r--src/snomasks.cpp6
-rw-r--r--src/users.cpp42
123 files changed, 868 insertions, 945 deletions
diff --git a/include/channels.h b/include/channels.h
index e471e30cb..82bf50853 100644
--- a/include/channels.h
+++ b/include/channels.h
@@ -29,6 +29,7 @@ enum ChannelModes {
/* Forward declarations - needed */
class User;
+struct ModResult;
/** Holds an entry for a ban list, exemption list, or invite list.
* This class contains a single element in a channel list, such as a banlist.
@@ -530,14 +531,12 @@ class CoreExport Channel : public Extensible
* a given user for this channel.
* @param u The user to match bans against
* @param type The type of extban to check
- * @returns 1 = exempt, 0 = no match, -1 = banned
*/
- int GetExtBanStatus(User *u, char type);
+ ModResult GetExtBanStatus(User *u, char type);
/** Overloaded version to check whether a particular string is extbanned
- * @returns 1 = exempt, 0 = no match, -1 = banned
*/
- int GetExtBanStatus(const std::string &str, char type);
+ ModResult GetExtBanStatus(const std::string &str, char type);
/** Clears the cached max bans value
*/
@@ -548,18 +547,4 @@ class CoreExport Channel : public Extensible
virtual ~Channel() { /* stub */ }
};
-static inline int banmatch_reduce(int v1, int v2)
-{
- int a1 = abs(v1);
- int a2 = abs(v2);
- if (a1 > a2)
- return v1;
- else if (a2 > a1)
- return v2;
- else if (v1 > v2)
- return v1;
- // otherwise v2 > v1 or equal
- return v2;
-}
-
#endif
diff --git a/include/modules.h b/include/modules.h
index c4a2e80c8..faefe9041 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -77,12 +77,17 @@ enum MessageType {
MSG_NOTICE = 1
};
+#define MOD_RES_ALLOW (ModResult(1))
+#define MOD_RES_PASSTHRU (ModResult(0))
+#define MOD_RES_DENY (ModResult(-1))
+
/** Used to represent an allow/deny module result.
* Not constructed as an enum because it reverses the value logic of some functions;
* the compiler will inline accesses to have the same efficiency as integer operations.
*/
struct ModResult {
int res;
+ ModResult() : res(0) {}
explicit ModResult(int r) : res(r) {}
bool operator==(const ModResult& r) const
{
@@ -96,12 +101,24 @@ struct ModResult {
{
return !res;
}
+ bool check(bool def)
+ {
+ return (res == 1 || (res == 0 && def));
+ }
+ /**
+ * Merges two results, preferring ALLOW to DENY
+ */
+ const ModResult operator+(const ModResult& r)
+ {
+ if (res == r.res || r.res == 0)
+ return *this;
+ if (res == 0)
+ return r;
+ // they are different, and neither is passthru
+ return MOD_RES_ALLOW;
+ }
};
-#define MOD_RES_ALLOW (ModResult(1))
-#define MOD_RES_PASSTHRU (ModResult(0))
-#define MOD_RES_DENY (ModResult(-1))
-
/** If you change the module API, change this value. */
#define API_VERSION 13000
@@ -181,65 +198,6 @@ typedef std::map<std::string, std::pair<int, modulelist> > interfacelist;
} while (0);
/**
- * This define is similar to the one above but returns a result in MOD_RESULT.
- * The first module to return a nonzero result is the value to be accepted,
- * and any modules after are ignored.
- */
-#define FOREACH_RESULT(y,x) \
-do { \
- EventHandlerIter safei; \
- MOD_RESULT = 0; \
- for (EventHandlerIter _i = ServerInstance->Modules->EventHandlers[y].begin(); _i != ServerInstance->Modules->EventHandlers[y].end(); ) \
- { \
- safei = _i; \
- ++safei; \
- try \
- { \
- int res = (*_i)->x ; \
- if (res != 0) { \
- MOD_RESULT = res; \
- break; \
- } \
- } \
- catch (CoreException& modexcept) \
- { \
- ServerInstance->Logs->Log("MODULE",DEFAULT,"Exception caught: %s",modexcept.GetReason()); \
- } \
- _i = safei; \
- } \
-} while(0);
-
-
-/**
- * This define is similar to the one above but returns a result in MOD_RESULT.
- * The first module to return a nonzero result is the value to be accepted,
- * and any modules after are ignored.
- */
-#define FOREACH_RESULT_I(z,y,x) \
-do { \
- EventHandlerIter safei; \
- MOD_RESULT = 0; \
- for (EventHandlerIter _i = z->Modules->EventHandlers[y].begin(); _i != z->Modules->EventHandlers[y].end(); ) \
- { \
- safei = _i; \
- ++safei; \
- try \
- { \
- int res = (*_i)->x ; \
- if (res != 0) { \
- MOD_RESULT = res; \
- break; \
- } \
- } \
- catch (CoreException& modexcept) \
- { \
- z->Logs->Log("MODULE",DEBUG,"Exception caught: %s",modexcept.GetReason()); \
- } \
- _i = safei; \
- } \
-} while (0);
-
-/**
* Custom module result handling loop. This is a paired macro, and should only
* be used with while_each_hook.
*
@@ -266,6 +224,13 @@ do { \
} \
} while(0)
+/**
+ * Module result iterator
+ * Runs the given hook until some module returns a useful result.
+ *
+ * Example: ModResult result;
+ * FIRST_MOD_RESULT(ServerInstance, OnUserPreNick, result, (user, newnick))
+ */
#define FIRST_MOD_RESULT(z,n,v,args) do { \
v = MOD_RES_PASSTHRU; \
DO_EACH_HOOK(z,n,v,args) \
@@ -534,7 +499,7 @@ class CoreExport Module : public Extensible
* @param chan The channel being deleted
* @return An integer specifying whether or not the channel may be deleted. 0 for yes, 1 for no.
*/
- virtual int OnChannelPreDelete(Channel *chan);
+ virtual ModResult OnChannelPreDelete(Channel *chan);
/** Called whenever a channel is deleted, either by QUIT, KICK or PART.
* @param chan The channel being deleted
@@ -610,7 +575,7 @@ class CoreExport Module : public Extensible
* @param message The text message to be sent via snotice
* @return 1 to block the snotice from being sent entirely, 0 else.
*/
- virtual int OnSendSnotice(char &snomask, std::string &type, const std::string &message);
+ virtual ModResult OnSendSnotice(char &snomask, std::string &type, const std::string &message);
/** Called whenever a user is about to join a channel, before any processing is done.
* Returning a value of 1 from this function stops the process immediately, causing no
@@ -632,7 +597,7 @@ class CoreExport Module : public Extensible
* @param keygiven The key given to join the channel, or an empty string if none was provided
* @return 1 To prevent the join, 0 to allow it.
*/
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven);
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven);
/** Called whenever a user is about to be kicked.
* Returning a value of 1 from this function stops the process immediately, causing no
@@ -644,7 +609,7 @@ class CoreExport Module : public Extensible
* @param reason The kick reason
* @return 1 to prevent the kick, 0 to continue normally, -1 to explicitly allow the kick regardless of normal operation
*/
- virtual int OnUserPreKick(User* source, User* user, Channel* chan, const std::string &reason);
+ virtual ModResult OnUserPreKick(User* source, User* user, Channel* chan, const std::string &reason);
/** Called whenever a user is kicked.
* If this method is called, the kick is already underway and cannot be prevented, so
@@ -706,7 +671,7 @@ class CoreExport Module : public Extensible
* @param timeout The time the invite will expire (0 == never)
* @return 1 to deny the invite, 0 to check whether or not the user has permission to invite, -1 to explicitly allow the invite
*/
- virtual int OnUserPreInvite(User* source,User* dest,Channel* channel, time_t timeout);
+ virtual ModResult OnUserPreInvite(User* source,User* dest,Channel* channel, time_t timeout);
/** Called after a user has been successfully invited to a channel.
* You cannot prevent the invite from occuring using this function, to do that,
@@ -734,7 +699,7 @@ class CoreExport Module : public Extensible
* It will be ignored for private messages.
* @return 1 to deny the message, 0 to allow it
*/
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text,char status, CUList &exempt_list);
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text,char status, CUList &exempt_list);
/** Called whenever a user is about to NOTICE A user or a channel, before any processing is done.
* Returning any nonzero value from this function stops the process immediately, causing no
@@ -755,7 +720,7 @@ class CoreExport Module : public Extensible
* It will be ignored for private notices.
* @return 1 to deny the NOTICE, 0 to allow it
*/
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text,char status, CUList &exempt_list);
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text,char status, CUList &exempt_list);
/** Called whenever the server wants to build the exemption list for a channel, but is not directly doing a PRIVMSG or NOTICE.
* For example, the spanningtree protocol will call this event when passing a privmsg on (but not processing it directly).
@@ -778,7 +743,7 @@ class CoreExport Module : public Extensible
* @param newnick Their new nickname
* @return 1 to deny the change, 0 to allow
*/
- virtual int OnUserPreNick(User* user, const std::string &newnick);
+ virtual ModResult OnUserPreNick(User* 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*
@@ -1015,7 +980,7 @@ class CoreExport Module : public Extensible
* @param channel The channel which is being checked
* @param access_type See above
*/
- virtual int OnAccessCheck(User* source,User* dest,Channel* channel,int access_type);
+ virtual ModResult OnAccessCheck(User* source,User* dest,Channel* channel,int access_type);
/** Called when a 005 numeric is about to be output.
* The module should modify the 005 numeric if needed to indicate its features.
@@ -1036,7 +1001,7 @@ class CoreExport Module : public Extensible
* @param reason The kill reason
* @return 1 to prevent the kill, 0 to allow
*/
- virtual int OnKill(User* source, User* dest, const std::string &reason);
+ virtual ModResult OnKill(User* source, User* dest, const std::string &reason);
/** Called when an oper wants to disconnect a remote user via KILL
* @param source The user sending the KILL
@@ -1099,7 +1064,7 @@ class CoreExport Module : public Extensible
* @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 int OnPreCommand(std::string &command, std::vector<std::string>& parameters, User *user, bool validated, const std::string &original_line);
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string>& parameters, User *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,
@@ -1125,7 +1090,7 @@ class CoreExport Module : public Extensible
* @param user The user to check
* @return true to indicate readiness, false if otherwise
*/
- virtual bool OnCheckReady(User* user);
+ virtual ModResult OnCheckReady(User* user);
/** Called whenever a user is about to register their connection (e.g. before the user
* is sent the MOTD etc). Modules can use this method if they are performing a function
@@ -1136,7 +1101,7 @@ class CoreExport Module : public Extensible
* @param user The user registering
* @return 1 to indicate user quit, 0 to continue
*/
- virtual int OnUserRegister(User* user);
+ virtual ModResult OnUserRegister(User* user);
/** Called whenever a user joins a channel, to determine if invite checks should go ahead or not.
* This method will always be called for each join, wether or not the channel is actually +i, and
@@ -1146,7 +1111,7 @@ class CoreExport Module : public Extensible
* @param chan The channel being joined
* @return 1 to explicitly allow the join, 0 to proceed as normal
*/
- virtual int OnCheckInvite(User* user, Channel* chan);
+ virtual ModResult OnCheckInvite(User* user, Channel* chan);
/** Called whenever a mode character is processed.
* Return 1 from this function to block the mode character from being processed entirely.
@@ -1160,7 +1125,7 @@ class CoreExport Module : public Extensible
* to skip all permission checking. Please note that for remote mode changes, your return value
* will be ignored!
*/
- virtual int OnRawMode(User* user, Channel* chan, const char mode, const std::string &param, bool adding, int pcnt);
+ virtual ModResult OnRawMode(User* user, Channel* chan, const char mode, const std::string &param, bool adding, int pcnt);
/** 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
@@ -1171,7 +1136,7 @@ class CoreExport Module : public Extensible
* @param chan The channel being joined
* @return 1 to explicitly allow the join, 0 to proceed as normal
*/
- virtual int OnCheckKey(User* user, Channel* chan, const std::string &keygiven);
+ virtual ModResult OnCheckKey(User* user, Channel* chan, const std::string &keygiven);
/** Called whenever a user joins a channel, to determine if channel limit checks should go ahead or not.
* This method will always be called for each join, wether or not the channel is actually +l, and
@@ -1181,7 +1146,7 @@ class CoreExport Module : public Extensible
* @param chan The channel being joined
* @return 1 to explicitly allow the join, 0 to proceed as normal
*/
- virtual int OnCheckLimit(User* user, Channel* chan);
+ virtual ModResult OnCheckLimit(User* user, Channel* chan);
/** Called whenever a user joins a channel, to determine if banlist checks should go ahead or not.
* This method will always be called for each join, wether or not the user actually matches a channel ban, and
@@ -1192,7 +1157,7 @@ class CoreExport Module : public Extensible
* @return 1 to explicitly allow the join, 0 to proceed as normal. Return -1 to explicitly deny the
* join to the channel.
*/
- virtual int OnCheckBan(User* user, Channel* chan);
+ virtual ModResult OnCheckBan(User* user, Channel* chan);
/* Called whenever checking whether or not a user is matched by an applicable extended bantype.
* NOTE: may also trigger extra OnCheckStringExtBan events!
@@ -1201,13 +1166,13 @@ class CoreExport Module : public Extensible
* @param type The type of extended ban to check for.
* @returns 1 = exempt, 0 = no match, -1 = banned
*/
- virtual int OnCheckExtBan(User *u, Channel *c, char type);
+ virtual ModResult OnCheckExtBan(User *u, Channel *c, char type);
/** Called whenever checking whether or not a string is extbanned. NOTE: one OnCheckExtBan will also trigger a number of
* OnCheckStringExtBan events for seperate host/IP comnbinations.
* @returns 1 = exempt, 0 = no match, -1 = banned
*/
- virtual int OnCheckStringExtBan(const std::string &s, Channel *c, char type);
+ virtual ModResult OnCheckStringExtBan(const std::string &s, Channel *c, char type);
/** Called on all /STATS commands
* This method is triggered for all /STATS use, including stats symbols handled by the core.
@@ -1218,7 +1183,7 @@ class CoreExport Module : public Extensible
* work when remote STATS queries are received.
* @return 1 to block the /STATS from being processed by the core, 0 to allow it
*/
- virtual int OnStats(char symbol, User* user, string_list &results);
+ virtual ModResult OnStats(char symbol, User* user, string_list &results);
/** Called whenever a change of a local users displayed host is attempted.
* Return 1 to deny the host change, or 0 to allow it.
@@ -1226,7 +1191,7 @@ class CoreExport Module : public Extensible
* @param newhost The new hostname
* @return 1 to deny the host change, 0 to allow
*/
- virtual int OnChangeLocalUserHost(User* user, const std::string &newhost);
+ virtual ModResult OnChangeLocalUserHost(User* 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.
@@ -1234,7 +1199,7 @@ class CoreExport Module : public Extensible
* @param newhost The new GECOS
* @return 1 to deny the GECOS change, 0 to allow
*/
- virtual int OnChangeLocalUserGECOS(User* user, const std::string &newhost);
+ virtual ModResult OnChangeLocalUserGECOS(User* user, const std::string &newhost);
/** Called whenever a topic is changed by a local user.
* Return 1 to deny the topic change, 0 to check details on the change, -1 to let it through with no checks
@@ -1243,7 +1208,7 @@ class CoreExport Module : public Extensible
* @param topic The actual topic text
* @param 1 to block the topic change, 0 to allow
*/
- virtual int OnLocalTopicChange(User* user, Channel* chan, const std::string &topic);
+ virtual ModResult OnLocalTopicChange(User* user, Channel* chan, const std::string &topic);
/** Called whenever a local topic has been changed.
* To block topic changes you must use OnLocalTopicChange instead.
@@ -1280,7 +1245,7 @@ class CoreExport Module : public Extensible
* @param hashtype The hash value from the config
* @return 0 to do nothing (pass on to next module/default), 1 == password is OK, -1 == password is not OK
*/
- virtual int OnPassCompare(Extensible* ex, const std::string &password, const std::string &input, const std::string& hashtype);
+ virtual ModResult OnPassCompare(Extensible* ex, const std::string &password, const std::string &input, const std::string& hashtype);
/** Called whenever a user is given usermode +o, anywhere on the network.
* You cannot override this and prevent it from happening as it is already happened and
@@ -1305,7 +1270,7 @@ class CoreExport Module : public Extensible
* @param banmask The ban mask being added
* @return 1 to block the ban, 0 to continue as normal
*/
- virtual int OnAddBan(User* source, Channel* channel,const std::string &banmask);
+ virtual ModResult OnAddBan(User* source, Channel* channel,const std::string &banmask);
/** Called whenever a ban is removed from a channel's list.
* Return a non-zero value to 'eat' the mode change and prevent the ban from being removed.
@@ -1314,7 +1279,7 @@ class CoreExport Module : public Extensible
* @param banmask The ban mask being deleted
* @return 1 to block the unban, 0 to continue as normal
*/
- virtual int OnDelBan(User* source, Channel* channel,const std::string &banmask);
+ virtual ModResult OnDelBan(User* source, Channel* channel,const std::string &banmask);
/** Called to install an I/O hook on an event handler
* @param user The item to possibly install the I/O hook on
@@ -1383,7 +1348,7 @@ class CoreExport Module : public Extensible
* @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 int OnSetAway(User* user, const std::string &awaymsg);
+ virtual ModResult OnSetAway(User* user, const std::string &awaymsg);
/** Called whenever a NAMES list is requested.
* You can produce the nameslist yourself, overriding the current list,
@@ -1398,7 +1363,7 @@ class CoreExport Module : public Extensible
* Returning -1 allows the names list, but bypasses any checks which check for
* channel membership before sending the names list.
*/
- virtual int OnUserList(User* user, Channel* Ptr, CUList* &userlist);
+ virtual ModResult OnUserList(User* user, Channel* Ptr, CUList* &userlist);
/** Called whenever a line of WHOIS output is sent to a user.
* You may change the numeric and the text of the output by changing
@@ -1411,7 +1376,7 @@ class CoreExport Module : public Extensible
* @return nonzero to drop the line completely so that the user does not
* receive it, or zero to allow the line to be sent.
*/
- virtual int OnWhoisLine(User* user, User* dest, int &numeric, std::string &text);
+ virtual ModResult OnWhoisLine(User* user, User* dest, int &numeric, std::string &text);
/** Called at intervals for modules to garbage-collect any hashes etc.
* Certain data types such as hash_map 'leak' buckets, which must be
@@ -1440,13 +1405,13 @@ class CoreExport Module : public Extensible
*/
virtual void OnNamesListItem(User* issuer, User* user, Channel* channel, std::string &prefixes, std::string &nick);
- virtual int OnNumeric(User* user, unsigned int numeric, const std::string &text);
+ virtual ModResult OnNumeric(User* user, unsigned int numeric, const std::string &text);
/** Called for every time the user's host or ident changes, to indicate wether or not the 'Changing host'
* message should be sent, if enabled. Certain modules such as auditorium may opt to hide this message
* even if it is enabled.
*/
- virtual bool OnHostCycle(User* user);
+ virtual ModResult OnHostCycle(User* user);
};
diff --git a/src/channels.cpp b/src/channels.cpp
index eb4f802f0..15c2c56b1 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -72,14 +72,14 @@ int Channel::SetTopic(User *u, std::string &ntopic, bool forceset)
{
if(!forceset)
{
- int MOD_RESULT = 0;
+ ModResult res;
/* 0: check status, 1: don't, -1: disallow change silently */
- FOREACH_RESULT(I_OnLocalTopicChange,OnLocalTopicChange(u,this,ntopic));
+ FIRST_MOD_RESULT(ServerInstance, OnLocalTopicChange, res, (u,this,ntopic));
- if (MOD_RESULT == 1)
+ if (res == MOD_RES_DENY)
return CMD_FAILURE;
- else if (MOD_RESULT == 0)
+ if (res != MOD_RES_ALLOW)
{
if (!this->HasUser(u))
{
@@ -248,7 +248,6 @@ Channel* Channel::JoinUser(InspIRCd* Instance, User *user, const char* cn, bool
return NULL;
char cname[MAXBUF];
- int MOD_RESULT = 0;
std::string privs;
Channel *Ptr;
@@ -304,9 +303,9 @@ Channel* Channel::JoinUser(InspIRCd* Instance, User *user, const char* cn, bool
if (IS_LOCAL(user) && override == false)
{
- MOD_RESULT = 0;
- FOREACH_RESULT_I(Instance,I_OnUserPreJoin, OnUserPreJoin(user, NULL, cname, privs, key ? key : ""));
- if (MOD_RESULT == 1)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(Instance, OnUserPreJoin, MOD_RESULT, (user, NULL, cname, privs, key ? key : ""));
+ if (MOD_RESULT == MOD_RES_DENY)
return NULL;
}
@@ -324,13 +323,13 @@ Channel* Channel::JoinUser(InspIRCd* Instance, User *user, const char* cn, bool
*/
if (IS_LOCAL(user) && override == false)
{
- MOD_RESULT = 0;
- FOREACH_RESULT_I(Instance,I_OnUserPreJoin, OnUserPreJoin(user, Ptr, cname, privs, key ? key : ""));
- if (MOD_RESULT == 1)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(Instance, OnUserPreJoin, MOD_RESULT, (user, Ptr, cname, privs, key ? key : ""));
+ if (MOD_RESULT == MOD_RES_DENY)
{
return NULL;
}
- else if (MOD_RESULT == 0)
+ else if (MOD_RESULT == MOD_RES_PASSTHRU)
{
std::string ckey = Ptr->GetModeParameter('k');
bool invited = user->IsInvited(Ptr->name.c_str());
@@ -338,46 +337,33 @@ Channel* Channel::JoinUser(InspIRCd* Instance, User *user, const char* cn, bool
if (!ckey.empty())
{
- MOD_RESULT = 0;
- FOREACH_RESULT_I(Instance, I_OnCheckKey, OnCheckKey(user, Ptr, key ? key : ""));
- if (!MOD_RESULT)
+ FIRST_MOD_RESULT(Instance, OnCheckKey, MOD_RESULT, (user, Ptr, key ? key : ""));
+ if (!MOD_RESULT.check((key && ckey == key) || can_bypass))
{
// If no key provided, or key is not the right one, and can't bypass +k (not invited or option not enabled)
- if ((!key || ckey != key) && !can_bypass)
- {
- user->WriteNumeric(ERR_BADCHANNELKEY, "%s %s :Cannot join channel (Incorrect channel key)",user->nick.c_str(), Ptr->name.c_str());
- return NULL;
- }
+ user->WriteNumeric(ERR_BADCHANNELKEY, "%s %s :Cannot join channel (Incorrect channel key)",user->nick.c_str(), Ptr->name.c_str());
+ return NULL;
}
}
if (Ptr->IsModeSet('i'))
{
- MOD_RESULT = 0;
- FOREACH_RESULT_I(Instance,I_OnCheckInvite,OnCheckInvite(user, Ptr));
- if (!MOD_RESULT)
+ FIRST_MOD_RESULT(Instance, OnCheckInvite, MOD_RESULT, (user, Ptr));
+ if (!MOD_RESULT.check(invited))
{
- if (!invited)
- {
- user->WriteNumeric(ERR_INVITEONLYCHAN, "%s %s :Cannot join channel (Invite only)",user->nick.c_str(), Ptr->name.c_str());
- return NULL;
- }
+ user->WriteNumeric(ERR_INVITEONLYCHAN, "%s %s :Cannot join channel (Invite only)",user->nick.c_str(), Ptr->name.c_str());
+ return NULL;
}
}
std::string limit = Ptr->GetModeParameter('l');
if (!limit.empty())
{
- MOD_RESULT = 0;
- FOREACH_RESULT_I(Instance, I_OnCheckLimit, OnCheckLimit(user, Ptr));
- if (!MOD_RESULT)
+ FIRST_MOD_RESULT(Instance, OnCheckLimit, MOD_RESULT, (user, Ptr));
+ if (!MOD_RESULT.check((Ptr->GetUserCounter() < atol(limit.c_str()) || can_bypass)))
{
- long llimit = atol(limit.c_str());
- if (Ptr->GetUserCounter() >= llimit && !can_bypass)
- {
- user->WriteNumeric(ERR_CHANNELISFULL, "%s %s :Cannot join channel (Channel is full)",user->nick.c_str(), Ptr->name.c_str());
- return NULL;
- }
+ user->WriteNumeric(ERR_CHANNELISFULL, "%s %s :Cannot join channel (Channel is full)",user->nick.c_str(), Ptr->name.c_str());
+ return NULL;
}
}
@@ -474,15 +460,15 @@ Channel* Channel::ForceChan(InspIRCd* Instance, Channel* Ptr, User* user, const
bool Channel::IsBanned(User* user)
{
- int result = 0;
- DO_EACH_HOOK(ServerInstance, OnCheckBan, int modresult, (user, this))
+ ModResult result;
+ DO_EACH_HOOK(ServerInstance, OnCheckBan, ModResult modresult, (user, this))
{
- result = banmatch_reduce(result, modresult);
+ result = result + modresult;
}
WHILE_EACH_HOOK(ServerInstance, OnCheckBan);
- if (result)
- return (result < 0);
+ if (result != MOD_RES_PASSTHRU)
+ return (result == MOD_RES_DENY);
char mask[MAXBUF];
snprintf(mask, MAXBUF, "%s!%s@%s", user->nick.c_str(), user->ident.c_str(), user->GetIPString());
@@ -498,16 +484,16 @@ bool Channel::IsBanned(User* user)
return false;
}
-int Channel::GetExtBanStatus(const std::string &str, char type)
+ModResult Channel::GetExtBanStatus(const std::string &str, char type)
{
- int result = 0;
- DO_EACH_HOOK(ServerInstance, OnCheckStringExtBan, int modresult, (str, this, type))
+ ModResult result;
+ DO_EACH_HOOK(ServerInstance, OnCheckStringExtBan, ModResult modresult, (str, this, type))
{
- result = banmatch_reduce(result, modresult);
+ result = result + modresult;
}
WHILE_EACH_HOOK(ServerInstance, OnCheckStringExtBan);
- if (result)
+ if (result != MOD_RES_PASSTHRU)
return result;
// nobody decided for us, check the ban list
@@ -520,32 +506,30 @@ int Channel::GetExtBanStatus(const std::string &str, char type)
ServerInstance->Logs->Log("EXTBANS", DEBUG, "Checking %s against %s, type is %c", str.c_str(), maskptr.c_str(), type);
if (InspIRCd::Match(str, maskptr, NULL))
- return -1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
-int Channel::GetExtBanStatus(User *user, char type)
+ModResult Channel::GetExtBanStatus(User *user, char type)
{
- int result = 0;
- DO_EACH_HOOK(ServerInstance, OnCheckExtBan, int modresult, (user, this, type))
+ ModResult rv;
+ DO_EACH_HOOK(ServerInstance, OnCheckExtBan, ModResult modresult, (user, this, type))
{
- result = banmatch_reduce(result, modresult);
+ rv = rv + modresult;
}
WHILE_EACH_HOOK(ServerInstance, OnCheckExtBan);
- if (result)
- return result;
+ if (rv != MOD_RES_PASSTHRU)
+ return rv;
char mask[MAXBUF];
- int rv = 0;
snprintf(mask, MAXBUF, "%s!%s@%s", user->nick.c_str(), user->ident.c_str(), user->GetIPString());
- // XXX: we should probably hook cloaked hosts in here somehow too..
- rv = banmatch_reduce(rv, this->GetExtBanStatus(mask, type));
- rv = banmatch_reduce(rv, this->GetExtBanStatus(user->GetFullHost(), type));
- rv = banmatch_reduce(rv, this->GetExtBanStatus(user->GetFullRealHost(), type));
+ rv = rv + this->GetExtBanStatus(mask, type);
+ rv = rv + this->GetExtBanStatus(user->GetFullHost(), type);
+ rv = rv + this->GetExtBanStatus(user->GetFullRealHost(), type);
return rv;
}
@@ -578,9 +562,9 @@ long Channel::PartUser(User *user, std::string &reason)
/* kill the record */
if (iter != ServerInstance->chanlist->end())
{
- int MOD_RESULT = 0;
- FOREACH_RESULT_I(ServerInstance,I_OnChannelPreDelete, OnChannelPreDelete(this));
- if (MOD_RESULT == 1)
+ ModResult res;
+ FIRST_MOD_RESULT(ServerInstance, OnChannelPreDelete, res, (this));
+ if (res == MOD_RES_DENY)
return 1; // delete halted by module
FOREACH_MOD(I_OnChannelDelete, OnChannelDelete(this));
ServerInstance->chanlist->erase(iter);
@@ -619,31 +603,26 @@ long Channel::KickUser(User *src, User *user, const char* reason)
src->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s %s :Only a u-line may kick a u-line from a channel.",src->nick.c_str(), this->name.c_str());
return this->GetUserCounter();
}
- int MOD_RESULT = 0;
- if (!ServerInstance->ULine(src->server))
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnUserPreKick,OnUserPreKick(src,user,this,reason));
- if (MOD_RESULT == 1)
- return this->GetUserCounter();
- }
- /* Set to -1 by OnUserPreKick if explicit allow was set */
- if (MOD_RESULT != -1)
- {
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(src,user,this,AC_KICK));
- if ((MOD_RESULT == ACR_DENY) && (!ServerInstance->ULine(src->server)))
- return this->GetUserCounter();
+ ModResult res;
+ if (ServerInstance->ULine(src->server))
+ res = MOD_RES_ALLOW;
+ if (res == MOD_RES_PASSTHRU)
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreKick, res, (src,user,this,reason));
+ if (res == MOD_RES_PASSTHRU)
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, res, (src,user,this,AC_KICK));
- if ((MOD_RESULT == ACR_DEFAULT) || (!ServerInstance->ULine(src->server)))
+ if (res == MOD_RES_DENY)
+ return this->GetUserCounter();
+
+ if (res == MOD_RES_PASSTHRU)
+ {
+ int them = this->GetStatus(src);
+ int us = this->GetStatus(user);
+ if ((them < STATUS_HOP) || (them < us))
{
- int them = this->GetStatus(src);
- int us = this->GetStatus(user);
- if ((them < STATUS_HOP) || (them < us))
- {
- src->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s %s :You must be a channel %soperator",src->nick.c_str(), this->name.c_str(), them == STATUS_HOP ? "" : "half-");
- return this->GetUserCounter();
- }
+ src->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s %s :You must be a channel %soperator",src->nick.c_str(), this->name.c_str(), them == STATUS_HOP ? "" : "half-");
+ return this->GetUserCounter();
}
}
}
@@ -669,9 +648,9 @@ long Channel::KickUser(User *src, User *user, const char* reason)
/* kill the record */
if (iter != ServerInstance->chanlist->end())
{
- int MOD_RESULT = 0;
- FOREACH_RESULT_I(ServerInstance,I_OnChannelPreDelete, OnChannelPreDelete(this));
- if (MOD_RESULT == 1)
+ ModResult res;
+ FIRST_MOD_RESULT(ServerInstance, OnChannelPreDelete, res, (this));
+ if (res == MOD_RES_DENY)
return 1; // delete halted by module
FOREACH_MOD(I_OnChannelDelete, OnChannelDelete(this));
ServerInstance->chanlist->erase(iter);
@@ -892,17 +871,14 @@ void Channel::UserList(User *user, CUList *ulist)
{
char list[MAXBUF];
size_t dlen, curlen;
- int MOD_RESULT = 0;
- bool call_modules = true;
+ ModResult call_modules;
if (!IS_LOCAL(user))
return;
- FOREACH_RESULT(I_OnUserList,OnUserList(user, this, ulist));
- if (MOD_RESULT == 1)
- call_modules = false;
+ FIRST_MOD_RESULT(ServerInstance, OnUserList, call_modules, (user, this, ulist));
- if (MOD_RESULT != -1)
+ if (call_modules != MOD_RES_ALLOW)
{
if ((this->IsModeSet('s')) && (!this->HasUser(user)))
{
@@ -941,7 +917,7 @@ void Channel::UserList(User *user, CUList *ulist)
std::string prefixlist = this->GetPrefixChar(i->first);
std::string nick = i->first->nick;
- if (call_modules)
+ if (call_modules != MOD_RES_DENY)
{
FOREACH_MOD(I_OnNamesListItem, OnNamesListItem(user, i->first, this, prefixlist, nick));
diff --git a/src/command_parse.cpp b/src/command_parse.cpp
index e7478478a..1ca4c988f 100644
--- a/src/command_parse.cpp
+++ b/src/command_parse.cpp
@@ -28,15 +28,15 @@
int InspIRCd::PassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype)
{
- int MOD_RESULT = 0;
- FOREACH_RESULT_I(this,I_OnPassCompare,OnPassCompare(ex, data, input, hashtype))
+ ModResult res;
+ FIRST_MOD_RESULT(this, OnPassCompare, res, (ex, data, input, hashtype));
/* Module matched */
- if (MOD_RESULT == 1)
+ if (res == MOD_RES_ALLOW)
return 0;
/* Module explicitly didnt match */
- if (MOD_RESULT == -1)
+ if (res == MOD_RES_DENY)
return 1;
/* We dont handle any hash types except for plaintext - Thanks tra26 */
@@ -278,9 +278,9 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd)
if (cm == cmdlist.end())
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnPreCommand,OnPreCommand(command, command_p, user, false, cmd));
- if (MOD_RESULT == 1)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnPreCommand, MOD_RESULT, (command, command_p, user, false, cmd));
+ if (MOD_RESULT == MOD_RES_DENY)
return true;
/*
@@ -341,9 +341,9 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd)
* We call OnPreCommand here seperately if the command exists, so the magic above can
* truncate to max_params if necessary. -- w00t
*/
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnPreCommand,OnPreCommand(command, command_p, user, false, cmd));
- if (MOD_RESULT == 1)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnPreCommand, MOD_RESULT, (command, command_p, user, false, cmd));
+ if (MOD_RESULT == MOD_RES_DENY)
return true;
/* activity resets the ping pending timer */
@@ -399,9 +399,8 @@ bool CommandParser::ProcessCommand(User *user, std::string &cmd)
cm->second->total_bytes += cmd.length();
/* module calls too */
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnPreCommand,OnPreCommand(command, command_p, user, true, cmd));
- if (MOD_RESULT == 1)
+ FIRST_MOD_RESULT(ServerInstance, OnPreCommand, MOD_RESULT, (command, command_p, user, true, cmd));
+ if (MOD_RESULT == MOD_RES_DENY)
return do_more;
/*
diff --git a/src/commands/cmd_away.cpp b/src/commands/cmd_away.cpp
index aba803134..261bdd38c 100644
--- a/src/commands/cmd_away.cpp
+++ b/src/commands/cmd_away.cpp
@@ -23,13 +23,13 @@ extern "C" DllExport Command* init_command(InspIRCd* Instance)
*/
CmdResult CommandAway::Handle (const std::vector<std::string>& parameters, User *user)
{
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
if ((parameters.size()) && (!parameters[0].empty()))
{
- FOREACH_RESULT(I_OnSetAway, OnSetAway(user, parameters[0]));
+ FIRST_MOD_RESULT(ServerInstance, OnSetAway, MOD_RESULT, (user, parameters[0]));
- if (MOD_RESULT != 0 && IS_LOCAL(user))
+ if (MOD_RESULT == MOD_RES_DENY && IS_LOCAL(user))
return CMD_FAILURE;
user->awaytime = ServerInstance->Time();
@@ -39,9 +39,9 @@ CmdResult CommandAway::Handle (const std::vector<std::string>& parameters, User
}
else
{
- FOREACH_RESULT(I_OnSetAway, OnSetAway(user, ""));
+ FIRST_MOD_RESULT(ServerInstance, OnSetAway, MOD_RESULT, (user, ""));
- if (MOD_RESULT != 0 && IS_LOCAL(user))
+ if (MOD_RESULT == MOD_RES_DENY && IS_LOCAL(user))
return CMD_FAILURE;
user->awaymsg.clear();
diff --git a/src/commands/cmd_invite.cpp b/src/commands/cmd_invite.cpp
index 1d875b74e..31c6f459c 100644
--- a/src/commands/cmd_invite.cpp
+++ b/src/commands/cmd_invite.cpp
@@ -23,7 +23,7 @@ extern "C" DllExport Command* init_command(InspIRCd* Instance)
*/
CmdResult CommandInvite::Handle (const std::vector<std::string>& parameters, User *user)
{
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
if (parameters.size() == 2 || parameters.size() == 3)
{
@@ -56,13 +56,13 @@ CmdResult CommandInvite::Handle (const std::vector<std::string>& parameters, Use
return CMD_FAILURE;
}
- FOREACH_RESULT(I_OnUserPreInvite,OnUserPreInvite(user,u,c,timeout));
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreInvite, MOD_RESULT, (user,u,c,timeout));
- if (MOD_RESULT == 1)
+ if (MOD_RESULT == MOD_RES_DENY)
{
return CMD_FAILURE;
}
- else if (MOD_RESULT == 0)
+ else if (MOD_RESULT == MOD_RES_PASSTHRU)
{
if (IS_LOCAL(user))
{
diff --git a/src/commands/cmd_kill.cpp b/src/commands/cmd_kill.cpp
index 842f1239e..2f1a4783e 100644
--- a/src/commands/cmd_kill.cpp
+++ b/src/commands/cmd_kill.cpp
@@ -29,7 +29,7 @@ CmdResult CommandKill::Handle (const std::vector<std::string>& parameters, User
User *u = ServerInstance->FindNick(parameters[0]);
char killreason[MAXBUF];
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
if (u)
{
@@ -46,9 +46,9 @@ CmdResult CommandKill::Handle (const std::vector<std::string>& parameters, User
* Moved this event inside the IS_LOCAL check also, we don't want half the network killing a user
* and the other half not. This would be a bad thing. ;p -- w00t
*/
- FOREACH_RESULT(I_OnKill, OnKill(user, u, parameters[1]));
+ FIRST_MOD_RESULT(ServerInstance, OnKill, MOD_RESULT, (user, u, parameters[1]));
- if (MOD_RESULT)
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
if (*ServerInstance->Config->HideKillsServer)
diff --git a/src/commands/cmd_nick.cpp b/src/commands/cmd_nick.cpp
index 44ccffbac..33e0e8081 100644
--- a/src/commands/cmd_nick.cpp
+++ b/src/commands/cmd_nick.cpp
@@ -70,9 +70,9 @@ CmdResult CommandNick::Handle (const std::vector<std::string>& parameters, User
* the nick AAA is the same as the nick aaa.
*/
oldnick.assign(user->nick, 0, IS_LOCAL(user) ? ServerInstance->Config->Limits.NickMax : MAXBUF);
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnUserPreNick,OnUserPreNick(user,parameters[0]));
- if (MOD_RESULT)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreNick, MOD_RESULT, (user,parameters[0]));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
if (user->registered == REG_ALL)
user->WriteCommon("NICK %s",parameters[0].c_str());
@@ -151,9 +151,9 @@ CmdResult CommandNick::Handle (const std::vector<std::string>& parameters, User
}
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnUserPreNick,OnUserPreNick(user, parameters[0]));
- if (MOD_RESULT)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreNick, MOD_RESULT, (user, parameters[0]));
+ if (MOD_RESULT == MOD_RES_DENY)
// if a module returns true, the nick change is silently forbidden.
return CMD_FAILURE;
@@ -187,9 +187,8 @@ CmdResult CommandNick::Handle (const std::vector<std::string>& parameters, User
if (user->registered == REG_NICKUSER)
{
/* user is registered now, bit 0 = USER command, bit 1 = sent a NICK command */
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnUserRegister,OnUserRegister(user));
- if (MOD_RESULT > 0)
+ FIRST_MOD_RESULT(ServerInstance, OnUserRegister, MOD_RESULT, (user));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
// return early to not penalize new users
diff --git a/src/commands/cmd_notice.cpp b/src/commands/cmd_notice.cpp
index 13ffd6c75..e9049d7ab 100644
--- a/src/commands/cmd_notice.cpp
+++ b/src/commands/cmd_notice.cpp
@@ -35,10 +35,10 @@ CmdResult CommandNotice::Handle (const std::vector<std::string>& parameters, Use
if (!user->HasPrivPermission("users/mass-message"))
return CMD_SUCCESS;
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user, (void*)parameters[0].c_str(), TYPE_SERVER, temp, 0, exempt_list));
- if (MOD_RESULT)
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreNotice, MOD_RESULT, (user, (void*)parameters[0].c_str(), TYPE_SERVER, temp, 0, exempt_list));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
const char* text = temp.c_str();
const char* servermask = (parameters[0].c_str()) + 1;
@@ -80,13 +80,13 @@ CmdResult CommandNotice::Handle (const std::vector<std::string>& parameters, Use
return CMD_FAILURE;
}
}
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,chan,TYPE_CHANNEL,temp,status, exempt_list));
- if (MOD_RESULT) {
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreNotice, MOD_RESULT, (user,chan,TYPE_CHANNEL,temp,status, exempt_list));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
- }
+
const char* text = temp.c_str();
if (temp.empty())
@@ -157,10 +157,10 @@ CmdResult CommandNotice::Handle (const std::vector<std::string>& parameters, Use
return CMD_FAILURE;
}
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,dest,TYPE_USER,temp,0,exempt_list));
- if (MOD_RESULT) {
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreNotice, MOD_RESULT, (user,dest,TYPE_USER,temp,0,exempt_list));
+ if (MOD_RESULT == MOD_RES_DENY) {
return CMD_FAILURE;
}
const char* text = temp.c_str();
diff --git a/src/commands/cmd_privmsg.cpp b/src/commands/cmd_privmsg.cpp
index 5c6e462c8..c6e74db8b 100644
--- a/src/commands/cmd_privmsg.cpp
+++ b/src/commands/cmd_privmsg.cpp
@@ -35,10 +35,10 @@ CmdResult CommandPrivmsg::Handle (const std::vector<std::string>& parameters, Us
if (!user->HasPrivPermission("users/mass-message"))
return CMD_SUCCESS;
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user, (void*)parameters[0].c_str(), TYPE_SERVER, temp, 0, except_list));
- if (MOD_RESULT)
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreMessage, MOD_RESULT, (user, (void*)parameters[0].c_str(), TYPE_SERVER, temp, 0, except_list));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
const char* text = temp.c_str();
@@ -91,13 +91,13 @@ CmdResult CommandPrivmsg::Handle (const std::vector<std::string>& parameters, Us
}
}
}
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,chan,TYPE_CHANNEL,temp,status,except_list));
- if (MOD_RESULT) {
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreMessage, MOD_RESULT, (user,chan,TYPE_CHANNEL,temp,status,except_list));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
- }
+
const char* text = temp.c_str();
/* Check again, a module may have zapped the input string */
@@ -175,13 +175,13 @@ CmdResult CommandPrivmsg::Handle (const std::vector<std::string>& parameters, Us
user->WriteNumeric(301, "%s %s :%s", user->nick.c_str(), dest->nick.c_str(), dest->awaymsg.c_str());
}
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
std::string temp = parameters[1];
- FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user, dest, TYPE_USER, temp, 0, except_list));
- if (MOD_RESULT) {
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreMessage, MOD_RESULT, (user, dest, TYPE_USER, temp, 0, except_list));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
- }
+
const char* text = temp.c_str();
FOREACH_MOD(I_OnText,OnText(user, dest, TYPE_USER, text, 0, except_list));
diff --git a/src/commands/cmd_stats.cpp b/src/commands/cmd_stats.cpp
index eb0321c8a..ecd19a71e 100644
--- a/src/commands/cmd_stats.cpp
+++ b/src/commands/cmd_stats.cpp
@@ -67,9 +67,9 @@ DllExport void DoStats(InspIRCd* ServerInstance, char statschar, User* user, str
return;
}
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnStats,OnStats(statschar, user, results));
- if (MOD_RESULT)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnStats, MOD_RESULT, (statschar, user, results));
+ if (MOD_RESULT == MOD_RES_DENY)
{
results.push_back(sn+" 219 "+user->nick+" "+statschar+" :End of /STATS report");
ServerInstance->SNO->WriteToSnoMask('t',"%s '%c' requested by %s (%s@%s)",
diff --git a/src/commands/cmd_user.cpp b/src/commands/cmd_user.cpp
index 833a9b275..b9ef94c97 100644
--- a/src/commands/cmd_user.cpp
+++ b/src/commands/cmd_user.cpp
@@ -54,11 +54,11 @@ CmdResult CommandUser::Handle (const std::vector<std::string>& parameters, User
/* parameters 2 and 3 are local and remote hosts, and are ignored */
if (user->registered == REG_NICKUSER)
{
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
/* user is registered now, bit 0 = USER command, bit 1 = sent a NICK command */
- FOREACH_RESULT(I_OnUserRegister,OnUserRegister(user));
- if (MOD_RESULT > 0)
+ FIRST_MOD_RESULT(ServerInstance, OnUserRegister, MOD_RESULT, (user));
+ if (MOD_RESULT == MOD_RES_DENY)
return CMD_FAILURE;
}
diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp
index 1d5bf574f..0ec8db966 100644
--- a/src/helperfuncs.cpp
+++ b/src/helperfuncs.cpp
@@ -344,8 +344,8 @@ void InspIRCd::SendWhoisLine(User* user, User* dest, int numeric, const std::str
{
std::string copy_text = text;
- int MOD_RESULT = 0;
- FOREACH_RESULT_I(this, I_OnWhoisLine, OnWhoisLine(user, dest, numeric, copy_text));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(this, OnWhoisLine, MOD_RESULT, (user, dest, numeric, copy_text));
if (!MOD_RESULT)
user->WriteServ("%d %s", numeric, copy_text.c_str());
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index cedb8a20e..cc69374ec 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -868,12 +868,9 @@ void InspIRCd::BufferedSocketCull()
*/
bool InspIRCd::AllModulesReportReady(User* user)
{
- for (EventHandlerIter i = Modules->EventHandlers[I_OnCheckReady].begin(); i != Modules->EventHandlers[I_OnCheckReady].end(); ++i)
- {
- if (!(*i)->OnCheckReady(user))
- return false;
- }
- return true;
+ ModResult res;
+ FIRST_MOD_RESULT(this, OnCheckReady, res, (user));
+ return (res == MOD_RES_PASSTHRU);
}
time_t InspIRCd::Time()
diff --git a/src/mode.cpp b/src/mode.cpp
index a89227982..38f7835fc 100644
--- a/src/mode.cpp
+++ b/src/mode.cpp
@@ -350,13 +350,13 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, bool
ModeHandler *mh = FindMode(modechar, type);
int pcnt = mh->GetNumParams(adding);
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode, OnRawMode(user, chan, modechar, parameter, adding, pcnt));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnRawMode, MOD_RESULT, (user, chan, modechar, parameter, adding, pcnt));
- if (IS_LOCAL(user) && (MOD_RESULT == ACR_DENY))
+ if (IS_LOCAL(user) && (MOD_RESULT == MOD_RES_DENY))
return MODEACTION_DENY;
- if (chan && !SkipACL && (MOD_RESULT != ACR_ALLOW))
+ if (chan && !SkipACL && (MOD_RESULT != MOD_RES_ALLOW))
{
char needed = mh->GetNeededPrefix();
ModeHandler* prefixmode = FindPrefix(needed);
@@ -489,12 +489,12 @@ void ModeParser::Process(const std::vector<std::string>& parameters, User *user,
{
/* Overall access control hook for mode change */
LastParse = mode_sequence;
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(user, NULL, targetchannel, AC_GENERAL_MODE));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, MOD_RESULT, (user, NULL, targetchannel, AC_GENERAL_MODE));
LastParse.clear();
- if (MOD_RESULT == ACR_DENY)
+ if (MOD_RESULT == MOD_RES_DENY)
return;
- SkipAccessChecks = (MOD_RESULT == ACR_ALLOW);
+ SkipAccessChecks = (MOD_RESULT == MOD_RES_ALLOW);
}
else
{
@@ -636,9 +636,9 @@ void ModeParser::DisplayListModes(User* user, Channel* chan, std::string &mode_s
if (!mh || !mh->IsListMode())
return;
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode, OnRawMode(user, chan, mletter, "", true, 0));
- if (MOD_RESULT == ACR_DENY)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnRawMode, MOD_RESULT, (user, chan, mletter, "", true, 0));
+ if (MOD_RESULT == MOD_RES_DENY)
continue;
bool display = true;
diff --git a/src/modes/cmode_b.cpp b/src/modes/cmode_b.cpp
index 415d33c30..36078f4b2 100644
--- a/src/modes/cmode_b.cpp
+++ b/src/modes/cmode_b.cpp
@@ -115,9 +115,9 @@ std::string& ModeChannelBan::AddBan(User *user, std::string &dest, Channel *chan
return dest;
}
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAddBan,OnAddBan(user,chan,dest));
- if (MOD_RESULT)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAddBan, MOD_RESULT, (user,chan,dest));
+ if (MOD_RESULT == MOD_RES_DENY)
{
dest = "";
return dest;
@@ -149,7 +149,7 @@ ModePair ModeChannelBan::ModeSet(User*, User*, Channel* channel, const std::stri
return std::make_pair(true, i->data);
}
}
- return std::make_pair(false, parameter);
+ return std::make_pair(false, parameter);
}
std::string& ModeChannelBan::DelBan(User *user, std::string& dest, Channel *chan, int)
@@ -168,9 +168,9 @@ std::string& ModeChannelBan::DelBan(User *user, std::string& dest, Channel *chan
{
if (!strcasecmp(i->data.c_str(), dest.c_str()))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnDelBan,OnDelBan(user, chan, dest));
- if (MOD_RESULT)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnDelBan, MOD_RESULT, (user, chan, dest));
+ if (MOD_RESULT == MOD_RES_DENY)
{
dest = "";
return dest;
diff --git a/src/modes/cmode_h.cpp b/src/modes/cmode_h.cpp
index ce4a0ac56..54ab139ce 100644
--- a/src/modes/cmode_h.cpp
+++ b/src/modes/cmode_h.cpp
@@ -107,12 +107,12 @@ std::string ModeChannelHalfOp::AddHalfOp(User *user,const char* dest,Channel *ch
{
if (IS_LOCAL(user))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(user,d,chan,AC_HALFOP));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, MOD_RESULT, (user,d,chan,AC_HALFOP));
- if (MOD_RESULT == ACR_DENY)
+ if (MOD_RESULT == MOD_RES_DENY)
return "";
- if (MOD_RESULT == ACR_DEFAULT)
+ if (MOD_RESULT == MOD_RES_PASSTHRU)
{
if ((status < STATUS_OP) && (!ServerInstance->ULine(user->server)))
{
@@ -135,12 +135,12 @@ std::string ModeChannelHalfOp::DelHalfOp(User *user,const char *dest,Channel *ch
{
if (IS_LOCAL(user))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(user,d,chan,AC_DEHALFOP));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, MOD_RESULT, (user,d,chan,AC_DEHALFOP));
- if (MOD_RESULT == ACR_DENY)
+ if (MOD_RESULT == MOD_RES_DENY)
return "";
- if (MOD_RESULT == ACR_DEFAULT)
+ if (MOD_RESULT == MOD_RES_PASSTHRU)
{
if ((user != d) && ((status < STATUS_OP) && (!ServerInstance->ULine(user->server))))
{
diff --git a/src/modes/cmode_o.cpp b/src/modes/cmode_o.cpp
index 9a271f9a6..908eb698c 100644
--- a/src/modes/cmode_o.cpp
+++ b/src/modes/cmode_o.cpp
@@ -105,12 +105,12 @@ std::string ModeChannelOp::AddOp(User *user,const char* dest,Channel *chan,int s
{
if (IS_LOCAL(user))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(user,d,chan,AC_OP));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, MOD_RESULT, (user,d,chan,AC_OP));
- if (MOD_RESULT == ACR_DENY)
+ if (MOD_RESULT == MOD_RES_DENY)
return "";
- if (MOD_RESULT == ACR_DEFAULT)
+ if (MOD_RESULT == MOD_RES_PASSTHRU)
{
if ((status < STATUS_OP) && (!ServerInstance->ULine(user->server)))
{
@@ -133,12 +133,12 @@ std::string ModeChannelOp::DelOp(User *user,const char *dest,Channel *chan,int s
{
if (IS_LOCAL(user))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(user,d,chan,AC_DEOP));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, MOD_RESULT, (user,d,chan,AC_DEOP));
- if (MOD_RESULT == ACR_DENY)
+ if (MOD_RESULT == MOD_RES_DENY)
return "";
- if (MOD_RESULT == ACR_DEFAULT)
+ if (MOD_RESULT == MOD_RES_PASSTHRU)
{
if ((status < STATUS_OP) && (!ServerInstance->ULine(user->server)) && (IS_LOCAL(user)))
{
diff --git a/src/modes/cmode_v.cpp b/src/modes/cmode_v.cpp
index 22cfb19ef..03dbb5a33 100644
--- a/src/modes/cmode_v.cpp
+++ b/src/modes/cmode_v.cpp
@@ -105,12 +105,12 @@ std::string ModeChannelVoice::AddVoice(User *user,const char* dest,Channel *chan
{
if (IS_LOCAL(user))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(user,d,chan,AC_VOICE));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, MOD_RESULT, (user,d,chan,AC_VOICE));
- if (MOD_RESULT == ACR_DENY)
+ if (MOD_RESULT == MOD_RES_DENY)
return "";
- if (MOD_RESULT == ACR_DEFAULT)
+ if (MOD_RESULT == MOD_RES_PASSTHRU)
{
if ((status < STATUS_HOP) && (!ServerInstance->ULine(user->server)))
{
@@ -133,12 +133,12 @@ std::string ModeChannelVoice::DelVoice(User *user,const char *dest,Channel *chan
{
if (IS_LOCAL(user))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnAccessCheck,OnAccessCheck(user,d,chan,AC_DEVOICE));
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnAccessCheck, MOD_RESULT, (user,d,chan,AC_DEVOICE));
- if (MOD_RESULT == ACR_DENY)
+ if (MOD_RESULT == MOD_RES_DENY)
return "";
- if (MOD_RESULT == ACR_DEFAULT)
+ if (MOD_RESULT == MOD_RES_PASSTHRU)
{
if ((status < STATUS_HOP) && (!ServerInstance->ULine(user->server)))
{
diff --git a/src/modules.cpp b/src/modules.cpp
index 62a156ac6..c5c8aa2ca 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -107,7 +107,7 @@ std::string Event::GetEventID()
Module::Module(InspIRCd* Me) : ServerInstance(Me) { }
Module::~Module() { }
-int Module::OnSendSnotice(char &snomask, std::string &type, const std::string &message) { return 0; }
+ModResult Module::OnSendSnotice(char &snomask, std::string &type, const std::string &message) { return MOD_RES_PASSTHRU; }
void Module::OnUserConnect(User*) { }
void Module::OnUserQuit(User*, const std::string&, const std::string&) { }
void Module::OnUserDisconnect(User*) { }
@@ -117,48 +117,48 @@ void Module::OnUserPart(User*, Channel*, std::string&, bool&) { }
void Module::OnPreRehash(User*, const std::string&) { }
void Module::OnModuleRehash(User*, const std::string&) { }
void Module::OnRehash(User*) { }
-int Module::OnUserPreJoin(User*, Channel*, const char*, std::string&, const std::string&) { return 0; }
+ModResult Module::OnUserPreJoin(User*, Channel*, const char*, std::string&, const std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnMode(User*, void*, int, const std::vector<std::string>&, const std::vector<TranslateType>&) { }
Version Module::GetVersion() { return Version("Misconfigured", VF_VENDOR, -1); }
void Module::OnOper(User*, const std::string&) { }
void Module::OnPostOper(User*, const std::string&, const std::string &) { }
void Module::OnInfo(User*) { }
void Module::OnWhois(User*, User*) { }
-int Module::OnUserPreInvite(User*, User*, Channel*, time_t) { return 0; }
-int Module::OnUserPreMessage(User*, void*, int, std::string&, char, CUList&) { return 0; }
-int Module::OnUserPreNotice(User*, void*, int, std::string&, char, CUList&) { return 0; }
-int Module::OnUserPreNick(User*, const std::string&) { return 0; }
+ModResult Module::OnUserPreInvite(User*, User*, Channel*, time_t) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnUserPreMessage(User*, void*, int, std::string&, char, CUList&) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnUserPreNotice(User*, void*, int, std::string&, char, CUList&) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnUserPreNick(User*, const std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnUserPostNick(User*, const std::string&) { }
-int Module::OnAccessCheck(User*, User*, Channel*, int) { return ACR_DEFAULT; }
+ModResult Module::OnAccessCheck(User*, User*, Channel*, int) { return MOD_RES_PASSTHRU; }
void Module::On005Numeric(std::string&) { }
-int Module::OnKill(User*, User*, const std::string&) { return 0; }
+ModResult Module::OnKill(User*, User*, const std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnLoadModule(Module*, const std::string&) { }
void Module::OnUnloadModule(Module*, const std::string&) { }
void Module::OnBackgroundTimer(time_t) { }
-int Module::OnPreCommand(std::string&, std::vector<std::string>&, User *, bool, const std::string&) { return 0; }
+ModResult Module::OnPreCommand(std::string&, std::vector<std::string>&, User *, bool, const std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnPostCommand(const std::string&, const std::vector<std::string>&, User *, CmdResult, const std::string&) { }
-bool Module::OnCheckReady(User*) { return true; }
-int Module::OnUserRegister(User*) { return 0; }
-int Module::OnUserPreKick(User*, User*, Channel*, const std::string&) { return 0; }
+ModResult Module::OnCheckReady(User*) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnUserRegister(User*) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnUserPreKick(User*, User*, Channel*, const std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnUserKick(User*, User*, Channel*, const std::string&, bool&) { }
-int Module::OnRawMode(User*, Channel*, const char, const std::string &, bool, int) { return 0; }
-int Module::OnCheckInvite(User*, Channel*) { return 0; }
-int Module::OnCheckKey(User*, Channel*, const std::string&) { return 0; }
-int Module::OnCheckLimit(User*, Channel*) { return 0; }
-int Module::OnCheckBan(User*, Channel*) { return 0; }
-int Module::OnCheckExtBan(User *, Channel *, char) { return 0; }
-int Module::OnCheckStringExtBan(const std::string &s, Channel *c, char type) { return 0; }
-int Module::OnStats(char, User*, string_list&) { return 0; }
-int Module::OnChangeLocalUserHost(User*, const std::string&) { return 0; }
-int Module::OnChangeLocalUserGECOS(User*, const std::string&) { return 0; }
-int Module::OnLocalTopicChange(User*, Channel*, const std::string&) { return 0; }
+ModResult Module::OnRawMode(User*, Channel*, const char, const std::string &, bool, int) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnCheckInvite(User*, Channel*) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnCheckKey(User*, Channel*, const std::string&) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnCheckLimit(User*, Channel*) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnCheckBan(User*, Channel*) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnCheckExtBan(User *, Channel *, char) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnCheckStringExtBan(const std::string &s, Channel *c, char type) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnStats(char, User*, string_list&) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnChangeLocalUserHost(User*, const std::string&) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnChangeLocalUserGECOS(User*, const std::string&) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnLocalTopicChange(User*, Channel*, const std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnEvent(Event*) { return; }
const char* Module::OnRequest(Request*) { return NULL; }
-int Module::OnPassCompare(Extensible* ex, const std::string &password, const std::string &input, const std::string& hashtype) { return 0; }
+ModResult Module::OnPassCompare(Extensible* ex, const std::string &password, const std::string &input, const std::string& hashtype) { return MOD_RES_PASSTHRU; }
void Module::OnGlobalOper(User*) { }
void Module::OnPostConnect(User*) { }
-int Module::OnAddBan(User*, Channel*, const std::string &) { return 0; }
-int Module::OnDelBan(User*, Channel*, const std::string &) { return 0; }
+ModResult Module::OnAddBan(User*, Channel*, const std::string &) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnDelBan(User*, Channel*, const std::string &) { return MOD_RES_PASSTHRU; }
void Module::OnRawSocketAccept(int, irc::sockets::sockaddrs*, irc::sockets::sockaddrs*) { }
int Module::OnRawSocketWrite(int, const char*, int) { return 0; }
void Module::OnRawSocketClose(int) { }
@@ -184,20 +184,20 @@ void Module::OnAddLine(User*, XLine*) { }
void Module::OnDelLine(User*, XLine*) { }
void Module::OnExpireLine(XLine*) { }
void Module::OnCleanup(int, void*) { }
-int Module::OnChannelPreDelete(Channel*) { return 0; }
+ModResult Module::OnChannelPreDelete(Channel*) { return MOD_RES_PASSTHRU; }
void Module::OnChannelDelete(Channel*) { }
-int Module::OnSetAway(User*, const std::string &) { return 0; }
-int Module::OnUserList(User*, Channel*, CUList*&) { return 0; }
-int Module::OnWhoisLine(User*, User*, int&, std::string&) { return 0; }
+ModResult Module::OnSetAway(User*, const std::string &) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnUserList(User*, Channel*, CUList*&) { return MOD_RES_PASSTHRU; }
+ModResult Module::OnWhoisLine(User*, User*, int&, std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnBuildExemptList(MessageType, Channel*, User*, char, CUList&, const std::string&) { }
void Module::OnGarbageCollect() { }
void Module::OnBufferFlushed(User*) { }
void Module::OnText(User*, void*, int, const std::string&, char, CUList&) { }
void Module::OnRunTestSuite() { }
void Module::OnNamesListItem(User*, User*, Channel*, std::string&, std::string&) { }
-int Module::OnNumeric(User*, unsigned int, const std::string&) { return 0; }
+ModResult Module::OnNumeric(User*, unsigned int, const std::string&) { return MOD_RES_PASSTHRU; }
void Module::OnHookIO(EventHandler*, ListenSocketBase*) { }
-bool Module::OnHostCycle(User* user) { return false; }
+ModResult Module::OnHostCycle(User*) { return MOD_RES_PASSTHRU; }
ModuleManager::ModuleManager(InspIRCd* Ins) : ModCount(0), Instance(Ins)
{
diff --git a/src/modules/extra/m_geoip.cpp b/src/modules/extra/m_geoip.cpp
index 21a57a283..e04d5b963 100644
--- a/src/modules/extra/m_geoip.cpp
+++ b/src/modules/extra/m_geoip.cpp
@@ -63,7 +63,7 @@ class ModuleGeoIP : public Module
}
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
/* only do lookups on local users */
if (IS_LOCAL(user))
@@ -81,7 +81,7 @@ class ModuleGeoIP : public Module
ServerInstance->Users->QuitUser(user, "Could not identify your country of origin. Access denied.");
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/extra/m_ldapauth.cpp b/src/modules/extra/m_ldapauth.cpp
index 94c0df469..8ffccd863 100644
--- a/src/modules/extra/m_ldapauth.cpp
+++ b/src/modules/extra/m_ldapauth.cpp
@@ -111,20 +111,20 @@ public:
return true;
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
if ((!allowpattern.empty()) && (InspIRCd::Match(user->nick,allowpattern)))
{
user->Extend("ldapauthed");
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (!CheckCredentials(user))
{
ServerInstance->Users->QuitUser(user, killreason);
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
bool CheckCredentials(User* user)
@@ -217,9 +217,9 @@ public:
user->Shrink("ldapauth_failed");
}
- virtual bool OnCheckReady(User* user)
+ virtual ModResult OnCheckReady(User* user)
{
- return user->GetExt("ldapauthed");
+ return user->GetExt("ldapauthed") ? MOD_RES_PASSTHRU : MOD_RES_DENY;
}
virtual Version GetVersion()
diff --git a/src/modules/extra/m_ldapoper.cpp b/src/modules/extra/m_ldapoper.cpp
index f99b80db3..46b6cbcb2 100644
--- a/src/modules/extra/m_ldapoper.cpp
+++ b/src/modules/extra/m_ldapoper.cpp
@@ -97,7 +97,7 @@ public:
return true;
}
- virtual int OnPassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype)
+ virtual ModResult OnPassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype)
{
User* user = dynamic_cast<User*>(ex);
if (hashtype == "ldap")
@@ -105,11 +105,11 @@ public:
if (LookupOper(user, data, input))
{
/* This is an ldap oper and has been found, claim the OPER command */
- return 1;
+ return MOD_RES_DENY;
}
}
/* We don't know this oper! */
- return 0;
+ return MOD_RES_PASSTHRU;
}
bool LookupOper(User* user, const std::string &what, const std::string &opassword)
diff --git a/src/modules/extra/m_sqlauth.cpp b/src/modules/extra/m_sqlauth.cpp
index 6dc01a5f8..e20f4e33e 100644
--- a/src/modules/extra/m_sqlauth.cpp
+++ b/src/modules/extra/m_sqlauth.cpp
@@ -69,20 +69,20 @@ public:
verbose = Conf.ReadFlag("sqlauth", "verbose", 0); /* Set to true if failed connects should be reported to operators */
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
if ((!allowpattern.empty()) && (InspIRCd::Match(user->nick,allowpattern)))
{
user->Extend("sqlauthed");
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (!CheckCredentials(user))
{
ServerInstance->Users->QuitUser(user, killreason);
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
bool CheckCredentials(User* user)
@@ -196,9 +196,9 @@ public:
user->Shrink("sqlauth_failed");
}
- virtual bool OnCheckReady(User* user)
+ virtual ModResult OnCheckReady(User* user)
{
- return user->GetExt("sqlauthed");
+ return user->GetExt("sqlauthed") ? MOD_RES_PASSTHRU : MOD_RES_DENY;
}
virtual Version GetVersion()
diff --git a/src/modules/extra/m_sqllog.cpp b/src/modules/extra/m_sqllog.cpp
index c952d495e..7313556d7 100644
--- a/src/modules/extra/m_sqllog.cpp
+++ b/src/modules/extra/m_sqllog.cpp
@@ -269,19 +269,19 @@ class ModuleSQLLog : public Module
AddLogEntry(LT_OPER,user->nick,user->host,user->server);
}
- virtual int OnKill(User* source, User* dest, const std::string &reason)
+ virtual ModResult OnKill(User* source, User* dest, const std::string &reason)
{
AddLogEntry(LT_KILL,dest->nick,dest->host,source->nick);
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
if ((command == "GLINE" || command == "KLINE" || command == "ELINE" || command == "ZLINE") && validated)
{
AddLogEntry(LT_XLINE,user->nick,command[0]+std::string(":")+parameters[0],user->server);
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserConnect(User* user)
diff --git a/src/modules/extra/m_sqloper.cpp b/src/modules/extra/m_sqloper.cpp
index 52a73eba9..8e96a781d 100644
--- a/src/modules/extra/m_sqloper.cpp
+++ b/src/modules/extra/m_sqloper.cpp
@@ -120,7 +120,7 @@ public:
hashtype = assign(Conf.ReadValue("sqloper", "hash", 0));
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
if ((validated) && (command == "OPER"))
{
@@ -131,10 +131,10 @@ public:
* If the oper lookup fails later, we pass the command to the original handler
* for /oper by calling its Handle method directly.
*/
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
bool LookupOper(User* user, const std::string &username, const std::string &password)
diff --git a/src/modules/extra/m_ziplink.cpp b/src/modules/extra/m_ziplink.cpp
index efff13644..c220460bd 100644
--- a/src/modules/extra/m_ziplink.cpp
+++ b/src/modules/extra/m_ziplink.cpp
@@ -134,7 +134,7 @@ class ModuleZLib : public Module
}
/* Handle stats z (misc stats) */
- virtual int OnStats(char symbol, User* user, string_list &results)
+ virtual ModResult OnStats(char symbol, User* user, string_list &results)
{
if (symbol == 'z')
{
@@ -168,10 +168,10 @@ class ModuleZLib : public Module
results.push_back(sn+" 304 "+user->nick+" :ZIPSTATS percentage_of_original_outbound_traffic = "+outbound_ratio);
results.push_back(sn+" 304 "+user->nick+" :ZIPSTATS percentage_of_orignal_inbound_traffic = "+inbound_ratio);
results.push_back(sn+" 304 "+user->nick+" :ZIPSTATS total_size_of_original_traffic = "+combined_ratio);
- return 0;
+ return MOD_RES_PASSTHRU;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnRawSocketConnect(int fd)
diff --git a/src/modules/m_abbreviation.cpp b/src/modules/m_abbreviation.cpp
index 852764db1..9a9fabb84 100644
--- a/src/modules/m_abbreviation.cpp
+++ b/src/modules/m_abbreviation.cpp
@@ -33,11 +33,11 @@ class ModuleAbbreviation : public Module
return Version("$Id$",VF_VENDOR,API_VERSION);
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
/* Command is already validated, has a length of 0, or last character is not a . */
if (validated || command.empty() || *command.rbegin() != '.')
- return 0;
+ return MOD_RES_PASSTHRU;
/* Whack the . off the end */
command.erase(command.end() - 1);
@@ -56,7 +56,7 @@ class ModuleAbbreviation : public Module
if (matchlist.length() > 450)
{
user->WriteNumeric(420, "%s :Ambiguous abbreviation and too many possible matches.", user->nick.c_str());
- return true;
+ return MOD_RES_DENY;
}
if (!foundmatch)
@@ -74,7 +74,7 @@ class ModuleAbbreviation : public Module
if (!matchlist.empty())
{
user->WriteNumeric(420, "%s :Ambiguous abbreviation, posssible matches: %s%s", user->nick.c_str(), foundcommand.c_str(), matchlist.c_str());
- return true;
+ return MOD_RES_DENY;
}
if (foundcommand.empty())
@@ -87,7 +87,7 @@ class ModuleAbbreviation : public Module
command = foundcommand;
}
- return false;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_alias.cpp b/src/modules/m_alias.cpp
index 1741bb10d..5140faeaf 100644
--- a/src/modules/m_alias.cpp
+++ b/src/modules/m_alias.cpp
@@ -137,7 +137,7 @@ class ModuleAlias : public Module
return word;
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
std::multimap<std::string, Alias>::iterator i, upperbound;
@@ -145,12 +145,12 @@ class ModuleAlias : public Module
* to know.
*/
if (user->registered != REG_ALL)
- return 0;
+ return MOD_RES_PASSTHRU;
/* We dont have any commands looking like this? Stop processing. */
i = Aliases.find(command);
if (i == Aliases.end())
- return 0;
+ return MOD_RES_PASSTHRU;
/* Avoid iterating on to different aliases if no patterns match. */
upperbound = Aliases.upper_bound(command);
@@ -166,7 +166,7 @@ class ModuleAlias : public Module
{
if (DoAlias(user, NULL, &(i->second), compare, original_line))
{
- return 1;
+ return MOD_RES_DENY;
}
}
@@ -174,7 +174,7 @@ class ModuleAlias : public Module
}
// If we made it here, no aliases actually matched.
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserMessage(User *user, void *dest, int target_type, const std::string &text, char status, const CUList &exempt_list)
@@ -243,8 +243,6 @@ class ModuleAlias : public Module
i++;
}
-
- return;
}
diff --git a/src/modules/m_allowinvite.cpp b/src/modules/m_allowinvite.cpp
index ce4d73098..f38da5495 100644
--- a/src/modules/m_allowinvite.cpp
+++ b/src/modules/m_allowinvite.cpp
@@ -39,24 +39,25 @@ class ModuleAllowInvite : public Module
ServerInstance->AddExtBanChar('A');
}
- virtual int OnUserPreInvite(User* user,User* dest,Channel* channel, time_t timeout)
+ virtual ModResult OnUserPreInvite(User* user,User* dest,Channel* channel, time_t timeout)
{
if (IS_LOCAL(user))
{
- if (channel->GetExtBanStatus(user, 'A') == -1)
+ ModResult res = channel->GetExtBanStatus(user, 'A');
+ if (res == MOD_RES_DENY)
{
// Matching extban, explicitly deny /invite
user->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s %s :You are banned from using INVITE", user->nick.c_str(), channel->name.c_str());
- return 1;
+ return res;
}
- if (channel->IsModeSet('A') || channel->GetExtBanStatus(user, 'A') == 1)
+ if (channel->IsModeSet('A') || res == MOD_RES_ALLOW)
{
// Explicitly allow /invite
- return -1;
+ return MOD_RES_ALLOW;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleAllowInvite()
diff --git a/src/modules/m_antibear.cpp b/src/modules/m_antibear.cpp
index c00b92f2b..70a4a96fb 100644
--- a/src/modules/m_antibear.cpp
+++ b/src/modules/m_antibear.cpp
@@ -37,7 +37,7 @@ class ModuleAntiBear : public Module
return Version("$Id$",VF_VENDOR,API_VERSION);
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
if (command == "NOTICE" && !validated && parameters.size() > 1 && user->GetExt("antibear_timewait"))
{
@@ -52,24 +52,24 @@ class ModuleAntiBear : public Module
else
delete zl;
- return 1;
+ return MOD_RES_DENY;
}
user->Shrink("antibear_timewait");
// Block the command, so the user doesn't receive a no such nick notice
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
user->WriteNumeric(439, "%s :This server has anti-spambot mechanisms enabled.", user->nick.c_str());
user->WriteNumeric(931, "%s :Malicious bots, spammers, and other automated systems of dubious origin are NOT welcome here.", user->nick.c_str());
user->WriteServ("PRIVMSG %s :\1TIME\1", user->nick.c_str());
user->Extend("antibear_timewait");
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_antibottler.cpp b/src/modules/m_antibottler.cpp
index 15a5e096a..cae67f410 100644
--- a/src/modules/m_antibottler.cpp
+++ b/src/modules/m_antibottler.cpp
@@ -37,7 +37,7 @@ class ModuleAntiBottler : public Module
return Version("$Id$",VF_VENDOR,API_VERSION);
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
char data[MAXBUF];
strlcpy(data,original_line.c_str(),MAXBUF);
@@ -56,7 +56,7 @@ class ModuleAntiBottler : public Module
}
// Bug Fix (#14) -- FCS
if (!*data)
- return 0;
+ return MOD_RES_PASSTHRU;
strtok(data," ");
char *ident = strtok(NULL," ");
@@ -65,7 +65,7 @@ class ModuleAntiBottler : public Module
char *gecos = strtok(NULL,"\r\n");
if (!ident || !local || !remote || !gecos)
- return 0;
+ return MOD_RES_PASSTHRU;
for (char* j = remote; *j; j++)
{
@@ -84,10 +84,10 @@ class ModuleAntiBottler : public Module
modified.push_back(remote);
modified.push_back(strgecos);
ServerInstance->Parser->CallHandler("USER", modified, user);
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_auditorium.cpp b/src/modules/m_auditorium.cpp
index 594dccf90..b7b60497b 100644
--- a/src/modules/m_auditorium.cpp
+++ b/src/modules/m_auditorium.cpp
@@ -159,13 +159,13 @@ class ModuleAuditorium : public Module
}
}
- bool OnHostCycle(User* user)
+ ModResult OnHostCycle(User* user)
{
for (UCListIter f = user->chans.begin(); f != user->chans.end(); f++)
if (f->first->IsModeSet('u'))
- return true;
+ return MOD_RES_DENY;
- return false;
+ return MOD_RES_PASSTHRU;
}
void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message)
diff --git a/src/modules/m_banexception.cpp b/src/modules/m_banexception.cpp
index 55a5da83f..dafa47d2c 100644
--- a/src/modules/m_banexception.cpp
+++ b/src/modules/m_banexception.cpp
@@ -57,7 +57,7 @@ public:
output.append(" EXCEPTS=e");
}
- virtual int OnCheckExtBan(User *user, Channel *chan, char type)
+ virtual ModResult OnCheckExtBan(User *user, Channel *chan, char type)
{
if (chan != NULL)
{
@@ -65,7 +65,7 @@ public:
chan->GetExt(be.GetInfoKey(), list);
if (!list)
- return 0;
+ return MOD_RES_PASSTHRU;
std::string mask = std::string(user->nick) + "!" + user->ident + "@" + user->GetIPString();
for (modelist::iterator it = list->begin(); it != list->end(); it++)
@@ -78,15 +78,15 @@ public:
if (InspIRCd::Match(user->GetFullRealHost(), maskptr) || InspIRCd::Match(user->GetFullHost(), maskptr) || (InspIRCd::MatchCIDR(mask, maskptr)))
{
// They match an entry on the list, so let them pass this.
- return 1;
+ return MOD_RES_ALLOW;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnCheckStringExtBan(const std::string &str, Channel *chan, char type)
+ virtual ModResult OnCheckStringExtBan(const std::string &str, Channel *chan, char type)
{
if (chan != NULL)
{
@@ -94,7 +94,7 @@ public:
chan->GetExt(be.GetInfoKey(), list);
if (!list)
- return 0;
+ return MOD_RES_PASSTHRU;
for (modelist::iterator it = list->begin(); it != list->end(); it++)
{
if (it->mask[0] != type || it->mask[1] != ':')
@@ -103,14 +103,14 @@ public:
std::string maskptr = it->mask.substr(2);
if (InspIRCd::Match(str, maskptr))
// They match an entry on the list, so let them in.
- return 1;
+ return MOD_RES_ALLOW;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnCheckBan(User* user, Channel* chan)
+ virtual ModResult OnCheckBan(User* user, Channel* chan)
{
if (chan != NULL)
{
@@ -120,7 +120,7 @@ public:
if (!list)
{
// No list, proceed normally
- return 0;
+ return MOD_RES_PASSTHRU;
}
std::string mask = std::string(user->nick) + "!" + user->ident + "@" + user->GetIPString();
@@ -129,11 +129,11 @@ public:
if (InspIRCd::Match(user->GetFullRealHost(), it->mask) || InspIRCd::Match(user->GetFullHost(), it->mask) || (InspIRCd::MatchCIDR(mask, it->mask)))
{
// They match an entry on the list, so let them in.
- return 1;
+ return MOD_RES_ALLOW;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnCleanup(int target_type, void* item)
diff --git a/src/modules/m_banredirect.cpp b/src/modules/m_banredirect.cpp
index 316225893..1a486325a 100644
--- a/src/modules/m_banredirect.cpp
+++ b/src/modules/m_banredirect.cpp
@@ -262,13 +262,13 @@ class ModuleBanRedirect : public Module
ExceptionModule = ServerInstance->Modules->Find("m_banexception.so");
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
/* This prevents recursion when a user sets multiple ban redirects in a chain
* (thanks Potter)
*/
if (nofollow)
- return 0;
+ return MOD_RES_PASSTHRU;
/* Return 1 to prevent the join, 0 to allow it */
if (chan)
@@ -288,7 +288,7 @@ class ModuleBanRedirect : public Module
ListModeRequest n(this, ExceptionModule, user, chan);
/* Users with ban exceptions are allowed to join without being redirected */
if (n.Send())
- return 0;
+ return MOD_RES_PASSTHRU;
}
std::string ipmask(user->nick);
@@ -308,7 +308,7 @@ class ModuleBanRedirect : public Module
if(destchan && ServerInstance->Modules->Find("m_redirect.so") && destchan->IsModeSet('L') && !destlimit.empty() && (destchan->GetUserCounter() >= atoi(destlimit.c_str())))
{
user->WriteNumeric(474, "%s %s :Cannot join channel (You are banned)", user->nick.c_str(), chan->name.c_str());
- return 1;
+ return MOD_RES_ALLOW;
}
else
{
@@ -317,13 +317,13 @@ class ModuleBanRedirect : public Module
nofollow = true;
Channel::JoinUser(ServerInstance, user, redir->targetchan.c_str(), false, "", false, ServerInstance->Time());
nofollow = false;
- return 1;
+ return MOD_RES_ALLOW;
}
}
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleBanRedirect()
diff --git a/src/modules/m_blockamsg.cpp b/src/modules/m_blockamsg.cpp
index 89728bdb9..104086bfe 100644
--- a/src/modules/m_blockamsg.cpp
+++ b/src/modules/m_blockamsg.cpp
@@ -84,11 +84,11 @@ class ModuleBlockAmsg : public Module
action = IBLOCK_KILLOPERS;
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
// Don't do anything with unregistered users, or remote ones.
if(!user || (user->registered != REG_ALL) || !IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
// We want case insensitive command comparison.
// Add std::string contructor for irc::string :x
@@ -119,7 +119,7 @@ class ModuleBlockAmsg : public Module
*/
if(targets == 0)
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
userchans = user->chans.size();
@@ -144,7 +144,7 @@ class ModuleBlockAmsg : public Module
else if(action == IBLOCK_NOTICE || action == IBLOCK_NOTICEOPERS)
user->WriteServ( "NOTICE %s :Global message (/amsg or /ame) detected", user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
if(m)
@@ -160,7 +160,7 @@ class ModuleBlockAmsg : public Module
user->Extend("amsgblock", (char*)m);
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
void OnCleanup(int target_type, void* item)
diff --git a/src/modules/m_blockcaps.cpp b/src/modules/m_blockcaps.cpp
index 6ce1cecc5..ca1bc5a2b 100644
--- a/src/modules/m_blockcaps.cpp
+++ b/src/modules/m_blockcaps.cpp
@@ -51,21 +51,21 @@ public:
ReadConf();
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_CHANNEL)
{
if ((!IS_LOCAL(user)) || (text.length() < minlen))
- return 0;
+ return MOD_RES_PASSTHRU;
Channel* c = (Channel*)dest;
if (CHANOPS_EXEMPT(ServerInstance, 'B') && c->GetStatus(user) == STATUS_OP)
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
- if (c->IsModeSet('B') || c->GetExtBanStatus(user, 'B') < 0)
+ if (!c->GetExtBanStatus(user, 'B').check(!c->IsModeSet('B')))
{
int caps = 0;
const char* actstr = "\1ACTION ";
@@ -87,14 +87,14 @@ public:
if ( ((caps*100)/(int)text.length()) >= percent )
{
user->WriteNumeric(ERR_CANNOTSENDTOCHAN, "%s %s :Your message cannot contain more than %d%% capital letters if it's longer than %d characters", user->nick.c_str(), c->name.c_str(), percent, minlen);
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user,dest,target_type,text,status,exempt_list);
}
diff --git a/src/modules/m_blockcolor.cpp b/src/modules/m_blockcolor.cpp
index 982d225c3..5bd86bccf 100644
--- a/src/modules/m_blockcolor.cpp
+++ b/src/modules/m_blockcolor.cpp
@@ -42,7 +42,7 @@ class ModuleBlockColour : public Module
ServerInstance->AddExtBanChar('c');
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if ((target_type == TYPE_CHANNEL) && (IS_LOCAL(user)))
{
@@ -50,10 +50,10 @@ class ModuleBlockColour : public Module
if (CHANOPS_EXEMPT(ServerInstance, 'c') && c->GetStatus(user) == STATUS_OP)
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
- if(c->IsModeSet('c') || c->GetExtBanStatus(user, 'c') < 0)
+ if (!c->GetExtBanStatus(user, 'c').check(!c->IsModeSet('c')))
{
for (std::string::iterator i = text.begin(); i != text.end(); i++)
{
@@ -66,16 +66,16 @@ class ModuleBlockColour : public Module
case 22:
case 31:
user->WriteNumeric(404, "%s %s :Can't send colours to channel (+c set)",user->nick.c_str(), c->name.c_str());
- return 1;
+ return MOD_RES_DENY;
break;
}
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user,dest,target_type,text,status,exempt_list);
}
diff --git a/src/modules/m_callerid.cpp b/src/modules/m_callerid.cpp
index f275c0a88..4c490a334 100644
--- a/src/modules/m_callerid.cpp
+++ b/src/modules/m_callerid.cpp
@@ -367,13 +367,13 @@ public:
output += " CALLERID=g";
}
- int PreText(User* user, User* dest, std::string& text, bool notice)
+ ModResult PreText(User* user, User* dest, std::string& text, bool notice)
{
if (!dest->IsModeSet('g'))
- return 0;
+ return MOD_RES_PASSTHRU;
if (operoverride && IS_OPER(user))
- return 0;
+ return MOD_RES_PASSTHRU;
callerid_data* dat = GetData(dest, true);
std::set<User*>::iterator i = dat->accepting.find(user);
@@ -396,25 +396,25 @@ public:
}
dat->lastnotify = now;
}
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list)
{
if (IS_LOCAL(user) && target_type == TYPE_USER)
return PreText(user, (User*)dest, text, true);
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user, void* dest, int target_type, std::string& text, char status, CUList &exempt_list)
{
if (IS_LOCAL(user) && target_type == TYPE_USER)
return PreText(user, (User*)dest, text, true);
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnCleanup(int type, void* item)
@@ -447,11 +447,11 @@ public:
}
}
- virtual int OnUserPreNick(User* user, const std::string& newnick)
+ virtual ModResult OnUserPreNick(User* user, const std::string& newnick)
{
if (!tracknick)
RemoveFromAllAccepts(user);
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserQuit(User* user, const std::string& message, const std::string& oper_message)
diff --git a/src/modules/m_cap.cpp b/src/modules/m_cap.cpp
index 2b700a5ae..626b4c23c 100644
--- a/src/modules/m_cap.cpp
+++ b/src/modules/m_cap.cpp
@@ -141,13 +141,13 @@ class ModuleCAP : public Module
ServerInstance->Modules->Attach(eventlist, this, 1);
}
- virtual bool OnCheckReady(User* user)
+ virtual ModResult OnCheckReady(User* user)
{
/* Users in CAP state get held until CAP END */
if (user->GetExt("CAP_REGHOLD"))
- return false;
+ return MOD_RES_DENY;
- return true;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleCAP()
diff --git a/src/modules/m_cban.cpp b/src/modules/m_cban.cpp
index bf4fa4e6d..a38c9cc40 100644
--- a/src/modules/m_cban.cpp
+++ b/src/modules/m_cban.cpp
@@ -176,16 +176,16 @@ class ModuleCBan : public Module
ServerInstance->XLines->UnregisterFactory(&f);
}
- virtual int OnStats(char symbol, User* user, string_list &out)
+ virtual ModResult OnStats(char symbol, User* user, string_list &out)
{
if (symbol != 'C')
- return 0;
+ return MOD_RES_PASSTHRU;
ServerInstance->XLines->InvokeStats("CBAN", 210, user, out);
- return 1;
+ return MOD_RES_DENY;
}
- virtual int OnUserPreJoin(User *user, Channel *chan, const char *cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User *user, Channel *chan, const char *cname, std::string &privs, const std::string &keygiven)
{
XLine *rl = ServerInstance->XLines->MatchesLine("CBAN", cname);
@@ -196,10 +196,10 @@ class ModuleCBan : public Module
ServerInstance->SNO->WriteToSnoMask('a', "%s tried to join %s which is CBANed (%s)",
user->nick.c_str(), cname, rl->reason.c_str());
ServerInstance->PI->SendSNONotice("A", user->nick + " tried to join " + std::string(cname) + " which is CBANed (" + rl->reason + ")");
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual Version GetVersion()
diff --git a/src/modules/m_censor.cpp b/src/modules/m_censor.cpp
index 13527f64a..6050d49ab 100644
--- a/src/modules/m_censor.cpp
+++ b/src/modules/m_censor.cpp
@@ -64,10 +64,10 @@ class ModuleCensor : public Module
}
// format of a config entry is <badword text="shit" replace="poo">
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
bool active = false;
@@ -79,12 +79,12 @@ class ModuleCensor : public Module
Channel* c = (Channel*)dest;
if (CHANOPS_EXEMPT(ServerInstance, 'G') && c->GetStatus(user) == STATUS_OP)
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
}
if (!active)
- return 0;
+ return MOD_RES_PASSTHRU;
irc::string text2 = text.c_str();
for (censor_t::iterator index = censors.begin(); index != censors.end(); index++)
@@ -94,17 +94,17 @@ class ModuleCensor : public Module
if (index->second.empty())
{
user->WriteNumeric(ERR_WORDFILTERED, "%s %s %s :Your message contained a censored word, and was blocked", user->nick.c_str(), ((Channel*)dest)->name.c_str(), index->first.c_str());
- return 1;
+ return MOD_RES_DENY;
}
SearchAndReplace(text2, index->first, index->second);
}
}
text = text2.c_str();
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user,dest,target_type,text,status,exempt_list);
}
diff --git a/src/modules/m_cgiirc.cpp b/src/modules/m_cgiirc.cpp
index a406ad658..4c1c35257 100644
--- a/src/modules/m_cgiirc.cpp
+++ b/src/modules/m_cgiirc.cpp
@@ -249,7 +249,7 @@ public:
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
for(CGIHostlist::iterator iter = cmd.Hosts.begin(); iter != cmd.Hosts.end(); iter++)
{
@@ -282,10 +282,10 @@ public:
{
// We don't need to do anything here
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserConnect(User* user)
diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp
index 977bab4cb..4f6ebf22a 100644
--- a/src/modules/m_chanfilter.cpp
+++ b/src/modules/m_chanfilter.cpp
@@ -88,10 +88,10 @@ class ModuleChanFilter : public Module
cf.DoRehash();
}
- virtual int ProcessMessages(User* user,Channel* chan,std::string &text)
+ virtual ModResult ProcessMessages(User* user,Channel* chan,std::string &text)
{
if (!IS_LOCAL(user) || (CHANOPS_EXEMPT(ServerInstance, 'g') && chan->GetStatus(user) == STATUS_OP))
- return 0;
+ return MOD_RES_PASSTHRU;
modelist* list;
chan->GetExt(cf.GetInfoKey(), list);
@@ -106,21 +106,21 @@ class ModuleChanFilter : public Module
user->WriteNumeric(404, "%s %s :Cannot send to channel (your message contained a censored word)",user->nick.c_str(), chan->name.c_str());
else
user->WriteNumeric(404, "%s %s %s :Cannot send to channel (your message contained a censored word)",user->nick.c_str(), chan->name.c_str(), i->mask.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_CHANNEL)
{
return ProcessMessages(user,(Channel*)dest,text);
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnCleanup(int target_type, void* item)
@@ -133,7 +133,7 @@ class ModuleChanFilter : public Module
return cf.DoOnRequest(request);
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user,dest,target_type,text,status,exempt_list);
}
diff --git a/src/modules/m_chanlog.cpp b/src/modules/m_chanlog.cpp
index 259474d74..8149bad1b 100644
--- a/src/modules/m_chanlog.cpp
+++ b/src/modules/m_chanlog.cpp
@@ -64,13 +64,13 @@ class ModuleChanLog : public Module
}
- virtual int OnSendSnotice(char &sno, std::string &desc, const std::string &msg)
+ virtual ModResult OnSendSnotice(char &sno, std::string &desc, const std::string &msg)
{
std::multimap<char, std::string>::const_iterator it = logstreams.find(sno);
char buf[MAXBUF];
if (it == logstreams.end())
- return 0;
+ return MOD_RES_PASSTHRU;
snprintf(buf, MAXBUF, "\2%s\2: %s", desc.c_str(), msg.c_str());
@@ -92,7 +92,7 @@ class ModuleChanLog : public Module
it++;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual Version GetVersion()
diff --git a/src/modules/m_channelban.cpp b/src/modules/m_channelban.cpp
index eeb5c751d..8167b8aae 100644
--- a/src/modules/m_channelban.cpp
+++ b/src/modules/m_channelban.cpp
@@ -34,12 +34,12 @@ class ModuleBadChannelExtban : public Module
return Version("$Id$", VF_COMMON|VF_VENDOR,API_VERSION);
}
- virtual int OnCheckBan(User *user, Channel *c)
+ virtual ModResult OnCheckBan(User *user, Channel *c)
{
- int rv = 0;
+ ModResult rv;
for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++)
{
- rv = banmatch_reduce(rv, c->GetExtBanStatus(i->first->name, 'j'));
+ rv = rv + c->GetExtBanStatus(i->first->name, 'j');
}
return rv;
diff --git a/src/modules/m_chanprotect.cpp b/src/modules/m_chanprotect.cpp
index e436e9225..e2c71673d 100644
--- a/src/modules/m_chanprotect.cpp
+++ b/src/modules/m_chanprotect.cpp
@@ -381,7 +381,7 @@ class ModuleChanProtect : public Module
DeprivOthers = Conf.ReadFlag("chanprotect","deprotectothers", "yes", 0);
}
- virtual int OnUserPreJoin(User *user, Channel *chan, const char *cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User *user, Channel *chan, const char *cname, std::string &privs, const std::string &keygiven)
{
// if the user is the first user into the channel, mark them as the founder, but only if
// the config option for it is set
@@ -389,10 +389,10 @@ class ModuleChanProtect : public Module
if (FirstInGetsFounder && !chan)
privs = std::string(1, QPrefix) + "@";
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnAccessCheck(User* source,User* dest,Channel* channel,int access_type)
+ virtual ModResult OnAccessCheck(User* source,User* dest,Channel* channel,int access_type)
{
// here we perform access checks, this is the important bit that actually stops kicking/deopping
// etc of protected users. There are many types of access check, we're going to handle
@@ -406,14 +406,14 @@ class ModuleChanProtect : public Module
// firstly, if a ulined nick, or a server, is setting the mode, then allow them to set the mode
// without any access checks, we're not worthy :p
if ((ServerInstance->ULine(source->nick.c_str())) || (ServerInstance->ULine(source->server)) || (!*source->server))
- return ACR_ALLOW;
+ return MOD_RES_ALLOW;
std::string founder("cm_founder_"+channel->name);
std::string protect("cm_protect_"+channel->name);
// Can do anything to yourself if deprotectself is enabled.
if (DeprivSelf && source == dest)
- return ACR_DEFAULT;
+ return MOD_RES_PASSTHRU;
bool candepriv_founder = (DeprivOthers && source->GetExt(founder));
bool candepriv_protected = (source->GetExt(founder) || (DeprivOthers && source->GetExt(protect))); // Can the source remove +a?
@@ -425,12 +425,12 @@ class ModuleChanProtect : public Module
if (dest->GetExt(founder) && !candepriv_founder)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't deop "+dest->nick+" as they're a channel founder");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
if ((dest->GetExt(protect)) && !candepriv_protected)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't deop "+dest->nick+" as they're protected (+a)");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
break;
@@ -439,12 +439,12 @@ class ModuleChanProtect : public Module
if (dest->GetExt(founder) && !candepriv_founder)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't kick "+dest->nick+" as they're a channel founder");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
if ((dest->GetExt(protect)) && !candepriv_protected)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't kick "+dest->nick+" as they're protected (+a)");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
break;
@@ -453,12 +453,12 @@ class ModuleChanProtect : public Module
if (dest->GetExt(founder) && !candepriv_founder)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't de-halfop "+dest->nick+" as they're a channel founder");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
if ((dest->GetExt(protect)) && !candepriv_protected)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't de-halfop "+dest->nick+" as they're protected (+a)");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
break;
@@ -467,18 +467,18 @@ class ModuleChanProtect : public Module
if (dest->GetExt(founder) && !candepriv_founder)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't devoice "+dest->nick+" as they're a channel founder");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
if ((dest->GetExt(protect)) && !candepriv_protected)
{
source->WriteNumeric(484, source->nick+" "+channel->name+" :Can't devoice "+dest->nick+" as they're protected (+a)");
- return ACR_DENY;
+ return MOD_RES_DENY;
}
break;
}
// we dont know what this access check is, or dont care. just carry on, nothing to see here.
- return ACR_DEFAULT;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleChanProtect()
diff --git a/src/modules/m_cloaking.cpp b/src/modules/m_cloaking.cpp
index 43f73bfe0..2fa3b9e63 100644
--- a/src/modules/m_cloaking.cpp
+++ b/src/modules/m_cloaking.cpp
@@ -307,7 +307,7 @@ class ModuleCloaking : public Module
}
}
- virtual int OnCheckBan(User* user, Channel* chan)
+ virtual ModResult OnCheckBan(User* user, Channel* chan)
{
char mask[MAXBUF];
std::string* tofree;
@@ -318,10 +318,10 @@ class ModuleCloaking : public Module
for (BanList::iterator i = chan->bans.begin(); i != chan->bans.end(); i++)
{
if (InspIRCd::Match(mask,i->data))
- return -1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
void Prioritize()
diff --git a/src/modules/m_commonchans.cpp b/src/modules/m_commonchans.cpp
index 71639c51e..d9e253758 100644
--- a/src/modules/m_commonchans.cpp
+++ b/src/modules/m_commonchans.cpp
@@ -68,7 +68,7 @@ class ModulePrivacyMode : public Module
return Version("$Id$", VF_COMMON|VF_VENDOR, API_VERSION);
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_USER)
{
@@ -76,13 +76,13 @@ class ModulePrivacyMode : public Module
if (!IS_OPER(user) && (t->IsModeSet('c')) && (!ServerInstance->ULine(user->server)) && !user->SharesChannelWith(t))
{
user->WriteNumeric(ERR_CANTSENDTOUSER, "%s %s :You are not permitted to send private messages to this user (+c set)", user->nick.c_str(), t->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user, dest, target_type, text, status, exempt_list);
}
diff --git a/src/modules/m_conn_waitpong.cpp b/src/modules/m_conn_waitpong.cpp
index 9a0adc3d6..4da240138 100644
--- a/src/modules/m_conn_waitpong.cpp
+++ b/src/modules/m_conn_waitpong.cpp
@@ -56,7 +56,7 @@ class ModuleWaitPong : public Module
return (char*)out;
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
char* pingrpl = RandString(10);
@@ -66,10 +66,10 @@ class ModuleWaitPong : public Module
user->WriteServ("NOTICE %s :*** If you are having problems connecting due to ping timeouts, please type /quote PONG %s or /raw PONG %s now.", user->nick.c_str(), pingrpl, pingrpl);
user->Extend(extenstr, pingrpl);
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User* user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User* user, bool validated, const std::string &original_line)
{
if (command == "PONG")
{
@@ -82,23 +82,23 @@ class ModuleWaitPong : public Module
{
delete[] pingrpl;
user->Shrink(extenstr);
- return 1;
+ return MOD_RES_DENY;
}
else
{
if(killonbadreply)
ServerInstance->Users->QuitUser(user, "Incorrect ping reply for registration");
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual bool OnCheckReady(User* user)
+ virtual ModResult OnCheckReady(User* user)
{
char* pingrpl;
- return (!user->GetExt(extenstr, pingrpl));
+ return user->GetExt(extenstr, pingrpl) ? MOD_RES_DENY : MOD_RES_PASSTHRU;
}
virtual void OnUserDisconnect(User* user)
diff --git a/src/modules/m_connflood.cpp b/src/modules/m_connflood.cpp
index 6828d28f2..88f566d6d 100644
--- a/src/modules/m_connflood.cpp
+++ b/src/modules/m_connflood.cpp
@@ -61,12 +61,12 @@ public:
first = ServerInstance->Time();
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
time_t next = ServerInstance->Time();
if ((ServerInstance->startup_time + boot_wait) > next)
- return 0;
+ return MOD_RES_PASSTHRU;
/* time difference between first and latest connection */
time_t tdiff = next - first;
@@ -81,11 +81,11 @@ public:
/* expire throttle */
throttled = 0;
ServerInstance->SNO->WriteGlobalSno('a', "Connection throttle deactivated");
- return 0;
+ return MOD_RES_PASSTHRU;
}
ServerInstance->Users->QuitUser(user, quitmsg);
- return 1;
+ return MOD_RES_DENY;
}
if (tdiff <= seconds)
@@ -95,7 +95,7 @@ public:
throttled = 1;
ServerInstance->SNO->WriteGlobalSno('a', "Connection throttle activated");
ServerInstance->Users->QuitUser(user, quitmsg);
- return 1;
+ return MOD_RES_DENY;
}
}
else
@@ -103,7 +103,7 @@ public:
conns = 1;
first = next;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnRehash(User* user)
diff --git a/src/modules/m_customtitle.cpp b/src/modules/m_customtitle.cpp
index 806f2194f..54dd9b0d0 100644
--- a/src/modules/m_customtitle.cpp
+++ b/src/modules/m_customtitle.cpp
@@ -101,7 +101,7 @@ class ModuleCustomTitle : public Module
// :kenny.chatspike.net 320 Brain Azhrarn :is getting paid to play games.
- int OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
+ ModResult OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
{
/* We use this and not OnWhois because this triggers for remote, too */
if (numeric == 312)
@@ -114,7 +114,7 @@ class ModuleCustomTitle : public Module
}
}
/* Dont block anything */
- return 0;
+ return MOD_RES_PASSTHRU;
}
// Whenever the linking module wants to send out data, but doesnt know what the data
diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp
index df70bba82..cd43a4539 100644
--- a/src/modules/m_dccallow.cpp
+++ b/src/modules/m_dccallow.cpp
@@ -282,21 +282,21 @@ class ModuleDCCAllow : public Module
}
- virtual int OnUserPreNick(User* user, const std::string &newnick)
+ virtual ModResult OnUserPreNick(User* user, const std::string &newnick)
{
RemoveNick(user);
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreNotice(user, dest, target_type, text, status, exempt_list);
}
- virtual int OnUserPreNotice(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
if (target_type == TYPE_USER)
{
@@ -304,7 +304,7 @@ class ModuleDCCAllow : public Module
/* Always allow a user to dcc themselves (although... why?) */
if (user == u)
- return 0;
+ return MOD_RES_PASSTHRU;
if ((text.length()) && (text[0] == '\1'))
{
@@ -319,7 +319,7 @@ class ModuleDCCAllow : public Module
{
for (dccallowlist::const_iterator iter = dl->begin(); iter != dl->end(); ++iter)
if (InspIRCd::Match(user->GetFullHost(), iter->hostmask))
- return 0;
+ return MOD_RES_PASSTHRU;
}
// tokenize
@@ -346,7 +346,7 @@ class ModuleDCCAllow : public Module
{
/* We have a matching badfile entry, override whatever the default action is */
if (bfl[i].action == "allow")
- return 0;
+ return MOD_RES_PASSTHRU;
else
{
found = true;
@@ -357,24 +357,24 @@ class ModuleDCCAllow : public Module
/* only follow the default action if no badfile matches were found above */
if ((!found) && (defaultaction == "allow"))
- return 0;
+ return MOD_RES_PASSTHRU;
user->WriteServ("NOTICE %s :The user %s is not accepting DCC SENDs from you. Your file %s was not sent.", user->nick.c_str(), u->nick.c_str(), filename.c_str());
u->WriteServ("NOTICE %s :%s (%s@%s) attempted to send you a file named %s, which was blocked.", u->nick.c_str(), user->nick.c_str(), user->ident.c_str(), user->dhost.c_str(), filename.c_str());
u->WriteServ("NOTICE %s :If you trust %s and were expecting this, you can type /DCCALLOW HELP for information on the DCCALLOW system.", u->nick.c_str(), user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
else if ((type == "CHAT") && (blockchat))
{
user->WriteServ("NOTICE %s :The user %s is not accepting DCC CHAT requests from you.", user->nick.c_str(), u->nick.c_str());
u->WriteServ("NOTICE %s :%s (%s@%s) attempted to initiate a DCC CHAT session, which was blocked.", u->nick.c_str(), user->nick.c_str(), user->ident.c_str(), user->dhost.c_str());
u->WriteServ("NOTICE %s :If you trust %s and were expecting this, you can type /DCCALLOW HELP for information on the DCCALLOW system.", u->nick.c_str(), user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
void Expire()
diff --git a/src/modules/m_deaf.cpp b/src/modules/m_deaf.cpp
index 0600d1ab9..aaa3696b5 100644
--- a/src/modules/m_deaf.cpp
+++ b/src/modules/m_deaf.cpp
@@ -74,7 +74,7 @@ class ModuleDeaf : public Module
delete conf;
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_CHANNEL)
{
@@ -83,10 +83,10 @@ class ModuleDeaf : public Module
this->BuildDeafList(MSG_NOTICE, chan, user, status, text, exempt_list);
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_CHANNEL)
{
@@ -95,7 +95,7 @@ class ModuleDeaf : public Module
this->BuildDeafList(MSG_PRIVMSG, chan, user, status, text, exempt_list);
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnBuildExemptList(MessageType message_type, Channel* chan, User* sender, char status, CUList &exempt_list, const std::string &text)
diff --git a/src/modules/m_delayjoin.cpp b/src/modules/m_delayjoin.cpp
index d9eb83c48..9463457f7 100644
--- a/src/modules/m_delayjoin.cpp
+++ b/src/modules/m_delayjoin.cpp
@@ -42,7 +42,7 @@ class ModuleDelayJoin : public Module
virtual void OnNamesListItem(User* issuer, User* user, Channel* channel, std::string &prefixes, std::string &nick);
virtual void OnUserJoin(User* user, Channel* channel, bool sync, bool &silent, bool created);
void CleanUser(User* user);
- bool OnHostCycle(User* user);
+ ModResult OnHostCycle(User* user);
void OnUserPart(User* user, Channel* channel, std::string &partmessage, bool &silent);
void OnUserKick(User* source, User* user, Channel* chan, const std::string &reason, bool &silent);
void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message);
@@ -158,9 +158,9 @@ void ModuleDelayJoin::OnUserKick(User* source, User* user, Channel* chan, const
}
}
-bool ModuleDelayJoin::OnHostCycle(User* user)
+ModResult ModuleDelayJoin::OnHostCycle(User* user)
{
- return user->GetExt("delayjoin");
+ return user->GetExt("delayjoin") ? MOD_RES_DENY : MOD_RES_PASSTHRU;
}
void ModuleDelayJoin::OnUserQuit(User* user, const std::string &reason, const std::string &oper_message)
diff --git a/src/modules/m_delaymsg.cpp b/src/modules/m_delaymsg.cpp
index c40439ea8..8400823fa 100644
--- a/src/modules/m_delaymsg.cpp
+++ b/src/modules/m_delaymsg.cpp
@@ -60,7 +60,7 @@ class ModuleDelayMsg : public Module
void OnUserPart(User* user, Channel* channel, std::string &partmessage, bool &silent);
void OnUserKick(User* source, User* user, Channel* chan, const std::string &reason, bool &silent);
void OnCleanup(int target_type, void* item);
- int OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list);
+ ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list);
};
/* $ModDesc: Allows for delay-join channels (+D) where users dont appear to join until they speak */
@@ -130,21 +130,21 @@ void ModuleDelayMsg::OnCleanup(int target_type, void* item)
}
}
-int ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ModResult ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
/* Server origin */
if (!user)
- return false;
+ return MOD_RES_PASSTHRU;
if (target_type != TYPE_CHANNEL)
- return false;
+ return MOD_RES_PASSTHRU;
Channel* channel = (Channel*) dest;
void* jointime_as_ptr;
if (!user->GetExt("delaymsg_"+channel->name, jointime_as_ptr))
- return false;
+ return MOD_RES_PASSTHRU;
time_t jointime = reinterpret_cast<time_t>(jointime_as_ptr);
@@ -156,7 +156,7 @@ int ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_type, st
{
user->WriteNumeric(404, "%s %s :You must wait %s seconds after joining to send to channel (+d)",
user->nick.c_str(), channel->name.c_str(), len.c_str());
- return true;
+ return MOD_RES_DENY;
}
}
else
@@ -164,7 +164,7 @@ int ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_type, st
/* Timer has expired, we can stop checking now */
user->Shrink("delaymsg_"+channel->name);
}
- return false;
+ return MOD_RES_PASSTHRU;
}
MODULE_INIT(ModuleDelayMsg)
diff --git a/src/modules/m_denychans.cpp b/src/modules/m_denychans.cpp
index 3a9df37a2..401642e08 100644
--- a/src/modules/m_denychans.cpp
+++ b/src/modules/m_denychans.cpp
@@ -86,7 +86,7 @@ class ModuleDenyChannels : public Module
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
for (int j =0; j < Conf->Enumerate("badchan"); j++)
{
@@ -94,7 +94,7 @@ class ModuleDenyChannels : public Module
{
if (IS_OPER(user) && Conf->ReadFlag("badchan","allowopers",j))
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
else
{
@@ -105,7 +105,7 @@ class ModuleDenyChannels : public Module
{
if (InspIRCd::Match(cname, Conf->ReadValue("goodchan", "name", i)))
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
}
@@ -117,16 +117,16 @@ class ModuleDenyChannels : public Module
{
user->WriteNumeric(926, "%s %s :Channel %s is forbidden, redirecting to %s: %s",user->nick.c_str(),cname,cname,redirect.c_str(), reason.c_str());
Channel::JoinUser(ServerInstance,user,redirect.c_str(),false,"",false,ServerInstance->Time());
- return 1;
+ return MOD_RES_DENY;
}
}
user->WriteNumeric(926, "%s %s :Channel %s is forbidden: %s",user->nick.c_str(),cname,cname,reason.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp
index 7fb652cf7..f70496d68 100644
--- a/src/modules/m_dnsbl.cpp
+++ b/src/modules/m_dnsbl.cpp
@@ -305,7 +305,7 @@ class ModuleDNSBL : public Module
ReadConf();
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
/* only do lookups on local users */
if (IS_LOCAL(user))
@@ -320,7 +320,7 @@ class ModuleDNSBL : public Module
success = inet_aton(user->GetIPString(), &in);
if (!success)
- return 0;
+ return MOD_RES_PASSTHRU;
d = (unsigned char) (in.s_addr >> 24) & 0xFF;
c = (unsigned char) (in.s_addr >> 16) & 0xFF;
@@ -344,13 +344,13 @@ class ModuleDNSBL : public Module
}
/* don't do anything with this hot potato */
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnStats(char symbol, User* user, string_list &results)
+ virtual ModResult OnStats(char symbol, User* user, string_list &results)
{
if (symbol != 'd')
- return 0;
+ return MOD_RES_PASSTHRU;
unsigned long total_hits = 0, total_misses = 0;
@@ -366,7 +366,7 @@ class ModuleDNSBL : public Module
results.push_back(std::string(ServerInstance->Config->ServerName) + " 304 " + user->nick + " :DNSBLSTATS Total hits: " + ConvToStr(total_hits));
results.push_back(std::string(ServerInstance->Config->ServerName) + " 304 " + user->nick + " :DNSBLSTATS Total misses: " + ConvToStr(total_misses));
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp
index 3288d69fb..36a8c4f95 100644
--- a/src/modules/m_filter.cpp
+++ b/src/modules/m_filter.cpp
@@ -123,21 +123,21 @@ protected:
public:
FilterBase(InspIRCd* Me, const std::string &source);
virtual ~FilterBase();
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
virtual FilterResult* FilterMatch(User* user, const std::string &text, int flags) = 0;
virtual bool DeleteFilter(const std::string &freeform) = 0;
virtual void SyncFilters(Module* proto, void* opaque) = 0;
virtual void SendFilter(Module* proto, void* opaque, FilterResult* iter);
virtual std::pair<bool, std::string> AddFilter(const std::string &freeform, const std::string &type, const std::string &reason, long duration, const std::string &flags) = 0;
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
virtual void OnRehash(User* user);
virtual Version GetVersion();
std::string EncodeFilter(FilterResult* filter);
FilterResult DecodeFilter(const std::string &data);
virtual void OnSyncNetwork(Module* proto, void* opaque);
virtual void OnDecodeMetaData(Extensible* target, const std::string &extname, const std::string &extdata);
- virtual int OnStats(char symbol, User* user, string_list &results) = 0;
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line);
+ virtual ModResult OnStats(char symbol, User* user, string_list &results) = 0;
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line);
bool AppliesToMe(User* user, FilterResult* filter, int flags);
void OnLoadModule(Module* mod, const std::string& name);
virtual void ReadFilters(ConfigReader &MyConf) = 0;
@@ -249,20 +249,20 @@ FilterBase::~FilterBase()
ServerInstance->Modules->DoneWithInterface("RegularExpression");
}
-int FilterBase::OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ModResult FilterBase::OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
flags = FLAG_PRIVMSG;
return OnUserPreNotice(user,dest,target_type,text,status,exempt_list);
}
-int FilterBase::OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ModResult FilterBase::OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
/* Leave ulines alone */
if ((ServerInstance->ULine(user->server)) || (!IS_LOCAL(user)))
- return 0;
+ return MOD_RES_PASSTHRU;
if (!flags)
flags = FLAG_NOTICE;
@@ -281,7 +281,7 @@ int FilterBase::OnUserPreNotice(User* user,void* dest,int target_type, std::stri
Channel* t = (Channel*)dest;
target = std::string(t->name);
std::vector<std::string>::iterator i = find(exemptfromfilter.begin(), exemptfromfilter.end(), target);
- if (i != exemptfromfilter.end()) return 0;
+ if (i != exemptfromfilter.end()) return MOD_RES_PASSTHRU;
}
if (f->action == "block")
{
@@ -314,12 +314,12 @@ int FilterBase::OnUserPreNotice(User* user,void* dest,int target_type, std::stri
}
ServerInstance->Logs->Log("FILTER",DEFAULT,"FILTER: "+ user->nick + " had their message filtered, target was " + target + ": " + f->reason + " Action: " + f->action);
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
-int FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ModResult FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
flags = 0;
if (validated && IS_LOCAL(user))
@@ -332,7 +332,7 @@ int FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &par
{
/* QUIT with no reason: nothing to do */
if (parameters.size() < 1)
- return 0;
+ return MOD_RES_PASSTHRU;
checkline = parameters[0];
replacepoint = 0;
@@ -343,10 +343,10 @@ int FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &par
{
/* PART with no reason: nothing to do */
if (parameters.size() < 2)
- return 0;
+ return MOD_RES_PASSTHRU;
std::vector<std::string>::iterator i = find(exemptfromfilter.begin(), exemptfromfilter.end(), parameters[0]);
- if (i != exemptfromfilter.end()) return 0;
+ if (i != exemptfromfilter.end()) return MOD_RES_PASSTHRU;
checkline = parameters[1];
replacepoint = 1;
parting = true;
@@ -354,7 +354,7 @@ int FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &par
}
else
/* We're only messing with PART and QUIT */
- return 0;
+ return MOD_RES_PASSTHRU;
FilterResult* f = NULL;
@@ -363,7 +363,7 @@ int FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &par
if (!f)
/* PART or QUIT reason doesnt match a filter */
- return 0;
+ return MOD_RES_PASSTHRU;
/* We cant block a part or quit, so instead we change the reason to 'Reason filtered' */
Command* c = ServerInstance->Parser->GetHandler(command);
@@ -380,7 +380,7 @@ int FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &par
if ((f->action == "block") || (((!parting) && (f->action == "kill"))) || (f->action == "silent"))
{
c->Handle(params, user);
- return 1;
+ return MOD_RES_DENY;
}
else
{
@@ -401,12 +401,12 @@ int FilterBase::OnPreCommand(std::string &command, std::vector<std::string> &par
else
delete gl;
}
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
void FilterBase::OnRehash(User* user)
@@ -671,7 +671,7 @@ class ModuleFilter : public FilterBase
}
}
- virtual int OnStats(char symbol, User* user, string_list &results)
+ virtual ModResult OnStats(char symbol, User* user, string_list &results)
{
if (symbol == 's')
{
@@ -685,7 +685,7 @@ class ModuleFilter : public FilterBase
results.push_back(sn+" 223 "+user->nick+" :EXEMPT "+(*i));
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_gecosban.cpp b/src/modules/m_gecosban.cpp
index 6ecd41342..46ed50f2f 100644
--- a/src/modules/m_gecosban.cpp
+++ b/src/modules/m_gecosban.cpp
@@ -34,7 +34,7 @@ class ModuleGecosBan : public Module
return Version("$Id$", VF_COMMON|VF_VENDOR, API_VERSION);
}
- virtual int OnCheckBan(User *user, Channel *c)
+ virtual ModResult OnCheckBan(User *user, Channel *c)
{
return c->GetExtBanStatus(user->fullname, 'r');
}
diff --git a/src/modules/m_hidechans.cpp b/src/modules/m_hidechans.cpp
index 070a3ce53..521920593 100644
--- a/src/modules/m_hidechans.cpp
+++ b/src/modules/m_hidechans.cpp
@@ -75,30 +75,30 @@ class ModuleHideChans : public Module
AffectsOpers = conf.ReadFlag("hidechans", "affectsopers", 0);
}
- int OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
+ ModResult OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
{
/* always show to self */
if (user == dest)
- return 0;
+ return MOD_RES_PASSTHRU;
/* don't touch anything except 319 */
if (numeric != 319)
- return 0;
+ return MOD_RES_PASSTHRU;
/* don't touch if -I */
if (!dest->IsModeSet('I'))
- return 0;
+ return MOD_RES_PASSTHRU;
/* if it affects opers, we don't care if they are opered */
if (AffectsOpers)
- return 1;
+ return MOD_RES_DENY;
/* doesn't affect opers, sender is opered */
if (user->HasPrivPermission("users/auspex"))
- return 0;
+ return MOD_RES_PASSTHRU;
/* user must be opered, boned. */
- return 1;
+ return MOD_RES_DENY;
}
};
diff --git a/src/modules/m_hideoper.cpp b/src/modules/m_hideoper.cpp
index be4de8f8d..b19ecb97c 100644
--- a/src/modules/m_hideoper.cpp
+++ b/src/modules/m_hideoper.cpp
@@ -70,21 +70,21 @@ class ModuleHideOper : public Module
return Version("$Id$", VF_COMMON | VF_VENDOR, API_VERSION);
}
- int OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
+ ModResult OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
{
/* Dont display numeric 313 (RPL_WHOISOPER) if they have +H set and the
* person doing the WHOIS is not an oper
*/
if (numeric != 313)
- return 0;
+ return MOD_RES_PASSTHRU;
if (!dest->IsModeSet('H'))
- return 0;
+ return MOD_RES_PASSTHRU;
if (!user->HasPrivPermission("users/auspex"))
- return 1;
+ return MOD_RES_DENY;
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp
index 8d21d5cc8..690d7b15c 100644
--- a/src/modules/m_ident.cpp
+++ b/src/modules/m_ident.cpp
@@ -312,7 +312,7 @@ class ModuleIdent : public Module
RequestTimeout = 5;
}
- virtual int OnUserRegister(User *user)
+ virtual ModResult OnUserRegister(User *user)
{
for (int j = 0; j < Conf->Enumerate("connect"); j++)
{
@@ -323,7 +323,7 @@ class ModuleIdent : public Module
bool useident = Conf->ReadFlag("connect", "useident", "yes", j);
if (!useident)
- return 0;
+ return MOD_RES_PASSTHRU;
}
}
@@ -345,21 +345,21 @@ class ModuleIdent : public Module
ServerInstance->Logs->Log("m_ident",DEBUG,"Ident exception: %s", e.GetReason());
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
/* This triggers pretty regularly, we can use it in preference to
* creating a Timer object and especially better than creating a
* Timer per ident lookup!
*/
- virtual bool OnCheckReady(User *user)
+ virtual ModResult OnCheckReady(User *user)
{
/* Does user have an ident socket attached at all? */
IdentRequestSocket *isock = NULL;
if (!user->GetExt("ident_socket", isock))
{
ServerInstance->Logs->Log("m_ident",DEBUG, "No ident socket :(");
- return true;
+ return MOD_RES_PASSTHRU;
}
ServerInstance->Logs->Log("m_ident",DEBUG, "Has ident_socket");
@@ -377,14 +377,14 @@ class ModuleIdent : public Module
* we call this to clean up the user
*/
OnUserDisconnect(user);
- return true;
+ return MOD_RES_PASSTHRU;
}
/* Got a result yet? */
if (!isock->HasResult())
{
ServerInstance->Logs->Log("m_ident",DEBUG, "No result yet");
- return false;
+ return MOD_RES_DENY;
}
ServerInstance->Logs->Log("m_ident",DEBUG, "Yay, result!");
@@ -400,7 +400,7 @@ class ModuleIdent : public Module
/* The user isnt actually disconnecting, we call this to clean up the user */
OnUserDisconnect(user);
- return true;
+ return MOD_RES_PASSTHRU;
}
virtual void OnCleanup(int target_type, void *item)
diff --git a/src/modules/m_invisible.cpp b/src/modules/m_invisible.cpp
index 7ccd8188b..5c879aea6 100644
--- a/src/modules/m_invisible.cpp
+++ b/src/modules/m_invisible.cpp
@@ -160,10 +160,10 @@ class ModuleInvisible : public Module
virtual void OnRehash(User* user);
void OnUserPart(User* user, Channel* channel, std::string &partmessage, bool &silent);
void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message);
- bool OnHostCycle(User* user);
+ ModResult OnHostCycle(User* user);
/* No privmsg response when hiding - submitted by Eric at neowin */
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list);
/* Fix by Eric @ neowin.net, thanks :) -- Brain */
void WriteCommonFrom(User *user, Channel* channel, const char* text, ...) CUSTOM_PRINTF(4, 5);
};
@@ -224,13 +224,13 @@ void ModuleInvisible::OnUserQuit(User* user, const std::string &reason, const st
}
}
-bool ModuleInvisible::OnHostCycle(User* user)
+ModResult ModuleInvisible::OnHostCycle(User* user)
{
- return user->IsModeSet('Q');
+ return user->IsModeSet('Q') ? MOD_RES_DENY : MOD_RES_PASSTHRU;
}
/* No privmsg response when hiding - submitted by Eric at neowin */
-int ModuleInvisible::OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ModResult ModuleInvisible::OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if ((target_type == TYPE_USER) && (IS_LOCAL(user)))
{
@@ -238,13 +238,13 @@ int ModuleInvisible::OnUserPreNotice(User* user,void* dest,int target_type, std:
if(target->IsModeSet('Q') && !IS_OPER(user))
{
user->WriteNumeric(401, "%s %s :No such nick/channel",user->nick.c_str(), target->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
-int ModuleInvisible::OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ModResult ModuleInvisible::OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreNotice(user, dest, target_type, text, status, exempt_list);
}
diff --git a/src/modules/m_inviteexception.cpp b/src/modules/m_inviteexception.cpp
index da7f10df1..29d7eb5d5 100644
--- a/src/modules/m_inviteexception.cpp
+++ b/src/modules/m_inviteexception.cpp
@@ -57,7 +57,7 @@ public:
output.append(" INVEX=I");
}
- virtual int OnCheckInvite(User* user, Channel* chan)
+ virtual ModResult OnCheckInvite(User* user, Channel* chan)
{
if(chan != NULL)
{
@@ -71,14 +71,14 @@ public:
if(InspIRCd::Match(user->GetFullRealHost(), it->mask) || InspIRCd::Match(user->GetFullHost(), it->mask) || (InspIRCd::MatchCIDR(mask, it->mask)))
{
// They match an entry on the list, so let them in.
- return 1;
+ return MOD_RES_DENY;
}
}
}
// or if there wasn't a list, there can't be anyone on it, so we don't need to do anything.
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual const char* OnRequest(Request* request)
diff --git a/src/modules/m_joinflood.cpp b/src/modules/m_joinflood.cpp
index c83df92c4..180d58376 100644
--- a/src/modules/m_joinflood.cpp
+++ b/src/modules/m_joinflood.cpp
@@ -211,7 +211,7 @@ class ModuleJoinFlood : public Module
ServerInstance->Modules->Attach(eventlist, this, 3);
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if (chan)
{
@@ -221,11 +221,11 @@ class ModuleJoinFlood : public Module
if (f->islocked())
{
user->WriteNumeric(609, "%s %s :This channel is temporarily unavailable (+j). Please try again later.",user->nick.c_str(),chan->name.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserJoin(User* user, Channel* channel, bool sync, bool &silent, bool created)
diff --git a/src/modules/m_jumpserver.cpp b/src/modules/m_jumpserver.cpp
index 5ea4cdf8e..6e8f00b44 100644
--- a/src/modules/m_jumpserver.cpp
+++ b/src/modules/m_jumpserver.cpp
@@ -147,16 +147,16 @@ class ModuleJumpServer : public Module
{
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
if (js.port && js.redirect_new_users)
{
user->WriteNumeric(10, "%s %s %d :Please use this Server/Port instead",
user->nick.c_str(), js.redirect_to.c_str(), js.port);
ServerInstance->Users->QuitUser(user, js.reason);
- return 0;
+ return MOD_RES_PASSTHRU;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_kicknorejoin.cpp b/src/modules/m_kicknorejoin.cpp
index 5327c0592..04ecfffd7 100644
--- a/src/modules/m_kicknorejoin.cpp
+++ b/src/modules/m_kicknorejoin.cpp
@@ -119,7 +119,7 @@ public:
ServerInstance->Modules->Attach(eventlist, this, 4);
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if (chan)
{
@@ -135,7 +135,7 @@ public:
if (iter->first == user)
{
user->WriteNumeric(ERR_DELAYREJOIN, "%s %s :You must wait %s seconds after being kicked to rejoin (+J)", user->nick.c_str(), chan->name.c_str(), chan->GetModeParameter('J').c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
else
@@ -156,7 +156,7 @@ public:
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserKick(User* source, User* user, Channel* chan, const std::string &reason, bool &silent)
diff --git a/src/modules/m_lockserv.cpp b/src/modules/m_lockserv.cpp
index 0a19d56df..3dff80fdf 100644
--- a/src/modules/m_lockserv.cpp
+++ b/src/modules/m_lockserv.cpp
@@ -95,19 +95,19 @@ public:
ResetLocked();
}
- virtual int OnUserRegister(User* user)
+ virtual ModResult OnUserRegister(User* user)
{
if (locked)
{
ServerInstance->Users->QuitUser(user, "Server is temporarily closed. Please try again later.");
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual bool OnCheckReady(User* user)
+ virtual ModResult OnCheckReady(User* user)
{
- return !locked;
+ return locked ? MOD_RES_DENY : MOD_RES_PASSTHRU;
}
virtual Version GetVersion()
diff --git a/src/modules/m_maphide.cpp b/src/modules/m_maphide.cpp
index 3c3b9a39b..73f217ec2 100644
--- a/src/modules/m_maphide.cpp
+++ b/src/modules/m_maphide.cpp
@@ -33,15 +33,15 @@ class ModuleMapHide : public Module
url = MyConf.ReadValue("security", "maphide", 0);
}
- int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
if (!IS_OPER(user) && !url.empty() && (command == "MAP" || command == "LINKS"))
{
user->WriteServ("NOTICE %s :/%s has been disabled; visit %s", user->nick.c_str(), command.c_str(), url.c_str());
- return 1;
+ return MOD_RES_DENY;
}
else
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleMapHide()
diff --git a/src/modules/m_messageflood.cpp b/src/modules/m_messageflood.cpp
index fc62cd67e..da1038512 100644
--- a/src/modules/m_messageflood.cpp
+++ b/src/modules/m_messageflood.cpp
@@ -205,11 +205,11 @@ class ModuleMsgFlood : public Module
ServerInstance->Modules->Attach(eventlist, this, 3);
}
- int ProcessMessages(User* user,Channel* dest, const std::string &text)
+ ModResult ProcessMessages(User* user,Channel* dest, const std::string &text)
{
if (!IS_LOCAL(user) || (CHANOPS_EXEMPT(ServerInstance, 'f') && dest->GetStatus(user) == STATUS_OP))
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
floodsettings *f;
@@ -239,27 +239,27 @@ class ModuleMsgFlood : public Module
delete dest;
}
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreMessage(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_CHANNEL)
return ProcessMessages(user,(Channel*)dest,text);
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
if (target_type == TYPE_CHANNEL)
return ProcessMessages(user,(Channel*)dest,text);
- return 0;
+ return MOD_RES_PASSTHRU;
}
void OnChannelDelete(Channel* chan)
diff --git a/src/modules/m_muteban.cpp b/src/modules/m_muteban.cpp
index 03203cfc7..0ac2e7ece 100644
--- a/src/modules/m_muteban.cpp
+++ b/src/modules/m_muteban.cpp
@@ -34,22 +34,22 @@ class ModuleQuietBan : public Module
return Version("$Id$",VF_COMMON|VF_VENDOR,API_VERSION);
}
- virtual int OnUserPreMessage(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
if (!IS_LOCAL(user) || target_type != TYPE_CHANNEL)
- return 0;
+ return MOD_RES_PASSTHRU;
Channel* chan = static_cast<Channel*>(dest);
- if (chan->GetExtBanStatus(user, 'm') < 0 && chan->GetStatus(user) < STATUS_VOICE)
+ if (chan->GetExtBanStatus(user, 'm') == MOD_RES_DENY && chan->GetStatus(user) < STATUS_VOICE)
{
- user->WriteNumeric(404, "%s %s :Cannot send to channel (you're muted)",user->nick.c_str(), ((Channel *)dest)->name.c_str());
- return 1;
+ user->WriteNumeric(404, "%s %s :Cannot send to channel (you're muted)", user->nick.c_str(), chan->name.c_str());
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User *user, void *dest, int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user, dest, target_type, text, status, exempt_list);
}
diff --git a/src/modules/m_namesx.cpp b/src/modules/m_namesx.cpp
index 377c9b1f0..3aa8ec355 100644
--- a/src/modules/m_namesx.cpp
+++ b/src/modules/m_namesx.cpp
@@ -48,7 +48,7 @@ class ModuleNamesX : public Module
output.append(" NAMESX");
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
irc::string c = command.c_str();
/* We don't actually create a proper command handler class for PROTOCTL,
@@ -61,10 +61,10 @@ class ModuleNamesX : public Module
if ((parameters.size()) && (!strcasecmp(parameters[0].c_str(),"NAMESX")))
{
user->Extend("NAMESX");
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnNamesListItem(User* issuer, User* user, Channel* channel, std::string &prefixes, std::string &nick)
diff --git a/src/modules/m_nickflood.cpp b/src/modules/m_nickflood.cpp
index 614843901..17f3a35f0 100644
--- a/src/modules/m_nickflood.cpp
+++ b/src/modules/m_nickflood.cpp
@@ -213,10 +213,10 @@ class ModuleNickFlood : public Module
ServerInstance->Modules->Attach(eventlist, this, 3);
}
- virtual int OnUserPreNick(User* user, const std::string &newnick)
+ virtual ModResult OnUserPreNick(User* user, const std::string &newnick)
{
if (isdigit(newnick[0])) /* allow switches to UID */
- return 0;
+ return MOD_RES_PASSTHRU;
for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++)
{
@@ -231,7 +231,7 @@ class ModuleNickFlood : public Module
if (f->islocked())
{
user->WriteNumeric(447, "%s :%s has been locked for nickchanges for 60 seconds because there have been more than %d nick changes in %d seconds", user->nick.c_str(), channel->name.c_str(), f->nicks, f->secs);
- return 1;
+ return MOD_RES_DENY;
}
if (f->shouldlock())
@@ -239,12 +239,12 @@ class ModuleNickFlood : public Module
f->clear();
f->lock();
channel->WriteChannelWithServ((char*)ServerInstance->Config->ServerName, "NOTICE %s :No nick changes are allowed for 60 seconds because there have been more than %d nick changes in %d seconds.", channel->name.c_str(), f->nicks, f->secs);
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
/*
diff --git a/src/modules/m_nicklock.cpp b/src/modules/m_nicklock.cpp
index bc5ebe47a..e7c9e0199 100644
--- a/src/modules/m_nicklock.cpp
+++ b/src/modules/m_nicklock.cpp
@@ -168,23 +168,23 @@ class ModuleNickLock : public Module
}
- virtual int OnUserPreNick(User* user, const std::string &newnick)
+ virtual ModResult OnUserPreNick(User* user, const std::string &newnick)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
if (isdigit(newnick[0])) /* Allow a switch to a UID */
- return 0;
+ return MOD_RES_PASSTHRU;
if (user->GetExt("NICKForced")) /* Allow forced nick changes */
- return 0;
+ return MOD_RES_PASSTHRU;
if (user->GetExt("nick_locked"))
{
user->WriteNumeric(447, "%s :You cannot change your nickname (your nick is locked)",user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message)
diff --git a/src/modules/m_noctcp.cpp b/src/modules/m_noctcp.cpp
index f58fd192c..0dc004ee8 100644
--- a/src/modules/m_noctcp.cpp
+++ b/src/modules/m_noctcp.cpp
@@ -69,12 +69,12 @@ class ModuleNoCTCP : public Module
return Version("$Id$", VF_COMMON | VF_VENDOR, API_VERSION);
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreNotice(user,dest,target_type,text,status,exempt_list);
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if ((target_type == TYPE_CHANNEL) && (IS_LOCAL(user)))
{
@@ -82,22 +82,22 @@ class ModuleNoCTCP : public Module
if (CHANOPS_EXEMPT(ServerInstance, 'C') && c->GetStatus(user) == STATUS_OP)
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
- if (c->IsModeSet('C') || c->GetExtBanStatus(user, 'C') < 0)
+ if (!c->GetExtBanStatus(user, 'C').check(!c->IsModeSet('C')))
{
if ((text.length()) && (text[0] == '\1'))
{
if (strncmp(text.c_str(),"\1ACTION ",8))
{
user->WriteNumeric(ERR_NOCTCPALLOWED, "%s %s :Can't send CTCP to channel (+C set)",user->nick.c_str(), c->name.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void On005Numeric(std::string &output)
diff --git a/src/modules/m_nokicks.cpp b/src/modules/m_nokicks.cpp
index 911b181ab..4af76e0d8 100644
--- a/src/modules/m_nokicks.cpp
+++ b/src/modules/m_nokicks.cpp
@@ -40,26 +40,26 @@ class ModuleNoKicks : public Module
ServerInstance->AddExtBanChar('Q');
}
- virtual int OnAccessCheck(User* source,User* dest,Channel* channel,int access_type)
+ virtual ModResult OnAccessCheck(User* source,User* dest,Channel* channel,int access_type)
{
if (access_type == AC_KICK)
{
- if (channel->IsModeSet('Q') || channel->GetExtBanStatus(source, 'Q') < 0)
+ if (!channel->GetExtBanStatus(source, 'Q').check(!channel->IsModeSet('Q')))
{
if ((ServerInstance->ULine(source->nick.c_str())) || (ServerInstance->ULine(source->server)) || (!*source->server))
{
// ulines can still kick with +Q in place
- return ACR_ALLOW;
+ return MOD_RES_PASSTHRU;
}
else
{
// nobody else can (not even opers with override, and founders)
source->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s %s :Can't kick user %s from channel (+Q set)",source->nick.c_str(), channel->name.c_str(), dest->nick.c_str());
- return ACR_DENY;
+ return MOD_RES_DENY;
}
}
}
- return ACR_DEFAULT;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleNoKicks()
diff --git a/src/modules/m_nonicks.cpp b/src/modules/m_nonicks.cpp
index 1b34c7597..769097ca0 100644
--- a/src/modules/m_nonicks.cpp
+++ b/src/modules/m_nonicks.cpp
@@ -70,17 +70,17 @@ class ModuleNoNickChange : public Module
ServerInstance->AddExtBanChar('N');
}
- virtual int OnUserPreNick(User* user, const std::string &newnick)
+ virtual ModResult OnUserPreNick(User* user, const std::string &newnick)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
if (isdigit(newnick[0])) /* don't even think about touching a switch to uid! */
- return 0;
+ return MOD_RES_PASSTHRU;
// Allow forced nick changes.
if (user->GetExt("NICKForced"))
- return 0;
+ return MOD_RES_PASSTHRU;
for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++)
{
@@ -89,14 +89,15 @@ class ModuleNoNickChange : public Module
if (CHANOPS_EXEMPT(ServerInstance, 'N') && curr->GetStatus(user) == STATUS_OP)
continue;
- if (curr->IsModeSet('N') || curr->GetExtBanStatus(user, 'N') < 0)
+ if (!curr->GetExtBanStatus(user, 'N').check(!curr->IsModeSet('N')))
{
- user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)", user->nick.c_str(), curr->name.c_str());
- return 1;
+ user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)",
+ user->nick.c_str(), curr->name.c_str());
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_nonotice.cpp b/src/modules/m_nonotice.cpp
index 6d17bc85d..72426646f 100644
--- a/src/modules/m_nonotice.cpp
+++ b/src/modules/m_nonotice.cpp
@@ -40,31 +40,31 @@ class ModuleNoNotice : public Module
ServerInstance->AddExtBanChar('T');
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if ((target_type == TYPE_CHANNEL) && (IS_LOCAL(user)))
{
Channel* c = (Channel*)dest;
- if (c->IsModeSet('T') || c->GetExtBanStatus(user, 'T') < 0)
+ if (!c->GetExtBanStatus(user, 'T').check(!c->IsModeSet('T')))
{
if (ServerInstance->ULine(user->server))
{
// ulines are exempt.
- return 0;
+ return MOD_RES_PASSTHRU;
}
else if (CHANOPS_EXEMPT(ServerInstance, 'T') && c->GetStatus(user) == STATUS_OP)
{
// channel ops are exempt if set in conf.
- return 0;
+ return MOD_RES_PASSTHRU;
}
else
{
user->WriteNumeric(ERR_CANNOTSENDTOCHAN, "%s %s :Can't send NOTICE to channel (+T set)",user->nick.c_str(), c->name.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleNoNotice()
diff --git a/src/modules/m_nopartmsg.cpp b/src/modules/m_nopartmsg.cpp
index 50a6e14b9..931603907 100644
--- a/src/modules/m_nopartmsg.cpp
+++ b/src/modules/m_nopartmsg.cpp
@@ -40,7 +40,7 @@ class ModulePartMsgBan : public Module
if (!IS_LOCAL(user))
return;
- if (channel->GetExtBanStatus(user, 'p') < 0)
+ if (channel->GetExtBanStatus(user, 'p') == MOD_RES_DENY)
partmessage = "";
return;
diff --git a/src/modules/m_operchans.cpp b/src/modules/m_operchans.cpp
index f714e00f6..52d5a28be 100644
--- a/src/modules/m_operchans.cpp
+++ b/src/modules/m_operchans.cpp
@@ -58,23 +58,23 @@ class ModuleOperChans : public Module
ServerInstance->Modules->Attach(eventlist, this, 2);
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if (chan && chan->IsModeSet('O') && !IS_OPER(user))
{
user->WriteNumeric(ERR_CANTJOINOPERSONLY, "%s %s :Only IRC operators may join %s (+O is set)",
user->nick.c_str(), chan->name.c_str(), chan->name.c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnCheckBan(User* user, Channel* chan)
+ virtual ModResult OnCheckBan(User* user, Channel* chan)
{
if (IS_OPER(user))
return chan->GetExtBanStatus(user->oper, 'O');
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleOperChans()
diff --git a/src/modules/m_operinvex.cpp b/src/modules/m_operinvex.cpp
index 5cd7ab3c6..41fc51a1d 100644
--- a/src/modules/m_operinvex.cpp
+++ b/src/modules/m_operinvex.cpp
@@ -37,10 +37,10 @@ class ModuleOperInvex : public Module
return Version("$Id$", VF_COMMON|VF_VENDOR, API_VERSION);
}
- virtual int OnCheckInvite(User *user, Channel *c)
+ virtual ModResult OnCheckInvite(User *user, Channel *c)
{
if (!IS_LOCAL(user) || !IS_OPER(user))
- return 0;
+ return MOD_RES_PASSTHRU;
Module* ExceptionModule = ServerInstance->Modules->Find("m_inviteexception.so");
if (ExceptionModule)
@@ -48,17 +48,17 @@ class ModuleOperInvex : public Module
if (ListModeRequest(this, ExceptionModule, user->oper, 'O', c).Send())
{
// Oper type is exempt
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnCheckBan(User *user, Channel *c)
+ virtual ModResult OnCheckBan(User *user, Channel *c)
{
if (!IS_OPER(user))
- return 0;
+ return MOD_RES_PASSTHRU;
return c->GetExtBanStatus(user->oper, 'O');
}
diff --git a/src/modules/m_operlevels.cpp b/src/modules/m_operlevels.cpp
index 74a6e2c5f..b613c1e31 100644
--- a/src/modules/m_operlevels.cpp
+++ b/src/modules/m_operlevels.cpp
@@ -44,7 +44,7 @@ class ModuleOperLevels : public Module
return Version("$Id$", VF_VENDOR, API_VERSION);
}
- virtual int OnKill(User* source, User* dest, const std::string &reason)
+ virtual ModResult OnKill(User* source, User* dest, const std::string &reason)
{
long dest_level = 0,source_level = 0;
@@ -74,10 +74,10 @@ class ModuleOperLevels : public Module
if (IS_LOCAL(source)) ServerInstance->SNO->WriteGlobalSno('a', "Oper %s (level %ld) attempted to /kill a higher oper: %s (level %ld): Reason: %s",source->nick.c_str(),source_level,dest->nick.c_str(),dest_level,reason.c_str());
dest->WriteServ("NOTICE %s :*** Oper %s attempted to /kill you!",dest->nick.c_str(),source->nick.c_str());
source->WriteNumeric(ERR_NOPRIVILEGES, "%s :Permission Denied - Oper %s is a higher level than you",source->nick.c_str(),dest->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_operlog.cpp b/src/modules/m_operlog.cpp
index f58945c25..646aada3e 100644
--- a/src/modules/m_operlog.cpp
+++ b/src/modules/m_operlog.cpp
@@ -37,11 +37,11 @@ class ModuleOperLog : public Module
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
/* If the command doesnt appear to be valid, we dont want to mess with it. */
if (!validated)
- return 0;
+ return MOD_RES_PASSTHRU;
if ((IS_OPER(user)) && (IS_LOCAL(user)) && (user->HasPermission(command)))
{
@@ -50,7 +50,7 @@ class ModuleOperLog : public Module
ServerInstance->Logs->Log("m_operlog",DEFAULT,"OPERLOG: [%s!%s@%s] %s %s",user->nick.c_str(), user->ident.c_str(), user->host.c_str(), command.c_str(), parameters.empty() ? "" : irc::stringjoiner(" ", parameters, 0, parameters.size() - 1).GetJoined().c_str());
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void On005Numeric(std::string &output)
diff --git a/src/modules/m_operprefix.cpp b/src/modules/m_operprefix.cpp
index deb826108..aeea1ad19 100644
--- a/src/modules/m_operprefix.cpp
+++ b/src/modules/m_operprefix.cpp
@@ -151,12 +151,12 @@ class ModuleOperPrefixMode : public Module
}
// XXX: is there a better way to do this?
- virtual int OnRawMode(User* user, Channel* chan, const char mode, const std::string &param, bool adding, int pcnt)
+ virtual ModResult OnRawMode(User* user, Channel* chan, const char mode, const std::string &param, bool adding, int pcnt)
{
/* force event propagation to its ModeHandler */
if (!IS_FAKE(user) && chan && (mode == 'y'))
- return ACR_ALLOW;
- return 0;
+ return MOD_RES_ALLOW;
+ return MOD_RES_PASSTHRU;
}
virtual void OnOper(User *user, const std::string&)
diff --git a/src/modules/m_override.cpp b/src/modules/m_override.cpp
index ea5e36d94..ae18803d3 100644
--- a/src/modules/m_override.cpp
+++ b/src/modules/m_override.cpp
@@ -116,7 +116,7 @@ class ModuleOverride : public Module
}
- virtual int OnLocalTopicChange(User *source, Channel *channel, const std::string &topic)
+ virtual ModResult OnLocalTopicChange(User *source, Channel *channel, const std::string &topic)
{
if (IS_OPER(source) && CanOverride(source, "TOPIC"))
{
@@ -126,13 +126,13 @@ class ModuleOverride : public Module
}
// Explicit allow
- return -1;
+ return MOD_RES_ALLOW;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreKick(User* source, User* user, Channel* chan, const std::string &reason)
+ virtual ModResult OnUserPreKick(User* source, User* user, Channel* chan, const std::string &reason)
{
if (IS_OPER(source) && CanOverride(source,"KICK"))
{
@@ -141,18 +141,17 @@ class ModuleOverride : public Module
{
ServerInstance->SNO->WriteGlobalSno('G',std::string(source->nick)+" used oper override to kick "+std::string(user->nick)+" on "+std::string(chan->name)+" ("+reason+")");
}
- /* Returning -1 explicitly allows the kick */
- return -1;
+ return MOD_RES_ALLOW;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnAccessCheck(User* source,User* dest,Channel* channel,int access_type)
+ virtual ModResult OnAccessCheck(User* source,User* dest,Channel* channel,int access_type)
{
if (!IS_OPER(source))
- return ACR_DEFAULT;
+ return MOD_RES_PASSTHRU;
if (!source || !channel)
- return ACR_DEFAULT;
+ return MOD_RES_PASSTHRU;
int mode = STATUS_NORMAL;
if (channel->HasUser(source))
@@ -221,15 +220,15 @@ class ModuleOverride : public Module
if (over_this)
{
OverriddenMode = true;
- return ACR_ALLOW;
+ return MOD_RES_ALLOW;
}
else
{
- return ACR_DEFAULT;
+ return MOD_RES_PASSTHRU;
}
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if (IS_LOCAL(user) && IS_OPER(user))
{
@@ -244,14 +243,14 @@ class ModuleOverride : public Module
{
// Can't join normally -- must use a special key to bypass restrictions
user->WriteServ("NOTICE %s :*** You may not join normally. You must join with a key of 'override' to oper override.", user->nick.c_str());
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (NoisyOverride)
chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s used oper override to bypass invite-only", cname, user->nick.c_str());
ServerInstance->SNO->WriteGlobalSno('G', user->nick+" used oper override to bypass +i on "+std::string(cname));
}
- return -1;
+ return MOD_RES_ALLOW;
}
if ((chan->modes[CM_KEY]) && (CanOverride(user,"KEY")) && keygiven != chan->GetModeParameter('k'))
@@ -260,13 +259,13 @@ class ModuleOverride : public Module
{
// Can't join normally -- must use a special key to bypass restrictions
user->WriteServ("NOTICE %s :*** You may not join normally. You must join with a key of 'override' to oper override.", user->nick.c_str());
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (NoisyOverride)
chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s used oper override to bypass the channel key", cname, user->nick.c_str());
ServerInstance->SNO->WriteGlobalSno('G', user->nick+" used oper override to bypass +k on "+std::string(cname));
- return -1;
+ return MOD_RES_ALLOW;
}
if ((chan->modes[CM_LIMIT]) && (chan->GetUserCounter() >= atoi(chan->GetModeParameter('l').c_str())) && (CanOverride(user,"LIMIT")))
@@ -275,13 +274,13 @@ class ModuleOverride : public Module
{
// Can't join normally -- must use a special key to bypass restrictions
user->WriteServ("NOTICE %s :*** You may not join normally. You must join with a key of 'override' to oper override.", user->nick.c_str());
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (NoisyOverride)
chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s used oper override to bypass the channel limit", cname, user->nick.c_str());
ServerInstance->SNO->WriteGlobalSno('G', user->nick+" used oper override to bypass +l on "+std::string(cname));
- return -1;
+ return MOD_RES_ALLOW;
}
if (chan->IsBanned(user) && CanOverride(user,"BANWALK"))
@@ -290,17 +289,17 @@ class ModuleOverride : public Module
{
// Can't join normally -- must use a special key to bypass restrictions
user->WriteServ("NOTICE %s :*** You may not join normally. You must join with a key of 'override' to oper override.", user->nick.c_str());
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (NoisyOverride)
chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s used oper override to bypass channel ban", cname, user->nick.c_str());
ServerInstance->SNO->WriteGlobalSno('G',"%s used oper override to bypass channel ban on %s", user->nick.c_str(), cname);
- return -1;
+ return MOD_RES_ALLOW;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual const char* OnRequest(Request* request)
diff --git a/src/modules/m_password_hash.cpp b/src/modules/m_password_hash.cpp
index 761f52bc4..fcc910073 100644
--- a/src/modules/m_password_hash.cpp
+++ b/src/modules/m_password_hash.cpp
@@ -134,7 +134,7 @@ class ModuleOperHash : public Module
}
}
- virtual int OnPassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype)
+ virtual ModResult OnPassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype)
{
/* First, lets see what hash theyre using on this oper */
hashymodules::iterator x = hashers.find(hashtype.c_str());
@@ -146,13 +146,14 @@ class ModuleOperHash : public Module
HashResetRequest(this, x->second).Send();
/* Compare the hash in the config to the generated hash */
if (!strcasecmp(data.c_str(), HashSumRequest(this, x->second, input.c_str()).Send()))
- return 1;
+ return MOD_RES_ALLOW;
/* No match, and must be hashed, forbid */
- else return -1;
+ else
+ return MOD_RES_DENY;
}
/* Not a hash, fall through to strcmp in core */
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual Version GetVersion()
diff --git a/src/modules/m_permchannels.cpp b/src/modules/m_permchannels.cpp
index f765c2422..647c840b5 100644
--- a/src/modules/m_permchannels.cpp
+++ b/src/modules/m_permchannels.cpp
@@ -184,12 +184,12 @@ public:
return Version("$Id$",VF_COMMON|VF_VENDOR,API_VERSION);
}
- virtual int OnChannelPreDelete(Channel *c)
+ virtual ModResult OnChannelPreDelete(Channel *c)
{
if (c->IsModeSet('P'))
- return 1;
+ return MOD_RES_DENY;
- return 0;
+ return MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_redirect.cpp b/src/modules/m_redirect.cpp
index dd7d2e954..9d19b0cf0 100644
--- a/src/modules/m_redirect.cpp
+++ b/src/modules/m_redirect.cpp
@@ -100,7 +100,7 @@ class ModuleRedirect : public Module
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if (chan)
{
@@ -116,16 +116,16 @@ class ModuleRedirect : public Module
if (destchan && destchan->IsModeSet('L'))
{
user->WriteNumeric(470, "%s %s * :You may not join this channel. A redirect is set, but you may not be redirected as it is a circular loop.", user->nick.c_str(), cname);
- return 1;
+ return MOD_RES_DENY;
}
user->WriteNumeric(470, "%s %s %s :You may not join this channel, so you are automatically being transferred to the redirect channel.", user->nick.c_str(), cname, channel.c_str());
Channel::JoinUser(ServerInstance, user, channel.c_str(), false, "", false, ServerInstance->Time());
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleRedirect()
diff --git a/src/modules/m_regonlycreate.cpp b/src/modules/m_regonlycreate.cpp
index 41b11ed41..5be303148 100644
--- a/src/modules/m_regonlycreate.cpp
+++ b/src/modules/m_regonlycreate.cpp
@@ -26,22 +26,22 @@ class ModuleRegOnlyCreate : public Module
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if (chan)
- return 0;
+ return MOD_RES_PASSTHRU;
if (IS_OPER(user))
- return 0;
+ return MOD_RES_PASSTHRU;
if ((!user->IsModeSet('r')) && (!user->GetExt("accountname")))
{
// XXX. there may be a better numeric for this..
user->WriteNumeric(ERR_CHANOPRIVSNEEDED, "%s %s :You must have a registered nickname to create a new channel", user->nick.c_str(), cname);
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleRegOnlyCreate()
diff --git a/src/modules/m_restrictchans.cpp b/src/modules/m_restrictchans.cpp
index f84d9abb2..68aa455e7 100644
--- a/src/modules/m_restrictchans.cpp
+++ b/src/modules/m_restrictchans.cpp
@@ -51,11 +51,11 @@ class ModuleRestrictChans : public Module
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
irc::string x = cname;
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
// channel does not yet exist (record is null, about to be created IF we were to allow it)
if (!chan)
@@ -64,10 +64,10 @@ class ModuleRestrictChans : public Module
if ((!IS_OPER(user)) && (allowchans.find(x) == allowchans.end()))
{
user->WriteNumeric(ERR_BANNEDFROMCHAN, "%s %s :Only IRC operators may create new channels",user->nick.c_str(),cname);
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleRestrictChans()
diff --git a/src/modules/m_restrictmsg.cpp b/src/modules/m_restrictmsg.cpp
index b3ab98e51..906184e7a 100644
--- a/src/modules/m_restrictmsg.cpp
+++ b/src/modules/m_restrictmsg.cpp
@@ -30,7 +30,7 @@ class ModuleRestrictMsg : public Module
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if ((target_type == TYPE_USER) && (IS_LOCAL(user)))
{
@@ -42,17 +42,17 @@ class ModuleRestrictMsg : public Module
// anything else, blocked.
if (IS_OPER(u) || IS_OPER(user))
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
user->WriteNumeric(ERR_CANTSENDTOUSER, "%s %s :You are not permitted to send private messages to this user",user->nick.c_str(),u->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
// however, we must allow channel messages...
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return this->OnUserPreMessage(user,dest,target_type,text,status,exempt_list);
}
diff --git a/src/modules/m_rline.cpp b/src/modules/m_rline.cpp
index 843470f39..b2ddd798d 100644
--- a/src/modules/m_rline.cpp
+++ b/src/modules/m_rline.cpp
@@ -267,13 +267,13 @@ class ModuleRLine : public Module
}
}
- virtual int OnStats(char symbol, User* user, string_list &results)
+ virtual ModResult OnStats(char symbol, User* user, string_list &results)
{
if (symbol != 'R')
- return 0;
+ return MOD_RES_PASSTHRU;
ServerInstance->XLines->InvokeStats("R", 223, user, results);
- return 1;
+ return MOD_RES_DENY;
}
virtual void OnLoadModule(Module* mod, const std::string& name)
diff --git a/src/modules/m_safelist.cpp b/src/modules/m_safelist.cpp
index b99c78c83..bd1a54110 100644
--- a/src/modules/m_safelist.cpp
+++ b/src/modules/m_safelist.cpp
@@ -68,24 +68,24 @@ class ModuleSafeList : public Module
* OnPreCommand()
* Intercept the LIST command.
*/
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
/* If the command doesnt appear to be valid, we dont want to mess with it. */
if (!validated)
- return 0;
+ return MOD_RES_PASSTHRU;
if (command == "LIST")
{
return this->HandleList(parameters, user);
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
/*
* HandleList()
* Handle (override) the LIST command.
*/
- int HandleList(const std::vector<std::string> &parameters, User* user)
+ ModResult HandleList(const std::vector<std::string> &parameters, User* user)
{
int pcnt = parameters.size();
int minusers = 0, maxusers = 0;
@@ -95,7 +95,7 @@ class ModuleSafeList : public Module
user->WriteServ("NOTICE %s :*** Server load is currently too heavy. Please try again later.", user->nick.c_str());
user->WriteNumeric(321, "%s Channel :Users Name",user->nick.c_str());
user->WriteNumeric(323, "%s :End of channel list.",user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
/* First, let's check if the user is currently /list'ing */
@@ -105,7 +105,7 @@ class ModuleSafeList : public Module
if (ld)
{
/* user is already /list'ing, we don't want to do shit. */
- return 1;
+ return MOD_RES_DENY;
}
/* Work around mIRC suckyness. YOU SUCK, KHALED! */
@@ -134,7 +134,7 @@ class ModuleSafeList : public Module
user->WriteServ("NOTICE %s :*** Woah there, slow down a little, you can't /LIST so often!",user->nick.c_str());
user->WriteNumeric(321, "%s Channel :Users Name",user->nick.c_str());
user->WriteNumeric(323, "%s :End of channel list.",user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
delete last_list_time;
@@ -156,7 +156,7 @@ class ModuleSafeList : public Module
global_listing++;
- return 1;
+ return MOD_RES_DENY;
}
virtual void OnBufferFlushed(User* user)
diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp
index 45984b230..a58d4dcdc 100644
--- a/src/modules/m_sasl.cpp
+++ b/src/modules/m_sasl.cpp
@@ -230,7 +230,7 @@ class ModuleSASL : public Module
ServerInstance->Logs->Log("m_sasl", DEFAULT, "WARNING: m_services_account.so and m_cap.so are not loaded! m_sasl.so will NOT function correctly until these two modules are loaded!");
}
- virtual int OnUserRegister(User *user)
+ virtual ModResult OnUserRegister(User *user)
{
SaslAuthenticator *sasl_;
if (user->GetExt("sasl_authenticator", sasl_))
@@ -240,7 +240,7 @@ class ModuleSASL : public Module
user->Shrink("sasl_authenticator");
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnCleanup(int target_type, void *item)
diff --git a/src/modules/m_securelist.cpp b/src/modules/m_securelist.cpp
index 6c3114860..6da7ab7aa 100644
--- a/src/modules/m_securelist.cpp
+++ b/src/modules/m_securelist.cpp
@@ -54,18 +54,18 @@ class ModuleSecureList : public Module
* OnPreCommand()
* Intercept the LIST command.
*/
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
/* If the command doesnt appear to be valid, we dont want to mess with it. */
if (!validated)
- return 0;
+ return MOD_RES_PASSTHRU;
if ((command == "LIST") && (ServerInstance->Time() < (user->signon+WaitTime)) && (!IS_OPER(user)))
{
/* Normally wouldnt be allowed here, are they exempt? */
for (std::vector<std::string>::iterator x = allowlist.begin(); x != allowlist.end(); x++)
if (InspIRCd::Match(user->MakeHost(), *x, ascii_case_insensitive_map))
- return 0;
+ return MOD_RES_PASSTHRU;
/* Not exempt, BOOK EM DANNO! */
user->WriteServ("NOTICE %s :*** You cannot list within the first %lu seconds of connecting. Please try again later.",user->nick.c_str(), (unsigned long) WaitTime);
@@ -74,9 +74,9 @@ class ModuleSecureList : public Module
*/
user->WriteNumeric(321, "%s Channel :Users Name",user->nick.c_str());
user->WriteNumeric(323, "%s :End of channel list.",user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void On005Numeric(std::string &output)
diff --git a/src/modules/m_serverban.cpp b/src/modules/m_serverban.cpp
index 241ac1ce3..bd47e947a 100644
--- a/src/modules/m_serverban.cpp
+++ b/src/modules/m_serverban.cpp
@@ -34,7 +34,7 @@ class ModuleServerBan : public Module
return Version("$Id$",VF_COMMON|VF_VENDOR,API_VERSION);
}
- virtual int OnCheckBan(User *user, Channel *c)
+ virtual ModResult OnCheckBan(User *user, Channel *c)
{
return c->GetExtBanStatus(user->server, 's');
}
diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp
index 78fbb28dc..cc65038d1 100644
--- a/src/modules/m_services_account.cpp
+++ b/src/modules/m_services_account.cpp
@@ -156,10 +156,10 @@ class ModuleServicesAccount : public Module
}
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
std::string *account;
bool is_registered = user->GetExt("accountname", account);
@@ -168,7 +168,7 @@ class ModuleServicesAccount : public Module
if ((ServerInstance->ULine(user->nick.c_str())) || (ServerInstance->ULine(user->server)))
{
// user is ulined, can speak regardless
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (target_type == TYPE_CHANNEL)
@@ -179,16 +179,16 @@ class ModuleServicesAccount : public Module
{
// user messaging a +M channel and is not registered
user->WriteNumeric(477, ""+std::string(user->nick)+" "+std::string(c->name)+" :You need to be identified to a registered account to message this channel");
- return 1;
+ return MOD_RES_DENY;
}
if (account)
{
- if (c->GetExtBanStatus(*account, 'M') < 0)
+ if (c->GetExtBanStatus(*account, 'M') == MOD_RES_DENY)
{
// may not speak (text is deliberately vague, so they don't know which restriction to evade)
user->WriteNumeric(477, ""+std::string(user->nick)+" "+std::string(c->name)+" :You may not speak in this channel");
- return 1;
+ return MOD_RES_DENY;
}
}
}
@@ -200,29 +200,29 @@ class ModuleServicesAccount : public Module
{
// user messaging a +R user and is not registered
user->WriteNumeric(477, ""+ user->nick +" "+ u->nick +" :You need to be identified to a registered account to message this user");
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnCheckBan(User* user, Channel* chan)
+ virtual ModResult OnCheckBan(User* user, Channel* chan)
{
std::string* account;
if (!user->GetExt("accountname", account))
- return 0;
+ return MOD_RES_PASSTHRU;
return chan->GetExtBanStatus(*account, 'R');
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user, dest, target_type, text, status, exempt_list);
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
std::string *account;
bool is_registered = user->GetExt("accountname", account);
@@ -233,7 +233,7 @@ class ModuleServicesAccount : public Module
if ((ServerInstance->ULine(user->nick.c_str())) || (ServerInstance->ULine(user->server)))
{
// user is ulined, won't be stopped from joining
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (chan->IsModeSet('R'))
@@ -242,11 +242,11 @@ class ModuleServicesAccount : public Module
{
// joining a +R channel and not identified
user->WriteNumeric(477, user->nick + " " + chan->name + " :You need to be identified to a registered account to join this channel");
- return 1;
+ return MOD_RES_DENY;
}
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
// Whenever the linking module wants to send out data, but doesnt know what the data
diff --git a/src/modules/m_servprotect.cpp b/src/modules/m_servprotect.cpp
index f4729d848..4bc0cca4e 100644
--- a/src/modules/m_servprotect.cpp
+++ b/src/modules/m_servprotect.cpp
@@ -71,7 +71,7 @@ class ModuleServProtectMode : public Module
}
}
- virtual int OnRawMode(User* user, Channel* chan, const char mode, const std::string &param, bool adding, int pcnt)
+ virtual ModResult OnRawMode(User* user, Channel* chan, const char mode, const std::string &param, bool adding, int pcnt)
{
/* Check that the mode is not a server mode, it is being removed, the user making the change is local, there is a parameter,
* and the user making the change is not a uline
@@ -91,42 +91,42 @@ class ModuleServProtectMode : public Module
{
/* BZZZT, Denied! */
user->WriteNumeric(482, "%s %s :You are not permitted to remove privileges from %s services", user->nick.c_str(), chan->name.c_str(), ServerInstance->Config->Network);
- return ACR_DENY;
+ return MOD_RES_DENY;
}
}
}
/* Mode allowed */
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnKill(User* src, User* dst, const std::string &reason)
+ virtual ModResult OnKill(User* src, User* dst, const std::string &reason)
{
if (src == NULL)
- return 0;
+ return MOD_RES_PASSTHRU;
if (dst->IsModeSet('k'))
{
src->WriteNumeric(485, "%s :You are not permitted to kill %s services!", src->nick.c_str(), ServerInstance->Config->Network);
ServerInstance->SNO->WriteGlobalSno('a', std::string(src->nick)+" tried to kill service "+dst->nick+" ("+reason+")");
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreKick(User *src, User *dst, Channel *c, const std::string &reason)
+ virtual ModResult OnUserPreKick(User *src, User *dst, Channel *c, const std::string &reason)
{
if (dst->IsModeSet('k'))
{
src->WriteNumeric(484, "%s %s :You are not permitted to kick services", src->nick.c_str(), c->name.c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnWhoisLine(User* src, User* dst, int &numeric, std::string &text)
+ virtual ModResult OnWhoisLine(User* src, User* dst, int &numeric, std::string &text)
{
- return ((src != dst) && (numeric == 319) && dst->IsModeSet('k'));
+ return ((src != dst) && (numeric == 319) && dst->IsModeSet('k')) ? MOD_RES_DENY : MOD_RES_PASSTHRU;
}
};
diff --git a/src/modules/m_shun.cpp b/src/modules/m_shun.cpp
index 9e3a03583..43359c28a 100644
--- a/src/modules/m_shun.cpp
+++ b/src/modules/m_shun.cpp
@@ -198,13 +198,13 @@ class ModuleShun : public Module
ServerInstance->XLines->UnregisterFactory(&f);
}
- virtual int OnStats(char symbol, User* user, string_list& out)
+ virtual ModResult OnStats(char symbol, User* user, string_list& out)
{
if (symbol != 'S')
- return 0;
+ return MOD_RES_PASSTHRU;
ServerInstance->XLines->InvokeStats("SHUN", 223, user, out);
- return 1;
+ return MOD_RES_DENY;
}
virtual void OnRehash(User* user)
@@ -246,21 +246,21 @@ class ModuleShun : public Module
}
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string>& parameters, User* user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string>& parameters, User* user, bool validated, const std::string &original_line)
{
if (validated)
- return 0;
+ return MOD_RES_PASSTHRU;
if (!ServerInstance->XLines->MatchesLine("SHUN", user))
{
/* Not shunned, don't touch. */
- return 0;
+ return MOD_RES_PASSTHRU;
}
if (!affectopers && IS_OPER(user))
{
/* Don't do anything if the user is an operator and affectopers isn't set */
- return 0;
+ return MOD_RES_PASSTHRU;
}
std::set<std::string>::iterator i = ShunEnabledCommands.find(command);
@@ -269,7 +269,7 @@ class ModuleShun : public Module
{
if (NotifyOfShun)
user->WriteServ("NOTICE %s :*** Command %s not processed, as you have been blocked from issuing commands (SHUN)", user->nick.c_str(), command.c_str());
- return 1;
+ return MOD_RES_DENY;
}
if (command == "QUIT")
@@ -284,7 +284,7 @@ class ModuleShun : public Module
}
/* if we're here, allow the command. */
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual Version GetVersion()
diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp
index 0f851f15c..dd720608f 100644
--- a/src/modules/m_silence.cpp
+++ b/src/modules/m_silence.cpp
@@ -331,7 +331,7 @@ class ModuleSilence : public Module
{
if (IS_LOCAL(i->first))
{
- if (MatchPattern(i->first, sender, public_silence) == 1)
+ if (MatchPattern(i->first, sender, public_silence) == MOD_RES_ALLOW)
{
exempt_list[i->first] = i->first->nick;
}
@@ -339,7 +339,7 @@ class ModuleSilence : public Module
}
}
- virtual int PreText(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list, int silence_type)
+ virtual ModResult PreText(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list, int silence_type)
{
if (target_type == TYPE_USER && IS_LOCAL(((User*)dest)))
{
@@ -353,29 +353,29 @@ class ModuleSilence : public Module
this->OnBuildExemptList((silence_type == SILENCE_PRIVATE ? MSG_PRIVMSG : MSG_NOTICE), chan, user, status, exempt_list, "");
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return PreText(user, dest, target_type, text, status, exempt_list, SILENCE_PRIVATE);
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return PreText(user, dest, target_type, text, status, exempt_list, SILENCE_NOTICE);
}
- virtual int OnUserPreInvite(User* source,User* dest,Channel* channel, time_t timeout)
+ virtual ModResult OnUserPreInvite(User* source,User* dest,Channel* channel, time_t timeout)
{
return MatchPattern(dest, source, SILENCE_INVITE);
}
- int MatchPattern(User* dest, User* source, int pattern)
+ ModResult MatchPattern(User* dest, User* source, int pattern)
{
/* Server source */
if (!source || !dest)
- return 1;
+ return MOD_RES_ALLOW;
silencelist* sl;
dest->GetExt("silence_list", sl);
@@ -384,10 +384,10 @@ class ModuleSilence : public Module
for (silencelist::const_iterator c = sl->begin(); c != sl->end(); c++)
{
if (((((c->second & pattern) > 0)) || ((c->second & SILENCE_ALL) > 0)) && (InspIRCd::Match(source->GetFullHost(), c->first)))
- return !(((c->second & SILENCE_EXCLUDE) > 0));
+ return (c->second & SILENCE_EXCLUDE) ? MOD_RES_PASSTHRU : MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleSilence()
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp
index cb9d53b32..3e2b5d3b5 100644
--- a/src/modules/m_spanningtree/main.cpp
+++ b/src/modules/m_spanningtree/main.cpp
@@ -360,7 +360,7 @@ void ModuleSpanningTree::DoConnectTimeout(time_t curtime)
}
}
-int ModuleSpanningTree::HandleVersion(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleVersion(const std::vector<std::string>& parameters, User* user)
{
// we've already checked if pcnt > 0, so this is safe
TreeServer* found = Utils->FindServerMask(parameters[0]);
@@ -377,7 +377,7 @@ int ModuleSpanningTree::HandleVersion(const std::vector<std::string>& parameters
{
user->WriteNumeric(402, "%s %s :No such server",user->nick.c_str(),parameters[0].c_str());
}
- return 1;
+ return MOD_RES_DENY;
}
/* This method will attempt to get a message to a remote user.
@@ -397,7 +397,7 @@ void ModuleSpanningTree::RemoteMessage(User* user, const char* format, ...)
ServerInstance->PI->SendUserNotice(user, text);
}
-int ModuleSpanningTree::HandleConnect(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleConnect(const std::vector<std::string>& parameters, User* user)
{
for (std::vector<Link>::iterator x = Utils->LinkBlocks.begin(); x < Utils->LinkBlocks.end(); x++)
{
@@ -406,7 +406,7 @@ int ModuleSpanningTree::HandleConnect(const std::vector<std::string>& parameters
if (InspIRCd::Match(ServerInstance->Config->ServerName, assign(x->Name)))
{
RemoteMessage(user, "*** CONNECT: Server \002%s\002 is ME, not connecting.",x->Name.c_str());
- return 1;
+ return MOD_RES_DENY;
}
TreeServer* CheckDupe = Utils->FindServer(x->Name.c_str());
@@ -414,17 +414,17 @@ int ModuleSpanningTree::HandleConnect(const std::vector<std::string>& parameters
{
RemoteMessage(user, "*** CONNECT: Connecting to server: \002%s\002 (%s:%d)",x->Name.c_str(),(x->HiddenFromStats ? "<hidden>" : x->IPAddr.c_str()),x->Port);
ConnectServer(&(*x));
- return 1;
+ return MOD_RES_DENY;
}
else
{
RemoteMessage(user, "*** CONNECT: Server \002%s\002 already exists on the network and is connected via \002%s\002",x->Name.c_str(),CheckDupe->GetParent()->GetName().c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
RemoteMessage(user, "*** CONNECT: No server matching \002%s\002 could be found in the config file.",parameters[0].c_str());
- return 1;
+ return MOD_RES_DENY;
}
void ModuleSpanningTree::OnGetServerDescription(const std::string &servername,std::string &description)
@@ -615,15 +615,15 @@ void ModuleSpanningTree::OnUserJoin(User* user, Channel* channel, bool sync, boo
}
}
-int ModuleSpanningTree::OnChangeLocalUserHost(User* user, const std::string &newhost)
+ModResult ModuleSpanningTree::OnChangeLocalUserHost(User* user, const std::string &newhost)
{
if (user->registered != REG_ALL)
- return 0;
+ return MOD_RES_PASSTHRU;
parameterlist params;
params.push_back(newhost);
Utils->DoOneToMany(user->uuid,"FHOST",params);
- return 0;
+ return MOD_RES_PASSTHRU;
}
void ModuleSpanningTree::OnChangeName(User* user, const std::string &gecos)
@@ -856,7 +856,7 @@ void ModuleSpanningTree::OnMode(User* user, void* dest, int target_type, const p
}
}
-int ModuleSpanningTree::OnSetAway(User* user, const std::string &awaymsg)
+ModResult ModuleSpanningTree::OnSetAway(User* user, const std::string &awaymsg)
{
if (IS_LOCAL(user))
{
@@ -874,7 +874,7 @@ int ModuleSpanningTree::OnSetAway(User* user, const std::string &awaymsg)
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
void ModuleSpanningTree::ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const parameterlist &modeline, const std::vector<TranslateType> &translate)
diff --git a/src/modules/m_spanningtree/main.h b/src/modules/m_spanningtree/main.h
index 54524c720..a9cba73af 100644
--- a/src/modules/m_spanningtree/main.h
+++ b/src/modules/m_spanningtree/main.h
@@ -87,35 +87,35 @@ class ModuleSpanningTree : public Module
/** Handle remote MOTD
*/
- int HandleMotd(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleMotd(const std::vector<std::string>& parameters, User* user);
/** Handle remote ADMIN
*/
- int HandleAdmin(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleAdmin(const std::vector<std::string>& parameters, User* user);
/** Handle remote STATS
*/
- int HandleStats(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleStats(const std::vector<std::string>& parameters, User* user);
/** Handle MAP command
*/
- int HandleMap(const std::vector<std::string>& parameters, User* user);
+ bool HandleMap(const std::vector<std::string>& parameters, User* user);
/** Handle SQUIT
*/
- int HandleSquit(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleSquit(const std::vector<std::string>& parameters, User* user);
/** Handle TIME
*/
- int HandleTime(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleTime(const std::vector<std::string>& parameters, User* user);
/** Handle remote WHOIS
*/
- int HandleRemoteWhois(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleRemoteWhois(const std::vector<std::string>& parameters, User* user);
/** Handle remote MODULES
*/
- int HandleModules(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleModules(const std::vector<std::string>& parameters, User* user);
/** Ping all local servers
*/
@@ -135,11 +135,11 @@ class ModuleSpanningTree : public Module
/** Handle remote VERSON
*/
- int HandleVersion(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleVersion(const std::vector<std::string>& parameters, User* user);
/** Handle CONNECT
*/
- int HandleConnect(const std::vector<std::string>& parameters, User* user);
+ ModResult HandleConnect(const std::vector<std::string>& parameters, User* user);
/** Attempt to send a message to a user
*/
@@ -157,7 +157,7 @@ class ModuleSpanningTree : public Module
** *** MODULE EVENTS ***
**/
- virtual int OnPreCommand(std::string &command, std::vector<std::string>& parameters, User *user, bool validated, const std::string &original_line);
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string>& parameters, User *user, bool validated, const std::string &original_line);
virtual void OnPostCommand(const std::string &command, const std::vector<std::string>& parameters, User *user, CmdResult result, const std::string &original_line);
virtual void OnGetServerDescription(const std::string &servername,std::string &description);
virtual void OnUserConnect(User* source);
@@ -168,7 +168,7 @@ class ModuleSpanningTree : public Module
virtual void OnUserMessage(User* user, void* dest, int target_type, const std::string &text, char status, const CUList &exempt_list);
virtual void OnBackgroundTimer(time_t curtime);
virtual void OnUserJoin(User* user, Channel* channel, bool sync, bool &silent, bool created);
- virtual int OnChangeLocalUserHost(User* user, const std::string &newhost);
+ virtual ModResult OnChangeLocalUserHost(User* user, const std::string &newhost);
virtual void OnChangeName(User* user, const std::string &gecos);
virtual void OnUserPart(User* user, Channel* channel, std::string &partmessage, bool &silent);
virtual void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message);
@@ -182,8 +182,8 @@ class ModuleSpanningTree : public Module
virtual void OnAddLine(User *u, XLine *x);
virtual void OnDelLine(User *u, XLine *x);
virtual void OnMode(User* user, void* dest, int target_type, const std::vector<std::string> &text, const std::vector<TranslateType> &translate);
- virtual int OnStats(char statschar, User* user, string_list &results);
- virtual int OnSetAway(User* user, const std::string &awaymsg);
+ virtual ModResult OnStats(char statschar, User* user, string_list &results);
+ virtual ModResult OnSetAway(User* user, const std::string &awaymsg);
virtual void ProtoSendMode(void* opaque, TargetTypeFlags target_type, void* target, const std::vector<std::string> &modeline, const std::vector<TranslateType> &translate);
virtual void ProtoSendMetaData(void* opaque, Extensible* target, const std::string &extname, const std::string &extdata);
virtual std::string ProtoTranslate(Extensible* item);
diff --git a/src/modules/m_spanningtree/override_admin.cpp b/src/modules/m_spanningtree/override_admin.cpp
index 50ab04566..c63b8dc4d 100644
--- a/src/modules/m_spanningtree/override_admin.cpp
+++ b/src/modules/m_spanningtree/override_admin.cpp
@@ -27,12 +27,12 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::HandleAdmin(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleAdmin(const std::vector<std::string>& parameters, User* user)
{
if (parameters.size() > 0)
{
if (InspIRCd::Match(ServerInstance->Config->ServerName, parameters[0]))
- return 0;
+ return MOD_RES_PASSTHRU;
/* Remote ADMIN, the server is within the 1st parameter */
parameterlist params;
@@ -46,8 +46,8 @@ int ModuleSpanningTree::HandleAdmin(const std::vector<std::string>& parameters,
}
else
user->WriteNumeric(ERR_NOSUCHSERVER, "%s %s :No such server", user->nick.c_str(), parameters[0].c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_spanningtree/override_map.cpp b/src/modules/m_spanningtree/override_map.cpp
index 989ee8900..e3f103cc8 100644
--- a/src/modules/m_spanningtree/override_map.cpp
+++ b/src/modules/m_spanningtree/override_map.cpp
@@ -80,7 +80,7 @@ void ModuleSpanningTree::ShowMap(TreeServer* Current, User* user, int depth, int
// and divisons, we instead render the map onto a backplane of characters
// (a character matrix), then draw the branches as a series of "L" shapes
// from the nodes. This is not only friendlier on CPU it uses less stack.
-int ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, User* user)
+bool ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, User* user)
{
if (parameters.size() > 0)
{
@@ -104,7 +104,7 @@ int ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, Us
// Don't return if s == Utils->TreeRoot (us)
if (ret)
- return 1;
+ return true;
}
// These arrays represent a virtual screen which we will
@@ -189,6 +189,6 @@ int ModuleSpanningTree::HandleMap(const std::vector<std::string>& parameters, Us
delete[] names;
delete[] stats;
- return 1;
+ return true;
}
diff --git a/src/modules/m_spanningtree/override_modules.cpp b/src/modules/m_spanningtree/override_modules.cpp
index 039cbb0d0..10d46bbc3 100644
--- a/src/modules/m_spanningtree/override_modules.cpp
+++ b/src/modules/m_spanningtree/override_modules.cpp
@@ -27,12 +27,12 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::HandleModules(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleModules(const std::vector<std::string>& parameters, User* user)
{
if (parameters.size() > 0)
{
if (InspIRCd::Match(ServerInstance->Config->ServerName, parameters[0]))
- return 0;
+ return MOD_RES_PASSTHRU;
parameterlist params;
params.push_back(parameters[0]);
@@ -44,8 +44,8 @@ int ModuleSpanningTree::HandleModules(const std::vector<std::string>& parameters
}
else
user->WriteNumeric(ERR_NOSUCHSERVER, "%s %s :No such server", user->nick.c_str(), parameters[0].c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_spanningtree/override_motd.cpp b/src/modules/m_spanningtree/override_motd.cpp
index bee75975d..fe229d5cc 100644
--- a/src/modules/m_spanningtree/override_motd.cpp
+++ b/src/modules/m_spanningtree/override_motd.cpp
@@ -27,12 +27,12 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::HandleMotd(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleMotd(const std::vector<std::string>& parameters, User* user)
{
if (parameters.size() > 0)
{
if (InspIRCd::Match(ServerInstance->Config->ServerName, parameters[0]))
- return 0;
+ return MOD_RES_PASSTHRU;
/* Remote MOTD, the server is within the 1st parameter */
parameterlist params;
@@ -46,8 +46,8 @@ int ModuleSpanningTree::HandleMotd(const std::vector<std::string>& parameters, U
}
else
user->WriteNumeric(ERR_NOSUCHSERVER, "%s %s :No such server", user->nick.c_str(), parameters[0].c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_spanningtree/override_squit.cpp b/src/modules/m_spanningtree/override_squit.cpp
index 829c69880..a13385cd1 100644
--- a/src/modules/m_spanningtree/override_squit.cpp
+++ b/src/modules/m_spanningtree/override_squit.cpp
@@ -27,7 +27,7 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::HandleSquit(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleSquit(const std::vector<std::string>& parameters, User* user)
{
TreeServer* s = Utils->FindServerMask(parameters[0]);
if (s)
@@ -35,7 +35,7 @@ int ModuleSpanningTree::HandleSquit(const std::vector<std::string>& parameters,
if (s == Utils->TreeRoot)
{
user->WriteServ("NOTICE %s :*** SQUIT: Foolish mortal, you cannot make a server SQUIT itself! (%s matches local server name)",user->nick.c_str(),parameters[0].c_str());
- return 1;
+ return MOD_RES_DENY;
}
TreeSocket* sock = s->GetSocket();
@@ -56,6 +56,6 @@ int ModuleSpanningTree::HandleSquit(const std::vector<std::string>& parameters,
{
user->WriteServ("NOTICE %s :*** SQUIT: The server \002%s\002 does not exist on the network.",user->nick.c_str(),parameters[0].c_str());
}
- return 1;
+ return MOD_RES_DENY;
}
diff --git a/src/modules/m_spanningtree/override_stats.cpp b/src/modules/m_spanningtree/override_stats.cpp
index 76522a3dd..ecffcf05e 100644
--- a/src/modules/m_spanningtree/override_stats.cpp
+++ b/src/modules/m_spanningtree/override_stats.cpp
@@ -28,12 +28,12 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/link.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::HandleStats(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleStats(const std::vector<std::string>& parameters, User* user)
{
if (parameters.size() > 1)
{
if (InspIRCd::Match(ServerInstance->Config->ServerName, parameters[1]))
- return 0;
+ return MOD_RES_PASSTHRU;
/* Remote STATS, the server is within the 2nd parameter */
parameterlist params;
@@ -51,12 +51,12 @@ int ModuleSpanningTree::HandleStats(const std::vector<std::string>& parameters,
{
user->WriteServ( "402 %s %s :No such server", user->nick.c_str(), parameters[1].c_str());
}
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
-int ModuleSpanningTree::OnStats(char statschar, User* user, string_list &results)
+ModResult ModuleSpanningTree::OnStats(char statschar, User* user, string_list &results)
{
if ((statschar == 'c') || (statschar == 'n'))
{
@@ -66,7 +66,7 @@ int ModuleSpanningTree::OnStats(char statschar, User* user, string_list &results
if (statschar == 'c')
results.push_back(std::string(ServerInstance->Config->ServerName)+" 244 "+user->nick+" H * * "+Utils->LinkBlocks[i].Name.c_str());
}
- return 1;
+ return MOD_RES_DENY;
}
if (statschar == 'p')
@@ -87,6 +87,6 @@ int ModuleSpanningTree::OnStats(char statschar, User* user, string_list &results
" (server, " + transport + ")");
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_spanningtree/override_time.cpp b/src/modules/m_spanningtree/override_time.cpp
index d8498cd02..bd9727498 100644
--- a/src/modules/m_spanningtree/override_time.cpp
+++ b/src/modules/m_spanningtree/override_time.cpp
@@ -27,7 +27,7 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::HandleTime(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleTime(const std::vector<std::string>& parameters, User* user)
{
if ((IS_LOCAL(user)) && (parameters.size() > 0))
{
@@ -36,7 +36,7 @@ int ModuleSpanningTree::HandleTime(const std::vector<std::string>& parameters, U
{
// we dont' override for local server
if (found == Utils->TreeRoot)
- return 0;
+ return MOD_RES_PASSTHRU;
parameterlist params;
params.push_back(found->GetName());
@@ -48,6 +48,6 @@ int ModuleSpanningTree::HandleTime(const std::vector<std::string>& parameters, U
user->WriteNumeric(ERR_NOSUCHSERVER, "%s %s :No such server",user->nick.c_str(),parameters[0].c_str());
}
}
- return 1;
+ return MOD_RES_DENY;
}
diff --git a/src/modules/m_spanningtree/override_whois.cpp b/src/modules/m_spanningtree/override_whois.cpp
index 68b0919c9..2d7199571 100644
--- a/src/modules/m_spanningtree/override_whois.cpp
+++ b/src/modules/m_spanningtree/override_whois.cpp
@@ -27,7 +27,7 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::HandleRemoteWhois(const std::vector<std::string>& parameters, User* user)
+ModResult ModuleSpanningTree::HandleRemoteWhois(const std::vector<std::string>& parameters, User* user)
{
if ((IS_LOCAL(user)) && (parameters.size() > 1))
{
@@ -37,15 +37,15 @@ int ModuleSpanningTree::HandleRemoteWhois(const std::vector<std::string>& parame
parameterlist params;
params.push_back(remote->uuid);
Utils->DoOneToOne(user->uuid,"IDLE",params,remote->server);
- return 1;
+ return MOD_RES_DENY;
}
else if (!remote)
{
user->WriteNumeric(401, "%s %s :No such nick/channel",user->nick.c_str(), parameters[1].c_str());
user->WriteNumeric(318, "%s %s :End of /WHOIS list.",user->nick.c_str(), parameters[1].c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_spanningtree/precommand.cpp b/src/modules/m_spanningtree/precommand.cpp
index 86b31143e..94f98faf1 100644
--- a/src/modules/m_spanningtree/precommand.cpp
+++ b/src/modules/m_spanningtree/precommand.cpp
@@ -27,11 +27,11 @@
/* $ModDep: m_spanningtree/main.h m_spanningtree/utils.h m_spanningtree/treeserver.h m_spanningtree/treesocket.h */
-int ModuleSpanningTree::OnPreCommand(std::string &command, std::vector<std::string>& parameters, User *user, bool validated, const std::string &original_line)
+ModResult ModuleSpanningTree::OnPreCommand(std::string &command, std::vector<std::string>& parameters, User *user, bool validated, const std::string &original_line)
{
/* If the command doesnt appear to be valid, we dont want to mess with it. */
if (!validated)
- return 0;
+ return MOD_RES_PASSTHRU;
if (command == "CONNECT")
{
@@ -55,7 +55,7 @@ int ModuleSpanningTree::OnPreCommand(std::string &command, std::vector<std::stri
}
else if (command == "MAP")
{
- return this->HandleMap(parameters,user);
+ return this->HandleMap(parameters,user) ? MOD_RES_DENY : MOD_RES_PASSTHRU;
}
else if ((command == "TIME") && (parameters.size() > 0))
{
@@ -64,12 +64,12 @@ int ModuleSpanningTree::OnPreCommand(std::string &command, std::vector<std::stri
else if (command == "LUSERS")
{
this->HandleLusers(parameters,user);
- return 1;
+ return MOD_RES_DENY;
}
else if (command == "LINKS")
{
this->HandleLinks(parameters,user);
- return 1;
+ return MOD_RES_DENY;
}
else if (command == "WHOIS")
{
@@ -82,12 +82,12 @@ int ModuleSpanningTree::OnPreCommand(std::string &command, std::vector<std::stri
else if ((command == "VERSION") && (parameters.size() > 0))
{
this->HandleVersion(parameters,user);
- return 1;
+ return MOD_RES_DENY;
}
else if ((command == "MODULES") && (parameters.size() > 0))
{
return this->HandleModules(parameters,user);
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_spy.cpp b/src/modules/m_spy.cpp
index 297112f62..485c104b8 100644
--- a/src/modules/m_spy.cpp
+++ b/src/modules/m_spy.cpp
@@ -23,13 +23,13 @@ class ModuleSpy : public Module
ServerInstance->Modules->Attach(I_OnUserList, this);
}
- virtual int OnUserList(User* user, Channel* Ptr, CUList* &nameslist)
+ virtual ModResult OnUserList(User* user, Channel* Ptr, CUList* &nameslist)
{
/* User has priv and is NOT on the channel */
if (user->HasPrivPermission("channels/auspex") && !Ptr->HasUser(user))
- return -1;
+ return MOD_RES_ALLOW;
- return 0;
+ return MOD_RES_PASSTHRU;
}
void Prioritize()
diff --git a/src/modules/m_sslinfo.cpp b/src/modules/m_sslinfo.cpp
index 93f2a71db..5d4b8c3c0 100644
--- a/src/modules/m_sslinfo.cpp
+++ b/src/modules/m_sslinfo.cpp
@@ -156,7 +156,7 @@ class ModuleSSLInfo : public Module
return false;
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
irc::string pcmd = command.c_str();
@@ -204,7 +204,7 @@ class ModuleSSLInfo : public Module
if (SSLOnly && !user->GetExt("ssl"))
{
user->WriteNumeric(491, "%s :This oper login name requires an SSL connection.", user->nick.c_str());
- return 1;
+ return MOD_RES_DENY;
}
/*
@@ -215,13 +215,13 @@ class ModuleSSLInfo : public Module
user->WriteNumeric(491, "%s :This oper login name requires a matching key fingerprint.",user->nick.c_str());
ServerInstance->SNO->WriteToSnoMask('o',"'%s' cannot oper, does not match fingerprint", user->nick.c_str());
ServerInstance->Logs->Log("m_ssl_oper_cert",DEFAULT,"OPER: Failed oper attempt by %s!%s@%s: credentials valid, but wrong fingerprint.", user->nick.c_str(), user->ident.c_str(), user->host.c_str());
- return 1;
+ return MOD_RES_DENY;
}
}
}
// Let core handle it for extra stuff
- return 0;
+ return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_sslmodes.cpp b/src/modules/m_sslmodes.cpp
index b05f73326..b19347ea7 100644
--- a/src/modules/m_sslmodes.cpp
+++ b/src/modules/m_sslmodes.cpp
@@ -79,24 +79,24 @@ class ModuleSSLModes : public Module
}
- virtual int OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
+ virtual ModResult OnUserPreJoin(User* user, Channel* chan, const char* cname, std::string &privs, const std::string &keygiven)
{
if(chan && chan->IsModeSet('z'))
{
if(user->GetExt("ssl", dummy))
{
// Let them in
- return 0;
+ return MOD_RES_PASSTHRU;
}
else
{
// Deny
user->WriteServ( "489 %s %s :Cannot join channel; SSL users only (+z)", user->nick.c_str(), cname);
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleSSLModes()
diff --git a/src/modules/m_stripcolor.cpp b/src/modules/m_stripcolor.cpp
index ce98103e1..cbbef75c6 100644
--- a/src/modules/m_stripcolor.cpp
+++ b/src/modules/m_stripcolor.cpp
@@ -98,10 +98,10 @@ class ModuleStripColor : public Module
}
}
- virtual int OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreMessage(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
if (!IS_LOCAL(user))
- return 0;
+ return MOD_RES_PASSTHRU;
bool active = false;
if (target_type == TYPE_USER)
@@ -117,10 +117,10 @@ class ModuleStripColor : public Module
// note: short circut logic here, don't wreck it. -- w00t
if (CHANOPS_EXEMPT(ServerInstance, 'S') && t->GetStatus(user) == STATUS_OP)
{
- return 0;
+ return MOD_RES_PASSTHRU;
}
- active = t->IsModeSet('S') || t->GetExtBanStatus(user, 'S') < 0;
+ active = !t->GetExtBanStatus(user, 'S').check(!t->IsModeSet('S'));
}
if (active)
@@ -128,10 +128,10 @@ class ModuleStripColor : public Module
this->ReplaceLine(text);
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
- virtual int OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
+ virtual ModResult OnUserPreNotice(User* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list)
{
return OnUserPreMessage(user,dest,target_type,text,status,exempt_list);
}
diff --git a/src/modules/m_svshold.cpp b/src/modules/m_svshold.cpp
index e0bf5a54c..860774574 100644
--- a/src/modules/m_svshold.cpp
+++ b/src/modules/m_svshold.cpp
@@ -157,26 +157,26 @@ class ModuleSVSHold : public Module
}
- virtual int OnStats(char symbol, User* user, string_list &out)
+ virtual ModResult OnStats(char symbol, User* user, string_list &out)
{
if(symbol != 'S')
- return 0;
+ return MOD_RES_PASSTHRU;
ServerInstance->XLines->InvokeStats("SVSHOLD", 210, user, out);
- return 1;
+ return MOD_RES_DENY;
}
- virtual int OnUserPreNick(User *user, const std::string &newnick)
+ virtual ModResult OnUserPreNick(User *user, const std::string &newnick)
{
XLine *rl = ServerInstance->XLines->MatchesLine("SVSHOLD", newnick);
if (rl)
{
user->WriteServ( "432 %s %s :Services reserved nickname: %s", user->nick.c_str(), newnick.c_str(), rl->reason.c_str());
- return 1;
+ return MOD_RES_DENY;
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual ~ModuleSVSHold()
diff --git a/src/modules/m_swhois.cpp b/src/modules/m_swhois.cpp
index 75a0a4cdd..cf14be3e1 100644
--- a/src/modules/m_swhois.cpp
+++ b/src/modules/m_swhois.cpp
@@ -101,7 +101,7 @@ class ModuleSWhois : public Module
// :kenny.chatspike.net 320 Brain Azhrarn :is getting paid to play games.
- int OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
+ ModResult OnWhoisLine(User* user, User* dest, int &numeric, std::string &text)
{
/* We use this and not OnWhois because this triggers for remote, too */
if (numeric == 312)
@@ -115,7 +115,7 @@ class ModuleSWhois : public Module
}
/* Dont block anything */
- return 0;
+ return MOD_RES_PASSTHRU;
}
// Whenever the linking module wants to send out data, but doesnt know what the data
diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp
index c27acbd38..cab7f8f6e 100644
--- a/src/modules/m_timedbans.cpp
+++ b/src/modules/m_timedbans.cpp
@@ -127,7 +127,7 @@ class ModuleTimedBans : public Module
TimedBanList.clear();
}
- virtual int OnDelBan(User* source, Channel* chan, const std::string &banmask)
+ virtual ModResult OnDelBan(User* source, Channel* chan, const std::string &banmask)
{
irc::string listitem = banmask.c_str();
irc::string thischan = chan->name.c_str();
@@ -141,7 +141,7 @@ class ModuleTimedBans : public Module
break;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnBackgroundTimer(time_t curtime)
diff --git a/src/modules/m_uhnames.cpp b/src/modules/m_uhnames.cpp
index 70036d5a2..c72c6f814 100644
--- a/src/modules/m_uhnames.cpp
+++ b/src/modules/m_uhnames.cpp
@@ -48,7 +48,7 @@ class ModuleUHNames : public Module
output.append(" UHNAMES");
}
- virtual int OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
+ virtual ModResult OnPreCommand(std::string &command, std::vector<std::string> &parameters, User *user, bool validated, const std::string &original_line)
{
irc::string c = command.c_str();
/* We don't actually create a proper command handler class for PROTOCTL,
@@ -61,10 +61,10 @@ class ModuleUHNames : public Module
if ((parameters.size()) && (!strcasecmp(parameters[0].c_str(),"UHNAMES")))
{
user->Extend("UHNAMES");
- return 1;
+ return MOD_RES_DENY;
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnNamesListItem(User* issuer, User* user, Channel* channel, std::string &prefixes, std::string &nick)
diff --git a/src/modules/m_watch.cpp b/src/modules/m_watch.cpp
index 6d719d13d..c78bfa638 100644
--- a/src/modules/m_watch.cpp
+++ b/src/modules/m_watch.cpp
@@ -389,7 +389,7 @@ class Modulewatch : public Module
maxwatch = 32;
}
- virtual int OnSetAway(User *user, const std::string &awaymsg)
+ virtual ModResult OnSetAway(User *user, const std::string &awaymsg)
{
std::string numeric;
int inum;
@@ -415,7 +415,7 @@ class Modulewatch : public Module
}
}
- return 0;
+ return MOD_RES_PASSTHRU;
}
virtual void OnUserQuit(User* user, const std::string &reason, const std::string &oper_message)
diff --git a/src/snomasks.cpp b/src/snomasks.cpp
index e12f95d6b..889457ade 100644
--- a/src/snomasks.cpp
+++ b/src/snomasks.cpp
@@ -139,13 +139,13 @@ void Snomask::SendMessage(const std::string &message)
LastMessage = message;
std::string desc = this->Description;
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
char mysnomask = MySnomask;
ServerInstance->Logs->Log("snomask", DEFAULT, "%s: %s", desc.c_str(), message.c_str());
- FOREACH_RESULT(I_OnSendSnotice, OnSendSnotice(mysnomask, desc, message));
+ FIRST_MOD_RESULT(ServerInstance, OnSendSnotice, MOD_RESULT, (mysnomask, desc, message));
- LastBlocked = (MOD_RESULT == 1); // 1 blocks the message
+ LastBlocked = (MOD_RESULT == MOD_RES_DENY);
if (!LastBlocked)
{
diff --git a/src/users.cpp b/src/users.cpp
index fdad68e2a..35aa2cd30 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -970,10 +970,10 @@ void User::FullConnect()
ServerInstance->Users->unregistered_count--;
/* Trigger LUSERS output, give modules a chance too */
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
std::string command("LUSERS");
std::vector<std::string> parameters;
- FOREACH_RESULT(I_OnPreCommand, OnPreCommand(command, parameters, this, true, "LUSERS"));
+ FIRST_MOD_RESULT(ServerInstance, OnPreCommand, MOD_RESULT, (command, parameters, this, true, "LUSERS"));
if (!MOD_RESULT)
ServerInstance->CallCommandHandler(command, parameters, this);
@@ -1025,17 +1025,17 @@ void User::InvalidateCache()
bool User::ForceNickChange(const char* newnick)
{
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
this->InvalidateCache();
this->Extend("NICKForced");
- FOREACH_RESULT(I_OnUserPreNick,OnUserPreNick(this, newnick));
+ FIRST_MOD_RESULT(ServerInstance, OnUserPreNick, MOD_RESULT, (this, newnick));
this->Shrink("NICKForced");
- if (MOD_RESULT)
+ if (MOD_RESULT == MOD_RES_DENY)
{
ServerInstance->stats->statsCollisions++;
return false;
@@ -1276,11 +1276,11 @@ void User::WriteNumeric(unsigned int numeric, const char* text, ...)
void User::WriteNumeric(unsigned int numeric, const std::string &text)
{
char textbuffer[MAXBUF];
- int MOD_RESULT = 0;
+ ModResult MOD_RESULT;
- FOREACH_RESULT(I_OnNumeric, OnNumeric(this, numeric, text));
+ FIRST_MOD_RESULT(ServerInstance, OnNumeric, MOD_RESULT, (this, numeric, text));
- if (MOD_RESULT)
+ if (MOD_RESULT == MOD_RES_DENY)
return;
snprintf(textbuffer,MAXBUF,":%s %03u %s",ServerInstance->Config->ServerName, numeric, text.c_str());
@@ -1538,9 +1538,9 @@ bool User::ChangeName(const char* gecos)
if (IS_LOCAL(this))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnChangeLocalUserGECOS,OnChangeLocalUserGECOS(this,gecos));
- if (MOD_RESULT)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnChangeLocalUserGECOS, MOD_RESULT, (this,gecos));
+ if (MOD_RESULT == MOD_RES_DENY)
return false;
FOREACH_MOD(I_OnChangeName,OnChangeName(this,gecos));
}
@@ -1553,10 +1553,12 @@ void User::DoHostCycle(const std::string &quitline)
{
char buffer[MAXBUF];
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnHostCycle, OnHostCycle(this));
+ ModResult result = MOD_RES_PASSTHRU;
+ FIRST_MOD_RESULT(ServerInstance, OnHostCycle, result, (this));
- if (!ServerInstance->Config->CycleHosts || MOD_RESULT)
+ if (result == MOD_RES_DENY)
+ return;
+ if (result == MOD_RES_PASSTHRU && !ServerInstance->Config->CycleHosts)
return;
uniq_id++;
@@ -1602,9 +1604,9 @@ bool User::ChangeDisplayedHost(const char* shost)
if (IS_LOCAL(this))
{
- int MOD_RESULT = 0;
- FOREACH_RESULT(I_OnChangeLocalUserHost,OnChangeLocalUserHost(this,shost));
- if (MOD_RESULT)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnChangeLocalUserHost, MOD_RESULT, (this,shost));
+ if (MOD_RESULT == MOD_RES_DENY)
return false;
}
@@ -1860,9 +1862,9 @@ void User::PurgeEmptyChannels()
chan_hash::iterator i2 = ServerInstance->chanlist->find(thischan->name);
if (i2 != ServerInstance->chanlist->end())
{
- int MOD_RESULT = 0;
- FOREACH_RESULT_I(ServerInstance,I_OnChannelPreDelete, OnChannelPreDelete(i2->second));
- if (MOD_RESULT == 1)
+ ModResult MOD_RESULT;
+ FIRST_MOD_RESULT(ServerInstance, OnChannelPreDelete, MOD_RESULT, (i2->second));
+ if (MOD_RESULT == MOD_RES_DENY)
continue; // delete halted by module
FOREACH_MOD(I_OnChannelDelete,OnChannelDelete(i2->second));
delete i2->second;