Skip to content
API Documentation
BastionGuard™
Rule.hpp
Go to the documentation of this file.
1#pragma once
3#include <map>
4#include <optional>
5#include <regex>
6#include <string>
7#include <vector>
8
9namespace bsc::rule {
10
12
13struct Operator {
15 std::string operand;
16 std::string data;
17 bool sensitive{false};
18 std::vector<Operator> list;
19
20 [[nodiscard]] bool matches(const bsc::model::Connection& conn) const;
21};
22
23struct Rule {
24 std::int64_t created{0};
25 std::string name;
26 std::string description;
27 bool enabled{true};
28 bool precedence{false};
29 bool nolog{false};
30 std::string action{"allow"};
31 std::string duration{"once"};
33
34 [[nodiscard]] bool matches(const bsc::model::Connection& conn) const;
35};
36
37class Loader {
38 public:
39 void load_aliases(const std::string& path);
40 void load_directory(const std::string& dir);
41 bool save_rule(const Rule& rule, const std::string& dir) const;
42 [[nodiscard]] const std::vector<Rule>& rules() const noexcept { return rules_; }
43 [[nodiscard]] std::optional<Rule> find_match(const bsc::model::Connection& conn) const;
44 private:
45 std::vector<Rule> rules_;
46 std::map<std::string, std::vector<std::string>> aliases_;
47};
48
49} // namespace bsc::rule
std::vector< Rule > rules_
Definition Rule.hpp:45
std::optional< Rule > find_match(const bsc::model::Connection &conn) const
Definition Rule.cpp:358
void load_aliases(const std::string &path)
Definition Rule.cpp:292
std::map< std::string, std::vector< std::string > > aliases_
Definition Rule.hpp:46
void load_directory(const std::string &dir)
Definition Rule.cpp:311
bool save_rule(const Rule &rule, const std::string &dir) const
Definition Rule.cpp:342
const std::vector< Rule > & rules() const noexcept
Definition Rule.hpp:42
OperatorType
Definition Rule.hpp:11
bool matches(const bsc::model::Connection &conn) const
Definition Rule.cpp:230
std::string operand
Definition Rule.hpp:15
std::string data
Definition Rule.hpp:16
OperatorType type
Definition Rule.hpp:14
std::vector< Operator > list
Definition Rule.hpp:18
bool precedence
Definition Rule.hpp:28
std::string name
Definition Rule.hpp:25
std::string duration
Definition Rule.hpp:31
Operator op
Definition Rule.hpp:32
std::string action
Definition Rule.hpp:30
bool matches(const bsc::model::Connection &conn) const
Definition Rule.cpp:290
std::string description
Definition Rule.hpp:26
std::int64_t created
Definition Rule.hpp:24