]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_services.cpp
Annotations
[user/henk/code/inspircd.git] / src / modules / m_services.cpp
index aad54ffa222585bb0423d1b30fbc50d1689c50ea..7e3a8d89bf6d35e57045726fc203a8518e9a0a83 100644 (file)
 
 using namespace std;
 
-#include <stdio.h>
 #include "users.h"
 #include "channels.h"
 #include "modules.h"
-#include <string>
-
-#include "commands.h"
-#include "hashcomp.h"
 #include "inspircd.h"
 
 static bool kludgeme = false;
 
 /* $ModDesc: Povides support for services +r user/chan modes and more */
 
-
-
+/** Channel mode +r - mark a channel as identified
+ */
 class Channel_r : public ModeHandler
 {
        
@@ -56,6 +51,8 @@ class Channel_r : public ModeHandler
        }
 };
 
+/** User mode +r - mark a user as identified
+ */
 class User_r : public ModeHandler
 {
        
@@ -79,6 +76,8 @@ class User_r : public ModeHandler
        }
 };
 
+/** Channel mode +R - registered users only
+ */
 class Channel_R : public ModeHandler
 {
  public:
@@ -107,6 +106,8 @@ class Channel_R : public ModeHandler
        }
 };
 
+/** User mode +R - only allow PRIVMSG and NOTICE from registered users
+ */
 class User_R : public ModeHandler
 {
  public:
@@ -135,6 +136,8 @@ class User_R : public ModeHandler
        }
 };
 
+/** Channel mode +M - only allow privmsg and notice to channel from registered users
+ */
 class Channel_M : public ModeHandler
 {
  public:
@@ -154,7 +157,7 @@ class Channel_M : public ModeHandler
                {
                        if (channel->IsModeSet('M'))
                        {
-                               channel->SetMode('M',true);
+                               channel->SetMode('M',false);
                                return MODEACTION_ALLOW;
                        }
                }
@@ -163,6 +166,8 @@ class Channel_M : public ModeHandler
        }
 };
 
+/** Dreamnforge-like services support
+ */
 class ModuleServices : public Module
 {
        
@@ -189,10 +194,6 @@ class ModuleServices : public Module
                kludgeme = false;
        }
 
-       virtual void On005Numeric(std::string &output)
-       {
-       }
-
        /* <- :stitch.chatspike.net 307 w00t w00t :is a registered nick */
        virtual void OnWhois(userrec* source, userrec* dest)
        {
@@ -205,7 +206,7 @@ class ModuleServices : public Module
 
        void Implements(char* List)
        {
-               List[I_OnWhois] = List[I_OnUserPostNick] = List[I_OnUserPreMessage] = List[I_On005Numeric] = List[I_OnUserPreNotice] = List[I_OnUserPreJoin] = 1;
+               List[I_OnWhois] = List[I_OnUserPostNick] = List[I_OnUserPreMessage] = List[I_OnUserPreNotice] = List[I_OnUserPreJoin] = 1;
        }
 
        virtual void OnUserPostNick(userrec* user, const std::string &oldnick)
@@ -242,7 +243,7 @@ class ModuleServices : public Module
                if (target_type == TYPE_USER)
                {
                        userrec* u = (userrec*)dest;
-                       if ((u->IsModeSet('R')) && (user->IsModeSet('r')))
+                       if ((u->IsModeSet('R')) && (!user->IsModeSet('r')))
                        {
                                if ((ServerInstance->ULine(user->nick)) || (ServerInstance->ULine(user->server)))
                                {
@@ -268,7 +269,7 @@ class ModuleServices : public Module
                {
                        if (chan->IsModeSet('R'))
                        {
-                               if (user->IsModeSet('r'))
+                               if (!user->IsModeSet('r'))
                                {
                                        if ((ServerInstance->ULine(user->nick)) || (ServerInstance->ULine(user->server)))
                                        {
@@ -286,6 +287,12 @@ class ModuleServices : public Module
 
        virtual ~ModuleServices()
        {
+               kludgeme = true;
+               ServerInstance->Modes->DelMode(m1);
+               ServerInstance->Modes->DelMode(m2);
+               ServerInstance->Modes->DelMode(m3);
+               ServerInstance->Modes->DelMode(m4);
+               ServerInstance->Modes->DelMode(m5);
                DELETE(m1);
                DELETE(m2);
                DELETE(m3);
@@ -295,7 +302,7 @@ class ModuleServices : public Module
        
        virtual Version GetVersion()
        {
-               return Version(1,0,0,0,VF_STATIC|VF_VENDOR);
+               return Version(1,0,0,0,VF_COMMON|VF_VENDOR);
        }
 };