From f1d283e941680a97d74a2fb7f6bcdd9490efc394 Mon Sep 17 00:00:00 2001 From: nancy.liao <huihui.liao@greentest.com.cn> Date: 周四, 29 5月 2025 18:14:27 +0800 Subject: [PATCH] 根据具体需求 修改了一个强制性的版本匹配,否则license返回结果不正确 --- src/library/os/execution_environment.hpp | 48 ++++++++++++++++++++++++++++-------------------- 1 files changed, 28 insertions(+), 20 deletions(-) diff --git a/src/library/os/execution_environment.hpp b/src/library/os/execution_environment.hpp index 1c15ab4..296d403 100644 --- a/src/library/os/execution_environment.hpp +++ b/src/library/os/execution_environment.hpp @@ -8,32 +8,40 @@ #ifndef SRC_LIBRARY_OS_VIRTUALIZATION_HPP_ #define SRC_LIBRARY_OS_VIRTUALIZATION_HPP_ +#include <string> +#include <licensecc/datatypes.h> +#include "dmi_info.hpp" +#include "cpu_info.hpp" + namespace license { namespace os { -typedef enum { NONE, CONTAINER, VM } VIRTUALIZATION; -typedef enum { - ON_PREMISE, - GOOGLE_CLOUD, - AZURE_CLOUD, - AWS, - /** - * "/sys/class/dmi/id/bios_vendor" SeaBIOS - * "/sys/class/dmi/id/sys_vendor" Alibaba Cloud - * modalias - * "dmi:bvnSeaBIOS:bvrrel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org:bd04/01/2014:svnAlibabaCloud:pnAlibabaCloudECS:pvrpc-i440fx-2.1:cvnAlibabaCloud:ct1:cvrpc-i440fx-2.1:" - */ - ALI_CLOUD -} CLOUD_PROVIDER; + +/* + * windows bios sometimes reports vm names add execution environment detection from bios +const char *vmVendors[] = { + "VMware", "Microsoft Corporation", "Virtual Machine", "innotek GmbH", "PowerVM", "Bochs", "KVM"}; +*/ + +enum CONTAINER_TYPE { NONE, DOCKER, LXC }; class ExecutionEnvironment { +private: + const CpuInfo m_cpu_info; + const DmiInfo m_dmi_info; + const CONTAINER_TYPE m_container_type; + public: - ExecutionEnvironment(){}; - virtual ~ExecutionEnvironment(){}; - VIRTUALIZATION getVirtualization(); - bool is_cloud(); - bool is_docker(); - CLOUD_PROVIDER getCloudProvider(); + ExecutionEnvironment(); + ~ExecutionEnvironment(){}; + LCC_API_VIRTUALIZATION_SUMMARY virtualization() const; + bool is_cloud() const; + bool is_docker() const { return m_container_type == CONTAINER_TYPE::DOCKER; } + // detect if it's a kind of container technology (docker or lxc) + bool is_container() const { return m_container_type != CONTAINER_TYPE::NONE; } + LCC_API_CLOUD_PROVIDER cloud_provider() const; + LCC_API_VIRTUALIZATION_DETAIL virtualization_detail() const; }; + } // namespace os } // namespace license -- Gitblit v1.9.1