From 20a2ffef88a426c0531eb6d08718e6ca19bdacc8 Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Wed, 27 Mar 2002 20:53:30 +0000 Subject: [PATCH] - Server Notices (User-Mode "s") implementiert. --- src/ngircd/defines.h | 4 ++-- src/ngircd/log.c | 39 ++++++++++++++++++++++++++++++++++++--- src/ngircd/log.h | 4 ++-- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src/ngircd/defines.h b/src/ngircd/defines.h index 983dd487..b7640a91 100644 --- a/src/ngircd/defines.h +++ b/src/ngircd/defines.h @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: defines.h,v 1.18 2002/03/27 16:39:50 alex Exp $ + * $Id: defines.h,v 1.19 2002/03/27 20:53:30 alex Exp $ * * defines.h: (globale) Konstanten */ @@ -61,7 +61,7 @@ #define STARTUP_DELAY 1 /* Erst n Sek. nach Start zu anderen Servern verbinden */ #define RECONNECT_DELAY 3 /* Server-Links erst nach 3 Sekunden versuchen, wieder aufzubauen */ -#define USERMODES "aio" /* unterstuetzte User-Modes */ +#define USERMODES "aios" /* unterstuetzte User-Modes */ #define CHANMODES "amnopqstv" /* unterstuetzte Channel-Modes */ #define CONNECTED TRUE /* fuer die irc-xxx-Module */ diff --git a/src/ngircd/log.c b/src/ngircd/log.c index 74b77b4a..18fe1eda 100644 --- a/src/ngircd/log.c +++ b/src/ngircd/log.c @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: log.c,v 1.24 2002/03/27 16:40:06 alex Exp $ + * $Id: log.c,v 1.25 2002/03/27 20:53:30 alex Exp $ * * log.c: Logging-Funktionen */ @@ -31,12 +31,17 @@ #endif #include "ngircd.h" +#include "client.h" #include "defines.h" +#include "irc-write.h" #include "exp.h" #include "log.h" +LOCAL VOID Wall_ServerNotice( CHAR *Msg ); + + GLOBAL VOID Log_Init( VOID ) { CHAR txt[127]; @@ -106,16 +111,26 @@ GLOBAL VOID Log_Exit( VOID ) } /* Log_Exit */ -GLOBAL VOID Log( CONST INT Level, CONST CHAR *Format, ... ) +GLOBAL VOID Log( INT Level, CONST CHAR *Format, ... ) { /* Eintrag in Logfile(s) schreiben */ CHAR msg[MAX_LOG_MSG_LEN]; + BOOLEAN snotice; va_list ap; time_t t; assert( Format != NULL ); + snotice = FALSE; + + if( Level & LOG_snotice ) + { + /* Notice an User mit "s" Mode */ + snotice = TRUE; + Level &= ~LOG_snotice; + } + #ifdef DEBUG if(( Level == LOG_DEBUG ) && ( ! NGIRCd_Debug )) return; #else @@ -135,13 +150,16 @@ GLOBAL VOID Log( CONST INT Level, CONST CHAR *Format, ... ) fprintf( stderr, "[%d] %s\n\n", Level, msg ); } - /* ... und ausgeben */ + /* Konsole */ if( NGIRCd_NoDaemon ) printf( "[%d] %s\n", Level, msg ); #ifdef USE_SYSLOG /* Syslog */ syslog( Level, msg ); #endif + + /* lokale User mit "s"-Mode */ + if( snotice ) Wall_ServerNotice( msg ); } /* Log */ @@ -192,4 +210,19 @@ GLOBAL VOID Log_Resolver( CONST INT Level, CONST CHAR *Format, ... ) } /* Log_Resolver */ +LOCAL VOID Wall_ServerNotice( CHAR *Msg ) +{ + CLIENT *c; + + assert( Msg != NULL ); + + c = Client_First( ); + while( c ) + { + if(( Client_Conn( c ) > NONE ) && ( Client_HasMode( c, 's' ))) IRC_WriteStrClient( c, "NOTICE :%s", Msg ); + c = Client_Next( c ); + } +} /* Wall_ServerNotice */ + + /* -eof- */ diff --git a/src/ngircd/log.h b/src/ngircd/log.h index fce46793..ac96f072 100644 --- a/src/ngircd/log.h +++ b/src/ngircd/log.h @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: log.h,v 1.9 2002/03/25 17:17:08 alex Exp $ + * $Id: log.h,v 1.10 2002/03/27 20:53:31 alex Exp $ * * log.h: Logging-Funktionen (Header) */ @@ -33,7 +33,7 @@ #endif -#define LOG_SERVERMSG 8192 +#define LOG_snotice 1024 GLOBAL VOID Log_Init( VOID ); -- 2.39.2