]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add extra parameter to OnUserPreNotice and OnUserPrePrivmsg, CUList &exempt_list...
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 26 Nov 2006 18:04:47 +0000 (18:04 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 26 Nov 2006 18:04:47 +0000 (18:04 +0000)
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

21 files changed:
include/channels.h
include/modules.h
src/channels.cpp
src/cmd_notice.cpp
src/cmd_privmsg.cpp
src/modules.cpp
src/modules/m_blockcaps.cpp
src/modules/m_blockcolor.cpp
src/modules/m_censor.cpp
src/modules/m_chanfilter.cpp
src/modules/m_dccallow.cpp
src/modules/m_filter.h
src/modules/m_noctcp.cpp
src/modules/m_nonotice.cpp
src/modules/m_restrictbanned.cpp
src/modules/m_restrictmsg.cpp
src/modules/m_services.cpp
src/modules/m_services_account.cpp
src/modules/m_silence.cpp
src/modules/m_silence_ext.cpp
src/modules/m_stripcolor.cpp

index 648723b09d91fc186345149d9066ddf0da0d2211..70e5c2233994bcfec7f225d12b7a027a60224b34 100644 (file)
@@ -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
         */
index 8e2746bf0bec2d3e04ed1c0fcee272f097091d73..57fbc03b61b6ef42ffc0f05a28be752014b33da0 100644 (file)
@@ -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
index 948b49a0bf5556edc3f7b606ca679b7b92c8d413..7a6f8546962e66d72f379f446d3f785ad23872fe 100644 (file)
@@ -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
index d947c70be49dea3e114b53c56f5630fdfe2837fb..c9c06ff674e1fc63f87a5fdf1a482ad893e9e089 100644 (file)
@@ -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;
                }
index aba8ae12d45237899f179c002a5e51717e64e446..d3d7e483e357091c45b8c0b2f7f60b3c2cdf46b3 100644 (file)
@@ -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;
                }
index 8f5e427d906b020f15dc0e0167113fe292ba7e74..a8e7a2f75ceee900878898dd49640ab8d711f03b 100644 (file)
@@ -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; };
index e4f65576050dc52e25b5b794761b461d65169285..830b05ae96ace029d2982c81038e20eaad637706 100644 (file)
@@ -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()
index 967e8fd025d5670bee59ae503706e7f83c8babc0..f62e546136485ee142ec6d4061ee90af01d0f28f 100644 (file)
@@ -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()
index 5cdee215de6d75b0e0e8edb8d43e02de7d83144a..657ad7f443385e80570658adbc045afc3dfd8a28 100644 (file)
@@ -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 &parameter)
index c600740da08be431b3052869328d97477194b85c..51bc2092a151b65dbf0aeb6d19db9f862b54bf47 100644 (file)
@@ -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)
index 5fb64a27ef9747679e329c3520b07de31863382f..95644a4e96b3aa3a1c518722f861ae87ce8b0cfe 100644 (file)
@@ -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();
        
index 0e0ca067e49b92f20d8987c0ee81fbf4a8413747..abacb1f1de4fb2e71c77ccadfabe2676b85ffef4 100644 (file)
@@ -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 &parameter);
        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)))
index 351c8631e06e2c41fab3fadf64cebbef4bc0d082..2e62c8e51a1a98b6bbf3d4a10db84e03abd55bf2 100644 (file)
@@ -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)
                {
index 6286321b33102c8a4e9137924383f2c2ac2cd9b0..2c99a89e1bd634779e442d9a22bf00ebc5da0213 100644 (file)
@@ -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)
                {
index cdd80e74195a3338047afc39192d4e2f67382e8e..51ff39772bf3d8f4dcaaf91d4dcdaa439a9fe556 100644 (file)
@@ -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)
                {
index 9a9c9ad5fd70d8eda9c6b6df395fc3266cd65e7b..12130f0a174b9d377666aeac4c86273a3ae86ff1 100644 (file)
@@ -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()
index 4572282347690219653ffaaf16f84e3702f53513..b746f64924ae5d203a64ac60a7cf4fb4671da0b7 100644 (file)
@@ -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)
index 562e98fa46de188f0e147a6276b44e0798ea0214..49ce777e2a35cb31ad13561e28b234806e4e5a9e 100644 (file)
@@ -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)
index 595c3505e7bb8515108de6e1e5d808f7d2431e5e..035be733c3107e4b42405ad96ab81fe08fbe07e1 100644 (file)
@@ -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()
index de01f43ac90eef6f4c5b7529f4621f2ece782648..d3f70411d0370961da58b69cb65ba4c4425d40cf 100644 (file)
@@ -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;
                                        }
index 723225cca7cf47311f22541b122fc561d002973c..3537c899d4e94634bee47df47353322cc34a8116 100644 (file)
@@ -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()