Adds modsecStatusEngineCall to standalone API

In ModSecurityIIS the configuration is loaded upon the first request
is received. In other words, SecStatusEngine value can be only
loaded once the first request hit the server, and so, the status
function was moved to proceed just after the configuration got loaded.
This update is IIS only.
This commit is contained in:
Felipe "Zimmerle" Costa 2014-02-15 00:29:51 -02:00 committed by Felipe Zimmerle
parent d75e443b9b
commit 20014c808c
6 changed files with 28 additions and 2 deletions

View File

@ -726,6 +726,7 @@ static int hook_post_config(apr_pool_t *mp, apr_pool_t *mp_log, apr_pool_t *mp_t
"Original server signature: %s", real_server_signature); "Original server signature: %s", real_server_signature);
} }
#ifndef WIN32
if (status_engine_state != STATUS_ENGINE_DISABLED) { if (status_engine_state != STATUS_ENGINE_DISABLED) {
msc_status_engine_call(); msc_status_engine_call();
} }
@ -734,6 +735,7 @@ static int hook_post_config(apr_pool_t *mp, apr_pool_t *mp_log, apr_pool_t *mp_t
"Status engine is currently disabled, enable it by set " \ "Status engine is currently disabled, enable it by set " \
"SecStatusEngine to On."); "SecStatusEngine to On.");
} }
#endif
} }
srand((unsigned int)(time(NULL) * getpid())); srand((unsigned int)(time(NULL) * getpid()));

View File

@ -356,8 +356,8 @@ int msc_status_engine_call (void) {
} }
apr_snprintf(beacon_string, beacon_string_len+1+10+4, apr_snprintf(beacon_string, beacon_string_len+1+10+4,
"%s,%s/IIS,%s/%s,%s/%s,%s/%s,%s/%s,%s", "%s,IIS,%s/%s,%s/%s,%s/%s,%s/%s,%s",
modsec, apache, apr, apr_loaded, pcre, pcre_loaded, lua, lua_loaded, modsec, apr, apr_loaded, pcre, pcre_loaded, lua, lua_loaded,
libxml, libxml_loaded, id); libxml, libxml_loaded, id);
#else #else
beacon_string = malloc(sizeof(char)*(beacon_string_len+1+10)); beacon_string = malloc(sizeof(char)*(beacon_string_len+1+10));

View File

@ -21,7 +21,11 @@
#include "apr_optional.h" #include "apr_optional.h"
#include "msc_pcre.h" #include "msc_pcre.h"
#ifndef WIN32
#define STATUS_ENGINE_DNS_IN_BETWEEN_DOTS 32 #define STATUS_ENGINE_DNS_IN_BETWEEN_DOTS 32
#else
#define STATUS_ENGINE_DNS_IN_BETWEEN_DOTS 30
#endif
#define STATUS_ENGINE_DNS_SUFFIX "status.modsecurity.org" #define STATUS_ENGINE_DNS_SUFFIX "status.modsecurity.org"

View File

@ -796,6 +796,9 @@ CMyHttpModule::OnBeginRequest(
delete path; delete path;
goto Finished; goto Finished;
} }
modsecStatusEngineCall();
} }
delete apppath; delete apppath;
} }

View File

@ -701,3 +701,16 @@ const char *modsecIsServerSignatureAvailale(void) {
return new_server_signature; return new_server_signature;
} }
#ifdef WIN32
void modsecStatusEngineCall()
{
if (status_engine_state != STATUS_ENGINE_DISABLED) {
msc_status_engine_call();
}
else {
ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, NULL,
"Status engine is currently disabled, enable it by set " \
"SecStatusEngine to On.\n");
}
}
#endif

View File

@ -119,6 +119,10 @@ void modsecSetConfigForIISRequestBody(request_rec *r);
const char *modsecIsServerSignatureAvailale(void); const char *modsecIsServerSignatureAvailale(void);
#ifdef WIN32
void modsecStatusEngineCall(void);
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif