From 7d8713e88c7872b195f7e4d02ac4812536ae196b Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Tue, 22 Sep 2015 13:53:51 +0000
Subject: [PATCH] #2756 feature - Added lic activation using activationCode

---
 src/main/java/net/curisit/securis/LicenseManager.java |   75 ++++++++++++++++++++++++++-----------
 1 files changed, 52 insertions(+), 23 deletions(-)

diff --git a/src/main/java/net/curisit/securis/LicenseManager.java b/src/main/java/net/curisit/securis/LicenseManager.java
index 49fb807..01625fc 100644
--- a/src/main/java/net/curisit/securis/LicenseManager.java
+++ b/src/main/java/net/curisit/securis/LicenseManager.java
@@ -38,7 +38,8 @@
 	public static final String HEADER_LICENSE_NAME_OR_REFERENCE = "X-SECURIS-LIC-NAMEREF";
 	public static final String HEADER_LICENSE_EMAIL = "X-SECURIS-LIC-EMAIL";
 
-	private LicenseManager() {}
+	private LicenseManager() {
+	}
 
 	public static LicenseManager getInstance() {
 		return singleton;
@@ -62,7 +63,8 @@
 	}
 
 	/**
-	 * Validates the license stored in {@code licFile} and get the corresponding LicenseBean
+	 * Validates the license stored in {@code licFile} and get the corresponding
+	 * LicenseBean
 	 * <p>
 	 * The validation includes:
 	 * <ul>
@@ -82,7 +84,8 @@
 	}
 
 	/**
-	 * Validates the license stored in {@code licFile} and get the corresponding LicenseBean. The License date is not validated
+	 * Validates the license stored in {@code licFile} and get the corresponding
+	 * LicenseBean. The License date is not validated
 	 * <p>
 	 * The validation includes:
 	 * <ul>
@@ -99,7 +102,12 @@
 	public LicenseBean validateLicense(File licFile, boolean excludeDateValidation) throws SeCurisException {
 		LicenseBean licBean = load(licFile);
 		SignatureHelper.getInstance().validateSignature(licBean);
-		LicenseValidator.getInstance().validateHW(licBean, Params.get(Params.KEYS.LIC_TYPE_CODE, Params.get(Params.KEYS.APPLICATION_CODE)), Params.get(Params.KEYS.CUSTOMER_CODE), Params.get(Params.KEYS.PACK_CODE));
+		if (licBean.getActivationCode() != null) {
+			LicenseValidator.getInstance().validateHW(licBean, Params.get(Params.KEYS.APPLICATION_CODE), licBean.getActivationCode());
+		} else {
+			LicenseValidator.getInstance().validateHW(licBean, Params.get(Params.KEYS.LIC_TYPE_CODE, Params.get(Params.KEYS.APPLICATION_CODE)),
+					Params.get(Params.KEYS.CUSTOMER_CODE), Params.get(Params.KEYS.PACK_CODE));
+		}
 		LicenseValidator.getInstance().validateLogo(licBean);
 
 		if (!excludeDateValidation) {
@@ -118,7 +126,21 @@
 	 * @throws SeCurisException
 	 */
 	public SignedLicenseBean requestLicense(String nameOrReference, String email) throws SeCurisException {
-		RequestBean req = ReqGenerator.getInstance().createRequest(Params.get(Params.KEYS.LIC_TYPE_CODE, Params.get(Params.KEYS.APPLICATION_CODE)), Params.get(Params.KEYS.CUSTOMER_CODE), Params.get(Params.KEYS.PACK_CODE));
+		RequestBean req = ReqGenerator.getInstance().createRequest(Params.get(Params.KEYS.LIC_TYPE_CODE, Params.get(Params.KEYS.APPLICATION_CODE)),
+				Params.get(Params.KEYS.CUSTOMER_CODE), Params.get(Params.KEYS.PACK_CODE));
+
+		SignedLicenseBean lic = requestLicenseToServer(req, nameOrReference, email);
+		return lic;
+	}
+
+	/**
+	 * Request to server for a valid license
+	 * 
+	 * @return The license bean returned by the server
+	 * @throws SeCurisException
+	 */
+	public SignedLicenseBean requestLicense(String nameOrReference, String email, String activationCode) throws SeCurisException {
+		RequestBean req = ReqGenerator.getInstance().createRequest(Params.get(Params.KEYS.APPLICATION_CODE), activationCode);
 
 		SignedLicenseBean lic = requestLicenseToServer(req, nameOrReference, email);
 		return lic;
@@ -170,7 +192,8 @@
 	}
 
 	/**
-	 * Creates a new request file with current hardware in the File passed as parameter
+	 * Creates a new request file with current hardware in the File passed as
+	 * parameter
 	 * 
 	 * @param outputRequestFile
 	 *            File where the request data will be saved
@@ -178,7 +201,8 @@
 	 * @throws SeCurisException
 	 */
 	public RequestBean createRequestFile(File outputRequestFile) throws SeCurisException {
-		RequestBean req = ReqGenerator.getInstance().createRequest(Params.get(Params.KEYS.LIC_TYPE_CODE, Params.get(Params.KEYS.APPLICATION_CODE)), Params.get(Params.KEYS.CUSTOMER_CODE), Params.get(Params.KEYS.PACK_CODE));
+		RequestBean req = ReqGenerator.getInstance().createRequest(Params.get(Params.KEYS.LIC_TYPE_CODE, Params.get(Params.KEYS.APPLICATION_CODE)),
+				Params.get(Params.KEYS.CUSTOMER_CODE), Params.get(Params.KEYS.PACK_CODE));
 
 		ReqGenerator.getInstance().save(req, outputRequestFile);
 
@@ -186,11 +210,30 @@
 	}
 
 	/**
-	 * Send the current license file to server, which is previously validated, to get a renewed one if it is prepared in server side.
+	 * Creates a new request file with current hardware in the File passed as
+	 * parameter
+	 * 
+	 * @param outputRequestFile
+	 *            File where the request data will be saved
+	 * @return The generated request bean
+	 * @throws SeCurisException
+	 */
+	public RequestBean createRequestFile(File outputRequestFile, String activationCode) throws SeCurisException {
+		RequestBean req = ReqGenerator.getInstance().createRequest(Params.get(Params.KEYS.APPLICATION_CODE), activationCode);
+
+		ReqGenerator.getInstance().save(req, outputRequestFile);
+
+		return req;
+	}
+
+	/**
+	 * Send the current license file to server, which is previously validated,
+	 * to get a renewed one if it is prepared in server side.
 	 * 
 	 * @param licenseFile
 	 *            Current and valid License file
-	 * @return New license bean if server creates a new one, otherwise the same current License bean will be returned
+	 * @return New license bean if server creates a new one, otherwise the same
+	 *         current License bean will be returned
 	 * @throws SeCurisException
 	 */
 	public SignedLicenseBean renew(File licenseFile) throws SeCurisException {
@@ -220,18 +263,4 @@
 		}
 	}
 
-	public static void main(String[] args) throws SeCurisException {
-		String filename  = "/Users/rob/.doxr/doxr.lic";
-
-		if (filename == null)
-			filename = "./license.req";
-		File file = new File(filename);
-		LicenseManager.getInstance().validateLicense(file);
-		LOG.info("Validation Ok");
-		String r = "{\"licenseTypeCode\":\"DX01\",\"packCode\":\"DEVDX01\",\"arch\":\"x86_64\",\"osName\":\"darwin\",\"customerCode\":\"CIT\",\"macAddresses\":[\"60:c5:47:03:cf:c8\",\"b2:00:12:b6:88:e0\"]}";
-		RequestBean rb = JsonUtils.json2object(r, RequestBean.class);
-		System.out.println(rb);
-		LOG.info("Request file {} generated OK", file.getAbsolutePath());
-
-	}
 }

--
Gitblit v1.3.2