From 8bbef2865455754425a84b86680a89bff8aa7691 Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周六, 19 10月 2019 08:50:45 +0800 Subject: [PATCH] issue #64 , issue #56 (part) --- src/library/locate/EnvironmentVarData.cpp | 44 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/library/locate/EnvironmentVarData.cpp b/src/library/locate/EnvironmentVarData.cpp index 844470e..616b948 100644 --- a/src/library/locate/EnvironmentVarData.cpp +++ b/src/library/locate/EnvironmentVarData.cpp @@ -6,6 +6,18 @@ */ #include "EnvironmentVarData.hpp" + +#include <build_properties.h> +#include <cstdlib> +#include <regex> +#include <string> +#include <vector> + +#include "../api/datatypes.h" +#include "../base/base64.h" +#include "../base/EventRegistry.h" +#include "../base/StringUtils.h" + namespace license { namespace locate { @@ -18,15 +30,37 @@ EnvironmentVarData::~EnvironmentVarData() { } -const vector<string> EnvironmentVarData::licenseLocations( - EventRegistry &eventRegistry) const { +const vector<string> EnvironmentVarData::license_locations( + EventRegistry &eventRegistry) { vector<string> diskFiles; - + char *env_var_value = getenv(LICENSE_DATA_ENV_VAR); + if (env_var_value != nullptr && env_var_value[0] != '\0') { + eventRegistry.addEvent(LICENSE_SPECIFIED, LICENSE_LOCATION_ENV_VAR); + FILE_FORMAT licenseFormat = identify_format(env_var_value); + if (licenseFormat == UNKNOWN) { + eventRegistry.addEvent(LICENSE_MALFORMED, LICENSE_LOCATION_ENV_VAR); + } else { + diskFiles.push_back(LICENSE_LOCATION_ENV_VAR); + isBase64 = (licenseFormat == BASE64); + } + } else { + eventRegistry.addEvent(ENVIRONMENT_VARIABLE_NOT_DEFINED, + LICENSE_LOCATION_ENV_VAR); + } return diskFiles; } -const std::string EnvironmentVarData::retrieveLicense(const std::string &licenseLocation) const{ - return ""; +const std::string EnvironmentVarData::retrieve_license_content( + const std::string &licenseLocation) const { + string tmpVal = getenv(LICENSE_LOCATION_ENV_VAR); + if (isBase64) { + int flen = 0; + unsigned char *raw = unbase64(tmpVal.c_str(), tmpVal.length(), &flen); + string str = string(reinterpret_cast<char*>(raw)); + free(raw); + return str; + } + return tmpVal; } } -- Gitblit v1.9.1