Aktualizr
C++ SOTA Client
All Classes Namespaces Files Functions Variables Enumerations Enumerator Pages
aktualizr_secondary_config.cc
1 #include "aktualizr_secondary_config.h"
2 
3 #include <sstream>
4 
5 void AktualizrSecondaryNetConfig::updateFromPropertyTree(const boost::property_tree::ptree& pt) {
6  CopyFromConfig(port, "port", pt);
7  CopyFromConfig(primary_ip, "primary_ip", pt);
8  CopyFromConfig(primary_port, "primary_port", pt);
9 }
10 
11 void AktualizrSecondaryNetConfig::writeToStream(std::ostream& out_stream) const {
12  writeOption(out_stream, port, "port");
13  writeOption(out_stream, primary_ip, "primary_ip");
14  writeOption(out_stream, primary_port, "primary_port");
15 }
16 
17 void AktualizrSecondaryUptaneConfig::updateFromPropertyTree(const boost::property_tree::ptree& pt) {
18  CopyFromConfig(ecu_serial, "ecu_serial", pt);
19  CopyFromConfig(ecu_hardware_id, "ecu_hardware_id", pt);
20  CopyFromConfig(key_source, "key_source", pt);
21  CopyFromConfig(key_type, "key_type", pt);
22 }
23 
24 void AktualizrSecondaryUptaneConfig::writeToStream(std::ostream& out_stream) const {
25  writeOption(out_stream, ecu_serial, "ecu_serial");
26  writeOption(out_stream, ecu_hardware_id, "ecu_hardware_id");
27  writeOption(out_stream, key_source, "key_source");
28  writeOption(out_stream, key_type, "key_type");
29 }
30 
31 AktualizrSecondaryConfig::AktualizrSecondaryConfig(const boost::program_options::variables_map& cmd) {
32  // Redundantly check and set the loglevel from the commandline prematurely so
33  // that it is taken account while processing the config.
34  if (cmd.count("loglevel") != 0) {
35  logger.loglevel = cmd["loglevel"].as<int>();
36  logger_set_threshold(logger);
37  }
38 
39  if (cmd.count("config") > 0) {
40  const auto configs = cmd["config"].as<std::vector<boost::filesystem::path>>();
41  checkDirs(configs);
42  updateFromDirs(configs);
43  } else {
44  updateFromDirs(config_dirs_);
45  }
46  updateFromCommandLine(cmd);
47  postUpdateValues();
48 }
49 
50 AktualizrSecondaryConfig::AktualizrSecondaryConfig(const boost::filesystem::path& filename) {
51  updateFromToml(filename);
52  postUpdateValues();
53 }
54 
55 KeyManagerConfig AktualizrSecondaryConfig::keymanagerConfig() const {
56  // Note: use dummy values for tls key sources
57  return KeyManagerConfig{
58  p11, CryptoSource::kFile, CryptoSource::kFile, CryptoSource::kFile, uptane.key_type, uptane.key_source};
59 }
60 
61 void AktualizrSecondaryConfig::postUpdateValues() {
62  logger_set_threshold(logger);
63  LOG_TRACE << "Final configuration that will be used: \n" << (*this);
64 }
65 
66 void AktualizrSecondaryConfig::updateFromCommandLine(const boost::program_options::variables_map& cmd) {
67  if (cmd.count("loglevel") != 0) {
68  logger.loglevel = cmd["loglevel"].as<int>();
69  }
70  if (cmd.count("server-port") != 0) {
71  network.port = cmd["server-port"].as<in_port_t>();
72  }
73  if (cmd.count("ecu-serial") != 0) {
74  uptane.ecu_serial = cmd["ecu-serial"].as<std::string>();
75  }
76  if (cmd.count("ecu-hardware-id") != 0) {
77  uptane.ecu_hardware_id = cmd["ecu-hardware-id"].as<std::string>();
78  }
79 }
80 
81 void AktualizrSecondaryConfig::updateFromPropertyTree(const boost::property_tree::ptree& pt) {
82  // Keep this order the same as in aktualizr_secondary_config.h and
83  // AktualizrSecondaryConfig::writeToStream().
84 
85  // from aktualizr config
86  CopySubtreeFromConfig(logger, "logger", pt);
87  // If not already set from the commandline, set the loglevel now so that it
88  // affects the rest of the config processing.
89  logger_set_threshold(logger);
90 
91  CopySubtreeFromConfig(network, "network", pt);
92  CopySubtreeFromConfig(uptane, "uptane", pt);
93 
94  // from aktualizr config
95  CopySubtreeFromConfig(p11, "p11", pt);
96  CopySubtreeFromConfig(pacman, "pacman", pt);
97  CopySubtreeFromConfig(storage, "storage", pt);
98  CopySubtreeFromConfig(import, "import", pt);
99  CopySubtreeFromConfig(bootloader, "bootloader", pt);
100 }
101 
102 void AktualizrSecondaryConfig::writeToStream(std::ostream& sink) const {
103  // Keep this order the same as in aktualizr_secondary_config.h and
104  // AktualizrSecondaryConfig::updateFromPropertyTree().
105  WriteSectionToStream(logger, "logger", sink);
106  WriteSectionToStream(network, "network", sink);
107  WriteSectionToStream(uptane, "uptane", sink);
108 
109  WriteSectionToStream(p11, "p11", sink);
110  WriteSectionToStream(pacman, "pacman", sink);
111  WriteSectionToStream(storage, "storage", sink);
112  WriteSectionToStream(import, "import", sink);
113  WriteSectionToStream(bootloader, "bootloader", sink);
114 }
115 
116 std::ostream& operator<<(std::ostream& os, const AktualizrSecondaryConfig& cfg) {
117  cfg.writeToStream(os);
118  return os;
119 }
AktualizrSecondaryConfig
Definition: aktualizr_secondary_config.h:39
KeyManagerConfig
Definition: keymanager_config.h:9