]> git.stg.codes - ssmd.git/blob - src/settings.cpp
Control dumping snmp scripts.
[ssmd.git] / src / settings.cpp
1 #include "logger.h"
2 #include "settings.h"
3
4 using SSMD::Settings;
5 using SSMD::SettingsParser;
6
7 SettingsParser::SettingsParser()
8     : _desc("Allowed options")
9 {
10     // Declare the supported options.
11     _desc.add_options()
12         ("help", "produce help message")
13         ("config,c", po::value<std::string>()->default_value("/etc/ssmd/ssmd.conf"), "config file location")
14         ("daemon,d", "daemonize after start")
15         ("debug", "ssmd debugging")
16         ("log-file", po::value<std::string>(), "log file location")
17         ("pid-file", po::value<std::string>(), "PID file location")
18         ("switch-sync-interval,s", po::value<time_t>(), "switch synchronization interval")
19         ("info-sync-interval,i", po::value<time_t>(), "info synchronization interval")
20         ("up-profile-id", po::value<unsigned>(), "switch's upload profile id")
21         ("down-profile-id", po::value<unsigned>(), "switch's download profile id")
22         ("max-acl-per-pdu", po::value<size_t>(), "maximum ACL's per PDU")
23         ("data-url", po::value<std::string>(), "data access URL")
24         ("script-base", po::value<std::string>(), "base dir for scripts")
25         ("dump-scripts", "dump SNMP command into shell scripts")
26         ("version,v", "show ssmd version and exit")
27     ;
28 }
29
30 void SettingsParser::init(int argc, char * argv[])
31 {
32     po::variables_map vm;
33     po::store(po::parse_command_line(argc, argv, _desc), vm);
34     po::notify(vm);
35
36     _settings._isHelp = vm.count("help");
37     _settings._isVersion = vm.count("version");
38
39     if (vm.count("config"))
40         _settings._configFile = vm["config"].as<std::string>();
41
42     if (!_settings._isHelp &&
43         !_settings._isVersion) {
44         try {
45             parseFile(_settings._configFile);
46         }
47         catch (std::exception & ex) {
48             logger << "Error parsing config file '" << _settings._configFile << "': " << ex.what() << std::endl;
49         }
50     }
51
52     if (vm.count("debug"))
53         _settings._isDebug = true;
54     if (vm.count("daemon"))
55         _settings._isDaemon = true;
56
57     if (vm.count("log-file"))
58         _settings._logFile = vm["log-file"].as<std::string>();
59     if (vm.count("pid-file"))
60         _settings._PIDFile = vm["pid-file"].as<std::string>();
61     if (vm.count("switch-sync-interval"))
62         _settings._switchSyncInterval = vm["switch-sync-interval"].as<time_t>();
63     if (vm.count("info-sync-interval"))
64         _settings._infoSyncInterval = vm["info-sync-interval"].as<time_t>();
65     if (vm.count("up-profile-id"))
66         _settings._upProfileId = vm["up-profile-id"].as<unsigned>();
67     if (vm.count("down-profile-id"))
68         _settings._downProfileId = vm["down-profile-id"].as<unsigned>();
69     if (vm.count("max-acl-per-pdu"))
70         _settings._downProfileId = vm["max-acl-per-pdu"].as<unsigned>();
71     if (vm.count("data-url"))
72         _settings._dataURL = vm["data-url"].as<std::string>();
73     if (vm.count("script-base"))
74         _settings._scriptBase = vm["script-base"].as<std::string>();
75     if (vm.count("dump-scripts"))
76         _settings._dumpScripts = true;
77 }
78
79 void SettingsParser::reloadConfig()
80 {
81     parseFile(_settings._configFile);
82 }