X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Firc-info.c;h=efffad8dc9f0014c37bfc28368f341011dc7e323;hp=922e2761c36600c760deab753e5c60e18f4d4b8c;hb=4f6f84e7e1bc015e201e8a79e13b0906dcb23ec1;hpb=7924fafb258cda33fa578acf5170c4ff8d85ee31 diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c index 922e2761..efffad8d 100644 --- a/src/ngircd/irc-info.c +++ b/src/ngircd/irc-info.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-info.c,v 1.6 2002/12/16 17:14:57 alex Exp $"; +static char UNUSED id[] = "$Id: irc-info.c,v 1.9 2002/12/22 23:30:33 alex Exp $"; #include "imp.h" #include @@ -332,6 +332,7 @@ IRC_STATS( CLIENT *Client, REQUEST *Req ) CLIENT *from, *target, *cl; CONN_ID con; CHAR query; + COMMAND *cmd; assert( Client != NULL ); assert( Req != NULL ); @@ -368,8 +369,9 @@ IRC_STATS( CLIENT *Client, REQUEST *Req ) while( con != NONE ) { cl = Client_GetFromConn( con ); - if( cl ) + if( cl && (( Client_Type( cl ) == CLIENT_SERVER ) || ( cl == Client ))) { + /* Server link or our own connection */ #ifdef USE_ZLIB if( Conn_Options( con ) & CONN_ZIP ) { @@ -386,6 +388,15 @@ IRC_STATS( CLIENT *Client, REQUEST *Req ) break; case 'm': /* IRC-Befehle */ case 'M': + cmd = Parse_GetCommandStruct( ); + while( cmd->name ) + { + if( cmd->lcount > 0 || cmd->rcount > 0 ) + { + if( ! IRC_WriteStrClient( from, RPL_STATSCOMMANDS_MSG, Client_ID( from ), cmd->name, cmd->lcount, cmd->bytes, cmd->rcount )) return DISCONNECTED; + } + cmd++; + } break; } @@ -699,29 +710,36 @@ IRC_Send_LUSERS( CLIENT *Client ) assert( Client != NULL ); - /* Users, Services und Serevr im Netz */ + /* Users, services and serevers in the network */ if( ! IRC_WriteStrClient( Client, RPL_LUSERCLIENT_MSG, Client_ID( Client ), Client_UserCount( ), Client_ServiceCount( ), Client_ServerCount( ))) return DISCONNECTED; - /* IRC-Operatoren im Netz */ + /* Number of IRC operators */ cnt = Client_OperCount( ); if( cnt > 0 ) { if( ! IRC_WriteStrClient( Client, RPL_LUSEROP_MSG, Client_ID( Client ), cnt )) return DISCONNECTED; } - /* Unbekannt Verbindungen */ + /* Unknown connections */ cnt = Client_UnknownCount( ); if( cnt > 0 ) { if( ! IRC_WriteStrClient( Client, RPL_LUSERUNKNOWN_MSG, Client_ID( Client ), cnt )) return DISCONNECTED; } - /* Channels im Netz */ + /* Number of created channels */ if( ! IRC_WriteStrClient( Client, RPL_LUSERCHANNELS_MSG, Client_ID( Client ), Channel_Count( ))) return DISCONNECTED; - /* Channels im Netz */ + /* Number of local users, services and servers */ if( ! IRC_WriteStrClient( Client, RPL_LUSERME_MSG, Client_ID( Client ), Client_MyUserCount( ), Client_MyServiceCount( ), Client_MyServerCount( ))) return DISCONNECTED; +#ifndef STRICT_RFC + /* Maximum number of local users */ + if( ! IRC_WriteStrClient( Client, RPL_LOCALUSERS_MSG, Client_ID( Client ), Client_MyUserCount( ), Client_MyMaxUserCount( ))) return DISCONNECTED; + /* Maximum number of users in the network */ + if( ! IRC_WriteStrClient( Client, RPL_NETUSERS_MSG, Client_ID( Client ), Client_UserCount( ), Client_MaxUserCount( ))) return DISCONNECTED; +#endif + return CONNECTED; } /* IRC_Send_LUSERS */