std::list<std::list<std::string>>
CtrlAgentCfgMgr::jsonPathsToRedact() const {
- static std::list<std::list<std::string>> _({
+ static std::list<std::list<std::string>> const list({
{"authentication", "clients"},
{"hooks-libraries", "parameters"},
});
- return _;
+ return list;
}
data::ConstElementPtr
std::list<std::list<std::string>>
D2CfgMgr::jsonPathsToRedact() const {
- static std::list<std::list<std::string>> _({
+ static std::list<std::list<std::string>> const list({
{"tsig-keys"},
});
- return _;
+ return list;
}
} // namespace d2
isc::data::ConstElementPtr
ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) {
-
- LOG_DEBUG(dhcp4_logger, DBG_DHCP4_COMMAND, DHCP4_CONFIG_RECEIVED)
- .arg(Dhcpv4Srv::redactConfig(config)->str());
-
ControlledDhcpv4Srv* srv = ControlledDhcpv4Srv::getInstance();
// Single stream instance used in all error clauses
return (isc::config::createAnswer(1, err.str()));
}
+ LOG_DEBUG(dhcp4_logger, DBG_DHCP4_COMMAND, DHCP4_CONFIG_RECEIVED)
+ .arg(srv->redactConfig(config)->str());
+
ConstElementPtr answer = configureDhcp4Server(*srv, config);
// Check that configuration was successful. If not, do not reopen sockets
ControlledDhcpv4Srv::checkConfig(isc::data::ConstElementPtr config) {
LOG_DEBUG(dhcp4_logger, DBG_DHCP4_COMMAND, DHCP4_CONFIG_RECEIVED)
- .arg(Dhcpv4Srv::redactConfig(config)->str());
+ .arg(redactConfig(config)->str());
ControlledDhcpv4Srv* srv = ControlledDhcpv4Srv::getInstance();
HooksManager::clearParkingLots();
}
+std::list<std::list<std::string>> Dhcpv4Srv::jsonPathsToRedact() const {
+ static std::list<std::list<std::string>> const list({
+ {"config-control", "config-databases"},
+ {"hooks-libraries", "parameters"},
+ {"hosts-database"},
+ {"hosts-databases"},
+ {"lease-database"},
+ });
+ return list;
+}
+
} // namespace dhcp
} // namespace isc
/// @brief Returns the index for "lease4_decline" hook point
/// @return the index for "lease4_decline" hook point
static int getHookIndexLease4Decline();
+
+ /// @brief Return a list of all paths that contain passwords or secrets for
+ /// kea-dhcp4.
+ ///
+ /// @return the list of lists of sequential JSON map keys needed to reach
+ /// the passwords and secrets.
+ std::list<std::list<std::string>> jsonPathsToRedact() const final override;
};
} // namespace dhcp
}
LOG_DEBUG(dhcp4_logger, DBG_DHCP4_COMMAND, DHCP4_CONFIG_START)
- .arg(Dhcpv4Srv::redactConfig(config_set)->str());
+ .arg(server.redactConfig(config_set)->str());
// Before starting any subnet operations, let's reset the subnet-id counter,
// so newly recreated configuration starts with first subnet-id equal 1.
isc::data::ConstElementPtr
ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) {
- LOG_DEBUG(dhcp6_logger, DBG_DHCP6_COMMAND, DHCP6_CONFIG_RECEIVED)
- .arg(Dhcpv6Srv::redactConfig(config)->str());
-
ControlledDhcpv6Srv* srv = ControlledDhcpv6Srv::getInstance();
// Single stream instance used in all error clauses
return (isc::config::createAnswer(1, err.str()));
}
+ LOG_DEBUG(dhcp6_logger, DBG_DHCP6_COMMAND, DHCP6_CONFIG_RECEIVED)
+ .arg(srv->redactConfig(config)->str());
+
ConstElementPtr answer = configureDhcp6Server(*srv, config);
// Check that configuration was successful. If not, do not reopen sockets
ControlledDhcpv6Srv::checkConfig(isc::data::ConstElementPtr config) {
LOG_DEBUG(dhcp6_logger, DBG_DHCP6_COMMAND, DHCP6_CONFIG_RECEIVED)
- .arg(Dhcpv6Srv::redactConfig(config)->str());
+ .arg(redactConfig(config)->str());
ControlledDhcpv6Srv* srv = ControlledDhcpv6Srv::getInstance();
}
}
+std::list<std::list<std::string>> Dhcpv6Srv::jsonPathsToRedact() const{
+ static std::list<std::list<std::string>> const list({
+ {"config-control", "config-databases"},
+ {"hooks-libraries", "parameters"},
+ {"hosts-database"},
+ {"hosts-databases"},
+ {"lease-database"},
+ });
+ return list;
+}
+
} // namespace dhcp
} // namespace isc
void processPacketBufferSend(hooks::CalloutHandlePtr& callout_handle,
Pkt6Ptr& rsp);
+ /// @brief Return a list of all paths that contain passwords or secrets for
+ /// kea-dhcp6.
+ ///
+ /// @return the list of lists of sequential JSON map keys needed to reach
+ /// the passwords and secrets.
+ std::list<std::list<std::string>> jsonPathsToRedact() const final override;
+
protected:
/// Server DUID (to be sent in server-identifier option)
}
LOG_DEBUG(dhcp6_logger, DBG_DHCP6_COMMAND, DHCP6_CONFIG_START)
- .arg(Dhcpv6Srv::redactConfig(config_set)->str());
+ .arg(server.redactConfig(config_set)->str());
// Before starting any subnet operations, let's reset the subnet-id counter,
// so newly recreated configuration starts with first subnet-id equal 1.
}
list<list<string>> DCfgMgrBase::jsonPathsToRedact() const {
- static list<list<string>> _({});
- return _;
+ static list<list<string>> const list;
+ return list;
}
isc::data::ConstElementPtr
return (bytes);
}
-
-std::list<std::list<std::string>> Daemon::jsonPathsToRedact() {
- static std::list<std::list<std::string>> _({
- {"config-control", "config-databases"},
- {"hooks-libraries", "parameters"},
- {"hosts-database"},
- {"hosts-databases"},
- {"lease-database"},
- });
- return _;
+std::list<std::list<std::string>>
+Daemon::jsonPathsToRedact() const {
+ static std::list<std::list<std::string>> const list;
+ return list;
}
isc::data::ConstElementPtr
/// @brief Return a list of all paths that contain passwords or secrets.
///
/// Used in @ref isc::process::Daemon::redactConfig to only make copies and
- /// only redact configuration subtrees that contain passwords or secrets.
+ /// only redact configuration subtrees that contain passwords or secrets. To
+ /// be overridden by derived classes.
///
/// @return the list of lists of sequential JSON map keys needed to reach
/// the passwords and secrets.
- static std::list<std::list<std::string>> jsonPathsToRedact();
+ virtual std::list<std::list<std::string>> jsonPathsToRedact() const;
/// @brief Redact a configuration.
///
/// @param config the Element tree structure that describes the configuration.
///
/// @return the redacted configuration
- static isc::data::ConstElementPtr
- redactConfig(isc::data::ConstElementPtr const& config);
+ isc::data::ConstElementPtr redactConfig(isc::data::ConstElementPtr const& config);
protected:
#include <process/redact_config.h>
-#include <boost/make_shared.hpp>
-
using namespace isc::data;
using namespace std;
ElementPtr result;
if (element->getType() == Element::list) {
// Redact lists.
- result = boost::make_shared<ListElement>();
+ result = Element::createList();
for (ConstElementPtr const& item : element->listValue()) {
// add wants an ElementPtr so use a shallow copy.
// We could hypothetically filter lists through JSON paths, but we
}
} else if (element->getType() == Element::map) {
// Redact maps.
- result = boost::make_shared<MapElement>();
+ result = Element::createMap();
for (auto kv : element->mapValue()) {
std::string const& key(kv.first);
ConstElementPtr const& value(kv.second);