MODSEC-362

This commit is contained in:
Breno Silva
2013-04-22 13:36:13 -04:00
parent 08471afafe
commit 6cd3a14db1
3 changed files with 61 additions and 3 deletions

View File

@@ -700,13 +700,41 @@ static int var_useragent_ip_generate(modsec_rec *msr, msre_var *var, msre_rule *
static int var_remote_addr_generate(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->remote_addr);
char *remote = NULL;
char *parse_remote = NULL;
char *saved = NULL;
char *str = NULL;
if(strcasecmp(msr->txcfg->remote_define, "default") == 0) {
if (msr->txcfg->debuglog_level >= 9) {
msr_log(msr, 9, "Set variable \"%s\" to \"%s\".", var->name, msr->remote_addr);
}
return var_simple_generate(var, vartab, mptmp, msr->remote_addr);
} else {
remote = (char *)apr_table_get(msr->r->headers_in, msr->txcfg->remote_define);
if(remote == NULL) {
if (msr->txcfg->debuglog_level >= 9) {
msr_log(msr, 9, "Request header \"%s\" not present setting variable \"%s\" to \"%s\".", msr->txcfg->remote_define,
var->name, msr->remote_addr);
}
return var_simple_generate(var, vartab, mptmp, msr->remote_addr);
} else {
parse_remote = apr_pstrdup(msr->mp, remote);
str = apr_strtok(parse_remote, ",", &saved);
msr->remote_addr = apr_pstrdup(msr->mp, str);
if (msr->txcfg->debuglog_level >= 9) {
msr_log(msr, 9, "Request header \"%s\" is present setting variable \"%s\" to \"%s\".", msr->txcfg->remote_define,
var->name, msr->remote_addr);
}
return var_simple_generate(var, vartab, mptmp, msr->remote_addr);
}
}
}
/* REMOTE_HOST */
static int var_remote_host_generate(modsec_rec *msr, msre_var *var, msre_rule *rule,
apr_table_t *vartab, apr_pool_t *mptmp)
apr_table_t *vartab, apr_pool_t *mptmp)
{
const char *value1 = ap_get_remote_host(msr->r->connection, msr->r->per_dir_config,
REMOTE_NAME, NULL);