commit - 2cc21caf32323ebd778c16c8a7b69cd12d6ff01f
commit + 0eda085f1e001cb1f2381ffe3ca70299d32632d3
blob - 7c3360acb088ebf4690f5796fa5287226473a961
blob + 609bbf5b5e976c19a30f2ba7e32103b482ee5cbb
--- src/ngircd/channel.c
+++ src/ngircd/channel.c
GLOBAL void
Channel_Init( void )
{
+ CHANNEL *sc;
+
My_Channels = NULL;
My_Cl2Chan = NULL;
+
+ sc = Channel_Create("&SERVER");
+ if (sc) {
+ Channel_SetModes(sc, "mnPt");
+ Channel_SetTopic(sc, Client_ThisServer(), "Server Messages");
+ }
} /* Channel_Init */
bool is_member, has_voice, is_op;
is_member = has_voice = is_op = false;
+
+ /* The server itself always can send messages :-) */
+ if (Client_ThisServer() == From)
+ return true;
if (Channel_IsMemberOf(Chan, From)) {
is_member = true;
h = Channel_GetListInvites(Channel);
return ShowInvitesBans(h, Client, Channel, true);
}
+
+
+/**
+ * Log a message to the local &SERVER channel, if it exists.
+ */
+GLOBAL void
+Channel_LogServer(char *msg)
+{
+ CHANNEL *sc;
+ CLIENT *c;
+ assert(msg != NULL);
+ sc = Channel_Search("&SERVER");
+ if (!sc)
+ return;
+
+ c = Client_ThisServer();
+ Channel_Write(sc, c, c, "PRIVMSG", false, msg);
+} /* Channel_LogServer */
+
+
static CL2CHAN *
Get_First_Cl2Chan( CLIENT *Client, CHANNEL *Chan )
{
blob - 91cc278e2ffe773609fcc30ca6787ba5f6db6a8e
blob + 91d1e21de6e2bea2c1db75c8e09bef2edca09430
--- src/ngircd/channel.h
+++ src/ngircd/channel.h
GLOBAL bool Channel_ShowBans PARAMS((CLIENT *client, CHANNEL *c));
GLOBAL bool Channel_ShowInvites PARAMS((CLIENT *client, CHANNEL *c));
+GLOBAL void Channel_LogServer PARAMS((char *msg));
+
#define Channel_IsLocal(c) (Channel_Name(c)[0] == '&')
blob - 5edbf368a53bfbc87b3b9e4e81c2d766610cd324
blob + d450bd0a2ee543e58bd448c10c87f15e04b4beee
--- src/ngircd/log.c
+++ src/ngircd/log.c
Is_Daemon = Daemon_Mode;
#ifdef SYSLOG
-#ifndef LOG_CONS /* Kludge: mips-dec-ultrix4.5 has no LOG_CONS/LOG_LOCAL5 */
+#ifndef LOG_CONS /* Kludge: mips-dec-ultrix4.5 has no LOG_CONS/LOG_LOCAL5 */
#define LOG_CONS 0
#endif
#ifndef LOG_LOCAL5
* Logging function of ngIRCd.
* This function logs messages to the console and/or syslog, whichever is
* suitable for the mode ngIRCd is running in (daemon vs. non-daemon).
+ * If LOG_snotice is set, the log messages goes to all user with the mode +s
+ * set and the local &SERVER channel, too.
* Please note: you sould use LogDebug(...) for debug messages!
* @param Level syslog level (LOG_xxx)
* @param Format Format string like printf().
va_dcl
#endif
{
- /* Eintrag in Logfile(s) schreiben */
char msg[MAX_LOG_MSG_LEN];
bool snotice;
va_list ap;
if( Level == LOG_DEBUG ) return;
#endif
- /* String mit variablen Argumenten zusammenbauen ... */
#ifdef PROTOTYPES
va_start( ap, Format );
#else
fflush( stderr );
}
- if( snotice )
- {
- /* NOTICE an lokale User mit "s"-Mode */
- Wall_ServerNotice( msg );
+ if (snotice) {
+ /* Send NOTICE to all local users with mode +s and to the
+ * local &SERVER channel */
+ Wall_ServerNotice(msg);
+ Channel_LogServer(msg);
}
} /* Log */