DebugLogs are now being redirected to the correct files

This commit is contained in:
Felipe Zimmerle
2015-08-27 01:27:34 -03:00
parent 01542e28c3
commit 24b7d72666
14 changed files with 330 additions and 177 deletions

View File

@@ -14,8 +14,6 @@
*/
#ifdef __cplusplus
#include <iostream>
#include <fstream>
#include <string>
#endif
@@ -32,39 +30,25 @@ typedef struct DebugLog_t DebugLog;
namespace ModSecurity {
/** @ingroup ModSecurity_CPP_API */
class DebugLog : public std::ofstream {
class DebugLog {
public:
/*
static ModSecurityDebugLog& instance() {
static ModSecurityDebugLog i;
return i;
}
*/
DebugLog()
: m_is_configured(false),
m_debug_level(0),
m_referenceCount(0) { }
: m_debugLevel(-1),
m_fileName("") { }
bool setOutputFile(const std::string& file);
virtual bool write_log(int level, const std::string& data);
bool setDebugLevel(int level);
bool isConfigured();
~DebugLog();
virtual DebugLog *new_instance();
void refCountDecreaseAndCheck(void);
void refCountIncrease(void);
virtual void write(int level, const std::string &msg);
bool isLogFileSet();
bool isLogLevelSet();
void setDebugLogLevel(int level);
void setDebugLogFile(const std::string &fileName);
const std::string& getDebugLogFile();
int getDebugLogLevel();
private:
/*
ModSecurityDebugLog(ModSecurityDebugLog const&);
void operator=(ModSecurityDebugLog const&);
*/
int m_debug_level;
bool m_is_configured;
int m_referenceCount;
int m_debugLevel;
std::string m_fileName;
};
} // namespace ModSecurity

View File

@@ -45,8 +45,7 @@ class Driver;
class Rules : public RulesProperties {
public:
Rules()
: debugLog(NULL),
RulesProperties(NULL),
: RulesProperties(new DebugLog()),
m_referenceCount(0),
unicode_codepage(0) {
unicode_map_table = reinterpret_cast<int *>(
@@ -55,8 +54,7 @@ class Rules : public RulesProperties {
}
explicit Rules(DebugLog *customLog)
: debugLog(NULL),
m_referenceCount(0),
: m_referenceCount(0),
unicode_codepage(0),
RulesProperties(customLog) {
unicode_map_table = reinterpret_cast<int *>(
@@ -86,7 +84,6 @@ class Rules : public RulesProperties {
std::ostringstream parserError;
DebugLog *debugLog;
int *unicode_map_table;
int64_t unicode_codepage;

View File

@@ -42,7 +42,7 @@ class RulesProperties {
public:
RulesProperties()
: audit_log(NULL),
customDebugLog(NULL),
m_debugLog(new DebugLog()),
remoteRulesActionOnFailed(AbortOnFailedRemoteRulesAction),
requestBodyLimit(0),
requestBodyNoFilesLimit(0),
@@ -51,26 +51,25 @@ class RulesProperties {
secResponseBodyAccess(false),
requestBodyLimitAction(ProcessPartialBodyLimitAction),
responseBodyLimit(0),
debugLevel(0),
responseBodyLimitAction(ProcessPartialBodyLimitAction),
secRuleEngine(DetectionOnlyRuleEngine) { }
explicit RulesProperties(DebugLog *customDebugLog)
explicit RulesProperties(DebugLog *debugLog)
: audit_log(NULL),
customDebugLog(customDebugLog),
m_debugLog(debugLog),
remoteRulesActionOnFailed(AbortOnFailedRemoteRulesAction),
secRequestBodyAccess(false),
secResponseBodyAccess(false),
debugLevel(0),
requestBodyLimit(0),
requestBodyLimitAction(ProcessPartialBodyLimitAction),
requestBodyNoFilesLimit(0),
requestBodyInMemoryLimit(0),
secRequestBodyAccess(false),
secResponseBodyAccess(false),
requestBodyLimitAction(ProcessPartialBodyLimitAction),
responseBodyLimit(0),
responseBodyLimitAction(ProcessPartialBodyLimitAction),
secRuleEngine(DetectionOnlyRuleEngine) { }
~RulesProperties() { }
~RulesProperties() {
delete m_debugLog;
}
std::vector<Rule *> rules[7]; // ModSecurity::Phases::NUMBER_OF_PHASES
@@ -167,16 +166,13 @@ class RulesProperties {
BodyLimitAction requestBodyLimitAction;
BodyLimitAction responseBodyLimitAction;
DebugLog *customDebugLog;
bool secRequestBodyAccess;
bool secResponseBodyAccess;
std::string audit_log_path;
std::string audit_log_parts;
std::string debug_log_path;
int debugLevel;
std::list<std::string> components;
DebugLog *m_debugLog;
std::ostringstream parserError;