From 263a0f6f6f0cdedd563bb7ae9723db6b096486b2 Mon Sep 17 00:00:00 2001 From: Gabriele Contini <contini.mailing@gmail.com> Date: 周六, 19 10月 2019 08:50:45 +0800 Subject: [PATCH] issue #64 , issue #56 (part) --- src/library/api/datatypes.h | 108 +++++++++++++++++++++++++++++++++--------------------- 1 files changed, 66 insertions(+), 42 deletions(-) diff --git a/src/library/api/datatypes.h b/src/library/api/datatypes.h index fb730c1..439f477 100644 --- a/src/library/api/datatypes.h +++ b/src/library/api/datatypes.h @@ -1,91 +1,109 @@ #ifndef DATATYPES_H_ #define DATATYPES_H_ -/* - * This include file is the public api di License++ - * You should include this file if your software don't plan to use - * the part of the library dealing with features. - * Otherwise licensepp-features.h should be included. - */ #ifdef __cplusplus extern "C" { #endif +//definition of size_t +#include <stdlib.h> +#ifndef _MSC_VER +#include <stdbool.h> +#endif + #ifdef __unix__ #define DllExport -#define MAX_PATH 1024 +#ifndef MAX_PATH + #define MAX_PATH 1024 +#endif #else #include <windows.h> #define DllExport __declspec( dllexport ) #endif -#define ENVIRONMENT_VAR_NAME_MAX 64 + #define PC_IDENTIFIER_SIZE 18 #define PROPRIETARY_DATA_SIZE 16 +#define AUDIT_EVENT_NUM 5 -#define LICENESE_INT_VERSION 100 -#define LICENSEPP_VERSION "1.0.0" +#define LICENESE_INT_VERSION 110 +#define LICENSEPP_VERSION "1.1.0" -enum EVENT_TYPE { - LICENSE_OK = 0, //OK +typedef enum { + LICENSE_OK = 0, //OK LICENSE_FILE_NOT_FOUND = 1, //license file not found LICENSE_SERVER_NOT_FOUND = 2, //license server can't be contacted ENVIRONMENT_VARIABLE_NOT_DEFINED = 3, //environment variable not defined - FILE_FORMAT_NOT_RECOGNIZED = 4, //license file has invalid format (not .ini file) - LICENSE_MALFORMED = 5, //some mandatory field are missing, or data can't be fully read. + FILE_FORMAT_NOT_RECOGNIZED = 4, //license file has invalid format (not .ini file) + LICENSE_MALFORMED = 5, //some mandatory field are missing, or data can't be fully read. PRODUCT_NOT_LICENSED = 6, //this product was not licensed PRODUCT_EXPIRED = 7, LICENSE_CORRUPTED = 8, //License signature didn't match with current license IDENTIFIERS_MISMATCH = 9, //Calculated identifier and the one provided in license didn't match - LICENSE_FILE_FOUND = 100, - LICENSE_VERIFIED = 101 + LICENSE_SPECIFIED = 100, //license location was specified + LICENSE_FOUND = 101, //License file has been found or license data has been located + PRODUCT_FOUND = 102, //License has been loaded and the declared product has been found + SIGNATURE_VERIFIED = 103 -}; +} EVENT_TYPE; -enum LICENSE_TYPE { +typedef enum { LOCAL, REMOTE //remote licenses are not supported now. -}; +} LICENSE_TYPE; -enum SEVERITY { - INFO, SEVERITY_WARN, SEVERITY_ERROR -}; - - - -struct AuditEvent { - SEVERITY severity; - EVENT_TYPE event_type; - char param1[256]; - char param2[256]; -}; +typedef enum { + SVRT_INFO, SVRT_WARN, SVRT_ERROR +} SEVERITY; typedef struct { + SEVERITY severity; + EVENT_TYPE event_type; + /** + * License file name or location where the license is stored. + */ + char license_reference[MAX_PATH]; + char param2[256]; +} AuditEvent; + +/** + * This structure contains informations on the raw license data. Software authors + * can specify the location of the license file or its full content. + * + * Can be NULL, in this case OpenLicenseManager will try to figure out the + * license file location on its own. + */ +typedef struct { + /** + * A list of absolute path separated by ';' containing the eventual location + * of the license files. Can be NULL. + */ const char *licenseFileLocation; - const char *environmentVariableName; - bool openFileNearModule; + /** + * The application can provide the full license content through this string. + * It can be both in encoded form (base64) or in plain. It's optional. + */ + const char *licenseData; } LicenseLocation; typedef struct { /** * Detailed reason of success/failure. Reasons for a failure can be * multiple (for instance, license expired and signature not verified). - * Only the last 5 are reported. + * Only the last AUDIT_EVENT_NUM are reported. */ - AuditEvent status[5]; + AuditEvent status[AUDIT_EVENT_NUM]; /** * Eventual expiration date of the software, * can be '\0' if the software don't expire * */ char expiry_date[11]; - unsigned int days_left; - bool has_expiry; - bool linked_to_pc; + unsigned int days_left;bool has_expiry;bool linked_to_pc; LICENSE_TYPE license_type; // Local or Remote /* A string of character inserted into the license understood * by the calling application. * '\0' if the application didn't specify one */ - char proprietary_data[PROPRIETARY_DATA_SIZE+1]; + char proprietary_data[PROPRIETARY_DATA_SIZE + 1]; int license_version; //license file version } LicenseInfo; @@ -93,9 +111,15 @@ * Enum to select a specific pc identification_strategy. DEFAULT Should be used * in most cases. */ -enum IDENTIFICATION_STRATEGY { - DEFAULT, ETHERNET, IP_ADDRESS, DISK_NUM, DISK_LABEL -}; +typedef enum { + DEFAULT, + ETHERNET, + IP_ADDRESS, + DISK_NUM, + DISK_LABEL, + PLATFORM_SPECIFIC, + STRATEGY_UNKNOWN +} IDENTIFICATION_STRATEGY; #ifdef __cplusplus } -- Gitblit v1.9.1