From b5bdc1d887a519de1d96d6da4534fbbe1210ee2d Mon Sep 17 00:00:00 2001 From: Maja Gorecka-Wolniewicz Date: Tue, 22 Nov 2011 09:52:53 +0100 Subject: F-Ticks logging changes --- debug.c | 60 +++++++++++++++++++++++++++++++++++++++++++----- debug.h | 4 ++++ fticks.c | 2 +- radsecproxy.c | 15 ++++++++++-- radsecproxy.conf-example | 7 ++++++ radsecproxy.h | 1 + 6 files changed, 80 insertions(+), 9 deletions(-) diff --git a/debug.c b/debug.c index d8cf6f2..79d0f9d 100644 --- a/debug.c +++ b/debug.c @@ -28,7 +28,16 @@ static uint8_t debug_level = DBG_INFO; static char *debug_filepath = NULL; static FILE *debug_file = NULL; static int debug_syslogfacility = 0; +#if defined(WANT_FTICKS) +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; @@ -64,13 +73,34 @@ 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) { - 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; @@ -213,6 +243,24 @@ void debugerrnox(int err, uint8_t level, char *format, ...) { exit(err); } +#if defined(WANT_FTICKS) +void fticks_debug(const char *format, ...) { + int priority; + va_list ap; + va_start(ap, format); + if (!debug_syslogfacility && !fticks_syslogfacility) + debug_logit(0xff, format, ap); + else { + if (fticks_syslogfacility) { + priority = LOG_DEBUG|fticks_syslogfacility; + } else { + priority = LOG_DEBUG; + } + vsyslog(priority, format, ap); + va_end(ap); + } +} +#endif /* Local Variables: */ /* c-file-style: "stroustrup" */ /* End: */ diff --git a/debug.h b/debug.h index d9b48c1..c929e6e 100644 --- a/debug.h +++ b/debug.h @@ -26,7 +26,11 @@ 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); void debug_reopen_log(); +#if defined(WANT_FTICKS) +void fticks_debug(const char *format, ...); +#endif /* Local Variables: */ /* c-file-style: "stroustrup" */ diff --git a/fticks.c b/fticks.c index 0918aa5..e2dee19 100644 --- a/fticks.c +++ b/fticks.c @@ -152,7 +152,7 @@ fticks_log(const struct options *options, } } } - debug(0xff, + fticks_debug( "F-TICKS/eduroam/1.0#REALM=%s#VISCOUNTRY=%s#%sCSI=%s#RESULT=%s#", realm, client->conf->fticks_viscountry, diff --git a/radsecproxy.c b/radsecproxy.c index 303aba4..ef27f0f 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -1668,7 +1668,7 @@ void replyh(struct server *server, unsigned char *buf) { } #if defined(WANT_FTICKS) - if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) + if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) if (options.fticks_reporting && from->conf->fticks_viscountry != NULL) fticks_log(&options, from, msg, rqout); #endif @@ -3082,6 +3082,7 @@ void getmainconfig(const char *configfile) { #endif "Rewrite", CONF_CBK, confrewrite_cb, NULL, #if defined(WANT_FTICKS) + "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, "FTicksReporting", CONF_STR, &fticks_reporting_str, "FTicksMAC", CONF_STR, &fticks_mac_str, "FTicksKey", CONF_STR, &fticks_key_str, @@ -3239,8 +3240,18 @@ int radsecproxy_main(int argc, char **argv) { options.loglevel = loglevel; else if (options.loglevel) debug_set_level(options.loglevel); - if (!foreground) + if (!foreground) { debug_set_destination(options.logdestination ? options.logdestination : "x-syslog:///"); +#if defined(WANT_FTICKS) + if (options.ftickssyslogfacility) { + debug(DBG_WARN, "FTicksSyslogFacility is %s ", options.ftickssyslogfacility); + debug_set_ftickssyslogfacility(options.ftickssyslogfacility); + free(options.ftickssyslogfacility); + } else { + debug(DBG_INFO, "FTicksSyslogFacility not set"); + } +#endif + } free(options.logdestination); if (!list_first(clconfs)) diff --git a/radsecproxy.conf-example b/radsecproxy.conf-example index 2c1b35b..570e314 100644 --- a/radsecproxy.conf-example +++ b/radsecproxy.conf-example @@ -57,6 +57,13 @@ #FTicksReporting None #FTicksMAC Static +# You can optionally specify FTicksSyslogFacility to use a dedicated +# syslog facility for F-Ticks messages. This allows easy filtering +# of F-Ticks messages. +# Please note that FTicksSyslogFacility cannot specify a file (file:///...) +#FTicksSyslogFacility log_local1 +#FTicksSyslogFacility x-syslog:///log_local1 + # There is an option for doing some simple loop prevention. Note that # the LoopPrevention directive can be used in server blocks too, # overriding what's set here in the basic settings. diff --git a/radsecproxy.h b/radsecproxy.h index 08e98b2..385f15b 100644 --- a/radsecproxy.h +++ b/radsecproxy.h @@ -55,6 +55,7 @@ enum rsp_fticks_mac_type { struct options { char *logdestination; + char *ftickssyslogfacility; char *ttlattr; uint32_t ttlattrtype[2]; uint8_t addttl; -- cgit v1.1 From 3edadaafb32f0cb230672f9363698df10c38c66d Mon Sep 17 00:00:00 2001 From: Maja Gorecka-Wolniewicz Date: Wed, 23 Nov 2011 11:37:29 +0100 Subject: FTicks loging changes --- debug.c | 86 ++++++++++++++++++++++---------------------------- debug.h | 6 ++-- radsecproxy.c | 9 ++---- radsecproxy.conf.5.xml | 17 ++++++++++ 4 files changed, 61 insertions(+), 57 deletions(-) diff --git a/debug.c b/debug.c index 79d0f9d..28a8661 100644 --- 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 --- 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, ...); diff --git a/radsecproxy.c b/radsecproxy.c index ef27f0f..426b65b 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -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); diff --git a/radsecproxy.conf.5.xml b/radsecproxy.conf.5.xml index bd75692..cc94224 100644 --- a/radsecproxy.conf.5.xml +++ b/radsecproxy.conf.5.xml @@ -243,6 +243,23 @@ blocktype name { + FTicksSyslogFacility + + + 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. + + + Note that FTicksSyslogFacility value specifying a file + (via file:/// prefix) is ignored. + + + + + ListenUDP -- cgit v1.1 From 85a44bac2275381a5ed210c2f92c45cf4040bd64 Mon Sep 17 00:00:00 2001 From: Maja Gorecka-Wolniewicz Date: Thu, 24 Nov 2011 14:06:21 +0100 Subject: FTicks docs changes --- radsecproxy.conf-example | 1 + radsecproxy.conf.5.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/radsecproxy.conf-example b/radsecproxy.conf-example index 570e314..411c47e 100644 --- a/radsecproxy.conf-example +++ b/radsecproxy.conf-example @@ -60,6 +60,7 @@ # You can optionally specify FTicksSyslogFacility to use a dedicated # syslog facility for F-Ticks messages. This allows easy filtering # of F-Ticks messages. +# For F-Ticks messages always LOG_DEBUG level is used. # Please note that FTicksSyslogFacility cannot specify a file (file:///...) #FTicksSyslogFacility log_local1 #FTicksSyslogFacility x-syslog:///log_local1 diff --git a/radsecproxy.conf.5.xml b/radsecproxy.conf.5.xml index cc94224..0b7ee05 100644 --- a/radsecproxy.conf.5.xml +++ b/radsecproxy.conf.5.xml @@ -253,6 +253,7 @@ blocktype name { F-Ticks messages are written to the LogDestination. + For F-Ticks messages always LOG_DEBUG level is used. Note that FTicksSyslogFacility value specifying a file (via file:/// prefix) is ignored. -- cgit v1.1 From bebec77c4b1cb5043e4f9983cf97d560791898d8 Mon Sep 17 00:00:00 2001 From: Maja Gorecka-Wolniewicz Date: Wed, 30 Nov 2011 15:01:06 +0100 Subject: debug.c --- debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug.c b/debug.c index 28a8661..aca68ca 100644 --- a/debug.c +++ b/debug.c @@ -91,7 +91,7 @@ int debug_set_destination(char *dest, int l) { return 1; } if (!strncasecmp(dest, "x-syslog://", 11) || (l==1)) { - if (!strncasecmp(dest, "x-syslog://", 11) || ((l==1) && strncasecmp(dest, "x-syslog://", 11))) { + if (!strncasecmp(dest, "x-syslog://", 11) || ((l==1) && !strncasecmp(dest, "x-syslog://", 11))) { dest += 11; if (*dest == '/') dest++; -- cgit v1.1 From e41e5198e5b93a21c0997fd9f7e9ed7f28b8aea0 Mon Sep 17 00:00:00 2001 From: Maja Gorecka-Wolniewicz Date: Sat, 10 Dec 2011 09:54:29 +0100 Subject: F-Ticks logging amendments --- debug.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/debug.c b/debug.c index aca68ca..9a3512b 100644 --- a/debug.c +++ b/debug.c @@ -67,7 +67,7 @@ uint8_t debug_get_level() { return debug_level; } -int debug_set_destination(char *dest, int l) { +int debug_set_destination(char *dest, int log_type) { 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 }; @@ -78,7 +78,7 @@ int debug_set_destination(char *dest, int l) { int i; if (!strncasecmp(dest, "file:///", 8)) { - if (l!=1) { + if (log_type!=FTICKS_LOG) { debug_filepath = stringcopy(dest + 7, 0); debug_file = fopen(debug_filepath, "a"); if (!debug_file) { @@ -87,11 +87,13 @@ int debug_set_destination(char *dest, int l) { debug_filepath, strerror(errno)); } setvbuf(debug_file, NULL, _IONBF, 0); + } else { + debug(DBG_WARN, "FTicksSyslogFacility starting with file:/// not permitted, assuming default F-Ticks destination"); } return 1; } - if (!strncasecmp(dest, "x-syslog://", 11) || (l==1)) { - if (!strncasecmp(dest, "x-syslog://", 11) || ((l==1) && !strncasecmp(dest, "x-syslog://", 11))) { + if (!strncasecmp(dest, "x-syslog://", 11) || (log_type==FTICKS_LOG)) { + if (!strncasecmp(dest, "x-syslog://", 11)) { dest += 11; if (*dest == '/') dest++; @@ -102,19 +104,20 @@ int debug_set_destination(char *dest, int l) { break; if (!facstrings[i]) debugx(1, DBG_ERR, "Unknown syslog facility %s", dest); - if (l==1) + if (log_type==FTICKS_LOG) fticks_syslogfacility = facvals[i]; else debug_syslogfacility = facvals[i]; } else { - if (l==1) + if (log_type==FTICKS_LOG) fticks_syslogfacility = 0; else debug_syslogfacility = LOG_DAEMON; } - if (l==1) { - if (fticks_syslogfacility && !debug_syslogfacility) - openlog(debug_ident, LOG_PID, fticks_syslogfacility); + if (log_type==FTICKS_LOG) { + if (fticks_syslogfacility && !debug_syslogfacility) { + openlog(debug_ident, LOG_PID, fticks_syslogfacility); + } } else openlog(debug_ident, LOG_PID, debug_syslogfacility); return 1; @@ -239,11 +242,7 @@ void fticks_debug(const char *format, ...) { if (!debug_syslogfacility && !fticks_syslogfacility) debug_logit(0xff, format, ap); else { - if (fticks_syslogfacility) { - priority = LOG_DEBUG|fticks_syslogfacility; - } else { - priority = LOG_DEBUG; - } + priority = LOG_DEBUG|fticks_syslogfacility; vsyslog(priority, format, ap); va_end(ap); } -- cgit v1.1 From e581fc5e5bc3db848dcc947e0abda23aa5138989 Mon Sep 17 00:00:00 2001 From: Maja Gorecka-Wolniewicz Date: Tue, 22 Nov 2011 09:52:53 +0100 Subject: F-Ticks logging changes --- debug.c | 75 +++++++++++++++++++++++++++++++++++------------- debug.h | 8 +++++- fticks.c | 2 +- radsecproxy.c | 14 +++++++-- radsecproxy.conf-example | 8 ++++++ radsecproxy.conf.5.xml | 18 ++++++++++++ radsecproxy.h | 1 + 7 files changed, 101 insertions(+), 25 deletions(-) diff --git a/debug.c b/debug.c index d8cf6f2..9a3512b 100644 --- a/debug.c +++ b/debug.c @@ -28,6 +28,9 @@ static uint8_t debug_level = DBG_INFO; static char *debug_filepath = NULL; static FILE *debug_file = NULL; static int debug_syslogfacility = 0; +#if defined(WANT_FTICKS) +static int fticks_syslogfacility = 0; +#endif static uint8_t debug_timestamp = 0; void debug_init(char *ident) { @@ -64,41 +67,59 @@ uint8_t debug_get_level() { return debug_level; } -int debug_set_destination(char *dest) { +int debug_set_destination(char *dest, int log_type) { 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 }; + "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 }; + 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 (log_type!=FTICKS_LOG) { + 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); + } else { + debug(DBG_WARN, "FTicksSyslogFacility starting with file:/// not permitted, assuming default F-Ticks destination"); } - 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) || (log_type==FTICKS_LOG)) { + 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]) 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 (log_type==FTICKS_LOG) + fticks_syslogfacility = facvals[i]; + else + debug_syslogfacility = facvals[i]; + } else { + if (log_type==FTICKS_LOG) + fticks_syslogfacility = 0; + else + debug_syslogfacility = LOG_DAEMON; + } + if (log_type==FTICKS_LOG) { + 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); @@ -213,6 +234,20 @@ void debugerrnox(int err, uint8_t level, char *format, ...) { exit(err); } +#if defined(WANT_FTICKS) +void fticks_debug(const char *format, ...) { + int priority; + va_list ap; + va_start(ap, format); + if (!debug_syslogfacility && !fticks_syslogfacility) + debug_logit(0xff, format, ap); + else { + priority = LOG_DEBUG|fticks_syslogfacility; + vsyslog(priority, format, ap); + va_end(ap); + } +} +#endif /* Local Variables: */ /* c-file-style: "stroustrup" */ /* End: */ diff --git a/debug.h b/debug.h index d9b48c1..e3acb43 100644 --- 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,11 @@ 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_destination(char *dest, int l); void debug_reopen_log(); +#if defined(WANT_FTICKS) +void fticks_debug(const char *format, ...); +#endif /* Local Variables: */ /* c-file-style: "stroustrup" */ diff --git a/fticks.c b/fticks.c index 0918aa5..e2dee19 100644 --- a/fticks.c +++ b/fticks.c @@ -152,7 +152,7 @@ fticks_log(const struct options *options, } } } - debug(0xff, + fticks_debug( "F-TICKS/eduroam/1.0#REALM=%s#VISCOUNTRY=%s#%sCSI=%s#RESULT=%s#", realm, client->conf->fticks_viscountry, diff --git a/radsecproxy.c b/radsecproxy.c index 303aba4..426b65b 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -1668,7 +1668,7 @@ void replyh(struct server *server, unsigned char *buf) { } #if defined(WANT_FTICKS) - if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) + if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) if (options.fticks_reporting && from->conf->fticks_viscountry != NULL) fticks_log(&options, from, msg, rqout); #endif @@ -3082,6 +3082,7 @@ void getmainconfig(const char *configfile) { #endif "Rewrite", CONF_CBK, confrewrite_cb, NULL, #if defined(WANT_FTICKS) + "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, "FTicksReporting", CONF_STR, &fticks_reporting_str, "FTicksMAC", CONF_STR, &fticks_mac_str, "FTicksKey", CONF_STR, &fticks_key_str, @@ -3239,8 +3240,15 @@ int radsecproxy_main(int argc, char **argv) { options.loglevel = loglevel; else if (options.loglevel) debug_set_level(options.loglevel); - if (!foreground) - debug_set_destination(options.logdestination ? options.logdestination : "x-syslog:///"); + if (!foreground) { + debug_set_destination(options.logdestination ? options.logdestination : "x-syslog:///", DEBUG_LOG); +#if defined(WANT_FTICKS) + if (options.ftickssyslogfacility) { + debug_set_destination(options.ftickssyslogfacility, FTICKS_LOG); + free(options.ftickssyslogfacility); + } +#endif + } free(options.logdestination); if (!list_first(clconfs)) diff --git a/radsecproxy.conf-example b/radsecproxy.conf-example index 2c1b35b..411c47e 100644 --- a/radsecproxy.conf-example +++ b/radsecproxy.conf-example @@ -57,6 +57,14 @@ #FTicksReporting None #FTicksMAC Static +# You can optionally specify FTicksSyslogFacility to use a dedicated +# syslog facility for F-Ticks messages. This allows easy filtering +# of F-Ticks messages. +# For F-Ticks messages always LOG_DEBUG level is used. +# Please note that FTicksSyslogFacility cannot specify a file (file:///...) +#FTicksSyslogFacility log_local1 +#FTicksSyslogFacility x-syslog:///log_local1 + # There is an option for doing some simple loop prevention. Note that # the LoopPrevention directive can be used in server blocks too, # overriding what's set here in the basic settings. diff --git a/radsecproxy.conf.5.xml b/radsecproxy.conf.5.xml index bd75692..0b7ee05 100644 --- a/radsecproxy.conf.5.xml +++ b/radsecproxy.conf.5.xml @@ -243,6 +243,24 @@ blocktype name { + FTicksSyslogFacility + + + 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. + + + For F-Ticks messages always LOG_DEBUG level is used. + Note that FTicksSyslogFacility value specifying a file + (via file:/// prefix) is ignored. + + + + + ListenUDP diff --git a/radsecproxy.h b/radsecproxy.h index 08e98b2..385f15b 100644 --- a/radsecproxy.h +++ b/radsecproxy.h @@ -55,6 +55,7 @@ enum rsp_fticks_mac_type { struct options { char *logdestination; + char *ftickssyslogfacility; char *ttlattr; uint32_t ttlattrtype[2]; uint8_t addttl; -- cgit v1.1 From 56699476c1abf0105c368c8a1eae5080f1e25a86 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 12 Dec 2011 12:21:17 +0100 Subject: cosmetics --- debug.c | 46 +++++++++++++++++++++++++--------------------- radsecproxy.c | 14 ++++++++------ 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/debug.c b/debug.c index 9a3512b..736a762 100644 --- a/debug.c +++ b/debug.c @@ -68,35 +68,38 @@ uint8_t debug_get_level() { } int debug_set_destination(char *dest, int log_type) { - static const char *facstrings[] = { "LOG_DAEMON", "LOG_MAIL", "LOG_USER", "LOG_LOCAL0", + 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, + 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)) { - if (log_type!=FTICKS_LOG) { + if (log_type != FTICKS_LOG) { 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)); + debug_filepath, strerror(errno)); } setvbuf(debug_file, NULL, _IONBF, 0); } else { - debug(DBG_WARN, "FTicksSyslogFacility starting with file:/// not permitted, assuming default F-Ticks destination"); + debug(DBG_WARN, "FTicksSyslogFacility starting with file:/// not " + "permitted, assuming default F-Ticks destination"); } return 1; } - if (!strncasecmp(dest, "x-syslog://", 11) || (log_type==FTICKS_LOG)) { + if (!strncasecmp(dest, "x-syslog://", 11) || log_type == FTICKS_LOG) { if (!strncasecmp(dest, "x-syslog://", 11)) { - dest += 11; - if (*dest == '/') - dest++; + dest += 11; + if (*dest == '/') + dest++; } if (*dest) { for (i = 0; facstrings[i]; i++) @@ -104,22 +107,23 @@ int debug_set_destination(char *dest, int log_type) { break; if (!facstrings[i]) debugx(1, DBG_ERR, "Unknown syslog facility %s", dest); - if (log_type==FTICKS_LOG) + if (log_type == FTICKS_LOG) fticks_syslogfacility = facvals[i]; else debug_syslogfacility = facvals[i]; } else { - if (log_type==FTICKS_LOG) - fticks_syslogfacility = 0; - else - debug_syslogfacility = LOG_DAEMON; + if (log_type == FTICKS_LOG) + fticks_syslogfacility = 0; + else + debug_syslogfacility = LOG_DAEMON; } - if (log_type==FTICKS_LOG) { - if (fticks_syslogfacility && !debug_syslogfacility) { - openlog(debug_ident, LOG_PID, fticks_syslogfacility); - } - } else - openlog(debug_ident, LOG_PID, debug_syslogfacility); + if (log_type == FTICKS_LOG) { + 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); @@ -242,7 +246,7 @@ void fticks_debug(const char *format, ...) { if (!debug_syslogfacility && !fticks_syslogfacility) debug_logit(0xff, format, ap); else { - priority = LOG_DEBUG|fticks_syslogfacility; + priority = LOG_DEBUG | fticks_syslogfacility; vsyslog(priority, format, ap); va_end(ap); } diff --git a/radsecproxy.c b/radsecproxy.c index 426b65b..e780b96 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -1668,7 +1668,7 @@ void replyh(struct server *server, unsigned char *buf) { } #if defined(WANT_FTICKS) - if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) + if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) if (options.fticks_reporting && from->conf->fticks_viscountry != NULL) fticks_log(&options, from, msg, rqout); #endif @@ -3082,7 +3082,7 @@ void getmainconfig(const char *configfile) { #endif "Rewrite", CONF_CBK, confrewrite_cb, NULL, #if defined(WANT_FTICKS) - "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, + "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, "FTicksReporting", CONF_STR, &fticks_reporting_str, "FTicksMAC", CONF_STR, &fticks_mac_str, "FTicksKey", CONF_STR, &fticks_key_str, @@ -3241,12 +3241,14 @@ 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_LOG); + debug_set_destination(options.logdestination + ? options.logdestination + : "x-syslog:///", DEBUG_LOG); #if defined(WANT_FTICKS) if (options.ftickssyslogfacility) { - debug_set_destination(options.ftickssyslogfacility, FTICKS_LOG); - free(options.ftickssyslogfacility); - } + debug_set_destination(options.ftickssyslogfacility, FTICKS_LOG); + free(options.ftickssyslogfacility); + } #endif } free(options.logdestination); -- cgit v1.1 From ac5c1024b9027a76e176169d2f2a5c73514a7710 Mon Sep 17 00:00:00 2001 From: Maja Gorecka-Wolniewicz Date: Mon, 12 Dec 2011 12:43:24 +0100 Subject: formatting and skipping openlog call for FTOCKS_LOG --- debug.c | 15 +++++++-------- radsecproxy.c | 14 ++++++++------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/debug.c b/debug.c index 9a3512b..4f8f51c 100644 --- a/debug.c +++ b/debug.c @@ -104,22 +104,21 @@ int debug_set_destination(char *dest, int log_type) { break; if (!facstrings[i]) debugx(1, DBG_ERR, "Unknown syslog facility %s", dest); +#if defined(WANT_FTICKS) if (log_type==FTICKS_LOG) fticks_syslogfacility = facvals[i]; - else +#endif + if (log_type!=FTICKS_LOG) debug_syslogfacility = facvals[i]; } else { +#if defined(WANT_FTICKS) if (log_type==FTICKS_LOG) fticks_syslogfacility = 0; - else +#endif + if (log_type!=FTICKS_LOG) debug_syslogfacility = LOG_DAEMON; } - if (log_type==FTICKS_LOG) { - if (fticks_syslogfacility && !debug_syslogfacility) { - openlog(debug_ident, LOG_PID, fticks_syslogfacility); - } - } else - openlog(debug_ident, LOG_PID, debug_syslogfacility); + openlog(debug_ident, LOG_PID, debug_syslogfacility); return 1; } debug(DBG_ERR, "Unknown log destination, exiting %s", dest); diff --git a/radsecproxy.c b/radsecproxy.c index 426b65b..e780b96 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -1668,7 +1668,7 @@ void replyh(struct server *server, unsigned char *buf) { } #if defined(WANT_FTICKS) - if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) + if (msg->code == RAD_Access_Accept || msg->code == RAD_Access_Reject) if (options.fticks_reporting && from->conf->fticks_viscountry != NULL) fticks_log(&options, from, msg, rqout); #endif @@ -3082,7 +3082,7 @@ void getmainconfig(const char *configfile) { #endif "Rewrite", CONF_CBK, confrewrite_cb, NULL, #if defined(WANT_FTICKS) - "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, + "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, "FTicksReporting", CONF_STR, &fticks_reporting_str, "FTicksMAC", CONF_STR, &fticks_mac_str, "FTicksKey", CONF_STR, &fticks_key_str, @@ -3241,12 +3241,14 @@ 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_LOG); + debug_set_destination(options.logdestination + ? options.logdestination + : "x-syslog:///", DEBUG_LOG); #if defined(WANT_FTICKS) if (options.ftickssyslogfacility) { - debug_set_destination(options.ftickssyslogfacility, FTICKS_LOG); - free(options.ftickssyslogfacility); - } + debug_set_destination(options.ftickssyslogfacility, FTICKS_LOG); + free(options.ftickssyslogfacility); + } #endif } free(options.logdestination); -- cgit v1.1 From 0634ddfa95c76b9784fece491beba734954eeb7f Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 12 Dec 2011 14:06:22 +0100 Subject: Match function prototypes with definitions. --- debug.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug.h b/debug.h index e3acb43..8c53c3c 100644 --- a/debug.h +++ b/debug.h @@ -28,7 +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 l); +int debug_set_destination(char *dest, int log_type); void debug_reopen_log(); #if defined(WANT_FTICKS) void fticks_debug(const char *format, ...); -- cgit v1.1 From 45a09445c0c27bded928b45dcb7d909ccaebd1ab Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 12 Dec 2011 14:07:26 +0100 Subject: Rename DEBUG_LOG and FTICKS_LOG. --- debug.c | 10 +++++----- debug.h | 4 ++-- radsecproxy.c | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/debug.c b/debug.c index 2ec8ef3..3b3a7fd 100644 --- a/debug.c +++ b/debug.c @@ -80,7 +80,7 @@ int debug_set_destination(char *dest, int log_type) { int i; if (!strncasecmp(dest, "file:///", 8)) { - if (log_type != FTICKS_LOG) { + if (log_type != LOG_TYPE_FTICKS) { debug_filepath = stringcopy(dest + 7, 0); debug_file = fopen(debug_filepath, "a"); if (!debug_file) { @@ -95,7 +95,7 @@ int debug_set_destination(char *dest, int log_type) { } return 1; } - if (!strncasecmp(dest, "x-syslog://", 11) || log_type == FTICKS_LOG) { + if (!strncasecmp(dest, "x-syslog://", 11) || log_type == LOG_TYPE_FTICKS) { if (!strncasecmp(dest, "x-syslog://", 11)) { dest += 11; if (*dest == '/') @@ -107,14 +107,14 @@ int debug_set_destination(char *dest, int log_type) { break; if (!facstrings[i]) debugx(1, DBG_ERR, "Unknown syslog facility %s", dest); - if (log_type != FTICKS_LOG) + if (log_type != LOG_TYPE_FTICKS) debug_syslogfacility = facvals[i]; #if defined(WANT_FTICKS) - else if (log_type == FTICKS_LOG) + else if (log_type == LOG_TYPE_FTICKS) fticks_syslogfacility = facvals[i]; #endif } else { - if (log_type != FTICKS_LOG) + if (log_type != LOG_TYPE_FTICKS) debug_syslogfacility = LOG_DAEMON; #if defined(WANT_FTICKS) else if (log_type == FTICKS_LOG) diff --git a/debug.h b/debug.h index 8c53c3c..3ed751c 100644 --- a/debug.h +++ b/debug.h @@ -17,8 +17,8 @@ #define DBG_WARN 64 #define DBG_ERR 128 -#define DEBUG_LOG 0 -#define FTICKS_LOG 1 +#define LOG_TYPE_DEBUG 0 +#define LOG_TYPE_FTICKS 1 void debug_init(char *ident); void debug_set_level(uint8_t level); diff --git a/radsecproxy.c b/radsecproxy.c index e780b96..a2e6eab 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -3243,10 +3243,11 @@ int radsecproxy_main(int argc, char **argv) { if (!foreground) { debug_set_destination(options.logdestination ? options.logdestination - : "x-syslog:///", DEBUG_LOG); + : "x-syslog:///", LOG_TYPE_DEBUG); #if defined(WANT_FTICKS) if (options.ftickssyslogfacility) { - debug_set_destination(options.ftickssyslogfacility, FTICKS_LOG); + debug_set_destination(options.ftickssyslogfacility, + LOG_TYPE_FTICKS); free(options.ftickssyslogfacility); } #endif -- cgit v1.1 From 380632004291bd205ee58641b10ddb411b097f94 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 12 Dec 2011 14:07:48 +0100 Subject: Reorder fticks command line options. --- radsecproxy.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radsecproxy.c b/radsecproxy.c index a2e6eab..fe43cb7 100644 --- a/radsecproxy.c +++ b/radsecproxy.c @@ -3082,10 +3082,10 @@ void getmainconfig(const char *configfile) { #endif "Rewrite", CONF_CBK, confrewrite_cb, NULL, #if defined(WANT_FTICKS) - "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, "FTicksReporting", CONF_STR, &fticks_reporting_str, "FTicksMAC", CONF_STR, &fticks_mac_str, "FTicksKey", CONF_STR, &fticks_key_str, + "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility, #endif NULL )) -- cgit v1.1 From 70fa9c5f1c05812c24eea0efe56f76549b40ba31 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 12 Dec 2011 14:16:47 +0100 Subject: Rephrase the FTicksSyslogFacility documentation slightly. --- radsecproxy.conf.5.xml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/radsecproxy.conf.5.xml b/radsecproxy.conf.5.xml index 0b7ee05..4db6672 100644 --- a/radsecproxy.conf.5.xml +++ b/radsecproxy.conf.5.xml @@ -246,16 +246,17 @@ blocktype name { FTicksSyslogFacility - 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. + The FTicksSyslogFacility option is used to specify a + dedicated syslog facility for F-Ticks messages. This + allows for easier filtering of F-Ticks messages. If no + FTicksSyslogFacility option is given, F-Ticks messages are + written to what the LogDestination option specifies. - For F-Ticks messages always LOG_DEBUG level is used. - Note that FTicksSyslogFacility value specifying a file - (via file:/// prefix) is ignored. + F-Ticks messages are always logged using the log level + LOG_DEBUG. Note that specifying a file in + FTicksSyslogFacility (using the file:/// prefix) is + not supported. -- cgit v1.1 From 0693da042c5bca59b3090f2eaa741f77098e9731 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Mon, 12 Dec 2011 14:42:36 +0100 Subject: Fix missing renaming of FTICKS_LOG. Found by Maja Wolniewicz. --- debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debug.c b/debug.c index 3b3a7fd..7596303 100644 --- a/debug.c +++ b/debug.c @@ -117,7 +117,7 @@ int debug_set_destination(char *dest, int log_type) { if (log_type != LOG_TYPE_FTICKS) debug_syslogfacility = LOG_DAEMON; #if defined(WANT_FTICKS) - else if (log_type == FTICKS_LOG) + else if (log_type == LOG_TYPE_FTICKS) fticks_syslogfacility = 0; #endif } -- cgit v1.1