]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-info.c
Rename ClientHost to CloakHost, and ClientUserNick to CloakUserToNick
[ngircd-alex.git] / src / ngircd / irc-info.c
index ad585fe236151dc68f013ad22a81896512de767a..46e342711387269a1cc47d19ecf1e1dee870c388 100644 (file)
@@ -7,13 +7,15 @@
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  * Please read the file COPYING, README and AUTHORS for more information.
- *
- * IRC info commands
  */
 
-
 #include "portab.h"
 
+/**
+ * @file
+ * IRC info commands
+ */
+
 #include "imp.h"
 #include <assert.h>
 #include <errno.h>
@@ -627,42 +629,51 @@ IRC_TIME( CLIENT *Client, REQUEST *Req )
 } /* IRC_TIME */
 
 
+/**
+ * Handler for the IRC command "USERHOST".
+ * See RFC 2812 section 4.8.
+ */
 GLOBAL bool
-IRC_USERHOST( CLIENT *Client, REQUEST *Req )
+IRC_USERHOST(CLIENT *Client, REQUEST *Req)
 {
        char rpl[COMMAND_LEN];
        CLIENT *c;
        int max, i;
 
-       assert( Client != NULL );
-       assert( Req != NULL );
+       assert(Client != NULL);
+       assert(Req != NULL);
 
-       if(( Req->argc < 1 )) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
+       if ((Req->argc < 1))
+               return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+                                         Client_ID(Client), Req->command);
 
-       if( Req->argc > 5 ) max = 5;
-       else max = Req->argc;
+       if (Req->argc > 5)
+               max = 5;
+       else
+               max = Req->argc;
 
-       strlcpy( rpl, RPL_USERHOST_MSG, sizeof rpl );
-       for( i = 0; i < max; i++ )
-       {
-               c = Client_Search( Req->argv[i] );
-               if( c && ( Client_Type( c ) == CLIENT_USER ))
-               {
+       strlcpy(rpl, RPL_USERHOST_MSG, sizeof rpl);
+       for (i = 0; i < max; i++) {
+               c = Client_Search(Req->argv[i]);
+               if (c && (Client_Type(c) == CLIENT_USER)) {
                        /* This Nick is "online" */
-                       strlcat( rpl, Client_ID( c ), sizeof( rpl ));
-                       if( Client_HasMode( c, 'o' )) strlcat( rpl, "*", sizeof( rpl ));
-                       strlcat( rpl, "=", sizeof( rpl ));
-                       if( Client_HasMode( c, 'a' )) strlcat( rpl, "-", sizeof( rpl ));
-                       else strlcat( rpl, "+", sizeof( rpl ));
-                       strlcat( rpl, Client_User( c ), sizeof( rpl ));
-                       strlcat( rpl, "@", sizeof( rpl ));
-                       strlcat( rpl, Client_Hostname( c ), sizeof( rpl ));
-                       strlcat( rpl, " ", sizeof( rpl ));
+                       strlcat(rpl, Client_ID(c), sizeof(rpl));
+                       if (Client_HasMode(c, 'o'))
+                               strlcat(rpl, "*", sizeof(rpl));
+                       strlcat(rpl, "=", sizeof(rpl));
+                       if (Client_HasMode(c, 'a'))
+                               strlcat(rpl, "-", sizeof(rpl));
+                       else
+                               strlcat(rpl, "+", sizeof(rpl));
+                       strlcat(rpl, Client_User(c), sizeof(rpl));
+                       strlcat(rpl, "@", sizeof(rpl));
+                       strlcat(rpl, Client_HostnameCloaked(c), sizeof(rpl));
+                       strlcat(rpl, " ", sizeof(rpl));
                }
        }
-       ngt_TrimLastChr( rpl, ' ');
+       ngt_TrimLastChr(rpl, ' ');
 
-       return IRC_WriteStrClient( Client, rpl, Client_ID( Client ) );
+       return IRC_WriteStrClient(Client, rpl, Client_ID(Client));
 } /* IRC_USERHOST */
 
 
@@ -719,9 +730,11 @@ IRC_VERSION( CLIENT *Client, REQUEST *Req )
 static bool
 write_whoreply(CLIENT *Client, CLIENT *c, const char *channelname, const char *flags)
 {
-       return IRC_WriteStrClient(Client, RPL_WHOREPLY_MSG, Client_ID(Client), channelname,
-                       Client_User(c), Client_Hostname(c), Client_ID(Client_Introducer(c)), Client_ID(c),
-                       flags, Client_Hops(c), Client_Info(c));
+       return IRC_WriteStrClient(Client, RPL_WHOREPLY_MSG, Client_ID(Client),
+                                 channelname, Client_User(c),
+                                 Client_HostnameCloaked(c),
+                                 Client_ID(Client_Introducer(c)), Client_ID(c),
+                                 flags, Client_Hops(c), Client_Info(c));
 }
 
 
@@ -903,6 +916,15 @@ IRC_WHO( CLIENT *Client, REQUEST *Req )
 } /* IRC_WHO */
 
 
