From 1e166c13aaabe8d2aad1d604c77020a14dc577cd Mon Sep 17 00:00:00 2001 From: open-license-manager <rillf@maildrop.cc> Date: 周二, 16 9月 2014 06:22:21 +0800 Subject: [PATCH] refactorings --- src/library/LicenseReader.cpp | 63 +++++++++++++++++++++---------- 1 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/library/LicenseReader.cpp b/src/library/LicenseReader.cpp index 6e1c064..ab50379 100644 --- a/src/library/LicenseReader.cpp +++ b/src/library/LicenseReader.cpp @@ -2,7 +2,7 @@ * LicenseReader.cpp * * Created on: Mar 30, 2014 - * Author: devel + * */ #ifdef _WIN32 @@ -18,14 +18,17 @@ #include <fstream> #include <sstream> #include <stdlib.h> +#include "pc-identifiers.h" #include "LicenseReader.h" #include "base/StringUtils.h" -#include "base/public-key.h" +#include "public-key.h" #include <build_properties.h> -#include "os/os.hpp" +#include "os/os-cpp.h" namespace license { + +const char *FullLicenseInfo::UNUSED_TIME = "0000-00-00"; FullLicenseInfo::FullLicenseInfo(const string& source, const string& product, const string& license_signature, int licenseVersion, string from_date, @@ -47,21 +50,29 @@ EventRegistry FullLicenseInfo::validate(int sw_version) { EventRegistry er; - OsFunctions::initialize(); + os_initialize(); bool sigVerified = OsFunctions::verifySignature(printForSign().c_str(), license_signature.c_str()); if (sigVerified) { - er.addEvent(LICENSE_VERIFIED, INFO); + er.addEvent(LICENSE_VERIFIED, SVRT_INFO); } else { - er.addEvent(LICENSE_CORRUPTED, SEVERITY_ERROR); + er.addEvent(LICENSE_CORRUPTED, SVRT_ERROR); } if (has_expiry) { time_t now = time(NULL); if (expires_on() < now) { - er.addEvent(PRODUCT_EXPIRED, SEVERITY_ERROR, ""); + er.addEvent(PRODUCT_EXPIRED, SVRT_ERROR, ""); } if (valid_from() > now) { - er.addEvent(PRODUCT_EXPIRED, SEVERITY_ERROR); + er.addEvent(PRODUCT_EXPIRED, SVRT_ERROR); + } + } + if (has_client_sig) { + PcSignature str_code; + strncpy(str_code, client_signature.c_str(), sizeof(str_code)); + EVENT_TYPE event = validate_pc_signature(str_code); + if (event != LICENSE_OK) { + er.addEvent(event, SVRT_ERROR); } } return er; @@ -105,7 +116,7 @@ ini.Reset(); SI_Error rc = ini.LoadFile((*it).c_str()); if (rc < 0) { - result.addEvent(FILE_FORMAT_NOT_RECOGNIZED, SEVERITY_WARN, *it); + result.addEvent(FILE_FORMAT_NOT_RECOGNIZED, SVRT_WARN, *it); continue; } else { loadAtLeastOneFile = true; @@ -113,7 +124,7 @@ const char* productNamePtr = product.c_str(); int sectionSize = ini.GetSectionSize(productNamePtr); if (sectionSize <= 0) { - result.addEvent(PRODUCT_NOT_LICENSED, SEVERITY_WARN, *it); + result.addEvent(PRODUCT_NOT_LICENSED, SVRT_WARN, *it); continue; } else { atLeastOneProductLicensed = true; @@ -123,7 +134,7 @@ * sw_version_to = (optional int) * from_date = YYYY-MM-DD (optional) * to_date = YYYY-MM-DD (optional) - * client_signature = XXXXXXXX (optional string 16) + * client_signature = XXXX-XXXX-XXXX-XXXX (optional string 16) * license_signature = XXXXXXXXXX (mandatory, 1024) * application_data = xxxxxxxxx (optional string 16) */ @@ -138,12 +149,22 @@ string to_date = trim_copy( ini.GetValue(productNamePtr, "to_date", FullLicenseInfo::UNUSED_TIME)); + string client_signature = trim_copy( + ini.GetValue(productNamePtr, "client_signature", "")); + /*client_signature.erase( + std::remove(client_signature.begin(), client_signature.end(), '-'), + client_signature.end());*/ + int from_sw_version = ini.GetLongValue(productNamePtr, + "from_sw_version", FullLicenseInfo::UNUSED_SOFTWARE_VERSION); + int to_sw_version = ini.GetLongValue(productNamePtr, + "to_sw_version", FullLicenseInfo::UNUSED_SOFTWARE_VERSION); FullLicenseInfo licInfo(*it, product, license_signature, - (int) license_version, from_date, to_date); + (int) license_version, from_date, to_date, + client_signature,from_sw_version,to_sw_version); licenseInfoOut.push_back(licInfo); atLeastOneLicenseComplete = true; } else { - result.addEvent(LICENSE_MALFORMED, SEVERITY_WARN, *it); + result.addEvent(LICENSE_MALFORMED, SVRT_WARN, *it); } } if (!loadAtLeastOneFile) { @@ -174,11 +195,11 @@ for (auto it = existing_pos.begin(); it != existing_pos.end(); ++it) { diskFiles.push_back(*it); - eventRegistry.addEvent(LICENSE_FILE_FOUND, INFO, *it); + eventRegistry.addEvent(LICENSE_FILE_FOUND, SVRT_INFO, *it); } } } else { - eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SEVERITY_WARN, + eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SVRT_WARN, varName); } } @@ -204,19 +225,19 @@ for (auto it = existing_pos.begin(); it != existing_pos.end(); ++it) { diskFiles.push_back(*it); - eventRegistry.addEvent(LICENSE_FILE_FOUND, INFO, *it); + eventRegistry.addEvent(LICENSE_FILE_FOUND, SVRT_INFO, *it); } } else { eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, - SEVERITY_WARN, env_var_value); + SVRT_WARN, env_var_value); } } else { eventRegistry.addEvent(ENVIRONMENT_VARIABLE_NOT_DEFINED, - SEVERITY_WARN); + SVRT_WARN); } } else { eventRegistry.addEvent(ENVIRONMENT_VARIABLE_NOT_DEFINED, - SEVERITY_WARN); + SVRT_WARN); } } return licenseFileFoundWithEnvVariable; @@ -233,9 +254,9 @@ if (f.good()) { foundNearModule = true; diskFiles.push_back(temptativeLicense); - eventRegistry.addEvent(LICENSE_FILE_FOUND, INFO, temptativeLicense); + eventRegistry.addEvent(LICENSE_FILE_FOUND, SVRT_INFO, temptativeLicense); } else { - eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SEVERITY_WARN, + eventRegistry.addEvent(LICENSE_FILE_NOT_FOUND, SVRT_WARN, temptativeLicense); } f.close(); -- Gitblit v1.9.1