From 3ef2ddd5cb1ee57317ffb757aceb86355a612a17 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Mon, 24 Feb 2014 14:55:10 +0000
Subject: [PATCH] #593 feature - Changed CRC logo inclusion in request to optional, the server will check if logo is mandatory or not

---
 src/main/resources/images/logo_customer2.png             |    0 
 src/main/java/net/curisit/securis/utils/Params.java      |    2 
 src/main/java/net/curisit/securis/LicenseManager.java    |    8 +-
 src/main/java/net/curisit/securis/SignatureHelper.java   |   23 -------
 src/main/java/net/curisit/securis/HWInfo.java            |    2 
 src/main/java/net/curisit/securis/ReqGenerator.java      |    6 +
 src/main/resources/securis-client.properties             |    6 +-
 src/main/java/net/curisit/securis/beans/RequestBean.java |    4 
 pom.xml                                                  |   17 +++++
 src/main/java/net/curisit/securis/License.java           |   78 ++++++++++++++++++++++---
 src/patch/java/net/curisit/securis/LicenseGenerator.java |    2 
 11 files changed, 101 insertions(+), 47 deletions(-)

diff --git a/pom.xml b/pom.xml
index 1ce4609..b07e561 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,6 +13,17 @@
           <target>1.7</target>
         </configuration>
       </plugin>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <archive>
+            <manifest>
+              <mainClass>net.curisit.securis.License</mainClass>
+            </manifest>
+          </archive>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
   <dependencies>
@@ -46,5 +57,11 @@
   		<artifactId>log4j-core</artifactId>
   		<version>2.0-rc1</version>
   	</dependency>
+  	<dependency>
+  		<groupId>org.apache.maven.plugins</groupId>
+  		<artifactId>maven-assembly-plugin</artifactId>
+  		<version>2.4</version>
+  		<type>maven-plugin</type>
+  	</dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/src/main/java/net/curisit/securis/HWInfo.java b/src/main/java/net/curisit/securis/HWInfo.java
index 053d260..fc1d0eb 100644
--- a/src/main/java/net/curisit/securis/HWInfo.java
+++ b/src/main/java/net/curisit/securis/HWInfo.java
@@ -79,7 +79,7 @@
 			for (byte[] mac : macs) {
 				macAddresses.add(printMacAddress(mac));
 			}
-			log.info("MAC Addresses: {}", macAddresses);
+			log.debug("MAC Addresses: {}", macAddresses);
 			return macAddresses;
 
 		} catch (UnknownHostException e) {
diff --git a/src/main/java/net/curisit/securis/License.java b/src/main/java/net/curisit/securis/License.java
index dd634bb..4ad5059 100644
--- a/src/main/java/net/curisit/securis/License.java
+++ b/src/main/java/net/curisit/securis/License.java
@@ -2,7 +2,6 @@
 
 import java.io.File;
 import java.net.URISyntaxException;
-import java.util.Date;
 
 import net.curisit.securis.utils.Params;
 
@@ -16,21 +15,45 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+/**
+ * Main class when SeCuris client is used from command line.
+ * 
+ * <pre>
+ * usage: securis-client [-c] [-g] [-h] [-l <lic_file>] [-r <lic_file>] [-s
+ *       <url_license_server>] [-t]
+ * -c,--create                        Request a license file from server.
+ *                                    --rfile and --server parameters are
+ *                                    mandatory.
+ * -g,--gen_request                   Generate request file. If --rfile
+ *                                     parameter is missing then It is
+ *                                     generated in current directory.
+ *  -h,--help                          Show help.
+ *  -l,--validate <lic_file>           Validate lic file.
+ *  -r,--renew <lic_file>              Synchronize/renew the current license
+ *                                     file. --server parameter is mandatory.
+ *  -s,--server <url_license_server>   License server url.
+ *  -t,--test_lc                       Test if License Server (LC) is
+ *                                     available. --server parameter is
+ *                                     mandatory.
+ * </pre>
+ * 
+ * @author roberto <roberto.sanchez@curisit.net>
+ * 
+ */
 public class License {
 
-	static {
-		// BasicConfigurator.configure(new ConsoleAppender());
-		// PropertyConfigurator.configure("/log4j.xml");
-		// LogManager.getRootLogger().
-	}
-
-	// private static final Logger log = LoggerFactory.getLogger(License.class);
 	private static final Logger log = LogManager.getLogger(License.class);
 
+	/**
+	 * Aplication entry point when it used as CLI
+	 * 
+	 * @param args
+	 * @throws URISyntaxException
+	 */
 	public static void main(String[] args) throws URISyntaxException {
 		// Configuration conf = XMLConfigurationFactory.getInstance().getConfiguration("config", License.class.getResource("/log4j.xml").toURI());
 
-		log.info("Tool init {}", new Date());
+		log.debug("SeCuris client tool init ");
 
 		checkConfigFile();
 		CommandLine cmd = getCommandLine(args);
@@ -61,8 +84,43 @@
 				System.exit(0);
 			}
 
+			if (cmd.hasOption('c')) {
+				String reqFilename = cmd.getOptionValue("rfile");
+				checkMandatoryParameter(reqFilename, "rfile");
+				String server = cmd.getOptionValue("server");
+				checkMandatoryParameter(server, "server");
+
+				log.warn("This command is not yet implemented");
+				System.exit(0);
+			}
+
+			if (cmd.hasOption('t')) {
+				String server = cmd.getOptionValue("server");
+				checkMandatoryParameter(server, "server");
+
+				log.warn("This command is not yet implemented");
+				System.exit(0);
+			}
+
+			if (cmd.hasOption('r')) {
+				String licFilename = cmd.getOptionValue("sync");
+				checkMandatoryParameter(licFilename, "sync");
+				String server = cmd.getOptionValue("server");
+				checkMandatoryParameter(server, "server");
+
+				log.warn("This command is not yet implemented");
+				System.exit(0);
+			}
+
 		} catch (SeCurisException e) {
 			log.error("The command generated an error: {}", e.toString());
+		}
+	}
+
+	private static void checkMandatoryParameter(String value, String param) {
+		if (value == null) {
+			log.error("Parameter {} is mandatory. Use --help to get information about parameters", param);
+			System.exit(-5);
 		}
 	}
 
