| | |
| | | #include <stdio.h> |
| | | #include <stdlib.h> |
| | | #include <cstring> |
| | | |
| | | #include "api/license++.h" |
| | | #include "reader/LicenseReader.h" |
| | | |
| | | #include "LicenseReader.hpp" |
| | | |
| | | using namespace std; |
| | | DllExport void print_error(char out_buffer[256], LicenseInfo* licenseInfo) { |
| | | void print_error(char out_buffer[256], LicenseInfo* licenseInfo) { |
| | | |
| | | } |
| | | |
| | | DllExport void identify_pc(IDENTIFICATION_STRATEGY pc_id_method, |
| | | char chbuffer[PC_IDENTIFIER_SIZE + 1]) { |
| | | void identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char chbuffer[PC_IDENTIFIER_SIZE + 1]) { |
| | | |
| | | } |
| | | |
| | | static void mergeLicenses(vector<license::FullLicenseInfo> licenses, |
| | | LicenseInfo* license) { |
| | | if (license != NULL) { |
| | | if (license != nullptr) { |
| | | time_t curLicense_exp = 0; |
| | | for (auto it = licenses.begin(); it != licenses.end(); it++) { |
| | | //choose the license that expires later... |
| | | if (!it->has_expiry) { |
| | | it->toLicenseInfo(license); |
| | | break; |
| | | } else if (curLicense_exp < it->to_date) { |
| | | curLicense_exp = it->to_date; |
| | | } else if (curLicense_exp < it->expires_on()) { |
| | | curLicense_exp = it->expires_on(); |
| | | it->toLicenseInfo(license); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | EVENT_TYPE acquire_license(char * product, LicenseLocation licenseLocation, |
| | | LicenseInfo* license) { |
| | | EVENT_TYPE acquire_license(const char * product, |
| | | LicenseLocation licenseLocation, LicenseInfo* license) { |
| | | license::LicenseReader lr = license::LicenseReader(licenseLocation); |
| | | vector<license::FullLicenseInfo> licenses; |
| | | license::EventRegistry er = lr.readLicenses(string(product), licenses); |
| | |
| | | vector<license::FullLicenseInfo> licenses_ok; |
| | | for (auto it = licenses.begin(); it != licenses.end(); it++) { |
| | | license::EventRegistry validation_er = it->validate(0); |
| | | if (er.isGood()) { |
| | | if (validation_er.isGood()) { |
| | | licenses_ok.push_back(*it); |
| | | } else { |
| | | licenses_with_errors.push_back(*it); |
| | |
| | | } else { |
| | | result = er.getLastFailure()->event_type; |
| | | } |
| | | if (license != NULL) { |
| | | if (license != nullptr) { |
| | | er.exportLastEvents(license->status, 5); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | DllExport enum EVENT_TYPE confirm_license(char * product, |
| | | EVENT_TYPE confirm_license(char * product, |
| | | LicenseLocation licenseLocation) { |
| | | return LICENSE_OK; |
| | | } |
| | | |
| | | DllExport enum EVENT_TYPE release_license(char * product, |
| | | EVENT_TYPE release_license(char * product, |
| | | LicenseLocation licenseLocation) { |
| | | return LICENSE_OK; |
| | | } |