don't log passwords by default, but make password logging optional
[bpdyndnsd] / src / config.hpp
CommitLineData
4f63f66e
BS
1/** @file
2 * @brief Config class header. This class represents the actual configuration.
3 *
4 *
5 *
6 * @copyright Intra2net AG
7 * @license GPLv2
8*/
9
10#ifndef CONFIG_H
11#define CONFIG_H
12
13#include <string>
14
15#include "logger.hpp"
16#include "serviceholder.hpp"
17#include "httphelper.hpp"
18#include "service.hpp"
19
20#include <boost/program_options.hpp>
21#include <boost/shared_ptr.hpp>
22
23
24class Config
25{
26
27private:
28
29 boost::shared_ptr<boost::program_options::options_description> OptDescCmd;
30 boost::shared_ptr<boost::program_options::options_description> OptDescConfMain;
31 boost::shared_ptr<boost::program_options::options_description> OptDescConfService;
32 boost::program_options::variables_map VariablesMap;
33
34 Logger::Ptr Log;
35 Serviceholder::Ptr ServiceHolder;
36
37 bool DaemonMode;
38 bool Syslog;
39 bool EnableIPv6;
04d261b9 40 bool LogPasswords;
4f63f66e
BS
41 int Loglevel;
42 std::string ConfigPath;
43 std::string WebcheckIpUrl;
44 std::string WebcheckIpUrlAlt;
45 int WebcheckInterval;
46 std::string Proxy;
47 int ProxyPort;
48 std::string ExternalWarningLog;
49 int ExternalWarningLevel;
50 bool StartOffline;
51 bool WebcheckEnabled;
52 bool ExternalLogOnlyOnce;
2e9bd873
TJ
53 bool DialupMode;
54 int DialupBurstPeriodSeconds;
55 int DialupSleepSeconds;
6114d87c 56 std::string WanIpOverride;
4f63f66e 57
4553e833 58 Service::Ptr create_service(const std::string& protocol, const std::string& server, const std::string& hostname, const std::string& login, const std::string& password, const int update_interval, const int max_updates_within_interval, const int max_equal_updates_in_succession, const int dns_cache_ttl);
4f63f66e
BS
59 int load_main_config_file(const std::string& full_filename);
60 int load_service_config_file(const std::string& full_filename);
38a04d54 61 void define_config_options();
4f63f66e
BS
62
63public:
64
65 typedef boost::shared_ptr<Config> Ptr;
66
67 Config();
68
69 Config(Logger::Ptr _log, Serviceholder::Ptr _serviceholder);
70
71 ~Config();
72
73 int parse_cmd_line(int argc, char *argv[]);
74
75 int load_config_from_files();
76
77 boost::shared_ptr<boost::program_options::options_description> get_opt_desc_cmd() const;
78
79 boost::shared_ptr<boost::program_options::options_description> get_opt_desc_conf_main() const;
80
81 boost::shared_ptr<boost::program_options::options_description> get_opt_desc_conf_service() const;
82
83 bool get_daemon_mode() const;
84
85 int get_loglevel() const;
86
87 bool get_syslog() const;
88
04d261b9
GE
89 bool get_log_passwords() const;
90
4f63f66e
BS
91 bool get_enable_ipv6() const;
92
93 std::string get_proxy() const;
94
95 int get_proxy_port() const;
96
97 bool get_webcheck_enabled() const;
98
99 void set_webcheck_enabled( bool webcheck_enabled );
100
101 std::string get_webcheck_ip_url() const;
102
103 std::string get_webcheck_ip_url_alt() const;
104
105 int get_webcheck_interval() const;
106
107 void delete_variables_map();
108
109 int get_external_warning_level() const;
110
111 std::string get_external_warning_log() const;
112
113 bool get_start_offline() const;
114
115 bool get_external_log_only_once() const;
116
2e9bd873
TJ
117 bool get_dialup_mode() const;
118 int get_dialup_burst_period_seconds() const;
119 int get_dialup_sleep_seconds() const;
6114d87c
TJ
120
121 std::string get_wan_ip_override() const;
4f63f66e
BS
122};
123
124#endif