From 464f9fc6047ff994728acf69f6f0d3971984b492 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 29 Sep 2014 17:16:21 +0000
Subject: [PATCH] #2021 fix - Changed "ping" command return to JSON, StatusBean

---
 src/main/java/net/curisit/securis/ConnectionManager.java |    2 
 src/main/java/net/curisit/securis/utils/Params.java      |    3 +
 src/main/java/net/curisit/securis/LicenseManager.java    |   64 +++++++++++++++++++-------------
 src/main/java/net/curisit/securis/beans/StatusBean.java  |   32 ++++++++++++++++
 src/main/java/net/curisit/securis/License.java           |   16 ++++++-
 5 files changed, 86 insertions(+), 31 deletions(-)

diff --git a/src/main/java/net/curisit/securis/ConnectionManager.java b/src/main/java/net/curisit/securis/ConnectionManager.java
index 1312390..06f74f9 100644
--- a/src/main/java/net/curisit/securis/ConnectionManager.java
+++ b/src/main/java/net/curisit/securis/ConnectionManager.java
@@ -41,7 +41,7 @@
 	private final CloseableHttpClient httpClient;
 	
 	private ConnectionManager() throws SeCurisException {
-		String aux = Params.get(Params.KEYS.LICENSE_SERVER_URL, "https://securis.curistec.com/api");
+		String aux = Params.get(Params.KEYS.LICENSE_SERVER_URL, Params.DEFAUT_SERVER_URL);
 		if (aux.endsWith("/")) {
 		    serverUrl = aux.substring(0, aux.length()-2);
 		} else {
diff --git a/src/main/java/net/curisit/securis/License.java b/src/main/java/net/curisit/securis/License.java
index 1f2a210..2d51327 100644
--- a/src/main/java/net/curisit/securis/License.java
+++ b/src/main/java/net/curisit/securis/License.java
@@ -3,6 +3,7 @@
 import java.io.File;
 import java.net.URISyntaxException;
 
+import net.curisit.securis.beans.SignedLicenseBean;
 import net.curisit.securis.utils.Params;
 
 import org.apache.commons.cli.CommandLine;
@@ -14,6 +15,7 @@
 import org.apache.commons.cli.PosixParser;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.codehaus.jackson.map.DeserializerFactory.Config;
 
 /**
  * Main class when SeCuris client is used from command line.
@@ -40,7 +42,7 @@
  */
 public class License {
 
-	private static final Logger LOG = LogManager.getLogger(License.class);
+    private static final Logger LOG = LogManager.getLogger(License.class);
 
 	/**
 	 * Aplication entry point when it used as CLI
@@ -83,12 +85,20 @@
 			}
 
 			if (cmd.hasOption('c')) {
-				LicenseManager.getInstance().requestLicense();
+				SignedLicenseBean lic = LicenseManager.getInstance().requestLicense();
+				String filename = cmd.getOptionValue("lic_file");
+                if (filename == null)
+                    filename = "./license.lic";
+                File file = new File(filename);
+                LicenseManager.getInstance().save(lic, file);
+                LOG.info("License file sucessfully saved in file: {}", file.getAbsolutePath());
                 System.exit(0);
 			}
 
 			if (cmd.hasOption('t')) {
                 LicenseManager.getInstance().testServer();
+                LOG.info("Server is OK, url: {}", Params.get(Params.KEYS.LICENSE_SERVER_URL, Params.DEFAUT_SERVER_URL));
+
                 System.exit(0);
 			}
 
@@ -163,7 +173,7 @@
 		options.addOption(OptionBuilder.withArgName("lic_file").withLongOpt("validate").withDescription("Validate lic file.").hasArg(true).create('l'));
 
 		options.addOption("g", "gen_request", false, "Generate request file. If --rfile parameter is missing then It is generated in current directory.");
-		options.addOption(OptionBuilder.withLongOpt("create").withDescription("Request a license file to server.").hasArg(false).create('c'));
+		options.addOption(OptionBuilder.withArgName("lic_file").withLongOpt("create").withDescription("Request a license file to server.").hasArg(true).hasOptionalArg().create('c'));
 		options.addOption("t", "test_lc", false, "Test if License Server (LC) is available. ");
 		options.addOption(OptionBuilder.withArgName("lic_file").withLongOpt("renew").withDescription("Synchronize/renew the current license file.").hasArg(true).create('r'));
 
diff --git a/src/main/java/net/curisit/securis/LicenseManager.java b/src/main/java/net/curisit/securis/LicenseManager.java
index ecec7a5..69e3259 100644
--- a/src/main/java/net/curisit/securis/LicenseManager.java
+++ b/src/main/java/net/curisit/securis/LicenseManager.java
@@ -11,6 +11,7 @@
 import net.curisit.securis.beans.LicenseBean;
 import net.curisit.securis.beans.RequestBean;
 import net.curisit.securis.beans.SignedLicenseBean;
+import net.curisit.securis.beans.StatusBean;
 import net.curisit.securis.utils.JsonUtils;
 import net.curisit.securis.utils.Params;
 import net.curisit.securis.utils.SignatureHelper;
@@ -86,37 +87,48 @@
 	 * @return The license bean returned by the server
 	 * @throws SeCurisException
 	 */
-	public LicenseBean requestLicense() throws SeCurisException {
+	public SignedLicenseBean requestLicense() throws SeCurisException {
 		RequestBean req = ReqGenerator.getInstance().createRequest(Params.get(Params.KEYS.APPLICATION_CODE), Params.get(Params.KEYS.CUSTOMER_CODE));
 
-		LicenseBean lic = requestLicenseToServer(req);
+		SignedLicenseBean lic = requestLicenseToServer(req);
 		return lic;
 	}
 
-	/**
-	 * 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);
-		byte[] json;
-		try {
-			json = JsonUtils.toJSON(signedLic, true).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: " + license, e);
-			throw new SeCurisException("Error creating json doc from license: " + license, e);
-		} catch (IOException e) {
-			LOG.error("Error creating license file: " + file, e);
-			throw new SeCurisException("Error creating json doc from license: " + license, e);
-		}
+    /**
+     * 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);
+    }
 
-		LOG.debug("License saved in {}", 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.toJSON(signedLic, true).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);
+
+    }
 
 	private SignedLicenseBean requestLicenseToServer(RequestBean req) throws SeCurisException {
 	    SignedLicenseBean lic = ConnectionManager.getInstance().executePost(Command.CREATE_LIC, SignedLicenseBean.class, req);
@@ -157,8 +169,8 @@
 	}
 
     public void testServer() throws SeCurisException {
-        String pingMsg = ConnectionManager.getInstance().executeGet(Command.RENEW_LIC, String.class);
-        if (!PING_MESSAGE.equals(pingMsg)) {
+        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");
         }
     }
diff --git a/src/main/java/net/curisit/securis/beans/StatusBean.java b/src/main/java/net/curisit/securis/beans/StatusBean.java
new file mode 100644
index 0000000..a008b7f
--- /dev/null
+++ b/src/main/java/net/curisit/securis/beans/StatusBean.java
@@ -0,0 +1,32 @@
+package net.curisit.securis.beans;
+
+import java.util.Date;
+
+import org.codehaus.jackson.annotate.JsonAutoDetect;
+
+@JsonAutoDetect
+public class StatusBean extends RequestBean {
+	private Date date;
+	private String message;
+
+	public StatusBean() {
+	}
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+
+}
diff --git a/src/main/java/net/curisit/securis/utils/Params.java b/src/main/java/net/curisit/securis/utils/Params.java
index 3127650..14d1b37 100644
--- a/src/main/java/net/curisit/securis/utils/Params.java
+++ b/src/main/java/net/curisit/securis/utils/Params.java
@@ -22,7 +22,8 @@
 	/**
 	 * Key used to store config file resource location. In a web application, can be set as initial parameter in a servlet loaded on startup
 	 */
-	public static final String KEY_CONFIG_FILE = "/securis-client.properties";
+    public static final String DEFAUT_SERVER_URL = "https://securis.curistec.com/api";
+    public static final String KEY_CONFIG_FILE = "/securis-client.properties";
 
 	private static Properties params = null;
 

--
Gitblit v1.3.2