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