]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_blockcaps.cpp
Try this as the ssl crash fix
[user/henk/code/inspircd.git] / src / modules / m_blockcaps.cpp
index 0b47f88211d917be454bcd28a137e4c5b9b232aa..497221ee281359021e169910f97c0d8cdd0b3d44 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
@@ -41,10 +41,14 @@ public:
                        delete bc;
                        throw ModuleException("Could not add new modes!");
                }
-               Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash };
-               ServerInstance->Modules->Attach(eventlist, this, 3);
+               Implementation eventlist[] = { I_OnUserPreMessage, I_OnUserPreNotice, I_OnRehash, I_On005Numeric };
+               ServerInstance->Modules->Attach(eventlist, this, 4);
        }
 
+       virtual void On005Numeric(std::string &output)
+       {
+               ServerInstance->AddExtBanChar('B');
+       }
 
        virtual void OnRehash(User* user, const std::string &param)
        {
@@ -65,7 +69,7 @@ public:
                                return 0;
                        }
 
-                       if (c->IsModeSet('B'))
+                       if (c->IsModeSet('B') || c->IsExtBanned(user, 'B'))
                        {
                                int caps = 0;
                                const char* actstr = "\1ACTION ";
@@ -86,7 +90,7 @@ public:
                                }
                                if ( ((caps*100)/(int)text.length()) >= percent )
                                {
-                                       user->WriteServ( "404 %s %s :Your line cannot be more than %d%% capital letters if it is %d or more letters long", user->nick.c_str(), c->name.c_str(), percent, minlen);
+                                       user->WriteNumeric(ERR_CANNOTSENDTOCHAN, "%s %s :Your line cannot be more than %d%% capital letters if it is %d or more letters long", user->nick.c_str(), c->name.c_str(), percent, minlen);
                                        return 1;
                                }
                        }
@@ -107,7 +111,7 @@ public:
                std::string hmap = Conf.ReadValue("blockcaps", "capsmap", 0);
                if (hmap.empty())
                        hmap = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
-               memset(&capsmap, 0, 255);
+               memset(capsmap, 0, sizeof(capsmap));
                for (std::string::iterator n = hmap.begin(); n != hmap.end(); n++)
                        capsmap[(unsigned char)*n] = 1;
                if (percent < 1 || percent > 100)
@@ -130,7 +134,7 @@ public:
 
        virtual Version GetVersion()
        {
-               return Version(1,2,0,0,VF_COMMON|VF_VENDOR,API_VERSION);
+               return Version("$Id$", VF_COMMON|VF_VENDOR,API_VERSION);
        }
 };