mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-11-16 17:41:52 +03:00
Initial support to parser trail
This commit is contained in:
58
headers/modsecurity/parser/default_driver_trail.h
Normal file
58
headers/modsecurity/parser/default_driver_trail.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* ModSecurity, http://www.modsecurity.org/
|
||||
* Copyright (c) 2015 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#endif
|
||||
|
||||
#ifndef HEADERS_MODSECURITY_PARSER_DEFAULT_DRIVER_TRAIL_H_
|
||||
#define HEADERS_MODSECURITY_PARSER_DEFAULT_DRIVER_TRAIL_H_
|
||||
|
||||
#include "modsecurity/modsecurity.h"
|
||||
#include "modsecurity/rules.h"
|
||||
#include "modsecurity/rules_properties.h"
|
||||
#include "modsecurity/audit_log.h"
|
||||
#include "modsecurity/parser/driver_trail.h"
|
||||
|
||||
|
||||
namespace modsecurity {
|
||||
namespace Parser {
|
||||
|
||||
#ifdef __cplusplus
|
||||
class DriverTrail;
|
||||
#else
|
||||
typedef struct DriverTrail_t DriverTrail;
|
||||
#endif
|
||||
|
||||
|
||||
class DefaultDriverTrail : public DriverTrail {
|
||||
public:
|
||||
int addSecRule(Rule *rule);
|
||||
int addSecAction(Rule *rule);
|
||||
int addSecMarker(std::string marker);
|
||||
int addSecRuleScript(Rule *rule);
|
||||
|
||||
Rule *m_lastRule;
|
||||
};
|
||||
|
||||
|
||||
} // namespace Parser
|
||||
} // namespace modsecurity
|
||||
|
||||
#endif // HEADERS_MODSECURITY_PARSER_DEFAULT_DRIVER_TRAIL_H_
|
||||
106
headers/modsecurity/parser/driver.h
Normal file
106
headers/modsecurity/parser/driver.h
Normal file
@@ -0,0 +1,106 @@
|
||||
|
||||
/*
|
||||
* ModSecurity, http://www.modsecurity.org/
|
||||
* Copyright (c) 2015 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#endif
|
||||
|
||||
#ifndef HEADERS_MODSECURITY_PARSER_DRIVER_H_
|
||||
#define HEADERS_MODSECURITY_PARSER_DRIVER_H_
|
||||
|
||||
#include "modsecurity/modsecurity.h"
|
||||
#include "modsecurity/rules.h"
|
||||
#include "modsecurity/rules_properties.h"
|
||||
#include "modsecurity/audit_log.h"
|
||||
#include "modsecurity/parser/driver_trail.h"
|
||||
|
||||
|
||||
using modsecurity::Rule;
|
||||
using modsecurity::Rules;
|
||||
|
||||
|
||||
namespace modsecurity {
|
||||
namespace Parser {
|
||||
|
||||
#ifdef __cplusplus
|
||||
class Driver;
|
||||
#else
|
||||
typedef struct Driver_t Driver;
|
||||
#endif
|
||||
|
||||
|
||||
class Driver {
|
||||
public:
|
||||
Driver(DriverTrail *trail);
|
||||
Driver();
|
||||
virtual ~Driver();
|
||||
|
||||
bool scanBegin();
|
||||
void scanEnd();
|
||||
|
||||
int parseFile(const std::string& f);
|
||||
int parse(const std::string& f, const std::string &ref);
|
||||
|
||||
void error(const yy::location& l, const std::string& m);
|
||||
void error(const yy::location& l, const std::string& m,
|
||||
const std::string& c);
|
||||
|
||||
|
||||
int addSecRule(Rule *rule) {
|
||||
if (!m_trail) {
|
||||
return -1;
|
||||
}
|
||||
return m_trail->addSecRule(rule);
|
||||
}
|
||||
int addSecAction(Rule *rule) {
|
||||
if (!m_trail) {
|
||||
return -1;
|
||||
}
|
||||
return m_trail->addSecAction(rule);
|
||||
}
|
||||
int addSecMarker(std::string marker) {
|
||||
if (!m_trail) {
|
||||
return -1;
|
||||
}
|
||||
return m_trail->addSecMarker(marker);
|
||||
}
|
||||
int addSecRuleScript(RuleScript *rule) {
|
||||
if (!m_trail) {
|
||||
return -1;
|
||||
}
|
||||
return m_trail->addSecRuleScript(rule);
|
||||
}
|
||||
|
||||
DriverTrail *m_trail;
|
||||
|
||||
bool m_traceScanning;
|
||||
bool m_traceParsing;
|
||||
std::string m_file;
|
||||
std::list<yy::location *> m_location;
|
||||
std::list<std::string> m_reference;
|
||||
std::string buffer;
|
||||
std::ostringstream m_parserError;
|
||||
};
|
||||
|
||||
|
||||
} // namespace Parser
|
||||
} // namespace modsecurity
|
||||
|
||||
#endif // HEADERS_MODSECURITY_PARSER_DRIVER_H_
|
||||
58
headers/modsecurity/parser/driver_trail.h
Normal file
58
headers/modsecurity/parser/driver_trail.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* ModSecurity, http://www.modsecurity.org/
|
||||
* Copyright (c) 2015 Trustwave Holdings, Inc. (http://www.trustwave.com/)
|
||||
*
|
||||
* You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* If any of the files related to licensing are missing or if you have any
|
||||
* other questions related to licensing please contact Trustwave Holdings, Inc.
|
||||
* directly using the email address security@modsecurity.org.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#endif
|
||||
|
||||
#ifndef HEADERS_MODSECURITY_PARSER_DRIVER_TRAIL_H_
|
||||
#define HEADERS_MODSECURITY_PARSER_DRIVER_TRAIL_H_
|
||||
|
||||
#include "modsecurity/modsecurity.h"
|
||||
#include "modsecurity/rules.h"
|
||||
#include "modsecurity/rules_properties.h"
|
||||
#include "modsecurity/audit_log.h"
|
||||
|
||||
using modsecurity::Rule;
|
||||
using modsecurity::Rules;
|
||||
|
||||
namespace modsecurity {
|
||||
namespace Parser {
|
||||
|
||||
#ifdef __cplusplus
|
||||
class DriverTrail;
|
||||
#else
|
||||
typedef struct DriverTrail_t DriverTrail;
|
||||
#endif
|
||||
|
||||
class DriverTrail : public RulesProperties {
|
||||
public:
|
||||
virtual int addSecRule(Rule *rule) = 0;
|
||||
virtual int addSecAction(Rule *rule) = 0;
|
||||
virtual int addSecMarker(std::string marker) = 0;
|
||||
virtual int addSecRuleScript(Rule *rule) = 0;
|
||||
|
||||
std::ostringstream m_error;
|
||||
};
|
||||
|
||||
|
||||
} // namespace Parser
|
||||
} // namespace modsecurity
|
||||
|
||||
#endif // HEADERS_MODSECURITY_PARSER_DRIVER_TRAIL_H_
|
||||
@@ -83,6 +83,7 @@ class Rules : public RulesProperties {
|
||||
|
||||
int64_t unicode_codepage;
|
||||
|
||||
std::ostringstream m_parserError;
|
||||
private:
|
||||
int m_referenceCount;
|
||||
#ifndef NO_LOGS
|
||||
|
||||
@@ -532,7 +532,6 @@ class RulesProperties {
|
||||
RuleEngine m_secRuleEngine;
|
||||
RulesExceptions m_exceptions;
|
||||
std::list<std::string> m_components;
|
||||
std::ostringstream m_parserError;
|
||||
ConfigSet m_responseBodyTypeToBeInspected;
|
||||
ConfigString m_httpblKey;
|
||||
ConfigString m_uploadDirectory;
|
||||
|
||||
Reference in New Issue
Block a user