summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAttila Molnar <attilamolnar@hush.com>2014-10-23 17:59:44 +0200
committerAttila Molnar <attilamolnar@hush.com>2014-10-23 17:59:44 +0200
commit6cc3e6be818f8d15c41e32787ba6885d501e8ed4 (patch)
tree5dd7a97f3057344fb51a83896ad56bae125e5bec
parent9e42a8e8f77b3c9fa65d7d2384b3d145f46e1376 (diff)
m_delaymsg Add option to disallow NOTICEs too
-rw-r--r--docs/conf/modules.conf.example2
-rw-r--r--src/modules/m_delaymsg.cpp19
2 files changed, 20 insertions, 1 deletions
diff --git a/docs/conf/modules.conf.example b/docs/conf/modules.conf.example
index 2af84c83b..30b8181ac 100644
--- a/docs/conf/modules.conf.example
+++ b/docs/conf/modules.conf.example
@@ -695,6 +695,8 @@
# 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.
diff --git a/src/modules/m_delaymsg.cpp b/src/modules/m_delaymsg.cpp
index cfc06866a..978ab55d2 100644
--- a/src/modules/m_delaymsg.cpp
+++ b/src/modules/m_delaymsg.cpp
@@ -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)