From e047dbe884f5288943d5ba2f8843a078d647d7ef Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周六, 25 4月 2020 21:01:33 +0800
Subject: [PATCH] first docker & vm detection

---
 src/library/os/execution_environment.hpp |   39 ++++++++++++---------------------------
 1 files changed, 12 insertions(+), 27 deletions(-)

diff --git a/src/library/os/execution_environment.hpp b/src/library/os/execution_environment.hpp
index 97172e4..f52f8db 100644
--- a/src/library/os/execution_environment.hpp
+++ b/src/library/os/execution_environment.hpp
@@ -9,6 +9,9 @@
 #define SRC_LIBRARY_OS_VIRTUALIZATION_HPP_
 
 #include <string>
+#include <licensecc/datatypes.h>
+#include "dmi_info.hpp"
+#include "cpu_info.hpp"
 
 namespace license {
 namespace os {
@@ -19,42 +22,24 @@
 	"VMware", "Microsoft Corporation", "Virtual Machine", "innotek GmbH", "PowerVM", "Bochs", "KVM"};
 */
 
-typedef enum { NONE, CONTAINER, VM } VIRTUALIZATION;
-
-typedef enum {
-	PROV_UNKNOWN,
-	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;
+enum CONTAINER_TYPE { NONE, DOCKER, LXC };
 
 class ExecutionEnvironment {
 private:
-	std::string m_sys_vendor;
-	std::string m_bios_vendor;
-	std::string m_bios_description;
+	const CpuInfo m_cpu_info;
+	const DmiInfo m_dmi_info;
+	const CONTAINER_TYPE m_container_type;
 
 public:
 	ExecutionEnvironment();
 	~ExecutionEnvironment(){};
-	VIRTUALIZATION getVirtualization() const;
+	LCC_API_VIRTUALIZATION_SUMMARY virtualization() const;
 	bool is_cloud() const;
-	bool is_docker() const;
+	bool is_docker() const { return m_container_type != DOCKER; }
 	// detect if it's a kind of container technology (docker or lxc)
-	bool is_container() const;
-	CLOUD_PROVIDER getCloudProvider() const;
-	const std::string& bios_vendor() const { return m_bios_vendor; };
-	const std::string& sys_vendor() const { return m_sys_vendor; };
-	const std::string& bios_description() const { return m_bios_description; };
-	// VIRTUALIZATION_DETAIL getVirtualizationDetail() const; //as reported by the bios
+	bool is_container() const { return m_container_type != NONE; }
+	LCC_API_CLOUD_PROVIDER cloud_provider() const;
+	LCC_API_VIRTUALIZATION_DETAIL virtualization_detail() const;
 };
 
 }  // namespace os

--
Gitblit v1.9.1