]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Only send 320 numeric if the SSL user is on our port
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 8d54fd737846d12d53f9c19dd871d65f17c1ae27..c59fcda9fd1855fe628d5d22d75f173949c79a69 100644 (file)
@@ -21,11 +21,9 @@ using namespace std;
 #include "inspircd_config.h"
 #include "inspircd.h"
 #include "inspircd_io.h"
-#include <unistd.h>
 #include <fcntl.h>
 #include <sys/errno.h>
 #include <sys/ioctl.h>
-#include <sys/utsname.h>
 #include <time.h>
 #include <string>
 #ifdef GCC3
@@ -116,6 +114,16 @@ const char* FindServerNamePtr(std::string servername)
        return FindServerNamePtr(servername);
 }
 
+bool FindServerName(std::string servername)
+{
+       for (servernamelist::iterator a = servernames.begin(); a < servernames.end(); a++)
+       {
+               if (*a == servername)
+                       return true;
+       }
+       return false;
+}
+
 std::string InspIRCd::GetRevision()
 {
        /* w00t got me to replace a bunch of strtok_r
@@ -334,7 +342,6 @@ void InspIRCd::MoveAfter(std::string modulename, std::string after)
        log(DEBUG,"Move %s after %s...",modulename.c_str(),after.c_str());
        for (unsigned int v = 0; v < Config->module_names.size(); v++)
        {
-               log(DEBUG,"Curr=%s after=%s v=%d",Config->module_names[v].c_str(),after.c_str(),v);
                if (Config->module_names[v] == after)
                {
                        MoveTo(modulename, v);
@@ -378,8 +385,8 @@ void InspIRCd::BuildISupport()
         // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...
        std::stringstream v;
        v << "WALLCHOPS MODES=" << MAXMODES << " CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=" << MAXCHANS << " MAXBANS=60 NICKLEN=" << NICKMAX-1;
-       v << " CASEMAPPING=rfc1459 STATUSMSG=@+ CHARSET=ascii TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=" << Config->MaxTargets << " AWAYLEN=";
-       v << MAXAWAY << " CHANMODES=b,k,l,psmnti NETWORK=" << Config->Network;
+       v << " CASEMAPPING=rfc1459 STATUSMSG=@%+ CHARSET=ascii TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=" << Config->MaxTargets << " AWAYLEN=";
+       v << MAXAWAY << " CHANMODES=b,k,l,psmnti FNC WALLVOICES WALLCHOPS NETWORK=" << Config->Network;
        Config->data005 = v.str();
        FOREACH_MOD(I_On005Numeric,On005Numeric(Config->data005));
 }
@@ -452,12 +459,14 @@ bool InspIRCd::LoadModule(const char* filename)
 #endif
        std::string filename_str = filename;
 #ifndef STATIC_LINK
+#ifndef IS_CYGWIN
        if (!DirValid(modfile))
        {
                log(DEFAULT,"Module %s is not within the modules directory.",modfile);
                snprintf(MODERR,MAXBUF,"Module %s is not within the modules directory.",modfile);
                return false;
        }
+#endif
 #endif
        log(DEBUG,"Loading module: %s",modfile);
 #ifndef STATIC_LINK
@@ -479,7 +488,6 @@ bool InspIRCd::LoadModule(const char* filename)
                 {
                         log(DEFAULT,"Unable to load %s: %s",modfile,factory[MODCOUNT+1]->LastError());
                        snprintf(MODERR,MAXBUF,"Loader/Linker error: %s",factory[MODCOUNT+1]->LastError());
-                       MODCOUNT--;
                        return false;
                 }
                 if (factory[MODCOUNT+1]->factory)
@@ -580,7 +588,6 @@ int InspIRCd::Run()
        userrec* cu = NULL;
        InspSocket* s = NULL;
        InspSocket* s_del = NULL;
-       char* target;
        unsigned int numberactive;
         sockaddr_in sock_us;     // our port number
        socklen_t uslen;         // length of our port number
@@ -633,7 +640,11 @@ int InspIRCd::Run()
                
                /* Once a second, do the background processing */
                if (TIME != OLDTIME)
+               {
+                       if (TIME < OLDTIME)
+                               WriteOpers("*** \002EH?!\002 -- Time is flowing BACKWARDS in this dimension! Clock drifted backwards %d secs.",abs(OLDTIME-TIME));
                        DoBackgroundUserStuff(TIME);
+               }
 
                /* Call the socket engine to wait on the active
                 * file descriptors. The socket engine has everything's
@@ -715,7 +726,6 @@ int InspIRCd::Run()
                                        {
                                                in_port = ntohs(sock_us.sin_port);
                                                log(DEBUG,"Accepted socket %d",incomingSockfd);
-                                               target = (char*)inet_ntoa(client.sin_addr);
                                                /* Years and years ago, we used to resolve here
                                                 * using gethostbyaddr(). That is sucky and we
                                                 * don't do that any more...
@@ -723,10 +733,10 @@ int InspIRCd::Run()
                                                NonBlocking(incomingSockfd);
                                                if (Config->GetIOHook(in_port))
                                                {
-                                                       Config->GetIOHook(in_port)->OnRawSocketAccept(incomingSockfd, target, in_port);
+                                                       Config->GetIOHook(in_port)->OnRawSocketAccept(incomingSockfd, (char*)inet_ntoa(client.sin_addr), in_port);
                                                }
                                                stats->statsAccept++;
-                                               AddClient(incomingSockfd, target, in_port, false, target);
+                                               AddClient(incomingSockfd, in_port, false, client.sin_addr);
                                                log(DEBUG,"Adding client on port %lu fd=%lu",(unsigned long)in_port,(unsigned long)incomingSockfd);
                                        }
                                        else