From ef7df8048d1067d3148287f27af9047743f1e2ae Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.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