diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-11-26 18:04:47 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-11-26 18:04:47 +0000 |
commit | 2e52ff280dca14d1598b84fab7a8c2e93fa30910 (patch) | |
tree | b61c54d4e0921b6349ff6b5aeb36008e52973076 | |
parent | 69488d0a42ae22d1cf39244100403b63075ad4c3 (diff) |
Add extra parameter to OnUserPreNotice and OnUserPrePrivmsg, CUList &exempt_list, a list of users NOT to write to. By default it just contains the sender, you can add more.
This also bumps the module api version by one. added "CUList fixme" to peaveys module just so it builds, as this will be refactored to use the new feature that was just added :)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5806 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | include/channels.h | 4 | ||||
-rw-r--r-- | include/modules.h | 6 | ||||
-rw-r--r-- | src/channels.cpp | 26 | ||||
-rw-r--r-- | src/cmd_notice.cpp | 13 | ||||
-rw-r--r-- | src/cmd_privmsg.cpp | 15 | ||||
-rw-r--r-- | src/modules.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_blockcaps.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_blockcolor.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_censor.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_chanfilter.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_dccallow.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_filter.h | 10 | ||||
-rw-r--r-- | src/modules/m_noctcp.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_nonotice.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_restrictbanned.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_restrictmsg.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_services.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_services_account.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_silence.cpp | 6 | ||||
-rw-r--r-- | src/modules/m_silence_ext.cpp | 9 | ||||
-rw-r--r-- | src/modules/m_stripcolor.cpp | 6 |
21 files changed, 100 insertions, 61 deletions
diff --git a/include/channels.h b/include/channels.h index 648723b09..70e5c2233 100644 --- a/include/channels.h +++ b/include/channels.h @@ -416,6 +416,8 @@ class chanrec : public Extensible */ void WriteAllExceptSender(userrec* user, bool serversource, char status, char* text, ...); + void WriteAllExcept(userrec* user, bool serversource, char status, CUList &except_list, char* text, ...); + /** Write to all users on a channel except a specific user, using std::string for text * @param user User whos details to prefix the line with, and to omit from receipt of the message * @param serversource If this parameter is true, use the local server name as the source of the text, otherwise, @@ -425,6 +427,8 @@ class chanrec : public Extensible */ void WriteAllExceptSender(userrec* user, bool serversource, char status, const std::string& text); + void WriteAllExcept(userrec* user, bool serversource, char status, CUList &except_list, const std::string& text); + /** Returns the maximum number of bans allowed to be set on this channel * @return The maximum number of bans allowed */ diff --git a/include/modules.h b/include/modules.h index 8e2746bf0..57fbc03b6 100644 --- a/include/modules.h +++ b/include/modules.h @@ -74,7 +74,7 @@ enum TargetTypeFlags { * ipv4 servers, so this value will be ten times as * high on ipv6 servers. */ -#define NATIVE_API_VERSION 11004 +#define NATIVE_API_VERSION 11005 #ifdef IPV6 #define API_VERSION (NATIVE_API_VERSION * 10) #else @@ -613,7 +613,7 @@ class Module : public Extensible * @param status The status being used, e.g. PRIVMSG @#chan has status== '@', 0 to send to everyone. * @return 1 to deny the NOTICE, 0 to allow it */ - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text,char status); + virtual int OnUserPreMessage(userrec* 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 @@ -632,7 +632,7 @@ class Module : public Extensible * @param status The status being used, e.g. PRIVMSG @#chan has status== '@', 0 to send to everyone. * @return 1 to deny the NOTICE, 0 to allow it */ - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text,char status); + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text,char status, CUList &exempt_list); /** Called before any nickchange, local or remote. This can be used to implement Q-lines etc. * Please note that although you can see remote nickchanges through this function, you should diff --git a/src/channels.cpp b/src/channels.cpp index 948b49a0b..7a6f85469 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -695,7 +695,22 @@ void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status this->WriteAllExceptSender(user, serversource, status, std::string(textbuffer)); } -void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status, const std::string& text) +void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CUList &except_list, char* text, ...) +{ + char textbuffer[MAXBUF]; + va_list argsPtr; + + if (!text) + return; + + va_start(argsPtr, text); + vsnprintf(textbuffer, MAXBUF, text, argsPtr); + va_end(argsPtr); + + this->WriteAllExcept(user, serversource, status, except_list, std::string(textbuffer)); +} + +void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CUList &except_list, const std::string &text) { CUList *ulist; @@ -717,7 +732,7 @@ void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) { - if ((IS_LOCAL(i->second)) && (user != i->second)) + if ((IS_LOCAL(i->second)) && (except_list.find(i->second) == except_list.end())) { if (serversource) i->second->WriteServ(text); @@ -727,6 +742,13 @@ void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status } } +void chanrec::WriteAllExceptSender(userrec* user, bool serversource, char status, const std::string& text) +{ + CUList except_list; + except_list[user] = user; + this->WriteAllExcept(user, serversource, status, except_list, std::string(text)); +} + /* * return a count of the users on a specific channel accounting for * invisible users who won't increase the count. e.g. for /LIST diff --git a/src/cmd_notice.cpp b/src/cmd_notice.cpp index d947c70be..c9c06ff67 100644 --- a/src/cmd_notice.cpp +++ b/src/cmd_notice.cpp @@ -32,6 +32,8 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user) userrec *dest; chanrec *chan; + CUList exempt_list; + user->idle_lastmsg = ServerInstance->Time(); if (ServerInstance->Parser->LoopCall(user, this, parameters, pcnt, 0)) @@ -40,7 +42,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user) { int MOD_RESULT = 0; std::string temp = parameters[1]; - FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,(void*)parameters[0],TYPE_SERVER,temp,0)); + FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,(void*)parameters[0],TYPE_SERVER,temp,0,exempt_list)); if (MOD_RESULT) return CMD_FAILURE; parameters[1] = (char*)temp.c_str(); @@ -62,6 +64,9 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user) if (*parameters[0] == '#') { chan = ServerInstance->FindChan(parameters[0]); + + exempt_list[user] = user; + if (chan) { if (IS_LOCAL(user)) @@ -81,7 +86,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user) int MOD_RESULT = 0; std::string temp = parameters[1]; - FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,chan,TYPE_CHANNEL,temp,status)); + FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,chan,TYPE_CHANNEL,temp,status, exempt_list)); if (MOD_RESULT) { return CMD_FAILURE; } @@ -93,7 +98,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user) return CMD_FAILURE; } - chan->WriteAllExceptSender(user, false, status, "NOTICE %s :%s", chan->name, parameters[1]); + chan->WriteAllExcept(user, false, status, exempt_list, "NOTICE %s :%s", chan->name, parameters[1]); FOREACH_MOD(I_OnUserNotice,OnUserNotice(user,chan,TYPE_CHANNEL,parameters[1],status)); } @@ -112,7 +117,7 @@ CmdResult cmd_notice::Handle (const char** parameters, int pcnt, userrec *user) int MOD_RESULT = 0; std::string temp = parameters[1]; - FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,dest,TYPE_USER,temp,0)); + FOREACH_RESULT(I_OnUserPreNotice,OnUserPreNotice(user,dest,TYPE_USER,temp,0,exempt_list)); if (MOD_RESULT) { return CMD_FAILURE; } diff --git a/src/cmd_privmsg.cpp b/src/cmd_privmsg.cpp index aba8ae12d..d3d7e483e 100644 --- a/src/cmd_privmsg.cpp +++ b/src/cmd_privmsg.cpp @@ -33,6 +33,8 @@ CmdResult cmd_privmsg::Handle (const char** parameters, int pcnt, userrec *user) userrec *dest; chanrec *chan; + CUList except_list; + user->idle_lastmsg = ServerInstance->Time(); if (ServerInstance->Parser->LoopCall(user, this, parameters, pcnt, 0)) @@ -42,7 +44,7 @@ CmdResult cmd_privmsg::Handle (const char** parameters, int pcnt, userrec *user) { int MOD_RESULT = 0; std::string temp = parameters[1]; - FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,(void*)parameters[0],TYPE_SERVER,temp,0)); + FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,(void*)parameters[0],TYPE_SERVER,temp,0,except_list)); if (MOD_RESULT) return CMD_FAILURE; parameters[1] = (char*)temp.c_str(); @@ -64,6 +66,9 @@ CmdResult cmd_privmsg::Handle (const char** parameters, int pcnt, userrec *user) if (parameters[0][0] == '#') { chan = ServerInstance->FindChan(parameters[0]); + + except_list[user] = user; + if (chan) { if (IS_LOCAL(user)) @@ -82,7 +87,7 @@ CmdResult cmd_privmsg::Handle (const char** parameters, int pcnt, userrec *user) int MOD_RESULT = 0; std::string temp = parameters[1]; - FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,chan,TYPE_CHANNEL,temp,status)); + FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,chan,TYPE_CHANNEL,temp,status,except_list)); if (MOD_RESULT) { return CMD_FAILURE; } @@ -93,8 +98,8 @@ CmdResult cmd_privmsg::Handle (const char** parameters, int pcnt, userrec *user) user->WriteServ("412 %s No text to send", user->nick); return CMD_FAILURE; } - - chan->WriteAllExceptSender(user, false, status, "PRIVMSG %s :%s", chan->name, parameters[1]); + + chan->WriteAllExcept(user, false, status, except_list, "PRIVMSG %s :%s", chan->name, parameters[1]); FOREACH_MOD(I_OnUserMessage,OnUserMessage(user,chan,TYPE_CHANNEL,parameters[1],status)); } else @@ -118,7 +123,7 @@ CmdResult cmd_privmsg::Handle (const char** parameters, int pcnt, userrec *user) int MOD_RESULT = 0; std::string temp = parameters[1]; - FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,dest,TYPE_USER,temp,0)); + FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,dest,TYPE_USER,temp,0,except_list)); if (MOD_RESULT) { return CMD_FAILURE; } diff --git a/src/modules.cpp b/src/modules.cpp index 8f5e427d9..a8e7a2f75 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -122,8 +122,8 @@ void Module::OnPostOper(userrec* user, const std::string &opertype) { }; void Module::OnInfo(userrec* user) { }; void Module::OnWhois(userrec* source, userrec* dest) { }; int Module::OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel) { return 0; }; -int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text,char status) { return 0; }; -int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text,char status) { return 0; }; +int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text,char status, CUList &exempt_list) { return 0; }; +int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text,char status, CUList &exempt_list) { return 0; }; int Module::OnUserPreNick(userrec* user, const std::string &newnick) { return 0; }; void Module::OnUserPostNick(userrec* user, const std::string &oldnick) { }; int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; }; diff --git a/src/modules/m_blockcaps.cpp b/src/modules/m_blockcaps.cpp index e4f655760..830b05ae9 100644 --- a/src/modules/m_blockcaps.cpp +++ b/src/modules/m_blockcaps.cpp @@ -72,7 +72,7 @@ public: List[I_OnUserPreMessage] = List[I_OnUserPreNotice] = 1; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { @@ -96,9 +96,9 @@ public: return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreMessage(user,dest,target_type,text,status); + return OnUserPreMessage(user,dest,target_type,text,status,exempt_list); } virtual ~ModuleBlockCAPS() diff --git a/src/modules/m_blockcolor.cpp b/src/modules/m_blockcolor.cpp index 967e8fd02..f62e54613 100644 --- a/src/modules/m_blockcolor.cpp +++ b/src/modules/m_blockcolor.cpp @@ -73,7 +73,7 @@ class ModuleBlockColour : public Module List[I_OnUserPreMessage] = List[I_OnUserPreNotice] = 1; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { @@ -102,9 +102,9 @@ class ModuleBlockColour : public Module return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreMessage(user,dest,target_type,text,status); + return OnUserPreMessage(user,dest,target_type,text,status,exempt_list); } virtual ~ModuleBlockColour() diff --git a/src/modules/m_censor.cpp b/src/modules/m_censor.cpp index 5cdee215d..657ad7f44 100644 --- a/src/modules/m_censor.cpp +++ b/src/modules/m_censor.cpp @@ -139,7 +139,7 @@ class ModuleCensor : public Module } // format of a config entry is <badword text="shit" replace="poo"> - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { bool active = false; irc::string text2 = text.c_str(); @@ -168,9 +168,9 @@ class ModuleCensor : public Module return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreMessage(user,dest,target_type,text,status); + return OnUserPreMessage(user,dest,target_type,text,status,exempt_list); } virtual void OnRehash(const std::string ¶meter) diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp index c600740da..51bc2092a 100644 --- a/src/modules/m_chanfilter.cpp +++ b/src/modules/m_chanfilter.cpp @@ -116,7 +116,7 @@ class ModuleChanFilter : public Module return 0; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { @@ -130,9 +130,9 @@ class ModuleChanFilter : public Module cf->DoCleanup(target_type, item); } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreMessage(user,dest,target_type,text,status); + return OnUserPreMessage(user,dest,target_type,text,status,exempt_list); } virtual void OnSyncChannel(chanrec* chan, Module* proto, void* opaque) diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp index 5fb64a27e..95644a4e9 100644 --- a/src/modules/m_dccallow.cpp +++ b/src/modules/m_dccallow.cpp @@ -289,12 +289,12 @@ class ModuleDCCAllow : public Module return 0; } - virtual int OnUserPreMessage(userrec* user, void* dest, int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreNotice(user, dest, target_type, text, status); + return OnUserPreNotice(user, dest, target_type, text, status, exempt_list); } - virtual int OnUserPreNotice(userrec* user, void* dest, int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list) { Expire(); diff --git a/src/modules/m_filter.h b/src/modules/m_filter.h index 0e0ca067e..abacb1f1d 100644 --- a/src/modules/m_filter.h +++ b/src/modules/m_filter.h @@ -46,7 +46,7 @@ class FilterBase : public Module FilterBase(InspIRCd* Me, const std::string &source); virtual ~FilterBase(); virtual void Implements(char* List); - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status); + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list); virtual FilterResult* FilterMatch(const std::string &text) = 0; virtual bool DeleteFilter(const std::string &freeform) = 0; @@ -54,7 +54,7 @@ class FilterBase : public Module 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) = 0; - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status); + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list); virtual void OnRehash(const std::string ¶meter); virtual Version GetVersion(); std::string EncodeFilter(FilterResult* filter); @@ -168,12 +168,12 @@ void FilterBase::Implements(char* List) List[I_OnStats] = List[I_OnSyncOtherMetaData] = List[I_OnDecodeMetaData] = List[I_OnUserPreMessage] = List[I_OnUserPreNotice] = List[I_OnRehash] = 1; } -int FilterBase::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) +int FilterBase::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreNotice(user,dest,target_type,text,status); + return OnUserPreNotice(user,dest,target_type,text,status,exempt_list); } -int FilterBase::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) +int FilterBase::OnUserPreNotice(userrec* 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))) diff --git a/src/modules/m_noctcp.cpp b/src/modules/m_noctcp.cpp index 351c8631e..2e62c8e51 100644 --- a/src/modules/m_noctcp.cpp +++ b/src/modules/m_noctcp.cpp @@ -73,12 +73,12 @@ class ModuleNoCTCP : public Module List[I_OnUserPreMessage] = List[I_OnUserPreNotice] = 1; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreNotice(user,dest,target_type,text,status); + return OnUserPreNotice(user,dest,target_type,text,status,exempt_list); } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { diff --git a/src/modules/m_nonotice.cpp b/src/modules/m_nonotice.cpp index 6286321b3..2c99a89e1 100644 --- a/src/modules/m_nonotice.cpp +++ b/src/modules/m_nonotice.cpp @@ -70,7 +70,7 @@ class ModuleNoNotice : public Module List[I_OnUserPreNotice] = 1; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { diff --git a/src/modules/m_restrictbanned.cpp b/src/modules/m_restrictbanned.cpp index cdd80e741..51ff39772 100644 --- a/src/modules/m_restrictbanned.cpp +++ b/src/modules/m_restrictbanned.cpp @@ -88,12 +88,12 @@ class ModuleRestrictBanned : public Module return CheckRestricted(user, channel, "change the topic"); } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreNotice(user,dest,target_type,text,status); + return OnUserPreNotice(user,dest,target_type,text,status,exempt_list); } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { diff --git a/src/modules/m_restrictmsg.cpp b/src/modules/m_restrictmsg.cpp index 9a9c9ad5f..12130f0a1 100644 --- a/src/modules/m_restrictmsg.cpp +++ b/src/modules/m_restrictmsg.cpp @@ -44,7 +44,7 @@ class ModuleRestrictMsg : public Module List[I_OnUserPreMessage] = List[I_OnUserPreNotice] = 1; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_USER) { @@ -65,9 +65,9 @@ class ModuleRestrictMsg : public Module return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return this->OnUserPreMessage(user,dest,target_type,text,status); + return this->OnUserPreMessage(user,dest,target_type,text,status,exempt_list); } virtual ~ModuleRestrictMsg() diff --git a/src/modules/m_services.cpp b/src/modules/m_services.cpp index 457228234..b746f6492 100644 --- a/src/modules/m_services.cpp +++ b/src/modules/m_services.cpp @@ -227,7 +227,7 @@ class ModuleServices : public Module } } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_CHANNEL) { @@ -262,9 +262,9 @@ class ModuleServices : public Module return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreMessage(user,dest,target_type,text,status); + return OnUserPreMessage(user,dest,target_type,text,status, exempt_list); } virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname, std::string &privs) diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index 562e98fa4..49ce777e2 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -150,7 +150,7 @@ class ModuleServicesAccount : public Module List[I_OnSyncUserMetaData] = List[I_OnUserQuit] = List[I_OnCleanup] = List[I_OnDecodeMetaData] = 1; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { std::string *account; user->GetExt("accountname", account); @@ -192,9 +192,9 @@ class ModuleServicesAccount : public Module return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreMessage(user, dest, target_type, text, status); + return OnUserPreMessage(user, dest, target_type, text, status, exempt_list); } virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname, std::string &privs) diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp index 595c3505e..035be733c 100644 --- a/src/modules/m_silence.cpp +++ b/src/modules/m_silence.cpp @@ -166,7 +166,7 @@ class ModuleSilence : public Module output = output + " SILENCE=999"; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { // im not sure how unreal's silence operates but ours is sensible. It blocks notices and // privmsgs from people on the silence list, directed privately at the user. @@ -191,9 +191,9 @@ class ModuleSilence : public Module return 0; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreNotice(user,dest,target_type,text,status); + return OnUserPreNotice(user,dest,target_type,text,status,exempt_list); } virtual ~ModuleSilence() diff --git a/src/modules/m_silence_ext.cpp b/src/modules/m_silence_ext.cpp index de01f43ac..d3f70411d 100644 --- a/src/modules/m_silence_ext.cpp +++ b/src/modules/m_silence_ext.cpp @@ -276,7 +276,7 @@ class ModuleSilence : public Module output = output + " ESILENCE SILENCE=999"; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { if (target_type == TYPE_USER) { @@ -285,7 +285,7 @@ class ModuleSilence : public Module return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { return MatchPattern((userrec*)dest, user, SILENCE_NOTICE); } @@ -325,6 +325,9 @@ class ModuleSilence : public Module * on the channel. This code is from channels.cpp, and should also be changed if channels.cpp * updates it's corresponding code */ + + CUList fixme; + if ((validated) && (command == "PRIVMSG")) { char status = 0; @@ -356,7 +359,7 @@ class ModuleSilence : public Module int MOD_RESULT = 0; std::string temp = parameters[1]; - FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,chan,TYPE_CHANNEL,temp,status)); + FOREACH_RESULT(I_OnUserPreMessage,OnUserPreMessage(user,chan,TYPE_CHANNEL,temp,status,fixme)); if (MOD_RESULT) { return 1; } diff --git a/src/modules/m_stripcolor.cpp b/src/modules/m_stripcolor.cpp index 723225cca..3537c899d 100644 --- a/src/modules/m_stripcolor.cpp +++ b/src/modules/m_stripcolor.cpp @@ -176,7 +176,7 @@ class ModuleStripColor : public Module text = sentence; } - virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { bool active = false; if (target_type == TYPE_USER) @@ -196,9 +196,9 @@ class ModuleStripColor : public Module return 0; } - virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status) + virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text, char status, CUList &exempt_list) { - return OnUserPreMessage(user,dest,target_type,text,status); + return OnUserPreMessage(user,dest,target_type,text,status,exempt_list); } virtual Version GetVersion() |