]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands.cpp
Now with added ANGRY MONKEYS.
[user/henk/code/inspircd.git] / src / commands.cpp
index 46e3ae9829d95c6b01bf3b3fb7fb42efbdf6163c..2e4ae0d8f29bfc800046e1c112ac28090e0aec34 100644 (file)
  * ---------------------------------------------------
  */
 
-using namespace std;
-
 #include "inspircd_config.h"
 #include "inspircd.h"
-#include "inspircd_io.h"
+#include "configreader.h"
 #include <unistd.h>
 #include <sys/errno.h>
 #include <sys/ioctl.h>
@@ -26,21 +24,11 @@ using namespace std;
 #include <cstdio>
 #include <time.h>
 #include <string>
-#ifdef GCC3
-#include <ext/hash_map>
-#else
-#include <hash_map>
-#endif
-#include <map>
 #include <sstream>
 #include <vector>
-#include <deque>
 #include <sys/types.h>
 #include <sys/time.h>
 #include <sys/resource.h>
-#ifdef THREADED_DNS
-#include <pthread.h>
-#endif
 #ifndef RUSAGE_SELF
 #define   RUSAGE_SELF     0
 #define   RUSAGE_CHILDREN     -1
@@ -56,7 +44,6 @@ using namespace std;
 #include "mode.h"
 #include "xline.h"
 #include "inspstring.h"
-#include "dnsqueue.h"
 #include "helperfuncs.h"
 #include "hashcomp.h"
 #include "socketengine.h"
@@ -67,8 +54,8 @@ extern ServerConfig* Config;
 extern InspIRCd* ServerInstance;
 
 extern int MODCOUNT;
-extern std::vector<Module*> modules;
-extern std::vector<ircd_module*> factory;
+extern ModuleList modules;
+extern FactoryList factory;
 extern time_t TIME;
 
 const long duration_m = 60;
@@ -98,7 +85,7 @@ void split_chlist(userrec* user, userrec* dest, const std::string &cl)
        prefix << ":" << Config->ServerName << " 319 " << user->nick << " " << dest->nick << " :";
        line = prefix.str();
        
-       for (start = 0; pos = cl.find(' ', start); start = pos+1)
+       for (start = 0; (pos = cl.find(' ', start)) != std::string::npos; start = pos+1)
        {
                length = (pos == std::string::npos) ? cl.length() : pos;
                
@@ -136,7 +123,7 @@ bool is_uline(const char* server)
        return (find(Config->ulines.begin(),Config->ulines.end(),server) != Config->ulines.end());
 }
 
-int operstrcmp(char* data,char* input)
+int operstrcmp(const char* data,const char* input)
 {
        int MOD_RESULT = 0;
        FOREACH_RESULT(I_OnOperCompare,OnOperCompare(data,input))
@@ -212,16 +199,16 @@ long duration(const char* str)
 
 bool host_matches_everyone(const std::string &mask, userrec* user)
 {
-       char insanemasks[MAXBUF];
        char buffer[MAXBUF];
        char itrigger[MAXBUF];
-       Config->ConfValue(Config->config_data, "insane","hostmasks", 0, insanemasks, MAXBUF);
-       Config->ConfValue(Config->config_data, "insane","trigger", 0, itrigger, MAXBUF);
-       if (*itrigger == 0)
+       long matches = 0;
+       
+       if (!Config->ConfValue(Config->config_data, "insane","trigger", 0, itrigger, MAXBUF))
                strlcpy(itrigger,"95.5",MAXBUF);
-       if ((*insanemasks == 'y') || (*insanemasks == 't') || (*insanemasks == '1'))
+       
+       if (Config->ConfValueBool(Config->config_data, "insane","hostmasks", 0))
                return false;
-       long matches = 0;
+       
        for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++)
        {
                strlcpy(buffer,u->second->ident,MAXBUF);
@@ -241,20 +228,21 @@ bool host_matches_everyone(const std::string &mask, userrec* user)
 
 bool ip_matches_everyone(const std::string &ip, userrec* user)
 {
-       char insanemasks[MAXBUF];
        char itrigger[MAXBUF];
-       Config->ConfValue(Config->config_data, "insane","ipmasks",0,insanemasks,MAXBUF);
-       Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF);
-       if (*itrigger == 0)
+       long matches = 0;
+       
+       if (!Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF))
                strlcpy(itrigger,"95.5",MAXBUF);
-       if ((*insanemasks == 'y') || (*insanemasks == 't') || (*insanemasks == '1'))
+       
+       if (Config->ConfValueBool(Config->config_data, "insane","ipmasks",0))
                return false;
-       long matches = 0;
+       
        for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++)
        {
-               if (match((char*)inet_ntoa(u->second->ip4),ip.c_str()))
+               if (match(u->second->GetIPString(),ip.c_str(),true))
                        matches++;
        }
+       
        float percent = ((float)matches / (float)clientlist.size()) * 100;
        if (percent > (float)atof(itrigger))
        {
@@ -266,20 +254,21 @@ bool ip_matches_everyone(const std::string &ip, userrec* user)
 
 bool nick_matches_everyone(const std::string &nick, userrec* user)
 {
-       char insanemasks[MAXBUF];
        char itrigger[MAXBUF];
-       Config->ConfValue(Config->config_data, "insane","nickmasks",0,insanemasks,MAXBUF);
-       Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF);
-       if (*itrigger == 0)
+       long matches = 0;
+       
+       if (!Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF))
                strlcpy(itrigger,"95.5",MAXBUF);
-       if ((*insanemasks == 'y') || (*insanemasks == 't') || (*insanemasks == '1'))
+       
+       if (Config->ConfValueBool(Config->config_data, "insane","nickmasks",0))
                return false;
-       long matches = 0;
+
        for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++)
        {
                if (match(u->second->nick,nick.c_str()))
                        matches++;
        }
+       
        float percent = ((float)matches / (float)clientlist.size()) * 100;
        if (percent > (float)atof(itrigger))
        {