FTicks loging changes
authorMaja Gorecka-Wolniewicz <mgw@puma.uci.umk.pl>
Wed, 23 Nov 2011 10:37:29 +0000 (11:37 +0100)
committerMaja Gorecka-Wolniewicz <mgw@puma.uci.umk.pl>
Wed, 23 Nov 2011 10:37:29 +0000 (11:37 +0100)
debug.c
debug.h
radsecproxy.c
radsecproxy.conf.5.xml

diff --git a/debug.c b/debug.c
index 79d0f9d..28a8661 100644 (file)
--- a/debug.c
+++ b/debug.c
@@ -32,12 +32,6 @@ static int debug_syslogfacility = 0;
 static int fticks_syslogfacility = 0;
 #endif
 static uint8_t debug_timestamp = 0;
-static const char *facstrings[] = { "LOG_DAEMON", "LOG_MAIL", "LOG_USER", "LOG_LOCAL0",
-       "LOG_LOCAL1", "LOG_LOCAL2", "LOG_LOCAL3", "LOG_LOCAL4",
-       "LOG_LOCAL5", "LOG_LOCAL6", "LOG_LOCAL7", NULL };
-static const int facvals[] = { LOG_DAEMON, LOG_MAIL, LOG_USER, LOG_LOCAL0,
-       LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3, LOG_LOCAL4,
-       LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7 };
 
 void debug_init(char *ident) {
     debug_file = stderr;
@@ -73,62 +67,56 @@ uint8_t debug_get_level() {
     return debug_level;
 }
 
-#if defined(WANT_FTICKS)
-int debug_set_ftickssyslogfacility(char *dest) {
-    int i;
-    if (!strncasecmp(dest, "x-syslog://", 11)) {
-       dest += 11;
-       if (*dest == '/')
-           dest++;
-    }
-    if (*dest) {
-       for (i = 0; facstrings[i]; i++)
-           if (!strcasecmp(dest, facstrings[i]))
-               break;
-        if (!facstrings[i]) {
-           debug(DBG_ERR, "Unknown syslog facility %s for F-Ticks, assuming default", dest);
-           fticks_syslogfacility = 0;
-       } else
-           fticks_syslogfacility = facvals[i];
-    } else {
-       fticks_syslogfacility = 0;
-    }
-    if (fticks_syslogfacility && !debug_syslogfacility) {
-       openlog(debug_ident, LOG_PID, fticks_syslogfacility);
-    }  
-    return 1;
-}
-#endif
-
-int debug_set_destination(char *dest) {
+int debug_set_destination(char *dest, int l) {
+    static const char *facstrings[] = { "LOG_DAEMON", "LOG_MAIL", "LOG_USER", "LOG_LOCAL0",
+       "LOG_LOCAL1", "LOG_LOCAL2", "LOG_LOCAL3", "LOG_LOCAL4",
+       "LOG_LOCAL5", "LOG_LOCAL6", "LOG_LOCAL7", NULL };
+    static const int facvals[] = { LOG_DAEMON, LOG_MAIL, LOG_USER, LOG_LOCAL0,
+       LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3, LOG_LOCAL4,
+       LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7 };
     extern int errno;
     int i;
 
     if (!strncasecmp(dest, "file:///", 8)) {
-       debug_filepath = stringcopy(dest + 7, 0);
-       debug_file = fopen(debug_filepath, "a");
-       if (!debug_file) {
-           debug_file = stderr;
-           debugx(1, DBG_ERR, "Failed to open logfile %s\n%s",
-                  debug_filepath, strerror(errno));
+       if (l!=1) {
+           debug_filepath = stringcopy(dest + 7, 0);
+           debug_file = fopen(debug_filepath, "a");
+           if (!debug_file) {
+               debug_file = stderr;
+               debugx(1, DBG_ERR, "Failed to open logfile %s\n%s",
+                  debug_filepath, strerror(errno));
+           }
+           setvbuf(debug_file, NULL, _IONBF, 0);
        }
-       setvbuf(debug_file, NULL, _IONBF, 0);
        return 1;
     }
-    if (!strncasecmp(dest, "x-syslog://", 11)) {
-       dest += 11;
-       if (*dest == '/')
-           dest++;
+    if (!strncasecmp(dest, "x-syslog://", 11) || (l==1)) {
+       if (!strncasecmp(dest, "x-syslog://", 11) || ((l==1)  && strncasecmp(dest, "x-syslog://", 11)))  {
+               dest += 11;
+               if (*dest == '/')
+                 dest++;
+       }
        if (*dest) {
            for (i = 0; facstrings[i]; i++)
                if (!strcasecmp(dest, facstrings[i]))
                    break;
            if (!facstrings[i])
                debugx(1, DBG_ERR, "Unknown syslog facility %s", dest);
-           debug_syslogfacility = facvals[i];
-       } else
-           debug_syslogfacility = LOG_DAEMON;
-       openlog(debug_ident, LOG_PID, debug_syslogfacility);
+           if (l==1)
+               fticks_syslogfacility = facvals[i];
+           else
+               debug_syslogfacility = facvals[i];
+       } else {
+               if (l==1)
+                  fticks_syslogfacility = 0;
+               else
+                  debug_syslogfacility = LOG_DAEMON;
+       }
+       if (l==1) {
+          if (fticks_syslogfacility && !debug_syslogfacility) 
+               openlog(debug_ident, LOG_PID, fticks_syslogfacility);
+       } else 
+               openlog(debug_ident, LOG_PID, debug_syslogfacility);
        return 1;
     }
     debug(DBG_ERR, "Unknown log destination, exiting %s", dest);
diff --git a/debug.h b/debug.h
index c929e6e..e3acb43 100644 (file)
--- a/debug.h
+++ b/debug.h
@@ -17,6 +17,9 @@
 #define DBG_WARN 64
 #define DBG_ERR 128
 
+#define DEBUG_LOG 0
+#define FTICKS_LOG 1
+
 void debug_init(char *ident);
 void debug_set_level(uint8_t level);
 void debug_timestamp_on();
@@ -25,8 +28,7 @@ void debug(uint8_t level, char *format, ...);
 void debugx(int status, uint8_t level, char *format, ...);
 void debugerrno(int err, uint8_t level, char *format, ...);
 void debugerrnox(int err, uint8_t level, char *format, ...);
-int debug_set_destination(char *dest);
-int debug_set_ftickssyslogfacility(char *dest);
+int debug_set_destination(char *dest, int l);
 void debug_reopen_log();
 #if defined(WANT_FTICKS)
 void fticks_debug(const char *format, ...);
index ef27f0f..426b65b 100644 (file)
@@ -3241,15 +3241,12 @@ int radsecproxy_main(int argc, char **argv) {
     else if (options.loglevel)
        debug_set_level(options.loglevel);
     if (!foreground) {
-       debug_set_destination(options.logdestination ? options.logdestination : "x-syslog:///");
+       debug_set_destination(options.logdestination ? options.logdestination : "x-syslog:///", DEBUG_LOG);
 #if defined(WANT_FTICKS)
        if (options.ftickssyslogfacility) {
-               debug(DBG_WARN, "FTicksSyslogFacility is %s ", options.ftickssyslogfacility);
-               debug_set_ftickssyslogfacility(options.ftickssyslogfacility);
+               debug_set_destination(options.ftickssyslogfacility, FTICKS_LOG);
                free(options.ftickssyslogfacility);
-       } else {
-           debug(DBG_INFO, "FTicksSyslogFacility not set");
-       }
+       } 
 #endif
     }
     free(options.logdestination);
index bd75692..cc94224 100644 (file)
@@ -243,6 +243,23 @@ blocktype name {
       </varlistentry>
 
       <varlistentry>
+        <term><literal>FTicksSyslogFacility</literal></term>
+        <listitem>
+         <para>
+           The FTicksSyslogFacility option is used to specify 
+           a dedicated syslog facility for F-Ticks messages.
+           This allows easy filtering of F-Ticks messages.
+           By default, if FTicksSyslogFacility is not given,
+           F-Ticks messages are written to the LogDestination. 
+         </para>
+         <para>
+           Note that FTicksSyslogFacility value specifying a file 
+           (via file:/// prefix) is ignored.
+         </para>
+       </listitem>
+      </varlistentry>
+
+      <varlistentry>
         <term><literal>ListenUDP</literal></term>
         <listitem>
          <para>