Add DURATION.

This commit is contained in:
ivanr 2010-01-27 14:11:33 +00:00
parent 51e7bfcc03
commit d259373331
2 changed files with 32 additions and 1 deletions

View File

@ -1,7 +1,10 @@
26 Jan 2010 - trunk 27 Jan 2010 - trunk
------------------- -------------------
* Added DURATION, which contains the time ellapsed since the beginning
of the current transaction, in milliseconds. [Ivan Ristic]
* Adjusted phase 5 to execute just prior to mod_log_config. This should * Adjusted phase 5 to execute just prior to mod_log_config. This should
allow phase 5 rules to to implement conditional logging, as well as allow phase 5 rules to to implement conditional logging, as well as
pave support for allowing access to all ModSecurity variables from pave support for allowing access to all ModSecurity variables from

View File

@ -1426,6 +1426,23 @@ static int var_urlencoded_error_generate(modsec_rec *msr, msre_var *var, msre_ru
} }
} }
/* DURATION */
static int var_duration_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
apr_table_t *vartab, apr_pool_t *mptmp)
{
msre_var *rvar = NULL;
rvar = apr_pmemdup(mptmp, var, sizeof(msre_var));
rvar->value = apr_psprintf(mptmp, "%" APR_TIME_T_FMT,
(apr_time_msec(apr_time_now() - msr->r->request_time)));
rvar->value_len = strlen(rvar->value);
apr_table_addn(vartab, rvar->name, (void *)rvar);
return 1;
}
/* TIME */ /* TIME */
static int var_time_generate(modsec_rec *msr, msre_var *var, msre_rule *rule, static int var_time_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
@ -3018,6 +3035,17 @@ void msre_engine_register_default_variables(msre_engine *engine) {
PHASE_RESPONSE_HEADERS PHASE_RESPONSE_HEADERS
); );
/* DURATION */
msre_engine_variable_register(engine,
"DURATION",
VAR_SIMPLE,
0, 0,
NULL,
var_duration_generate,
VAR_DONT_CACHE, /* dynamic */
PHASE_REQUEST_HEADERS
);
/* TIME */ /* TIME */
msre_engine_variable_register(engine, msre_engine_variable_register(engine,
"TIME", "TIME",