@@ -120,7 +178,7 @@
 		options.addOption("g", "gen_request", false, "Generate request file. If --rfile parameter is missing then It is generated in current directory.");
 		options.addOption("c", "create", false, "Request a license file from server. --rfile and --server parameters are mandatory.");
 		options.addOption("t", "test_lc", false, "Test if License Server (LC) is available. --server parameter is mandatory.");
-		options.addOption(OptionBuilder.withArgName("lic_file").withLongOpt("sync").withDescription("Synchronize/renew the current license file. --server parameter is mandatory.").hasArg(true).create('y'));
+		options.addOption(OptionBuilder.withArgName("lic_file").withLongOpt("renew").withDescription("Synchronize/renew the current license file. --server parameter is mandatory.").hasArg(true).create('r'));
 
 		return options;
 	}
diff --git a/src/main/java/net/curisit/securis/LicenseManager.java b/src/main/java/net/curisit/securis/LicenseManager.java
index 7aa0ac3..d3e7f16 100644
--- a/src/main/java/net/curisit/securis/LicenseManager.java
+++ b/src/main/java/net/curisit/securis/LicenseManager.java
@@ -38,9 +38,7 @@
 	 * </p>
 	 * 
 	 * @param licFile
-	 * @param appCode
-	 * @param customerCode
-	 * @return
+	 * @return The license bean stored in file
 	 * @throws SeCurisException
 	 */
 	public LicenseBean validateLicense(File licFile) throws SeCurisException {
@@ -58,7 +56,7 @@
 	}
 
 	/**
-	 * Creates a new request file with current hardware in the File passed as paramter
+	 * Creates a new request file with current hardware in the File passed as parameter
 	 * 
 	 * @param outputRequestFile
 	 *            File where the request data will be saved
@@ -83,6 +81,8 @@
 	 */
 	public LicenseBean sync(File licenseFile) throws SeCurisException {
 		LicenseBean lic = validateLicense(licenseFile);
+		if (true)
+			throw new SeCurisException("Action not implemented yet");
 		// TODO: Send the current LicenseBean to server to check if a new one is prepared.
 		return lic;
 	}
