From 36ce07093b68b07513149577c209ae7a57ab356b Mon Sep 17 00:00:00 2001
From: Gabriele Contini <contini.mailing@gmail.com>
Date: 周日, 15 3月 2020 16:26:21 +0800
Subject: [PATCH] Merge branch 'feature/pc_identifiers' into develop issues #2 #3 #14 #49

---
 src/templates/licensecc_properties.h.in |   67 +++++++++++++++++++++++++++++++--
 1 files changed, 62 insertions(+), 5 deletions(-)

diff --git a/src/templates/licensecc_properties.h.in b/src/templates/licensecc_properties.h.in
index c1af888..b8026f9 100644
--- a/src/templates/licensecc_properties.h.in
+++ b/src/templates/licensecc_properties.h.in
@@ -1,17 +1,74 @@
 #ifndef BUILD_PROPERTIES_H_
 #define BUILD_PROPERTIES_H_
 
+/**
+ * This file contains all the properties that are customizable on on a per-project basis eg:
+ * 1) api parameter sizes
+ * 2) 
+ *
+ * It is safe to place the values that your project need to customize here, since each project get its own copy of this
+ * file.
+ */
+
 #define LCC_PROJECT_NAME "@LCC_PROJECT_NAME@"
 
 //License retrieval configuration
 #define FIND_LICENSE_NEAR_MODULE true
 #define FIND_LICENSE_WITH_ENV_VAR false
 
-#define LICENSE_FILE_EXTENSION ".lic"
-#define LICENSE_LOCATION_ENV_VAR "LICENSE_LOCATION"
-#define LICENSE_DATA_ENV_VAR "LICENSE_DATA"
+/**
+ * License file name extension
+ */
+#define LCC_LICENSE_FILE_EXTENSION ".lic"
+#define LCC_LICENSE_LOCATION_ENV_VAR "LICENSE_LOCATION"
+#define LCC_LICENSE_DATA_ENV_VAR "LICENSE_DATA"
+/**
+ * Environment variable that if defined will change the identification strategy used to generate the hardware identifier.
+ * If a client has an unstable pc-identifier use this variable to generate one. 
+ * Valid values are integers defined in `LCC_IDENTIFICATION_STRATEGY` enum.
+ */
+#define LCC_IDENTIFICATION_STRATEGY_ENV_VAR "IDENTIFICATION_STRATEGY"
 
-//Internal data structures limits
-#define MAX_LICENSE_LENGTH 256*1024
+/**
+ * Enum to select a specific pc identification_strategy. DEFAULT Should be used in most cases.
+ */
+typedef enum {
+	STRATEGY_DEFAULT = -1,
+	STRATEGY_ETHERNET = 0,
+	STRATEGY_IP_ADDRESS = 1,
+	STRATEGY_DISK_NUM = 2,
+	STRATEGY_DISK_LABEL = 3,
+	STRATEGY_MEMORY_CPU_SIZE = 4,
+	STRATEGY_HOST_NAME = 5,
+	STRATEGY_NONE = -2
+} LCC_API_IDENTIFICATION_STRATEGY;
+
+//strategies used for each virtual environment.
+#define LCC_BARE_TO_METAL_STRATEGIES { STRATEGY_ETHERNET, STRATEGY_DISK_LABEL, STRATEGY_NONE }
+#define LCC_VM_STRATEGIES { STRATEGY_ETHERNET, STRATEGY_NONE }
+#define LCC_LXC_STRATEGIES { STRATEGY_ETHERNET, STRATEGY_NONE }
+#define LCC_DOCKER_STRATEGIES { STRATEGY_NONE }
+#define LCC_CLOUD_STRATEGIES { STRATEGY_NONE }
+
+//Api structure limits
+/**
+ * Maximum size of a license file or base64 data
+ */
+#define LCC_API_MAX_LICENSE_DATA_LENGTH 1024 * 4
+
+// define api structure sizes
+#define LCC_API_PC_IDENTIFIER_SIZE 19
+#define LCC_API_PROPRIETARY_DATA_SIZE 16
+#define LCC_API_AUDIT_EVENT_NUM 5
+#define LCC_API_AUDIT_EVENT_PARAM2 255
+#define LCC_API_VERSION_LENGTH 15
+#define LCC_API_PROJECT_NAME_SIZE 15
+#define LCC_API_EXPIRY_DATE_SIZE 10
+#define LCC_API_ERROR_BUFFER_SIZE 256
+
+/**
+This definition allows to specify a custom expression to verify the magic number passed in by the api.
+*/
+#define LCC_VERIFY_MAGIC (lic_info.m_magic == @LCC_PROJECT_MAGIC_NUM@)
 
 #endif

--
Gitblit v1.9.1