From 36ce07093b68b07513149577c209ae7a57ab356b Mon Sep 17 00:00:00 2001
From: Gabriele Contini <contini.mailing@gmail.com>
Date: 周日, 15 3月 2020 16:26:21 +0800
Subject: [PATCH] Merge branch 'feature/pc_identifiers' into develop issues #2 #3 #14 #49

---
 src/library/os/windows/execution_environment.cpp |   86 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 86 insertions(+), 0 deletions(-)

diff --git a/src/library/os/windows/execution_environment.cpp b/src/library/os/windows/execution_environment.cpp
new file mode 100644
index 0000000..3e65bc8
--- /dev/null
+++ b/src/library/os/windows/execution_environment.cpp
@@ -0,0 +1,86 @@
+/*
+ * virtualization.cpp
+ *
+ *  Created on: Dec 15, 2019
+ *      Author: GC
+ */
+#include <windows.h>
+#include <sys/stat.h>
+#include <fstream>
+#include <iostream>
+#include <stdio.h>
+#include <string>
+
+#include "isvm/BIOSReader.h"
+#include "isvm/Native.h"
+#include "../../base/base.h"
+#include "../../base/StringUtils.h"
+#include "../cpu_info.hpp"
+#include "../execution_environment.hpp"
+
+namespace license {
+namespace os {
+using namespace std;
+
+ExecutionEnvironment::ExecutionEnvironment() {
+	if (InitEntryPoints()) {
+		BIOSReader reader;
+		SystemInformation info = reader.readSystemInfo();
+		m_sys_vendor = toupper_copy(info.Manufacturer);
+		m_bios_vendor = toupper_copy(info.ProductName);
+		m_bios_description = toupper_copy(info.SysVersion) + toupper_copy(info.family);
+	}
+}
+
+#define MAX_UNITS 20
+int wine_container() {
+DWORD fileMaxLen;
+size_t ndrives = 0;
+DWORD fileFlags;
+char volName[MAX_PATH], fileSysName[MAX_PATH];
+DWORD volSerial = 0;
+const DWORD dwSize = MAX_PATH;
+char szLogicalDrives[MAX_PATH] = {0};
+
+int result = 0;
+const DWORD dwResult = GetLogicalDriveStrings(dwSize, szLogicalDrives);
+
+if (dwResult > 0 && dwResult <= MAX_PATH) {
+	char* szSingleDrive = szLogicalDrives;
+	while (*szSingleDrive && ndrives < MAX_UNITS) {
+		// get the next drive
+		UINT driveType = GetDriveType(szSingleDrive);
+		if (driveType == DRIVE_FIXED) {
+			string name = szSingleDrive + string("/var/run/systemd/container");
+			try {
+				ifstream systemd_container(name);
+				if (systemd_container.good()) {
+					result = 1;
+					for (string line; getline(systemd_container, line);) {
+						if (line.find("docker") != string::npos) {
+							result = 1;
+							break;
+						} else if (line.find("lxc") != string::npos) {
+							result = 2;
+							break;
+						}
+					}
+				}
+			} catch (...) {
+				//no problem,we're just guessing
+			}
+		}
+	}
+}
+	return result;
+}
+
+bool ExecutionEnvironment::is_docker() const {
+	// let's check we're not in linux under wine ;) ...
+//int cont = wine_container();
+	return false; 
+}
+//TODO
+bool ExecutionEnvironment::is_container() const { return is_docker(); }
+}  // namespace os
+}  // namespace license

--
Gitblit v1.9.1