summaryrefslogtreecommitdiffstats
path: root/plugin
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-09-24 00:16:53 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-09-24 00:16:53 +0200
commit7ae9a74c9c3bdab619ac5c0cefe1c8269bb06603 (patch)
treed4e9a61bd62b18dc37e9caabaa2d63ccc56db627 /plugin
parent9a2a8c5216d61dafb4232dba1ab56656390b61b0 (diff)
downloadeurephia-7ae9a74c9c3bdab619ac5c0cefe1c8269bb06603.tar.gz
eurephia-7ae9a74c9c3bdab619ac5c0cefe1c8269bb06603.tar.xz
eurephia-7ae9a74c9c3bdab619ac5c0cefe1c8269bb06603.zip
Rewritten the eurephia_log() to support syslog logging as well
Also simplified the initialisation of the logging module. By calling the eurephia_log_init(eurephiaCTX *, char *dest, int loglevel) function, a log context will be setup inside the eurephiaCTX. To close the log file, eurephia_log_close(eurephiaCTX *) must be called. The destination string to eurephia_log_init() can be: - stdout: Log everything to stdout - stderr: Log everything to stderr - none: Do no logging at all - syslog:<facility> Log via syslog. <facility> can be: user, local[0-7], daemon or authpriv. - Filename All logging goes to the given filename. If the filename string is not recognised by any of the reserved words above, it will be handled as a filename.
Diffstat (limited to 'plugin')
-rw-r--r--plugin/eurephia-auth.c6
-rw-r--r--plugin/eurephia.c46
-rw-r--r--plugin/firewall/eurephiafw.c1
3 files changed, 14 insertions, 39 deletions
diff --git a/plugin/eurephia-auth.c b/plugin/eurephia-auth.c
index 3536281..10d9447 100644
--- a/plugin/eurephia-auth.c
+++ b/plugin/eurephia-auth.c
@@ -189,9 +189,9 @@ OPENVPN_EXPORT int openvpn_plugin_func_v1(openvpn_plugin_handle_t handle,
DEBUG(ctx, 10, "openvpn_plugin_func_v1(ctx, %s, ...)", plugin_type_name(type));
#ifdef ENABLE_DEBUG
- if( ctx->loglevel >= 30 ) {
- dump_env(ctx->log, "ENV: ", envp);
- dump_env(ctx->log, "ARG: ", argv);
+ if( (ctx->log->loglevel >= 30) && (ctx->log->logfile != NULL) ) {
+ dump_env(ctx->log->logfile, "ENV: ", envp);
+ dump_env(ctx->log->logfile, "ARG: ", argv);
}
#endif
diff --git a/plugin/eurephia.c b/plugin/eurephia.c
index 761ab71..f93ee81 100644
--- a/plugin/eurephia.c
+++ b/plugin/eurephia.c
@@ -183,26 +183,15 @@ eurephiaCTX *eurephiaInit(const char **argv)
ctx->context_type = ECTX_PLUGIN_AUTH;
// Open a log file
- if( logfile != NULL ) {
- if( strcmp(logfile, "openvpn:") == 0 ) { // Let openvpn do the logging
- ctx->log = stderr;
- } else if( strcmp(logfile, "none:") == 0 ) { // Do not perform any logging
- ctx->log = NULL;
- } else { // if no hit on these ones,open a file with given name
- ctx->log = fopen(logfile, "aw");
- if( ctx->log == NULL ) {
- fprintf(stderr, "Could not open eurephia log file: %s\n", argv[1]);
- return NULL;
- }
- }
- } else {
- // If no logging is given ... log to openvpn:
- ctx->log = stderr;
+ if( (logfile == NULL) || (strcmp(logfile, "openvpn:") == 0) ) {
+ // If no logfile is given, or openvpn: is given, log to stderr which OpenVPN will
+ // take care of
+ eurephia_log_init(ctx, "stderr:", loglvl);
+ } else {
+ // If another log file is given, process that
+ eurephia_log_init(ctx, logfile, loglvl);
}
- // Set log verbosity
- ctx->loglevel = loglvl;
-
// Load the database driver
if( (error == 0) && eDBlink_init(ctx, dbi, 1) ) {
// Connect to the database
@@ -217,10 +206,8 @@ eurephiaCTX *eurephiaInit(const char **argv)
}
if( error > 0 ) {
- if( ctx->log != NULL ) {
- eurephia_log(ctx, LOG_PANIC, 0, "eurephia-auth is not available");
- fclose(ctx->log);
- }
+ eurephia_log(ctx, LOG_PANIC, 0, "eurephia-auth is not available");
+ eurephia_log_close(ctx);
free_nullsafe(ctx, ctx);
return NULL;
}
@@ -234,7 +221,7 @@ eurephiaCTX *eurephiaInit(const char **argv)
free_nullsafe(ctx, ctx->server_salt);
eDBdisconnect(ctx);
- fclose(ctx->log);
+ eurephia_log_close(ctx);
free_nullsafe(ctx, ctx);
return NULL;
}
@@ -287,18 +274,7 @@ int eurephiaShutdown(eurephiaCTX *ctx)
eDBlink_close(ctx);
}
- if( ctx->log != NULL ) {
- fflush(ctx->log);
-
- // Do not close log file if we're on stdout or stderr
- if( (ctx->log != stderr) && (ctx->log != stdout) ) {
- eurephia_log(ctx, LOG_INFO, 2, "Closing log file");
- fclose(ctx->log);
- }
-
- ctx->log = NULL;
- ctx->loglevel = 0;
- }
+ eurephia_log_close(ctx);
memset(ctx->server_salt, 0xff, SIZE_PWDCACHE_SALT+2);
free_nullsafe(ctx, ctx->server_salt);
diff --git a/plugin/firewall/eurephiafw.c b/plugin/firewall/eurephiafw.c
index 0d2cc43..2c6755f 100644
--- a/plugin/firewall/eurephiafw.c
+++ b/plugin/firewall/eurephiafw.c
@@ -146,7 +146,6 @@ void eFW_StartFirewall(eurephiaCTX *ctx) {
shadowctx = (eurephiaCTX *) malloc_nullsafe(ctx, sizeof(eurephiaCTX)+2);
assert( shadowctx != NULL );
shadowctx->context_type = ECTX_NO_PRIVILEGES;
- shadowctx->loglevel = ctx->loglevel;
shadowctx->log = ctx->log;
(*ctx->fwcfg).thrdata.ctx = shadowctx;