Files
checkpoint/src/config/Config.hpp

47 lines
1.5 KiB
C++
Raw Normal View History

2025-04-12 20:06:56 +01:00
#pragma once
#include <string>
#include <memory>
#include <re2/re2.h>
2025-04-21 20:13:24 +01:00
#include "ConfigRule.hpp"
2025-04-12 20:06:56 +01:00
class CConfig {
public:
CConfig();
2025-04-21 20:13:24 +01:00
struct SConfigRule {
std::string action = "";
int difficulty = -1;
std::vector<std::string> ip_ranges = {};
std::string user_agent = "";
std::string resource = "";
};
struct SProxyRule {
std::string host = "";
std::string destination = "";
};
2025-04-12 20:06:56 +01:00
struct SConfig {
2025-04-21 20:13:24 +01:00
int port = 3001;
std::string forward_address = "127.0.0.1:3000";
std::string data_dir = "";
std::string html_dir = "";
unsigned long int max_request_size = 10000000; // 10MB
bool git_host = false;
unsigned long int proxy_timeout_sec = 120; // 2 minutes
bool trace_logging = false;
std::vector<SConfigRule> rules = {};
int default_challenge_difficulty = 4;
bool async_proxy = true;
std::vector<SProxyRule> proxy_rules;
2025-04-12 20:06:56 +01:00
} m_config;
struct {
2025-04-21 20:13:24 +01:00
std::vector<CConfigRule> configs;
} m_parsedConfigDatas;
2025-04-12 20:06:56 +01:00
};
inline std::unique_ptr<CConfig> g_pConfig;