diff options
Diffstat (limited to 'src/stats.c')
-rw-r--r-- | src/stats.c | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/src/stats.c b/src/stats.c index e55f339..ea0b629 100644 --- a/src/stats.c +++ b/src/stats.c @@ -1,4 +1,4 @@ -/* $Id: stats.c,v 1.12 2002-05-29 20:49:55 rjkaes Exp $ +/* $Id: stats.c,v 1.13 2003-03-13 21:31:03 rjkaes Exp $ * * This module handles the statistics for tinyproxy. There are only two * public API functions. The reason for the functions, rather than just a @@ -25,6 +25,7 @@ #include "log.h" #include "heap.h" +#include "htmlerror.h" #include "stats.h" #include "utils.h" @@ -70,23 +71,45 @@ showstats(struct conn_s *connptr) "</blockquote>\r\n</body></html>\r\n"; char *message_buffer; + char opens[16], reqs[16], badconns[16], denied[16], refused[16]; + FILE *statfile; - message_buffer = safemalloc(MAXBUFFSIZE); - if (!message_buffer) - return -1; + snprintf(opens, sizeof(opens), "%lu", stats->num_open); + snprintf(reqs, sizeof(reqs), "%lu", stats->num_reqs); + snprintf(badconns, sizeof(badconns), "%lu", stats->num_badcons); + snprintf(denied, sizeof(denied), "%lu", stats->num_denied); + snprintf(refused, sizeof(refused), "%lu", stats->num_refused); + + if (!config.statpage || (!(statfile = fopen(config.statpage, "r")))) { + message_buffer = safemalloc(MAXBUFFSIZE); + if (!message_buffer) + return -1; + + snprintf(message_buffer, MAXBUFFSIZE, msg, + PACKAGE, VERSION, PACKAGE, VERSION, + stats->num_open, + stats->num_reqs, + stats->num_badcons, stats->num_denied, stats->num_refused); - snprintf(message_buffer, MAXBUFFSIZE, msg, - PACKAGE, VERSION, PACKAGE, VERSION, - stats->num_open, - stats->num_reqs, - stats->num_badcons, stats->num_denied, stats->num_refused); + if (send_http_message(connptr, 200, "OK", message_buffer) < 0) { + safefree(message_buffer); + return -1; + } - if (send_http_message(connptr, 200, "OK", message_buffer) < 0) { safefree(message_buffer); - return -1; + return 0; } - safefree(message_buffer); + add_error_variable(connptr, "opens", opens); + add_error_variable(connptr, "reqs", reqs); + add_error_variable(connptr, "badconns", badconns); + add_error_variable(connptr, "denied", denied); + add_error_variable(connptr, "refused", refused); + add_standard_vars(connptr); + send_http_headers(connptr, 200, "Statistic requested"); + send_html_file(statfile, connptr); + fclose(statfile); + return 0; } |