From a99c9ec291c889667a61240c46005ffa2164e40e Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Wed, 29 Jun 2016 10:31:58 +0000
Subject: [PATCH] #0 fix - Fixed CLI to use activation code
---
src/main/java/net/curisit/securis/LicenseManager.java | 469 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 245 insertions(+), 224 deletions(-)
diff --git a/src/main/java/net/curisit/securis/LicenseManager.java b/src/main/java/net/curisit/securis/LicenseManager.java
index 29f79dd..df475eb 100644
--- a/src/main/java/net/curisit/securis/LicenseManager.java
+++ b/src/main/java/net/curisit/securis/LicenseManager.java
@@ -10,6 +10,10 @@
import java.util.HashMap;
import java.util.Map;
+import org.apache.commons.io.FileUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
import net.curisit.securis.ConnectionManager.Command;
import net.curisit.securis.beans.LicenseBean;
import net.curisit.securis.beans.RequestBean;
@@ -19,10 +23,6 @@
import net.curisit.securis.utils.Params;
import net.curisit.securis.utils.SignatureHelper;
-import org.apache.commons.io.FileUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
/**
* Manage all licenses tasks, just like validation, renew, requesting, ...
*
@@ -30,257 +30,278 @@
*/
public class LicenseManager {
- private static final Logger LOG = LogManager.getLogger(LicenseManager.class);
+ private static final Logger LOG = LogManager.getLogger(LicenseManager.class);
- private static LicenseManager singleton = new LicenseManager();
+ private static LicenseManager singleton = new LicenseManager();
- public static final String PING_MESSAGE = "SeCuris API OK";
- public static final String HEADER_LICENSE_NAME_OR_REFERENCE = "X-SECURIS-LIC-NAMEREF";
- public static final String HEADER_LICENSE_EMAIL = "X-SECURIS-LIC-EMAIL";
+ public static final String PING_MESSAGE = "SeCuris API OK";
+ 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;
- }
+ public static LicenseManager getInstance() {
+ return singleton;
+ }
- /**
- * Loads a license from file
- *
- * @param licFile
- * @return The license bean
- * @throws SeCurisException
- */
- public LicenseBean load(File licFile) throws SeCurisException {
- LicenseBean licBean;
- try {
- licBean = JsonUtils.json2object(FileUtils.readFileToString(licFile), LicenseBean.class);
- } catch (IOException e) {
- throw new SeCurisException("Error getting license data from file: " + licFile, e);
- }
- return licBean;
- }
+ /**
+ * Loads a license from file
+ *
+ * @param licFile
+ * @return The license bean
+ * @throws SeCurisException
+ */
+ public LicenseBean load(File licFile) throws SeCurisException {
+ LicenseBean licBean;
+ try {
+ licBean = JsonUtils.json2object(FileUtils.readFileToString(licFile), LicenseBean.class);
+ } catch (IOException e) {
+ throw new SeCurisException("Error getting license data from file: " + licFile, e);
+ }
+ return licBean;
+ }
- /**
- * Validates the license stored in {@code licFile} and get the corresponding
- * LicenseBean
- * <p>
- * The validation includes:
- * <ul>
- * <li>Signature</li>
- * <li>HW data</li>
- * <li>Logo CRC</li>
- * </ul>
- * </p>
- *
- * @param licFile
- * @return The license bean stored in file
- * @throws SeCurisException
- */
- public LicenseBean validateLicense(File licFile) throws SeCurisException {
+ /**
+ * Validates the license stored in {@code licFile} and get the corresponding
+ * LicenseBean
+ * <p>
+ * The validation includes:
+ * <ul>
+ * <li>Signature</li>
+ * <li>HW data</li>
+ * <li>Logo CRC</li>
+ * </ul>
+ * </p>
+ *
+ * @param licFile
+ * @return The license bean stored in file
+ * @throws SeCurisException
+ */
+ public LicenseBean validateLicense(File licFile) throws SeCurisException {
- return validateLicense(licFile, false);
- }
+ return validateLicense(licFile, false);
+ }
- /**
- * Validates the license stored in {@code licFile} and get the corresponding
- * LicenseBean. The License date is not validated
- * <p>
- * The validation includes:
- * <ul>
- * <li>Signature</li>
- * <li>HW data</li>
- * <li>Logo CRC</li>
- * </ul>
- * </p>
- *
- * @param licFile
- * @return The license bean stored in file
- * @throws SeCurisException
- */
- public LicenseBean validateLicense(File licFile, boolean excludeDateValidation) throws SeCurisException {
- LicenseBean licBean = load(licFile);
- SignatureHelper.getInstance().validateSignature(licBean);
- 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);
+ /**
+ * Validates the license stored in {@code licFile} and get the corresponding
+ * LicenseBean. The License date is not validated
+ * <p>
+ * The validation includes:
+ * <ul>
+ * <li>Signature</li>
+ * <li>HW data</li>
+ * <li>Logo CRC</li>
+ * </ul>
+ * </p>
+ *
+ * @param licFile
+ * @return The license bean stored in file
+ * @throws SeCurisException
+ */
+ public LicenseBean validateLicense(File licFile, boolean excludeDateValidation) throws SeCurisException {
+ LicenseBean licBean = load(licFile);
+ SignatureHelper.getInstance().validateSignature(licBean);
+ 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) {
- if (new Date().after(licBean.getExpirationDate())) {
- throw new ExpiredLicenseException();
- }
- }
+ if (!excludeDateValidation) {
+ if (new Date().after(licBean.getExpirationDate())) {
+ throw new ExpiredLicenseException();
+ }
+ }
- return licBean;
- }
+ return licBean;
+ }
- /**
- * Request to server for a valid license
- *
- * @return The license bean returned by the server
- * @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));
+ /**
+ * Request to server for a valid license
+ *
+ * @return The license bean returned by the server
+ * @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));
- SignedLicenseBean lic = requestLicenseToServer(req, nameOrReference, email);
- return lic;
- }
+ 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);
+ /**
+ * 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;
- }
+ 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 activationCode) throws SeCurisException {
- return requestLicense(null, null, activationCode);
- }
+ /**
+ * Request to server for a valid license
+ *
+ * @return The license bean returned by the server
+ * @throws SeCurisException
+ */
+ public SignedLicenseBean requestLicense(String activationCode) throws SeCurisException {
+ return requestLicense(null, null, activationCode);
+ }
- /**
- * Generate a license file using a {@link LicenseBean}
- *
- * @param license
- * @param file
- * @throws SeCurisException
- */
- public void save(LicenseBean license, File file) throws SeCurisException {
- SignedLicenseBean signedLic = new SignedLicenseBean(license);
- save(signedLic, file);
- }
+ /**
+ * Generate a license file using a {@link LicenseBean}
+ *
+ * @param license
+ * @param file
+ * @throws SeCurisException
+ */
+ public void save(LicenseBean license, File file) throws SeCurisException {
+ SignedLicenseBean signedLic = new SignedLicenseBean(license);
+ save(signedLic, file);
+ }
- /**
- * Generate a license file using a {@link LicenseBean}
- *
- * @param license
- * @param file
- * @throws SeCurisException
- */
- public void save(SignedLicenseBean signedLic, File file) throws SeCurisException {
- byte[] json;
- try {
- json = JsonUtils.toPrettyJSON(signedLic).getBytes("utf-8");
- Files.write(Paths.get(file.toURI()), json, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
- } catch (UnsupportedEncodingException e) {
- LOG.error("Error creating json doc from license: " + signedLic, e);
- throw new SeCurisException("Error creating json doc from license: " + signedLic, e);
- } catch (IOException e) {
- LOG.error("Error creating license file: " + file, e);
- throw new SeCurisException("Error creating json doc from license: " + signedLic, e);
- }
+ /**
+ * Generate a license file using a {@link LicenseBean}
+ *
+ * @param license
+ * @param file
+ * @throws SeCurisException
+ */
+ public void save(SignedLicenseBean signedLic, File file) throws SeCurisException {
+ byte[] json;
+ try {
+ json = JsonUtils.toPrettyJSON(signedLic).getBytes("utf-8");
+ Files.write(Paths.get(file.toURI()), json, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
+ } catch (UnsupportedEncodingException e) {
+ LOG.error("Error creating json doc from license: " + signedLic, e);
+ throw new SeCurisException("Error creating json doc from license: " + signedLic, e);
+ } catch (IOException e) {
+ LOG.error("Error creating license file: " + file, e);
+ throw new SeCurisException("Error creating json doc from license: " + signedLic, e);
+ }
- LOG.debug("License saved in {}", file);
+ LOG.debug("License saved in {}", file);
- }
+ }
- private SignedLicenseBean requestLicenseToServer(RequestBean req, String nameOrReference, String email) throws SeCurisException {
- Map<String, String> headers = new HashMap<String, String>();
- headers.put(HEADER_LICENSE_NAME_OR_REFERENCE, nameOrReference);
- headers.put(HEADER_LICENSE_EMAIL, email);
- SignedLicenseBean lic = ConnectionManager.getInstance().executePost(Command.CREATE_LIC, SignedLicenseBean.class, req, headers);
+ private SignedLicenseBean requestLicenseToServer(RequestBean req, String nameOrReference, String email) throws SeCurisException {
+ Map<String, String> headers = new HashMap<String, String>();
+ headers.put(HEADER_LICENSE_NAME_OR_REFERENCE, nameOrReference);
+ headers.put(HEADER_LICENSE_EMAIL, email);
+ SignedLicenseBean lic = ConnectionManager.getInstance().executePost(Command.CREATE_LIC, SignedLicenseBean.class, req, headers);
- return lic;
- }
+ return lic;
+ }
- /**
- * 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) 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));
+ /**
+ * 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) 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));
- ReqGenerator.getInstance().save(req, outputRequestFile);
+ ReqGenerator.getInstance().save(req, outputRequestFile);
- return req;
- }
+ return req;
+ }
- /**
- * 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);
+ /**
+ * 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 {
+ return createRequestFile(outputRequestFile, activationCode, null);
+ }
- ReqGenerator.getInstance().save(req, outputRequestFile);
+ /**
+ * Creates a new request file with current hardware in the File passed as
+ * parameter
+ *
+ * @param outputRequestFile
+ * File where the request data will be saved
+ *
+ * @param activationCode
+ * Activation code provided be SeCurisadministrator
+ * @param appCode
+ * Application code to use, ignoring the code set in config file
+ * @return The generated request bean
+ * @throws SeCurisException
+ */
+ public RequestBean createRequestFile(File outputRequestFile, String activationCode, String appCode) throws SeCurisException {
+ if (appCode == null) {
+ Params.get(Params.KEYS.APPLICATION_CODE);
+ }
+ RequestBean req = ReqGenerator.getInstance().createRequest(appCode, activationCode);
- return req;
- }
+ ReqGenerator.getInstance().save(req, outputRequestFile);
- /**
- * 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
- * @throws SeCurisException
- */
- public SignedLicenseBean renew(File licenseFile) throws SeCurisException {
- LicenseBean lic = validateLicense(licenseFile, true);
+ return req;
+ }
- SignedLicenseBean newLic = ConnectionManager.getInstance().executePost(Command.RENEW_LIC, SignedLicenseBean.class, lic);
+ /**
+ * 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
+ * @throws SeCurisException
+ */
+ public SignedLicenseBean renew(File licenseFile) throws SeCurisException {
+ LicenseBean lic = validateLicense(licenseFile, true);
- return newLic;
- }
+ SignedLicenseBean newLic = ConnectionManager.getInstance().executePost(Command.RENEW_LIC, SignedLicenseBean.class, lic);
- /**
- * Check on SeCuris server if current license is still valid in server DB.
- *
- * @param licenseFile
- * @throws SeCurisException
- */
- public void assertLicenseIsValid(File licenseFile) throws SeCurisException, IOException {
- LicenseBean lic = validateLicense(licenseFile);
- // We need to snd the signed version to validate signature on server
- ConnectionManager.getInstance().executePost(Command.VALIDATE, LicenseBean.class, new SignedLicenseBean(lic));
- }
+ return newLic;
+ }
- public void testServer() throws SeCurisException {
- StatusBean status = ConnectionManager.getInstance().executeGet(Command.TEST, StatusBean.class);
- if (!PING_MESSAGE.equals(status.getMessage())) {
- throw new SeCurisException("SeCuris Server is not running in given URL");
- }
- }
+ /**
+ * Check on SeCuris server if current license is still valid in server DB.
+ *
+ * @param licenseFile
+ * @throws SeCurisException
+ */
+ public void assertLicenseIsValid(File licenseFile) throws SeCurisException, IOException {
+ LicenseBean lic = validateLicense(licenseFile);
+ // We need to snd the signed version to validate signature on server
+ ConnectionManager.getInstance().executePost(Command.VALIDATE, LicenseBean.class, new SignedLicenseBean(lic));
+ }
- public static void main(String[] args) throws SeCurisException {
- System.out.println("APPLICATION_CODE: " + Params.get(Params.KEYS.APPLICATION_CODE));
- System.out.println("LICENSE_SERVER_URL: " + Params.get(Params.KEYS.LICENSE_SERVER_URL));
- LicenseManager lm = LicenseManager.getInstance();
- // LicenseBean lic =
- // lm.requestLicense("aaf88d6c-6622-492a-93ec-10f3d1dc7120");
- LicenseBean lic = lm.requestLicense("Rob", "rsanchez@curisit.net");
- System.out.println(lic.getLicenseCode() + " " + lic.getExpirationDate());
- // LicenseBean lic = lm.
- }
+ public void testServer() throws SeCurisException {
+ StatusBean status = ConnectionManager.getInstance().executeGet(Command.TEST, StatusBean.class);
+ if (!PING_MESSAGE.equals(status.getMessage())) {
+ throw new SeCurisException("SeCuris Server is not running in given URL");
+ }
+ }
+
+ public static void main(String[] args) throws SeCurisException {
+ System.out.println("APPLICATION_CODE: " + Params.get(Params.KEYS.APPLICATION_CODE));
+ System.out.println("LICENSE_SERVER_URL: " + Params.get(Params.KEYS.LICENSE_SERVER_URL));
+ LicenseManager lm = LicenseManager.getInstance();
+ // LicenseBean lic =
+ // lm.requestLicense("aaf88d6c-6622-492a-93ec-10f3d1dc7120");
+ LicenseBean lic = lm.requestLicense("Rob", "rsanchez@curisit.net");
+ System.out.println(lic.getLicenseCode() + " " + lic.getExpirationDate());
+ // LicenseBean lic = lm.
+ }
}
--
Gitblit v1.3.2