From 96123d01cfa34652c9fb00d15a2ce8a61df586c2 Mon Sep 17 00:00:00 2001 From: Thomas Porzelt Date: Thu, 13 Aug 2009 20:08:37 +0200 Subject: [PATCH] [mod_status] Add refresh=X querystring parameter to control auto-refreshing of page --- src/modules/mod_status.c | 71 +++++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/src/modules/mod_status.c b/src/modules/mod_status.c index 6dd9fe2..ec2d115 100644 --- a/src/modules/mod_status.c +++ b/src/modules/mod_status.c @@ -20,7 +20,7 @@ * } * * Todo: - * - add querystring parameters like refresh=X and format=plain + * - add querystring parameter format=plain * * Author: * Copyright (c) 2008-2009 Thomas Porzelt @@ -30,6 +30,7 @@ #include #include +#include LI_API gboolean mod_status_init(liModules *mods, liModule *mod); LI_API gboolean mod_status_free(liModules *mods, liModule *mod); @@ -317,7 +318,6 @@ static void status_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result if (complete) { GString *html; - GString *css; GString *tmpstr; GString *count_req, *count_bin, *count_bout; guint uptime; @@ -364,14 +364,33 @@ static void status_collect_cb(gpointer cbdata, gpointer fdata, GPtrArray *result g_string_append_len(html, header, sizeof(header)-1); + /* auto refresh */ + { + gchar *val; + guint len; + gchar c; + + if (li_querystring_find(vr->request.uri.query, CONST_STR_LEN("refresh"), &val, &len)) { + g_string_append_len(html, CONST_STR_LEN("\n")); + } + } + /* css */ - css = _OPTION(vr, p, 0).string; - if (!css || !css->len) /* default css */ - g_string_append_len(html, css_default, sizeof(css_default)-1); - else if (g_str_equal(css->str, "blue")) /* blue css */ - g_string_append_len(html, css_blue, sizeof(css_blue)-1); - else /* external css */ - g_string_append_printf(html, " \n", css->str); + { + GString *css = _OPTION(vr, p, 0).string; + + if (!css || !css->len) /* default css */ + g_string_append_len(html, css_default, sizeof(css_default)-1); + else if (g_str_equal(css->str, "blue")) /* blue css */ + g_string_append_len(html, css_blue, sizeof(css_blue)-1); + else /* external css */ + g_string_append_printf(html, " \n", css->str); + } g_string_append_len(html, CONST_STR_LEN( " \n" @@ -667,19 +686,39 @@ static gint str_comp(gconstpointer a, gconstpointer b) { static liHandlerResult status_info_runtime(liVRequest *vr, liPlugin *p) { GString *html; - GString* css = _OPTION(vr, p, 0).string; html = g_string_sized_new(2047); g_string_append_len(html, CONST_STR_LEN(header)); - if (!css || !css->len) /* default css */ - g_string_append_len(html, CONST_STR_LEN(css_default)); - else if (g_str_equal(css->str, "blue")) /* blue css */ - g_string_append_len(html, CONST_STR_LEN(css_blue)); - else /* external css */ - g_string_append_printf(html, " \n", css->str); + /* auto refresh */ + { + gchar *val; + guint len; + gchar c; + + if (li_querystring_find(vr->request.uri.query, CONST_STR_LEN("refresh"), &val, &len)) { + g_string_append_len(html, CONST_STR_LEN("\n")); + } + } + + /* css */ + { + GString* css = _OPTION(vr, p, 0).string; + + if (!css || !css->len) /* default css */ + g_string_append_len(html, CONST_STR_LEN(css_default)); + else if (g_str_equal(css->str, "blue")) /* blue css */ + g_string_append_len(html, CONST_STR_LEN(css_blue)); + else /* external css */ + g_string_append_printf(html, " \n", css->str); + } g_string_append_len(html, CONST_STR_LEN( " \n"