]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Added G-line, Z-line and K-line plus SZLINE, SGLINE, etc.
[user/henk/code/inspircd.git] / src / inspircd.cpp
index a3177e949fb91d8363857e2082abca7fa295f185..f226f2af507fc8c3b51685ae91bf69454438d669 100644 (file)
@@ -2102,6 +2102,14 @@ void AddClient(int socket, char* host, int port, bool iscached, char* ip)
 
        if (clientlist.size() == MAXCLIENTS)
                kill_link(clientlist[tempnick],"No more connections allowed in this class");
+               
+       char* r = matches_zline(ip);
+       if (r)
+       {
+               char reason[MAXBUF];
+               snprintf(reason,MAXBUF,"Z-Lined: %s",r);
+               kill_link(clientlist[tempnick],reason);
+       }
 }
 
 
@@ -2225,6 +2233,26 @@ void ConnectUser(userrec *user)
                return;
        }
 
+       char match_against[MAXBUF];
+       snprintf(match_against,MAXBUF,"%s@%s",user->ident,user->host);
+       char* r = matches_gline(match_against);
+       if (r)
+       {
+               char reason[MAXBUF];
+               snprintf(reason,MAXBUF,"G-Lined: %s",r);
+               kill_link(user,reason);
+               return;
+       }
+
+       r = matches_kline(user->host);
+       if (r)
+       {
+               char reason[MAXBUF];
+               snprintf(reason,MAXBUF,"K-Lined: %s",r);
+               kill_link(user,reason);
+               return;
+       }
+
        WriteServ(user->fd,"NOTICE Auth :Welcome to \002%s\002!",Network);
        WriteServ(user->fd,"001 %s :Welcome to the %s IRC Network %s!%s@%s",user->nick,Network,user->nick,user->ident,user->host);
        WriteServ(user->fd,"002 %s :Your host is %s, running version %s",user->nick,ServerName,VERSION);
@@ -2749,10 +2777,10 @@ void SetupCommandTable(void)
        createcommand("MODULES",handle_modules,'o',0);
        createcommand("LINKS",handle_links,0,0);
        createcommand("MAP",handle_map,0,0);
-       createcommand("KLINE",handle_kline,'o',3);
-       createcommand("GLINE",handle_gline,'o',3);
-       createcommand("ZLINE",handle_zline,'o',3);
-       createcommand("QLINE",handle_qline,'o',3);
+       createcommand("KLINE",handle_kline,'o',1);
+       createcommand("GLINE",handle_gline,'o',1);
+       createcommand("ZLINE",handle_zline,'o',1);
+       createcommand("QLINE",handle_qline,'o',1);
 }
 
 void process_buffer(const char* cmdbuf,userrec *user)
@@ -3142,6 +3170,8 @@ int InspIRCd(void)
 #ifdef _POSIX_PRIORITY_SCHEDULING
                sched_yield();
 #endif
+               // update the status of klines, etc
+               expire_lines();
 
                fd_set sfd;
                timeval tval;