* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
*
- * $Id: irc-info.c,v 1.1 2002/11/30 17:39:56 alex Exp $
+ * $Id: irc-info.c,v 1.3 2002/12/02 13:20:02 alex Exp $
*
* irc-info.c: IRC-Info-Befehle
*/
GLOBAL BOOLEAN
IRC_STATS( CLIENT *Client, REQUEST *Req )
{
- CLIENT *from, *target;
+ CLIENT *from, *target, *cl;
+ CONN_ID con;
CHAR query;
assert( Client != NULL );
if( Req->argc == 2 )
{
/* an anderen Server forwarden */
- target = Client_Search( Req->argv[0] );
- if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[0] );
+ target = Client_Search( Req->argv[1] );
+ if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[1] );
if( target != Client_ThisServer( ))
{
if( Req->argc > 0 ) query = Req->argv[0][0] ? Req->argv[0][0] : '*';
else query = '*';
+ switch ( query )
+ {
+ case 'l': /* Links */
+ case 'L':
+ con = Conn_First( );
+ while( con != NONE )
+ {
+ cl = Client_GetFromConn( con );
+ if( cl )
+ {
+#ifdef USE_ZLIB
+ if( Conn_Options( con ) & CONN_ZIP )
+ {
+ if( ! IRC_WriteStrClient( from, RPL_STATSLINKINFOZIP_MSG, Client_ID( from ), Client_Mask( cl ), Conn_SendQ( con ), Conn_SendMsg( con ), Conn_SendBytesZip( con ), Conn_SendBytes( con ), Conn_RecvMsg( con ), Conn_RecvBytesZip( con ), Conn_RecvBytes( con ), (LONG)( time( NULL ) - Conn_StartTime( con )))) return DISCONNECTED;
+ }
+ else
+#endif
+ {
+ if( ! IRC_WriteStrClient( from, RPL_STATSLINKINFO_MSG, Client_ID( from ), Client_Mask( cl ), Conn_SendQ( con ), Conn_SendMsg( con ), Conn_SendBytes( con ), Conn_RecvMsg( con ), Conn_RecvBytes( con ), (LONG)( time( NULL ) - Conn_StartTime( con )))) return DISCONNECTED;
+ }
+ }
+ con = Conn_Next( con );
+ }
+ break;
+ case 'm': /* IRC-Befehle */
+ case 'M':
+ break;
+ }
+
return IRC_WriteStrClient( from, RPL_ENDOFSTATS_MSG, Client_ID( from ), query );
} /* IRC_STATS */