From 20c0b11dd9815191b080fae2e3b92c34d7e8f580 Mon Sep 17 00:00:00 2001 From: ivanr Date: Wed, 2 May 2007 10:02:20 +0000 Subject: [PATCH] Added experimental RESPONSE_CONTENT_LENGTH, RESPONSE_CONTENT_TYPE. --- apache2/re_variables.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/apache2/re_variables.c b/apache2/re_variables.c index e4714b2d..58792648 100644 --- a/apache2/re_variables.c +++ b/apache2/re_variables.c @@ -1634,6 +1634,23 @@ static int var_response_content_encoding(modsec_rec *msr, msre_var *var, msre_ru return var_simple_generate(var, vartab, mptmp, msr->r->content_encoding); } +/* RESPONSE_CONTENT_TYPE */ + +static int var_response_content_type(modsec_rec *msr, msre_var *var, msre_rule *rule, + apr_table_t *vartab, apr_pool_t *mptmp) +{ + return var_simple_generate(var, vartab, mptmp, msr->r->content_type); +} + +/* RESPONSE_CONTENT_LENGTH */ + +static int var_response_content_length(modsec_rec *msr, msre_var *var, msre_rule *rule, + apr_table_t *vartab, apr_pool_t *mptmp) +{ + const char *value = apr_psprintf(mptmp, "%" APR_OFF_T_FMT, msr->r->clength); + return var_simple_generate(var, vartab, mptmp, value); +} + /* USERID */ static int var_userid_generate(modsec_rec *msr, msre_var *var, msre_rule *rule, @@ -2409,6 +2426,28 @@ void msre_engine_register_default_variables(msre_engine *engine) { PHASE_RESPONSE_HEADERS ); + /* RESPONSE_CONTENT_TYPE */ + msre_engine_variable_register(engine, + "RESPONSE_CONTENT_TYPE", + VAR_SIMPLE, + 0, 0, + NULL, + var_response_content_type, + VAR_CACHE, + PHASE_RESPONSE_HEADERS + ); + + /* RESPONSE_CONTENT_LENGTH */ + msre_engine_variable_register(engine, + "RESPONSE_CONTENT_LENGTH", + VAR_SIMPLE, + 0, 0, + NULL, + var_response_content_length, + VAR_CACHE, + PHASE_RESPONSE_HEADERS + ); + /* RULE */ msre_engine_variable_register(engine, "RULE",