diff --git a/conf.c b/conf.c index c15ec5c..192c611 100644 --- a/conf.c +++ b/conf.c @@ -33,7 +33,7 @@ conf_read(const char *filename) { conf->user = getuid(); conf->group = getgid(); conf->logfile = "webdis.log"; - conf->verbosity = WEBDIS_VERBOSE; + conf->verbosity = WEBDIS_NOTICE; j = json_load_file(filename, 0, &error); if(!j) { diff --git a/conf.h b/conf.h index dc43875..2a3e566 100644 --- a/conf.h +++ b/conf.h @@ -1,15 +1,8 @@ #ifndef CONF_H #define CONF_H -#define WEBDIS_VERBOSE 0 -#define WEBDIS_QUIET 1 -#define WEBDIS_SILENT 2 - #include - -typedef enum { - WARNING = 0 -} log_level; +#include "slog.h" struct conf { diff --git a/server.c b/server.c index e41af3a..bc4e542 100644 --- a/server.c +++ b/server.c @@ -131,26 +131,24 @@ on_request(struct evhttp_request *rq, void *ctx) { /* check that the command can be executed */ switch(rq->type) { case EVHTTP_REQ_GET: - webdis_log(s,1,uri); + slog(s, WEBDIS_DEBUG, uri); ret = cmd_run(s, rq, 1+uri, strlen(uri)-1); break; case EVHTTP_REQ_POST: - webdis_log(s,1,uri); + slog(s, WEBDIS_DEBUG, uri); ret = cmd_run(s, rq, (const char*)EVBUFFER_DATA(rq->input_buffer), EVBUFFER_LENGTH(rq->input_buffer)); break; default: - printf("405\n"); - webdis_log(s,1,"405"); + slog(s, WEBDIS_DEBUG, "405"); evhttp_send_reply(rq, 405, "Method Not Allowed", NULL); return; } if(ret < 0) { - slog(s->cfg->logfile,2, uri); evhttp_send_reply(rq, 403, "Forbidden", NULL); } } @@ -164,13 +162,13 @@ server_start(struct server *s) { #endif /* start http server */ - slog(s->cfg->logfile,1,"Starting HTTP Server"); + slog(s, WEBDIS_INFO, "Starting HTTP Server"); evhttp_bind_socket(s->http, s->cfg->http_host, s->cfg->http_port); evhttp_set_cb(s->http, "/crossdomain.xml", on_flash_request, s); evhttp_set_gencb(s->http, on_request, s); /* drop privileges */ - slog(s->cfg->logfile,1,"Dropping Privileges"); + slog(s, WEBDIS_INFO, "Dropping Privileges"); setuid(s->cfg->user); setgid(s->cfg->group); @@ -180,10 +178,3 @@ server_start(struct server *s) { /* loop */ event_base_dispatch(s->base); } - -void -webdis_log(struct server *s, int level, const char *body){ - if(level > (int)s->cfg->verbosity){ - slog(s->cfg->logfile,level,body); - } -} diff --git a/slog.c b/slog.c index c9ea1e9..d37b5a8 100644 --- a/slog.c +++ b/slog.c @@ -6,22 +6,30 @@ #include #include -void slog(const char *logfile, int level, const char *body) { +#include "slog.h" +#include "server.h" +#include "conf.h" + +void slog(const struct server *s, log_level level, const char *body) { const char *c = ".-*#"; time_t now = time(NULL); FILE *fp; char buf[64]; char msg[1024]; + if(level > s->cfg->verbosity) { + return; + } + snprintf(msg, sizeof(msg), "%s", body); - fp = (logfile == NULL) ? stdout : fopen(logfile,"a"); - if (!fp) return; + fp = (s->cfg->logfile == NULL) ? stdout : fopen(s->cfg->logfile,"a"); + if(!fp) return; strftime(buf,sizeof(buf),"%d %b %H:%M:%S",localtime(&now)); fprintf(fp,"[%d] %s %c %s\n",(int)getpid(),buf,c[level],msg); fprintf(stdout,"[%d] %s %c %s\n",(int)getpid(),buf,c[level],msg); fflush(fp); - if (logfile) fclose(fp); + if(s->cfg->logfile) fclose(fp); } diff --git a/slog.h b/slog.h index 8cd2099..d402d92 100644 --- a/slog.h +++ b/slog.h @@ -1,6 +1,16 @@ #ifndef SLOG_H #define SLOG_H -void slog(const char *logfile, int level, const char *body); +typedef enum { + WEBDIS_ERROR, + WEBDIS_WARNING, + WEBDIS_NOTICE, + WEBDIS_INFO, + WEBDIS_DEBUG +} log_level; + +struct server; + +void slog(const struct server *s, log_level level, const char *body); #endif diff --git a/webdis.json b/webdis.json index 0e2e4e1..ed15a29 100644 --- a/webdis.json +++ b/webdis.json @@ -17,6 +17,6 @@ "enabled": ["DEBUG"] } ], - "verbosity": 0, + "verbosity": 3, "logfile": "webdis.log" }