+/**
+ * Handler for the IRC "WHOIS" command.
+ *
+ * See RFC 2812, 3.6.2 "Whois query".
+ *
+ * @param Client       The client from which this command has been received.
+ * @param Req          Request structure with prefix and all parameters.
+ * @return             CONNECTED or DISCONNECTED.
+ */
 GLOBAL bool
 IRC_WHOIS( CLIENT *Client, REQUEST *Req )
 {
@@ -915,11 +937,17 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
        assert( Req != NULL );
 
        /* Bad number of parameters? */
-       if(( Req->argc < 1 ) || ( Req->argc > 2 )) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
+       if (Req->argc < 1 || Req->argc > 2)
+               return IRC_WriteStrClient(Client, ERR_NEEDMOREPARAMS_MSG,
+                                         Client_ID(Client), Req->command);
 
        /* Search client */
-       c = Client_Search( Req->argv[Req->argc - 1] );
-       if(( ! c ) || ( Client_Type( c ) != CLIENT_USER )) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[Req->argc - 1] );
+       c = Client_Search(Req->argv[Req->argc - 1]);
+       if (!c || (Client_Type(c) != CLIENT_USER
+                  && Client_Type(c) != CLIENT_SERVICE))
+               return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
+                                         Client_ID(Client),
+                                         Req->argv[Req->argc - 1]);
 
        /* Search sender of the WHOIS */
        if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_Search( Req->prefix );
@@ -939,8 +967,11 @@ IRC_WHOIS( CLIENT *Client, REQUEST *Req )
 
        if(( Client_NextHop( target ) != Client_ThisServer( )) && ( Client_Type( Client_NextHop( target )) == CLIENT_SERVER )) return IRC_WriteStrClientPrefix( target, from, "WHOIS %s :%s", Req->argv[0], Req->argv[1] );
 
-       /* Nick, user and name */
-       if( ! IRC_WriteStrClient( from, RPL_WHOISUSER_MSG, Client_ID( from ), Client_ID( c ), Client_User( c ), Client_Hostname( c ), Client_Info( c ))) return DISCONNECTED;
+       /* Nick, user, hostname and client info */
+       if (!IRC_WriteStrClient(from, RPL_WHOISUSER_MSG, Client_ID(from),
+                               Client_ID(c), Client_User(c),
+                               Client_HostnameCloaked(c), Client_Info(c)))
+               return DISCONNECTED;
 
        /* Server */
        if( ! IRC_WriteStrClient( from, RPL_WHOISSERVER_MSG, Client_ID( from ), Client_ID( c ), Client_ID( Client_Introducer( c )), Client_Info( Client_Introducer( c )))) return DISCONNECTED;
@@ -1225,7 +1256,9 @@ static bool Show_MOTD_SSLInfo(CLIENT *Client)
        return ret;
 }
 #else
-static inline bool Show_MOTD_SSLInfo(UNUSED CLIENT *c) { return true; }
+static inline bool
+Show_MOTD_SSLInfo(UNUSED CLIENT *c)
+{ return true; }
 #endif
 
 GLOBAL bool
@@ -1317,14 +1350,13 @@ IRC_Send_NAMES( CLIENT *Client, CHANNEL *Chan )
 } /* IRC_Send_NAMES */
 
 
-
 /**
  * Send the ISUPPORT numeric (005).
  * This numeric indicates the features that are supported by this server.
  * See <http://www.irc.org/tech_docs/005.html> for details.
  */
 GLOBAL bool
-IRC_Send_ISUPPORT PARAMS((CLIENT * Client))
+IRC_Send_ISUPPORT(CLIENT * Client)
 {
        if (!IRC_WriteStrClient(Client, RPL_ISUPPORT1_MSG, Client_ID(Client),
                                Conf_MaxJoins))