don't log passwords by default, but make password logging optional
[bpdyndnsd] / src / config.hpp
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
24 class Config
25 {
26
27 private:
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;
40     bool LogPasswords;
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;
53     bool DialupMode;
54     int DialupBurstPeriodSeconds;
55     int DialupSleepSeconds;
56     std::string WanIpOverride;
57
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);
59     int load_main_config_file(const std::string& full_filename);
60     int load_service_config_file(const std::string& full_filename);
61     void define_config_options();
62
63 public:
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
89     bool get_log_passwords() const;
90
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
117     bool get_dialup_mode() const;
118     int get_dialup_burst_period_seconds() const;
119     int get_dialup_sleep_seconds() const;
120
121     std::string get_wan_ip_override() const;
122 };
123
124 #endif