diff --git a/src/main/java/net/curisit/securis/ReqGenerator.java b/src/main/java/net/curisit/securis/ReqGenerator.java
index 09545fd..3aecc16 100644
--- a/src/main/java/net/curisit/securis/ReqGenerator.java
+++ b/src/main/java/net/curisit/securis/ReqGenerator.java
@@ -71,7 +71,7 @@
 		byte[] json;
 		try {
 			json = JsonUtils.toJSON(req, true).getBytes("utf-8");
-			Files.write(Paths.get(file.toURI()), json, StandardOpenOption.CREATE);
+			Files.write(Paths.get(file.toURI()), json, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
 		} catch (UnsupportedEncodingException e) {
 			log.error("Error creating json doc from request: " + req, e);
 			throw new SeCurisException("Error creating json doc from request: " + req, e);
@@ -80,13 +80,15 @@
 			throw new SeCurisException("Error creating request file: " + file, e);
 		}
 
-		log.info("License saved in {}", file);
+		log.debug("License saved in {}", file);
 
 	}
 
 	private String getCrcLogo() {
 		String logResource = "images/logo_customer.png";
 		InputStream is = getClass().getClassLoader().getResourceAsStream(logResource);
+		if (is == null)
+			return null;
 		try {
 			String shaLogo = LicUtils.sha256(IOUtils.toByteArray(is), LOGO_SECRET);
 			return shaLogo;
diff --git a/src/main/java/net/curisit/securis/SignatureHelper.java b/src/main/java/net/curisit/securis/SignatureHelper.java
index bdd968f..ced9b47 100644
--- a/src/main/java/net/curisit/securis/SignatureHelper.java
+++ b/src/main/java/net/curisit/securis/SignatureHelper.java
@@ -14,13 +14,8 @@
 import java.security.spec.InvalidKeySpecException;
 import java.security.spec.PKCS8EncodedKeySpec;
 import java.security.spec.X509EncodedKeySpec;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
 
 import net.curisit.securis.beans.LicenseBean;
-import net.curisit.securis.beans.RequestBean;
-import net.curisit.securis.beans.SignedLicenseBean;
 import net.curisit.securis.utils.JsonUtils;
 import net.curisit.securis.utils.Params;
 
@@ -124,24 +119,6 @@
 
 		KeyPair kp = new KeyPair(publicKey, privateKey);
 		return kp;
-	}
-
-	public static void main(String[] args) throws SeCurisException {
-		// org.apache.log4j.Logger.getRootLogger().addAppender(new Appender);
-		// DOMConfigurator.configure("/Users/cproberto/Documents/wsCurisIT/SeCurisClient/src/main/resources/log4j.xml");
-		RequestBean req = ReqGenerator.getInstance().createRequest("CI", "Roberto");
-
-		LicenseGenerator lg = LicenseGenerator.getInstance();
-		Map<String, Object> metadata = new HashMap<>();
-		metadata.put("maxUsers", 14);
-		metadata.put("timeThreshold", 5000);
-		metadata.put("123", 5000);
-		metadata.put("Basdads", 5000);
-		metadata.put("aasdads", 5000);
-		metadata.put("maxInstances", 50);
-		LicenseBean lic = lg.generateLicense(req, metadata, new Date(new Date().getTime() + 24 * 3600 * 1000 * 10), "L01", "LIC-TEST-001");
-		System.out.println(JsonUtils.toJSON(lic, true));
-		System.out.println(JsonUtils.toJSON(new SignedLicenseBean(lic), true));
 	}
 
 	static {
diff --git a/src/main/java/net/curisit/securis/beans/RequestBean.java b/src/main/java/net/curisit/securis/beans/RequestBean.java
index cfb20f0..b3a3a1b 100644
--- a/src/main/java/net/curisit/securis/beans/RequestBean.java
+++ b/src/main/java/net/curisit/securis/beans/RequestBean.java
@@ -2,9 +2,9 @@
 
 import java.util.List;
 
-import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
 
-@JsonAutoDetect
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
 public class RequestBean {
 	private String customerCode;
 	private String crcLogo;
diff --git a/src/main/java/net/curisit/securis/utils/Params.java b/src/main/java/net/curisit/securis/utils/Params.java
index 5349a79..2822010 100644
--- a/src/main/java/net/curisit/securis/utils/Params.java
+++ b/src/main/java/net/curisit/securis/utils/Params.java
@@ -44,7 +44,7 @@
 	 */
 	public static void loadParameters(String resource) throws IOException {
 
-		log.info("Loading params from " + resource);
+		log.debug("Loading params from " + resource);
 		InputStream fileis = Params.class.getResourceAsStream(resource);
 
 		params = new Properties();
diff --git a/src/main/resources/images/logo_customer.png b/src/main/resources/images/logo_customer2.png
similarity index 100%
rename from src/main/resources/images/logo_customer.png
rename to src/main/resources/images/logo_customer2.png
Binary files differ
diff --git a/src/main/resources/securis-client.properties b/src/main/resources/securis-client.properties
index 2212669..e7aee1a 100644
--- a/src/main/resources/securis-client.properties
+++ b/src/main/resources/securis-client.properties
@@ -1,3 +1,3 @@
-public.key.file = /Users/cproberto/Documents/wsPython/doky/tests/mykey.pub
-app.code = CurisIntegrity
-customer.code = ROB
\ No newline at end of file
+public.key.file = __ADD_PUBLIC_KEY_FILE__
+app.code = __ADD_APP_CODE__
+customer.code = __ADD_APP_CODE__
diff --git a/src/patch/java/net/curisit/securis/LicenseGenerator.java b/src/patch/java/net/curisit/securis/LicenseGenerator.java
index 72da188..f84f980 100644
--- a/src/patch/java/net/curisit/securis/LicenseGenerator.java
+++ b/src/patch/java/net/curisit/securis/LicenseGenerator.java
@@ -80,7 +80,7 @@
 		byte[] json;
 		try {
 			json = JsonUtils.toJSON(signedLic, true).getBytes("utf-8");
-			Files.write(Paths.get(file.toURI()), json, StandardOpenOption.CREATE);
+			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);

--
Gitblit v1.3.2