about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--NEWS5
-rw-r--r--doc/sample-ngircd.conf7
-rw-r--r--man/ngircd.conf.5.tmpl7
-rw-r--r--src/ngircd/conf.c19
-rw-r--r--src/ngircd/conf.h7
-rw-r--r--src/ngircd/log.c10
7 files changed, 54 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 73c84734..4402f068 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -12,6 +12,11 @@
 
 ngIRCd Release 17
 
+  - New configuration option "SyslogFacility" to define the syslog "facility"
+    (the "target"), to which ngIRCd should send its log messages.
+    Possible values are system dependant, but most probably "auth", "daemon",
+    "user" and "local1" through "local7" are possible values; see syslog(3).
+    Default is "local5" for historical reasons.
   - Dump the "internal server state" (configured servers, established
     connections and known clients) to the console or syslog when receiving
     the SIGUSR2 signal and debug mode is enabled.
diff --git a/NEWS b/NEWS
index d3a600ce..61e8331e 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,11 @@
 
 ngIRCd Release 17
 
+  - New configuration option "SyslogFacility" to define the syslog "facility"
+    (the "target"), to which ngIRCd should send its log messages.
+    Possible values are system dependant, but most probably "auth", "daemon",
+    "user" and "local1" through "local7" are possible values; see syslog(3).
+    Default is "local5" for historical reasons.
   - Dump the "internal server state" (configured servers, established
     connections and known clients) to the console or syslog when receiving
     the SIGUSR2 signal and debug mode is enabled.
diff --git a/doc/sample-ngircd.conf b/doc/sample-ngircd.conf
index fdeed355..a2694f8d 100644
--- a/doc/sample-ngircd.conf
+++ b/doc/sample-ngircd.conf
@@ -68,6 +68,13 @@
 	# so the server listens on all IP addresses of the system by default.
 	;Listen = 127.0.0.1,192.168.0.1
 
+	# Syslog "facility" to which ngIRCd should send log messages.
+	# Possible values are system dependant, but most probably auth, daemon,
+	# user and local1 through local7 are possible values; see syslog(3).
+	# Default is "local5" for historical reasons, you probably want to
+	# change this to "daemon", for example.
+	SyslogFacility = local1
+
 	# Text file with the "message of the day" (MOTD). This message will
 	# be shown to all users connecting to the server:
 	;MotdFile = /usr/local/etc/ngircd.motd
diff --git a/man/ngircd.conf.5.tmpl b/man/ngircd.conf.5.tmpl
index 71aaa1e0..f4f7f6e6 100644
--- a/man/ngircd.conf.5.tmpl
+++ b/man/ngircd.conf.5.tmpl
@@ -116,6 +116,13 @@ If unset, the defaults value is "0.0.0.0" or, if ngIRCd was compiled
 with IPv6 support, "::,0.0.0.0". So the server listens on all configured
 IP addresses and interfaces by default.
 .TP
+\fBSyslogFacility\fR
+Syslog "facility" to which ngIRCd should send log messages. Possible
+values are system dependant, but most probably "auth", "daemon", "user"
+and "local1" through "local7" are possible values; see syslog(3).
+Default is "local5" for historical reasons, you probably want to
+change this to "daemon", for example.
+.TP
 \fBMotdFile\fR
 Text file with the "message of the day" (MOTD). This message will be shown
 to all users connecting to the server. Changes made to this file
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index 5619a6c7..acb40103 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -324,6 +324,10 @@ Conf_Test( void )
 		printf("  ServerGID = %s\n", grp->gr_name);
 	else
 		printf("  ServerGID = %ld\n", (long)Conf_GID);
+#ifdef SYSLOG
+	printf("  SyslogFacility = %s\n",
+	       ngt_SyslogFacilityName(Conf_SyslogFacility));
+#endif
 	printf("  PingTimeout = %d\n", Conf_PingTimeout);
 	printf("  PongTimeout = %d\n", Conf_PongTimeout);
 	printf("  ConnectRetry = %d\n", Conf_ConnectRetry);
@@ -600,6 +604,14 @@ Set_Defaults(bool InitServers)
 	Conf_MaxJoins = 10;
 	Conf_MaxNickLength = CLIENT_NICK_LEN_DEFAULT;
 
+#ifdef SYSLOG
+#ifdef LOG_LOCAL5
+	Conf_SyslogFacility = LOG_LOCAL5;
+#else
+	Conf_SyslogFacility = 0;
+#endif
+#endif
+
 	/* Initialize server configuration structures */
 	if (InitServers) {
 		for (i = 0; i < MAX_SERVERS;
@@ -1148,6 +1160,13 @@ Handle_GLOBAL( int Line, char *Var, char *Arg )
                 return;
         }
 #endif
+#ifdef SYSLOG
+	if (strcasecmp(Var, "SyslogFacility") == 0) {
+		Conf_SyslogFacility = ngt_SyslogFacilityID(Arg,
+							   Conf_SyslogFacility);
+		return;
+	}
+#endif
 	Config_Error(LOG_ERR, "%s, line %d (section \"Global\"): Unknown variable \"%s\"!",
 								NGIRCd_ConfFile, Line, Var);
 } /* Handle_GLOBAL */
diff --git a/src/ngircd/conf.h b/src/ngircd/conf.h
index 5cf5f6b1..ff67dc79 100644
--- a/src/ngircd/conf.h
+++ b/src/ngircd/conf.h
@@ -173,6 +173,13 @@ GLOBAL int Conf_MaxConnectionsIP;
 /* Maximum length of a nick name */
 GLOBAL unsigned int Conf_MaxNickLength;
 
+#ifdef SYSLOG
+
+/* Syslog "facility" */
+GLOBAL int Conf_SyslogFacility;
+
+#endif
+
 GLOBAL void Conf_Init PARAMS((void));
 GLOBAL bool Conf_Rehash PARAMS((void));
 GLOBAL int Conf_Test PARAMS((void));
diff --git a/src/ngircd/log.c b/src/ngircd/log.c
index 0cfe3b71..3710142d 100644
--- a/src/ngircd/log.c
+++ b/src/ngircd/log.c
@@ -36,6 +36,7 @@
 #include "conn.h"
 #include "channel.h"
 #include "irc-write.h"
+#include "conf.h"
 
 #include "exp.h"
 #include "log.h"
@@ -72,13 +73,10 @@ Log_Init( bool Daemon_Mode )
 	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 */
 #define LOG_CONS 0
 #endif
-#ifndef LOG_LOCAL5
-#define LOG_LOCAL5 0
-#endif
-	openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 );
+	openlog(PACKAGE_NAME, LOG_CONS|LOG_PID, Conf_SyslogFacility);
 #endif
 
 	Log( LOG_NOTICE, "%s started.", NGIRCd_Version );
@@ -267,7 +265,7 @@ GLOBAL void
 Log_Init_Subprocess(char UNUSED *Name)
 {
 #ifdef SYSLOG
-	openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 );
+	openlog(PACKAGE_NAME, LOG_CONS|LOG_PID, Conf_SyslogFacility);
 #endif
 #ifdef DEBUG
 	Log_Subprocess(LOG_DEBUG, "%s sub-process starting, PID %ld.",