]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Added ip address to N token for SLINE in services use
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 8f095889090c5a7e28d7c669319eca7092b32338..3aa5ecaa89e8c253384a4d7fabf827e56006d875 100644 (file)
@@ -82,6 +82,7 @@ int WHOWAS_MAX = 100;  // default 100 people maximum in the WHOWAS list
 int DieDelay  =  5;
 time_t startup_time = time(NULL);
 int NetBufferSize = 10240; // NetBufferSize used as the buffer size for all read() ops
+extern int MaxWhoResults;
 time_t nb_start = 0;
 
 extern vector<Module*> modules;
@@ -299,7 +300,7 @@ void readfile(file_cache &F, const char* fname)
 
 void ReadConfig(void)
 {
-       char dbg[MAXBUF],pauseval[MAXBUF],Value[MAXBUF],timeout[MAXBUF],NB[MAXBUF],flood[MAXBUF];
+       char dbg[MAXBUF],pauseval[MAXBUF],Value[MAXBUF],timeout[MAXBUF],NB[MAXBUF],flood[MAXBUF],MW[MAXBUF];
        ConnectClass c;
        
        LoadConf(CONFIG_FILE,&config_f);
@@ -319,12 +320,19 @@ void ReadConfig(void)
        ConfValue("die","value",0,DieValue,&config_f);
        ConfValue("options","loglevel",0,dbg,&config_f);
        ConfValue("options","netbuffersize",0,NB,&config_f);
+       ConfValue("options","maxwho",0,MW,&config_f);
        NetBufferSize = atoi(NB);
+       MaxWhoResults = atoi(MW);
        if ((!NetBufferSize) || (NetBufferSize > 65535) || (NetBufferSize < 1024))
        {
                log(DEFAULT,"No NetBufferSize specified or size out of range, setting to default of 10240.");
                NetBufferSize = 10240;
        }
+       if ((!MaxWhoResults) || (MaxWhoResults > 65535) || (MaxWhoResults < 1))
+       {
+               log(DEFAULT,"No MaxWhoResults specified or size out of range, setting to default of 128.");
+               MaxWhoResults = 128;
+       }
        if (!strcmp(dbg,"debug"))
                LogLevel = DEBUG;
        if (!strcmp(dbg,"verbose"))
@@ -1114,6 +1122,7 @@ char* chanmodes(chanrec *chan)
        }
        if (strcmp(chan->key,""))
        {
+               strncat(sparam," ",MAXBUF);
                strncat(sparam,chan->key,MAXBUF);
        }
        if (chan->limit)
@@ -2096,7 +2105,7 @@ void AddClient(int socket, char* host, int port, bool iscached, char* ip)
        clientlist[tempnick] = new userrec();
 
        NonBlocking(socket);
-       log(DEBUG,"AddClient: %d %s %d",socket,host,port);
+       log(DEBUG,"AddClient: %d %s %d %s",socket,host,port,ip);
 
        clientlist[tempnick]->fd = socket;
        strncpy(clientlist[tempnick]->nick, tn2,NICKMAX);
@@ -2315,7 +2324,7 @@ void ConnectUser(userrec *user)
        WriteOpers("*** Client connecting on port %d: %s!%s@%s",user->port,user->nick,user->ident,user->host);
        
        char buffer[MAXBUF];
-       snprintf(buffer,MAXBUF,"N %d %s %s %s %s +%s %s :%s",user->age,user->nick,user->host,user->dhost,user->ident,user->modes,ServerName,user->fullname);
+       snprintf(buffer,MAXBUF,"N %d %s %s %s %s +%s %s %s :%s",user->age,user->nick,user->host,user->dhost,user->ident,user->modes,user->ip,ServerName,user->fullname);
        NetSendToAll(buffer);
 }
 
@@ -2896,7 +2905,7 @@ void DoSync(serverrec* serv, char* tcp_host)
        // send users and channels
        for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++)
        {
-               snprintf(data,MAXBUF,"N %d %s %s %s %s +%s %s :%s",u->second->age,u->second->nick,u->second->host,u->second->dhost,u->second->ident,u->second->modes,u->second->server,u->second->fullname);
+               snprintf(data,MAXBUF,"N %d %s %s %s %s +%s %s %s :%s",u->second->age,u->second->nick,u->second->host,u->second->dhost,u->second->ident,u->second->modes,u->second->ip,u->second->server,u->second->fullname);
                serv->SendPacket(data,tcp_host);
                if (strcmp(chlist(u->second),""))
                {
@@ -2922,6 +2931,8 @@ void DoSync(serverrec* serv, char* tcp_host)
                        serv->SendPacket(data,tcp_host);
                }
        }
+       // sync global zlines, glines, etc
+       sync_xlines(serv,tcp_host);
        snprintf(data,MAXBUF,"F %d",time(NULL));
        serv->SendPacket(data,tcp_host);
        log(DEBUG,"Sent sync");
@@ -3543,7 +3554,7 @@ int InspIRCd(void)
                                }
                                else
                                {
-                                       AddClient(incomingSockfd, resolved, ports[count], iscached, target);
+                                       AddClient(incomingSockfd, resolved, ports[count], iscached, inet_ntoa (client.sin_addr));
                                        log(DEBUG,"InspIRCd: adding client on port %d fd=%d",ports[count],incomingSockfd);
                                }
                                goto label;