This is an automated email from the ASF dual-hosted git repository. adebreceni pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit aa654309676a3a063706c70b3b5d369d90ab31db Author: Gabor Gyimesi <[email protected]> AuthorDate: Fri Apr 1 12:53:10 2022 +0200 MINIFICPP-1783 Encrypted values in agent manifest should remain in encrypted form Signed-off-by: Adam Debreceni <[email protected]> This closes #1289 --- extensions/http-curl/tests/C2DescribeManifestTest.cpp | 10 ++++++++++ extensions/http-curl/tests/HTTPHandlers.h | 2 +- libminifi/src/FlowController.cpp | 2 +- libminifi/src/c2/C2Client.cpp | 2 +- libminifi/test/integration/IntegrationBase.h | 4 ++++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/extensions/http-curl/tests/C2DescribeManifestTest.cpp b/extensions/http-curl/tests/C2DescribeManifestTest.cpp index 5c46f5c..a6a9a38 100644 --- a/extensions/http-curl/tests/C2DescribeManifestTest.cpp +++ b/extensions/http-curl/tests/C2DescribeManifestTest.cpp @@ -22,6 +22,7 @@ #include "Catch.h" #include "HTTPIntegrationBase.h" #include "HTTPHandlers.h" +#include "properties/Configuration.h" class DescribeManifestHandler: public HeartbeatHandler { public: @@ -41,8 +42,17 @@ class DescribeManifestHandler: public HeartbeatHandler { int main(int argc, char **argv) { const cmd_args args = parse_cmdline_args(argc, argv, "heartbeat"); VerifyC2Describe harness; + utils::crypto::Bytes encryption_key = utils::StringUtils::from_hex("4024b327fdc987ce3eb43dd1f690b9987e4072e0020e3edf4349ce1ad91a4e38"); + minifi::Decryptor decryptor{utils::crypto::EncryptionProvider{encryption_key}}; + std::string encrypted_value = "l3WY1V27knTiPa6jVX0jrq4qjmKsySOu||ErntqZpHP1M+6OkA14p5sdnqJhuNHWHDVUU5EyMloTtSytKk9a5xNKo="; + + harness.setConfiguration(std::make_shared<minifi::Configure>(decryptor)); harness.setKeyDir(args.key_dir); DescribeManifestHandler responder(harness.getConfiguration()); + + harness.getConfiguration()->set(minifi::Configuration::nifi_rest_api_password, encrypted_value); + harness.getConfiguration()->set(std::string(minifi::Configuration::nifi_rest_api_password) + ".protected", utils::crypto::EncryptionType::name()); + harness.setUrl(args.url, &responder); harness.run(args.test_file); } diff --git a/extensions/http-curl/tests/HTTPHandlers.h b/extensions/http-curl/tests/HTTPHandlers.h index a0acc6b..c136ab1 100644 --- a/extensions/http-curl/tests/HTTPHandlers.h +++ b/extensions/http-curl/tests/HTTPHandlers.h @@ -556,7 +556,7 @@ class HeartbeatHandler : public ServerAwareHandler { std::unordered_map<std::string, std::string> config_property; if (ranges::find(disallowed_properties, property.name) == ranges::end(disallowed_properties)) { config_property.emplace("propertyName", property.name); - if (auto value = configuration_->get(std::string(property.name))) { + if (auto value = configuration_->getString(std::string(property.name))) { config_property.emplace("propertyValue", *value); } config_property.emplace("validator", property.validator->getName()); diff --git a/libminifi/src/FlowController.cpp b/libminifi/src/FlowController.cpp index f518572..b6fe4cc 100644 --- a/libminifi/src/FlowController.cpp +++ b/libminifi/src/FlowController.cpp @@ -431,7 +431,7 @@ std::shared_ptr<state::response::ResponseNode> FlowController::getAgentManifest( agentInfo->setUpdatePolicyController(std::static_pointer_cast<controllers::UpdatePolicyControllerService>(getControllerService(c2::C2Agent::UPDATE_NAME)).get()); agentInfo->setAgentIdentificationProvider(configuration_); agentInfo->setConfigurationReader([this](const std::string& key){ - return configuration_->get(key); + return configuration_->getString(key); }); agentInfo->includeAgentStatus(false); return agentInfo; diff --git a/libminifi/src/c2/C2Client.cpp b/libminifi/src/c2/C2Client.cpp index 3a195ef..f6f067e 100644 --- a/libminifi/src/c2/C2Client.cpp +++ b/libminifi/src/c2/C2Client.cpp @@ -111,7 +111,7 @@ void C2Client::initialize(core::controller::ControllerServiceProvider *controlle } if (agent_node != nullptr) { agent_node->setConfigurationReader([this](const std::string& key){ - return configuration_->get(key); + return configuration_->getString(key); }); } auto configuration_checksums = dynamic_cast<state::response::ConfigurationChecksums*>(response_node.get()); diff --git a/libminifi/test/integration/IntegrationBase.h b/libminifi/test/integration/IntegrationBase.h index db64e13..d247bd4 100644 --- a/libminifi/test/integration/IntegrationBase.h +++ b/libminifi/test/integration/IntegrationBase.h @@ -61,6 +61,10 @@ class IntegrationBase { return configuration; } + void setConfiguration(std::shared_ptr<minifi::Configure> configuration) { + this->configuration = std::move(configuration); + } + virtual void cleanup() { if (!state_dir.empty()) { utils::file::delete_dir(state_dir);
