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
allow phase 5 rules to to implement conditional logging, as well as
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 */
static int var_time_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
@ -3017,6 +3034,17 @@ void msre_engine_register_default_variables(msre_engine *engine) {
VAR_DONT_CACHE, /* dynamic */
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 */
msre_engine_variable_register(engine,