]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
m_delaymsg Add option to disallow NOTICEs too
authorAttila Molnar <attilamolnar@hush.com>
Thu, 23 Oct 2014 15:59:44 +0000 (17:59 +0200)
committerAttila Molnar <attilamolnar@hush.com>
Thu, 23 Oct 2014 15:59:44 +0000 (17:59 +0200)
docs/conf/modules.conf.example
src/modules/m_delaymsg.cpp

index 2af84c83b3a6c5693ca2069b467b8f631617bd80..30b8181aca2262ef00e3afff8b4d73f782577406 100644 (file)
 # from talking in the channel unless they've been joined for X seconds.
 # Settable using /MODE #chan +d 30
 #<module name="m_delaymsg.so">
+# Set allownotice to no to disallow NOTICEs too. Defaults to yes.
+#<delaymsg allownotice="no">
 
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # Deny channels module: Deny channels from being used by users.
index cfc06866a90996ac7991f44d66305433fffd4e46..978ab55d2191c94b31bb74862bf454f4f01ce72d 100644 (file)
@@ -52,12 +52,15 @@ class ModuleDelayMsg : public Module
        {
                ServerInstance->Modules->AddService(djm);
                ServerInstance->Modules->AddService(djm.jointime);
-               Implementation eventlist[] = { I_OnUserJoin, I_OnUserPreMessage};
+               Implementation eventlist[] = { I_OnUserJoin, I_OnUserPreMessage, I_OnRehash };
                ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
+               OnRehash(NULL);
        }
        Version GetVersion();
        void OnUserJoin(Membership* memb, bool sync, bool created, CUList&);
        ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list);
+       ModResult OnUserPreNotice(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list);
+       void OnRehash(User* user);
 };
 
 ModeAction DelayMsgMode::OnModeChange(User* source, User* dest, Channel* channel, std::string &parameter, bool adding)
@@ -144,5 +147,19 @@ ModResult ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_ty
        return MOD_RES_PASSTHRU;
 }
 
+ModResult ModuleDelayMsg::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);
+}
+
+void ModuleDelayMsg::OnRehash(User* user)
+{
+       ConfigTag* tag = ServerInstance->Config->ConfValue("delaymsg");
+       if (tag->getBool("allownotice", true))
+               ServerInstance->Modules->Detach(I_OnUserPreNotice, this);
+       else
+               ServerInstance->Modules->Attach(I_OnUserPreNotice, this);
+}
+
 MODULE_INIT(ModuleDelayMsg)