]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_callerid.cpp
Fix namedmodes exposing non-key secret parameters to outsiders.
[user/henk/code/inspircd.git] / src / modules / m_callerid.cpp
index 49143034f570ea8a4d0ef58affbe83262db8e7c5..f2cf112bf6581b15f2b0200286da651f5821dc3e 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "inspircd.h"
 #include "modules/callerid.h"
+#include "modules/ctctags.h"
 
 enum
 {
@@ -345,7 +346,9 @@ class CallerIDAPIImpl : public CallerID::APIBase
 };
 
 
-class ModuleCallerID : public Module
+class ModuleCallerID
+       : public Module
+       , public CTCTags::EventListener
 {
        CommandAccept cmd;
        CallerIDAPIImpl api;
@@ -380,7 +383,8 @@ class ModuleCallerID : public Module
 
 public:
        ModuleCallerID()
-               : cmd(this)
+               : CTCTags::EventListener(this)
+               , cmd(this)
                , api(this, cmd.extInfo)
                , myumode(this, "callerid", 'g')
        {
@@ -397,7 +401,7 @@ public:
                tokens["CALLERID"] = ConvToStr(myumode.GetModeChar());
        }
 
-       ModResult OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) CXX11_OVERRIDE
+       ModResult HandleMessage(User* user, const MessageTarget& target)
        {
                if (!IS_LOCAL(user) || target.type != MessageTarget::TYPE_USER)
                        return MOD_RES_PASSTHRU;
@@ -406,7 +410,7 @@ public:
                if (!dest->IsModeSet(myumode) || (user == dest))
                        return MOD_RES_PASSTHRU;
 
-               if (user->HasPrivPermission("users/callerid-override"))
+               if (user->HasPrivPermission("users/ignore-callerid"))
                        return MOD_RES_PASSTHRU;
 
                callerid_data* dat = cmd.extInfo.get(dest, true);
@@ -427,6 +431,16 @@ public:
                return MOD_RES_PASSTHRU;
        }
 
+       ModResult OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) CXX11_OVERRIDE
+       {
+               return HandleMessage(user, target);
+       }
+
+       ModResult OnUserPreTagMessage(User* user, const MessageTarget& target, CTCTags::TagMessageDetails& details) CXX11_OVERRIDE
+       {
+               return HandleMessage(user, target);
+       }
+
        void OnUserPostNick(User* user, const std::string& oldnick) CXX11_OVERRIDE
        {
                if (!tracknick)