nancy.liao
2025-05-29 8d405b265285c368df2e9cf1c14acee7532e0ee7
src/library/licensecc.cpp
@@ -18,37 +18,46 @@
#include <licensecc_properties.h>
#include "base/logger.h"
#include "pc_identifier/pc_identifier_facade.hpp"
#include "base/string_utils.h"
#include "hw_identifier/hw_identifier_facade.hpp"
#include "os/execution_environment.hpp"
#include "limits/license_verifier.hpp"
#include "base/StringUtils.h"
#include "base/string_utils.h"
#include "LicenseReader.hpp"
#include "../test/functional/generate-license.h"
using namespace license;
using namespace std;
void print_error(char out_buffer[LCC_API_ERROR_BUFFER_SIZE], LicenseInfo* licenseInfo) {}
bool identify_pc(LCC_API_IDENTIFICATION_STRATEGY pc_id_method, char* chbuffer, size_t* bufSize) {
bool identify_pc(LCC_API_HW_IDENTIFICATION_STRATEGY pc_id_method, char* chbuffer, size_t* bufSize,
             ExecutionEnvironmentInfo* execution_environment_info) {
   bool result = false;
   if (*bufSize > LCC_API_PC_IDENTIFIER_SIZE && chbuffer != nullptr) {
      try {
         string pc_id = license::PcIdentifierFacade::generate_user_pc_signature(pc_id_method);
         strncpy(chbuffer, pc_id.c_str(), *bufSize);
         const string pc_id = license::hw_identifier::HwIdentifierFacade::generate_user_pc_signature(pc_id_method);
         license::mstrlcpy(chbuffer, pc_id.c_str(), *bufSize);
         result = true;
      } catch (const std::exception& ex) {
         LOG_ERROR("Error calculating pc_identifier: %s", ex.what());
#ifdef _DEBUG
            cout
            << "Error occurred: " << ex.what() << std::endl;
         LOG_ERROR("Error calculating hw_identifier: %s", ex.what());
#ifndef NDEBUG
         cerr << "Error occurred in identify_pc: " << ex.what() << std::endl;
#endif
      }
   } else {
      *bufSize = LCC_API_PC_IDENTIFIER_SIZE + 1;
   }
   static const license::os::ExecutionEnvironment exec_env;
   if (execution_environment_info != nullptr) {
      execution_environment_info->cloud_provider = exec_env.cloud_provider();
      execution_environment_info->virtualization = exec_env.virtualization();
      execution_environment_info->virtualization_detail = exec_env.virtualization_detail();
   }
   return result;
}
static void mergeLicenses(const vector<LicenseInfo>& licenses, LicenseInfo* license_out) {
   if (license_out != nullptr) {
      int days_left = INT_MIN;
      for (auto it = licenses.begin(); it != licenses.end(); it++) {
@@ -63,16 +72,15 @@
      }
   }
}
LCC_EVENT_TYPE acquire_license(const CallerInformations* callerInformation,
                            const LicenseLocation* licenseLocation, LicenseInfo* license_out) {
LCC_EVENT_TYPE acquire_license(const CallerInformations* callerInformation, const LicenseLocation* licenseLocation,
                        LicenseInfo* license_out) {
   const license::LicenseReader lr = license::LicenseReader(licenseLocation);
   vector<license::FullLicenseInfo> licenses;
   string project;
   size_t str_size;
   if (callerInformation != nullptr &&
      (str_size = license::mstrnlen_s(callerInformation->project_name, sizeof callerInformation->project_name)) > 0) {
      project = string(callerInformation->project_name, str_size);
      (str_size = license::mstrnlen_s(callerInformation->feature_name, sizeof callerInformation->feature_name)) > 0) {
      project = string(callerInformation->feature_name, str_size);
   } else {
      project = string(LCC_PROJECT_NAME);
   }
@@ -116,17 +124,20 @@
         license_out->days_left = 0;
      }
   }
#ifdef _DEBUG
   cout << er << endl;
#ifndef NDEBUG
   const string evlog = er.to_string();
   LOG_DEBUG("License status %s", evlog.c_str());
#endif
   if (license_out != nullptr) {
      er.exportLastEvents(license_out->status, LCC_API_AUDIT_EVENT_NUM);
   }
   return result;
}
LCC_EVENT_TYPE confirm_license(char* product, LicenseLocation licenseLocation) { return LICENSE_OK; }
LCC_EVENT_TYPE release_license(char* product, LicenseLocation licenseLocation) { return LICENSE_OK; }