File: modsecurity_test_context.h

package info (click to toggle)
modsecurity 3.0.14-1
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 88,920 kB
  • sloc: ansic: 174,512; sh: 43,569; cpp: 26,214; python: 15,734; makefile: 3,864; yacc: 2,947; lex: 1,359; perl: 1,243; php: 42; tcl: 4
file content (42 lines) | stat: -rw-r--r-- 1,314 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef TEST_COMMON_MODSECURITY_TEST_CONTEXT_H_
#define TEST_COMMON_MODSECURITY_TEST_CONTEXT_H_

#include "modsecurity/modsecurity.h"
#include "modsecurity/rules_set.h"
#include "modsecurity/transaction.h"
#include "custom_debug_log.h"

#include <sstream>

namespace modsecurity_test {

    class ModSecurityTestContext {
    public:
        explicit ModSecurityTestContext(const std::string &connector)
            : m_modsec_rules(new CustomDebugLog) {
            m_modsec.setConnectorInformation(connector);
            m_modsec.setServerLogCb(logCb);
        }
        ~ModSecurityTestContext() = default;

        modsecurity::Transaction create_transaction() {
            return modsecurity::Transaction(&m_modsec,
                                            &m_modsec_rules,
                                            &m_server_log);
        }

        modsecurity::ModSecurity m_modsec;
        modsecurity::RulesSet m_modsec_rules;
        std::stringstream m_server_log;

    private:
        static void logCb(void *data, const void *msgv) {
            auto msg = reinterpret_cast<const char *>(msgv);
            auto ss = reinterpret_cast<std::stringstream *>(data);
            *ss << msg << std::endl;
        }
    };

} // namespace modsecurity_test

#endif // TEST_COMMON_MODSECURITY_TEST_H_