openappsec/components/include/manifest_handler.h
Daniel-Eisenberg 4ddcd2462a
Feb 10 2025 dev (#255)
* sync code

* sync code

* code sync

* code sync

---------

Co-authored-by: Ned Wright <nedwright@proton.me>
Co-authored-by: Daniel Eisenberg <danielei@checkpoint.com>
2025-02-12 10:56:44 +02:00

75 lines
2.3 KiB
C++
Executable File

// Copyright (C) 2022 Check Point Software Technologies Ltd. All rights reserved.
// Licensed under the Apache License, Version 2.0 (the "License");
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef __MANIFEST_HANDLER_H__
#define __MANIFEST_HANDLER_H__
#include "package.h"
#include "i_package_handler.h"
#include "i_downloader.h"
#include "i_orchestration_tools.h"
#include "i_orchestration_status.h"
#include "i_environment.h"
#include "i_agent_details.h"
#include "i_details_resolver.h"
#include "i_time_get.h"
using packageFilePath = std::string;
class ManifestHandler
:
Singleton::Consume<I_MainLoop>,
Singleton::Consume<I_AgentDetails>,
Singleton::Consume<I_OrchestrationTools>,
Singleton::Consume<I_PackageHandler>,
Singleton::Consume<I_Downloader>,
Singleton::Consume<I_Environment>,
Singleton::Consume<I_OrchestrationStatus>,
Singleton::Consume<I_DetailsResolver>
{
public:
ManifestHandler() = default;
void init();
Maybe<std::vector<std::pair<Package, packageFilePath>>> downloadPackages(
const std::map<std::string, Package> &new_packages_to_download
);
bool installPackage(
const std::pair<Package, std::string> &package_downloaded_file,
std::map<packageFilePath, Package> &current_packages,
std::map<packageFilePath, Package> &corrupted_packages
);
bool uninstallPackage(Package &removed_package);
bool selfUpdate(
const Package &updated_package,
std::map<packageFilePath, Package> &current_packages,
const packageFilePath &installation_file
);
private:
Maybe<std::string> downloadPackage(const Package &package, bool is_clean_installation);
std::string getCurrentTimestamp();
std::string manifest_file_path;
std::string temp_ext;
std::string backup_ext;
std::string packages_dir;
std::string orch_service_name;
std::string default_dir;
};
#endif // __MANIFEST_HANDLER_H__