]> arthur.barton.de Git - ngircd.git/blobdiff - src/ngircd/irc-info.c
Implement new configuration option "Network"
[ngircd.git] / src / ngircd / irc-info.c
index 79a157c24bf658fb91309ba65c566dff4ab9322a..aa98a5b560b163f4b96a5b4c7b1a20b7f4f6f2f3 100644 (file)
@@ -152,8 +152,6 @@ IRC_WHO_Channel(CLIENT *Client, CHANNEL *Chan, bool OnlyOps)
        assert( Client != NULL );
        assert( Chan != NULL );
 
-       IRC_SetPenalty(Client, 1);
-
        is_member = Channel_IsMemberOf(Chan, Client);
 
        /* Secret channel? */
@@ -191,7 +189,7 @@ IRC_WHO_Channel(CLIENT *Client, CHANNEL *Chan, bool OnlyOps)
                }
        }
 
-       /* If there are a lot of clients, augment penalty a bit */
+       /* If there are a lot of clients, increase the penalty a bit */
        if (count > MAX_RPL_WHO)
                IRC_SetPenalty(Client, 1);
 
@@ -500,8 +498,6 @@ IRC_ADMIN(CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       IRC_SetPenalty(Client, 1);
-
        _IRC_GET_SENDER_OR_RETURN_(prefix, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 0, prefix)
 
@@ -544,8 +540,6 @@ IRC_INFO(CLIENT * Client, REQUEST * Req)
        assert(Client != NULL);
        assert(Req != NULL);
 
-       IRC_SetPenalty(Client, 2);
-
        _IRC_GET_SENDER_OR_RETURN_(prefix, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 0, prefix)
 
@@ -631,8 +625,6 @@ IRC_LINKS(CLIENT *Client, REQUEST *Req)
        assert(Client != NULL);
        assert(Req != NULL);
 
-       IRC_SetPenalty(Client, 1);
-
        _IRC_GET_SENDER_OR_RETURN_(from, Req, Client)
 
        /* Get pointer to server mask or "*", if none given */
@@ -685,8 +677,6 @@ IRC_LUSERS( CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       IRC_SetPenalty(Client, 1);
-
        _IRC_GET_SENDER_OR_RETURN_(from, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 1, from)
 
@@ -716,8 +706,6 @@ IRC_SERVLIST(CLIENT *Client, REQUEST *Req)
        assert(Client != NULL);
        assert(Req != NULL);
 
-       IRC_SetPenalty(Client, 1);
-
        if (Req->argc < 2 || strcmp(Req->argv[1], "0") == 0) {
                for (c = Client_First(); c!= NULL; c = Client_Next(c)) {
                        if (Client_Type(c) != CLIENT_SERVICE)
@@ -753,8 +741,6 @@ IRC_MOTD( CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       IRC_SetPenalty(Client, 3);
-
        _IRC_GET_SENDER_OR_RETURN_(from, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 0, from)
 
@@ -785,8 +771,6 @@ IRC_NAMES( CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       IRC_SetPenalty(Client, 1);
-
        _IRC_GET_SENDER_OR_RETURN_(from, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 1, from)
 
@@ -871,8 +855,6 @@ IRC_STATS( CLIENT *Client, REQUEST *Req )
        assert(Client != NULL);
        assert(Req != NULL);
 
-       IRC_SetPenalty(Client, 2);
-
        _IRC_GET_SENDER_OR_RETURN_(from, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 1, from)
 
@@ -1013,8 +995,6 @@ IRC_TIME( CLIENT *Client, REQUEST *Req )
        assert(Client != NULL);
        assert(Req != NULL);
 
-       IRC_SetPenalty(Client, 1);
-
        _IRC_GET_SENDER_OR_RETURN_(from, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 0, from)
 
@@ -1048,8 +1028,6 @@ IRC_USERHOST(CLIENT *Client, REQUEST *Req)
        assert(Client != NULL);
        assert(Req != NULL);
 
-       IRC_SetPenalty(Client, 1);
-
        if (Req->argc > 5)
                max = 5;
        else
@@ -1110,8 +1088,6 @@ IRC_VERSION( CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       IRC_SetPenalty(Client, 1);
-
        _IRC_GET_SENDER_OR_RETURN_(prefix, Req, Client)
        _IRC_GET_TARGET_SERVER_OR_RETURN_(target, Req, 0, prefix)
 
@@ -1145,15 +1121,12 @@ IRC_WHO(CLIENT *Client, REQUEST *Req)
        assert (Client != NULL);
        assert (Req != NULL);
 
-       IRC_SetPenalty(Client, 1);
-
        only_ops = false;
        if (Req->argc == 2) {
                if (strcmp(Req->argv[1], "o") == 0)
                        only_ops = true;
 #ifdef STRICT_RFC
                else {
-                       IRC_SetPenalty(Client, 2);
                        return IRC_WriteErrClient(Client,
                                                  ERR_NEEDMOREPARAMS_MSG,
                                                  Client_ID(Client),
@@ -1177,7 +1150,6 @@ IRC_WHO(CLIENT *Client, REQUEST *Req)
        }
 
        /* No channel or (valid) mask given */
-       IRC_SetPenalty(Client, 2);
        return IRC_WHO_Mask(Client, NULL, only_ops);
 } /* IRC_WHO */
 
@@ -1200,8 +1172,6 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
        assert( Client != NULL );
        assert( Req != NULL );
 
-       IRC_SetPenalty(Client, 1);
-
        /* Wrong number of parameters? */
        if (Req->argc < 1)
                return IRC_WriteErrClient(Client, ERR_NONICKNAMEGIVEN_MSG,
@@ -1263,6 +1233,7 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
                        continue;
                }
                got_wildcard = true;
+               /* Increase penalty for wildcard queries */
                IRC_SetPenalty(Client, 3);
 
                for (c = Client_First(); c; c = Client_Next(c)) {
@@ -1568,6 +1539,10 @@ IRC_Send_NAMES(CLIENT * Client, CHANNEL * Chan)
 GLOBAL bool
 IRC_Send_ISUPPORT(CLIENT * Client)
 {
+       if (Conf_Network[0] && !IRC_WriteStrClient(Client, RPL_ISUPPORTNET_MSG,
+                                                  Client_ID(Client),
+                                                  Conf_Network))
+               return DISCONNECTED;
        if (!IRC_WriteStrClient(Client, RPL_ISUPPORT1_MSG, Client_ID(Client),
                                CHANTYPES, CHANTYPES, Conf_MaxJoins))
                return DISCONNECTED;