mirror of
https://github.com/openappsec/openappsec.git
synced 2025-09-29 11:16:30 +03:00
June 27th update
This commit is contained in:
@@ -333,7 +333,7 @@ private:
|
||||
|
||||
ReconfStatus getUpdatedReconfStatus();
|
||||
Maybe<ServiceDetails> getServiceDetails(const string &service_name);
|
||||
map<string, PortNumber> getServiceToPortMap();
|
||||
map<string, vector<PortNumber>> getServiceToPortMap();
|
||||
|
||||
template<class Archive>
|
||||
void serializeRegisterServices(Archive &ar) { ar(pending_services); }
|
||||
@@ -358,6 +358,7 @@ private:
|
||||
string filesystem_prefix;
|
||||
bool is_multi_tenant_env = false;
|
||||
set<string> changed_policy_files;
|
||||
ServiceDetails orchestration_service_details;
|
||||
|
||||
I_OrchestrationTools *orchestration_tools = nullptr;
|
||||
I_MainLoop *mainloop = nullptr;
|
||||
@@ -374,8 +375,13 @@ public:
|
||||
for (auto const& entry: ports_map) {
|
||||
string service = entry.first;
|
||||
replace(service.begin(), service.end(), ' ', '-');
|
||||
output << service << ":";
|
||||
output << entry.second << ",";
|
||||
output << service;
|
||||
char delim = ':';
|
||||
for (PortNumber port : entry.second) {
|
||||
output << delim << port;
|
||||
delim = ',';
|
||||
}
|
||||
output << ";";
|
||||
}
|
||||
ports_list = output.str();
|
||||
}
|
||||
@@ -500,6 +506,7 @@ ServiceController::Impl::loadRegisteredServicesFromFile()
|
||||
stringstream ss(maybe_registered_services_str.unpack());
|
||||
cereal::JSONInputArchive ar(ss);
|
||||
ar(cereal::make_nvp("Registered Services", pending_services));
|
||||
pending_services.erase("cp-nano-orchestration");
|
||||
|
||||
dbgInfo(D_SERVICE_CONTROLLER)
|
||||
<< "Orchestration pending services loaded from file."
|
||||
@@ -529,16 +536,24 @@ ServiceController::Impl::writeRegisteredServicesToFile()
|
||||
"Orchestration registered services"
|
||||
);
|
||||
|
||||
map<string, ServiceDetails> registered_services_with_orch = registered_services;
|
||||
if (orchestration_service_details.getServiceID() != "") {
|
||||
registered_services_with_orch.emplace(
|
||||
orchestration_service_details.getServiceID(),
|
||||
orchestration_service_details
|
||||
);
|
||||
}
|
||||
|
||||
ofstream ss(registered_services_file);
|
||||
cereal::JSONOutputArchive ar(ss);
|
||||
ar(cereal::make_nvp("Registered Services", registered_services));
|
||||
ar(cereal::make_nvp("Registered Services", registered_services_with_orch));
|
||||
|
||||
dbgInfo(D_SERVICE_CONTROLLER)
|
||||
<< "Orchestration registered services file has been updated. File: "
|
||||
<< registered_services_file
|
||||
<< ". Registered Services:";
|
||||
|
||||
for (const auto &id_service_pair : registered_services) {
|
||||
for (const auto &id_service_pair : registered_services_with_orch) {
|
||||
const auto &service = id_service_pair.second;
|
||||
dbgInfo(D_SERVICE_CONTROLLER)
|
||||
<< "Service name: "
|
||||
@@ -591,20 +606,20 @@ ServiceController::Impl::cleanUpVirtualFiles()
|
||||
}
|
||||
}
|
||||
|
||||
map<string, PortNumber>
|
||||
map<string, vector<PortNumber>>
|
||||
ServiceController::Impl::getServiceToPortMap()
|
||||
{
|
||||
map<string, PortNumber> ports_map;
|
||||
map<string, vector<PortNumber>> ports_map;
|
||||
for (auto const& entry: registered_services) {
|
||||
const string &service = entry.first;
|
||||
const string &service = entry.second.getServiceName();
|
||||
PortNumber port = entry.second.getPort();
|
||||
ports_map[service] = port;
|
||||
ports_map[service].push_back(port);
|
||||
}
|
||||
|
||||
for (auto const& entry: pending_services) {
|
||||
const string &service = entry.first;
|
||||
const string &service = entry.second.getServiceName();
|
||||
PortNumber port = entry.second.getPort();
|
||||
ports_map[service] = port;
|
||||
ports_map[service].push_back(port);
|
||||
}
|
||||
|
||||
return ports_map;
|
||||
@@ -624,6 +639,12 @@ ServiceController::Impl::registerServiceConfig(
|
||||
service_id
|
||||
);
|
||||
|
||||
if (service_name == "cp-nano-orchestration") {
|
||||
dbgTrace(D_SERVICE_CONTROLLER) << "Save the orchestration service details";
|
||||
orchestration_service_details = service_config;
|
||||
return;
|
||||
}
|
||||
|
||||
pending_services.erase(service_config.getServiceID());
|
||||
pending_services.insert({service_config.getServiceID(), service_config});
|
||||
refreshPendingServices();
|
||||
|
@@ -178,16 +178,17 @@ public:
|
||||
void
|
||||
expectNewConfigRequest(const string &response)
|
||||
{
|
||||
Maybe<HTTPResponse, HTTPResponse> res = HTTPResponse(HTTPStatusCode::HTTP_OK, response);
|
||||
EXPECT_CALL(
|
||||
mock_message,
|
||||
sendSyncMessage(
|
||||
HTTPMethod::POST,
|
||||
"/set-new-configuration",
|
||||
HasSubstr("1.0.2"),
|
||||
_,
|
||||
_,
|
||||
_
|
||||
)
|
||||
).WillOnce(Return(HTTPResponse(HTTPStatusCode::HTTP_OK, response)));
|
||||
).WillOnce(DoAll(SaveArg<2>(&version_body), Return(res)));
|
||||
}
|
||||
|
||||
CPTestTempfile status_file;
|
||||
@@ -196,6 +197,7 @@ public:
|
||||
::Environment env;
|
||||
ConfigComponent config;
|
||||
DeclarativePolicyUtils declarative_policy_utils;
|
||||
string version_body;
|
||||
string configuration_dir;
|
||||
string policy_extension;
|
||||
string settings_extension;
|
||||
@@ -229,19 +231,21 @@ public:
|
||||
string old_version = "1.0.1";
|
||||
|
||||
string versions =
|
||||
"["
|
||||
" {"
|
||||
" \"id\": \"d8c3cc3c-f9df-83c8-f875-322dd8a0c161\","
|
||||
" \"name\": \"Linux Embedded Agents\","
|
||||
" \"version\": \"1.0.2\""
|
||||
" }"
|
||||
"[\n"
|
||||
" {\n"
|
||||
" \"id\": \"d8c3cc3c-f9df-83c8-f875-322dd8a0c161\",\n"
|
||||
" \"name\": \"Linux Embedded Agents\",\n"
|
||||
" \"version\": \"1.0.2\",\n"
|
||||
" \"profileType\": \"Embedded\"\n"
|
||||
" }\n"
|
||||
"]";
|
||||
string old_versions =
|
||||
"["
|
||||
" {"
|
||||
" \"id\": \"d8c3cc3c-f9df-83c8-f875-322dd8a0c161\","
|
||||
" \"name\": \"Linux Embedded Agents\","
|
||||
" \"version\": \"1.0.1\""
|
||||
" \"version\": \"1.0.1\","
|
||||
" \"profileType\": \"Embedded\""
|
||||
" }"
|
||||
"]";
|
||||
|
||||
@@ -338,6 +342,23 @@ TEST_F(ServiceControllerTest, UpdateConfiguration)
|
||||
EXPECT_EQ(i_service_controller->getPolicyVersion(), version_value);
|
||||
EXPECT_EQ(i_service_controller->getPolicyVersions(), versions);
|
||||
EXPECT_EQ(i_service_controller->getUpdatePolicyVersion(), version_value);
|
||||
|
||||
stringstream ver_ss;
|
||||
ver_ss
|
||||
<< "{\n"
|
||||
<< " \"id\": 1,\n"
|
||||
<< " \"policy_version\": \"1.0.2,[\\n"
|
||||
<< " {\\n"
|
||||
<< " \\\"id\\\": \\\"d8c3cc3c-f9df-83c8-f875-322dd8a0c161\\\",\\n"
|
||||
<< " \\\"name\\\": \\\"Linux Embedded Agents\\\",\\n"
|
||||
<< " \\\"version\\\": \\\"1.0.2\\\",\\n"
|
||||
<< " \\\"profileType\\\": \\\"Embedded\\\"\\n"
|
||||
<< " }\\n"
|
||||
<< "]\"\n}";
|
||||
EXPECT_EQ(
|
||||
version_body,
|
||||
ver_ss.str()
|
||||
);
|
||||
}
|
||||
|
||||
TEST_F(ServiceControllerTest, supportVersions)
|
||||
@@ -527,13 +548,13 @@ TEST_F(ServiceControllerTest, TimeOutUpdateConfiguration)
|
||||
TEST_F(ServiceControllerTest, readRegisteredServicesFromFile)
|
||||
{
|
||||
init();
|
||||
int family1_id3_port = 1111;
|
||||
uint16_t family1_id3_port = 1111;
|
||||
string registered_services_json = "{\n"
|
||||
" \"Registered Services\": {\n"
|
||||
" \"family1_id3\": {\n"
|
||||
" \"Service name\": \"mock access control\",\n"
|
||||
" \"Service ID\": \"family1_id3\",\n"
|
||||
" \"Service port\": 1111,\n"
|
||||
" \"Service port\": " + to_string(family1_id3_port) + ",\n"
|
||||
" \"Relevant configs\": [\n"
|
||||
" \"non updated capability\",\n"
|
||||
" \"l4_firewall\"\n"
|
||||
@@ -573,7 +594,8 @@ TEST_F(ServiceControllerTest, readRegisteredServicesFromFile)
|
||||
service_controller.init();
|
||||
|
||||
auto services_to_port_map = i_service_controller->getServiceToPortMap();
|
||||
EXPECT_EQ(services_to_port_map.find("family1_id3")->second, family1_id3_port);
|
||||
vector<PortNumber> ports = {l4_firewall_service_port, family1_id3_port};
|
||||
EXPECT_EQ(services_to_port_map.find("mock access control")->second, ports);
|
||||
}
|
||||
|
||||
TEST_F(ServiceControllerTest, noPolicyUpdate)
|
||||
@@ -1589,7 +1611,7 @@ TEST_F(ServiceControllerTest, testPortsRest)
|
||||
empty_json << "{}";
|
||||
auto res = get_services_ports->performRestCall(empty_json);
|
||||
ASSERT_TRUE(res.ok());
|
||||
EXPECT_THAT(res.unpack(), HasSubstr("family1_id2:8888"));
|
||||
EXPECT_THAT(res.unpack(), HasSubstr("mock-access-control:8888;"));
|
||||
}
|
||||
|
||||
TEST_F(ServiceControllerTest, testMultitenantConfFiles)
|
||||
|
Reference in New Issue
Block a user