pom.xml
.. .. @@ -43,11 +43,6 @@ 43 43 </dependency> 44 44 <dependency> 45 45 <groupId>org.apache.logging.log4j</groupId> 46 - <artifactId>log4j-slf4j-impl</artifactId>47 - <version>2.0-rc1</version>48 - </dependency>49 - <dependency>50 - <groupId>org.apache.logging.log4j</groupId>51 46 <artifactId>log4j-core</artifactId> 52 47 <version>2.0-rc1</version> 53 48 </dependency> src/main/java/net/curisit/securis/CryptoHelper.java
.. .. @@ -18,14 +18,14 @@ 18 18 import javax.crypto.spec.SecretKeySpec; 19 19 20 20 import org.apache.commons.net.util.Base64; 21 -import org.slf4j.Logger;22 -import org.slf4j.LoggerFactory;21 +import org.apache.logging.log4j.LogManager;22 +import org.apache.logging.log4j.Logger;23 23 24 24 //import net.curisit.common.ui.Dialogs; 25 25 26 26 public class CryptoHelper { 27 27 28 - private static final Logger log = LoggerFactory.getLogger(SignatureHelper.class);28 + private static final Logger log = LogManager.getLogger(SignatureHelper.class);29 29 30 30 private static final String KEY_FACTORY = "PBEWITHHMACSHA1"; 31 31 private static final String PPROVIDER = "BC"; src/main/java/net/curisit/securis/HWInfo.java
.. .. @@ -8,8 +8,8 @@ 8 8 import java.util.Collections; 9 9 import java.util.List; 10 10 11 -import org.slf4j.Logger;12 -import org.slf4j.LoggerFactory;11 +import org.apache.logging.log4j.LogManager;12 +import org.apache.logging.log4j.Logger;13 13 14 14 /** 15 15 * Retrieve HW info .. .. @@ -19,7 +19,7 @@ 19 19 */ 20 20 public class HWInfo { 21 21 22 - private static final Logger log = LoggerFactory.getLogger(HWInfo.class);22 + private static final Logger log = LogManager.getLogger(HWInfo.class);23 23 24 24 public static String getOsName() { 25 25 return System.getProperty("os.name"); src/main/java/net/curisit/securis/License.java
.. .. @@ -1,6 +1,8 @@ 1 1 package net.curisit.securis; 2 2 3 3 import java.io.File; 4 +import java.net.URISyntaxException;5 +import java.util.Date;4 6 5 7 import net.curisit.securis.utils.Params; 6 8 .. .. @@ -11,8 +13,8 @@ 11 13 import org.apache.commons.cli.Options; 12 14 import org.apache.commons.cli.ParseException; 13 15 import org.apache.commons.cli.PosixParser; 14 -import org.slf4j.Logger;15 -import org.slf4j.LoggerFactory;16 +import org.apache.logging.log4j.LogManager;17 +import org.apache.logging.log4j.Logger;16 18 17 19 public class License { 18 20 .. .. @@ -22,10 +24,14 @@ 22 24 // LogManager.getRootLogger(). 23 25 } 24 26 25 - private static final Logger log = LoggerFactory.getLogger(License.class);27 + // private static final Logger log = LoggerFactory.getLogger(License.class);28 + private static final Logger log = LogManager.getLogger(License.class);26 29 27 - public static void main(String[] args) {28 - log.info("Tool init");30 + public static void main(String[] args) throws URISyntaxException {31 + // Configuration conf = XMLConfigurationFactory.getInstance().getConfiguration("config", License.class.getResource("/log4j.xml").toURI());32 +33 + log.info("Tool init {}", new Date());34 +29 35 checkConfigFile(); 30 36 CommandLine cmd = getCommandLine(args); 31 37 .. .. @@ -34,7 +40,24 @@ 34 40 String filename = cmd.getOptionValue("rfile"); 35 41 if (filename == null) 36 42 filename = "./license.req"; 37 - LicenseManager.getInstance().createRequestFile(new File(filename));43 + File file = new File(filename);44 + LicenseManager.getInstance().createRequestFile(file);45 + log.info("Request file {} generated OK", file.getAbsolutePath());46 + System.exit(0);47 + }48 +49 + if (cmd.hasOption('l')) {50 + String filename = cmd.getOptionValue("validate");51 + if (filename == null)52 + filename = "./license.lic";53 + File file = new File(filename);54 + try {55 + LicenseManager.getInstance().validateLicense(file);56 + log.info("License file {} is valid", file.getAbsolutePath());57 + } catch (SeCurisException e) {58 + log.info("License file {} is NOT valid", file.getAbsolutePath());59 + }60 +38 61 System.exit(0); 39 62 } 40 63 src/main/java/net/curisit/securis/ReqGenerator.java
.. .. @@ -13,13 +13,12 @@ 13 13 import net.curisit.securis.utils.LicUtils; 14 14 15 15 import org.apache.commons.io.IOUtils; 16 -import org.slf4j.Logger;17 -import org.slf4j.LoggerFactory;16 +import org.apache.logging.log4j.LogManager;17 +import org.apache.logging.log4j.Logger;18 18 19 19 public class ReqGenerator { 20 20 21 - @SuppressWarnings("unused")22 - private static final Logger log = LoggerFactory.getLogger(ReqGenerator.class);21 + private static final Logger log = LogManager.getLogger(ReqGenerator.class);23 22 24 23 private static ReqGenerator singleton = new ReqGenerator(); 25 24 .. .. @@ -50,6 +49,17 @@ 50 49 return req; 51 50 } 52 51 52 + public RequestBean loadRequest(File requestFile) throws SeCurisException {53 + try {54 + String json = new String(Files.readAllBytes(Paths.get(requestFile.toURI())), "utf-8");55 + RequestBean req = JsonUtils.json2object(json, RequestBean.class);56 + return req;57 + } catch (IOException e) {58 + log.error("Request file {} was not found or is not accesible");59 + throw new SeCurisException("ERROR accesing request file: " + requestFile.getAbsolutePath(), e);60 + }61 + }62 +53 63 /** 54 64 * Generate a request file using a {@link RequestBean} 55 65 * src/main/java/net/curisit/securis/SignatureHelper.java
.. .. @@ -26,10 +26,8 @@ 26 26 27 27 import org.apache.commons.io.FileUtils; 28 28 import org.apache.commons.net.util.Base64; 29 -import org.slf4j.Logger;30 -import org.slf4j.LoggerFactory;31 -32 -//import net.curisit.common.ui.Dialogs;29 +import org.apache.logging.log4j.LogManager;30 +import org.apache.logging.log4j.Logger;33 31 34 32 /** 35 33 * digital Signature utilities .. .. @@ -38,7 +36,7 @@ 38 36 */ 39 37 public class SignatureHelper { 40 38 41 - private static final Logger log = LoggerFactory.getLogger(SignatureHelper.class);39 + private static final Logger log = LogManager.getLogger(SignatureHelper.class);42 40 private static String AUX = "hEDhryRjs2QRE"; 43 41 44 42 private static SignatureHelper singleton = new SignatureHelper(); .. .. @@ -58,6 +56,7 @@ 58 56 log.info("JSON: {}", JsonUtils.toJSON(licBean)); 59 57 signature.update(JsonUtils.toJSON(licBean).getBytes("utf-8")); 60 58 signature.update(AUX.getBytes("utf-8")); 59 +61 60 } catch (SignatureException | UnsupportedEncodingException e) { 62 61 throw new SeCurisException("Error generating or validating signature", e); 63 62 } .. .. @@ -140,7 +139,7 @@ 140 139 metadata.put("Basdads", 5000); 141 140 metadata.put("aasdads", 5000); 142 141 metadata.put("maxInstances", 50); 143 - LicenseBean lic = lg.generateLicense(req, metadata, new Date(new Date().getTime() + 24 * 3600 * 1000 * 10), "LIC-TEST-001");142 + LicenseBean lic = lg.generateLicense(req, metadata, new Date(new Date().getTime() + 24 * 3600 * 1000 * 10), "L01", "LIC-TEST-001");144 143 System.out.println(JsonUtils.toJSON(lic, true)); 145 144 System.out.println(JsonUtils.toJSON(new SignedLicenseBean(lic), true)); 146 145 } src/main/java/net/curisit/securis/beans/LicenseBean.java
.. .. @@ -5,6 +5,7 @@ 5 5 import java.util.TreeMap; 6 6 7 7 import org.codehaus.jackson.annotate.JsonIgnore; 8 +import org.codehaus.jackson.annotate.JsonProperty;8 9 import org.codehaus.jackson.annotate.JsonPropertyOrder; 9 10 10 11 @JsonPropertyOrder( .. .. @@ -45,6 +46,7 @@ 45 46 return signature; 46 47 } 47 48 49 + @JsonProperty("signature")48 50 public void setSignature(String signature) { 49 51 this.signature = signature; 50 52 } src/main/java/net/curisit/securis/utils/JsonUtils.java
.. .. @@ -6,14 +6,14 @@ 6 6 7 7 import net.curisit.securis.SeCurisException; 8 8 9 +import org.apache.logging.log4j.LogManager;10 +import org.apache.logging.log4j.Logger;9 11 import org.codehaus.jackson.JsonParseException; 10 12 import org.codehaus.jackson.JsonParser; 11 13 import org.codehaus.jackson.JsonProcessingException; 12 14 import org.codehaus.jackson.map.ObjectMapper; 13 15 import org.codehaus.jackson.map.SerializationConfig; 14 16 import org.codehaus.jackson.type.TypeReference; 15 -import org.slf4j.Logger;16 -import org.slf4j.LoggerFactory;17 17 18 18 /** 19 19 * Helper method to perform JSON tasks .. .. @@ -22,7 +22,7 @@ 22 22 */ 23 23 public class JsonUtils { 24 24 25 - private static final Logger log = LoggerFactory.getLogger(JsonUtils.class);25 + private static final Logger log = LogManager.getLogger(JsonUtils.class);26 26 27 27 final private static ObjectMapper MAPPER = new ObjectMapper(); 28 28 src/main/java/net/curisit/securis/utils/LicUtils.java
.. .. @@ -4,12 +4,12 @@ 4 4 import java.security.MessageDigest; 5 5 import java.security.NoSuchAlgorithmException; 6 6 7 -import org.slf4j.Logger;8 -import org.slf4j.LoggerFactory;7 +import org.apache.logging.log4j.LogManager;8 +import org.apache.logging.log4j.Logger;9 9 10 10 public class LicUtils { 11 11 12 - private static final Logger log = LoggerFactory.getLogger(LicUtils.class);12 + private static final Logger log = LogManager.getLogger(LicUtils.class);13 13 14 14 public static String md5(String str) { 15 15 try { src/main/java/net/curisit/securis/utils/Params.java
.. .. @@ -7,8 +7,8 @@ 7 7 import java.util.List; 8 8 import java.util.Properties; 9 9 10 -import org.slf4j.Logger;11 -import org.slf4j.LoggerFactory;10 +import org.apache.logging.log4j.LogManager;11 +import org.apache.logging.log4j.Logger;12 12 13 13 /** 14 14 * Class that loads and serves global config parameters. .. .. @@ -17,7 +17,7 @@ 17 17 */ 18 18 public class Params { 19 19 20 - private static Logger log = LoggerFactory.getLogger(Params.class);20 + private static Logger log = LogManager.getLogger(Params.class);21 21 22 22 /** 23 23 * Key used to store config file resource location. In a web application, can be set as initial parameter in a servlet loaded on startup .. .. @@ -51,7 +51,7 @@ 51 51 try { 52 52 53 53 params.load(fileis); 54 - log.info("Params loaded OK");54 + log.debug("Params loaded OK from {}", resource);55 55 } catch (IOException e) { 56 56 log.error("Error loading config file: " + e); 57 57 params = null; src/main/resources/log4j.xmldeleted file mode 100644
.. .. @@ -1,26 +0,0 @@ 1 -<?xml version="1.0" encoding="UTF-8" ?>2 -<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">3 -4 -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">5 -6 - <appender name="console" class="org.apache.log4j.ConsoleAppender">7 - <param name="Target" value="System.out"/>8 - <layout class="org.apache.log4j.PatternLayout">9 - <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>10 - </layout>11 - </appender>12 -13 - <logger name="net.curisit">14 - <level value="INFO"/>15 - </logger>16 -17 - <logger name="sandbox">18 - <level value="DEBUG"/>19 - </logger>20 -21 - <root>22 - <priority value ="INFO" />23 - <appender-ref ref="console" />24 - </root>25 -26 -</log4j:configuration>src/main/resources/log4j2.xml
.. .. @@ -0,0 +1,16 @@ 1 +<?xml version="1.0" encoding="UTF-8"?>2 +<Configuration>3 + <Appenders>4 + <Console name="STDOUT" target="SYSTEM_OUT">5 + <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>6 + </Console>7 + </Appenders>8 + <Loggers>9 +10 + <Logger name="net.curisit" level="info"/>11 +12 + <Root level="debug">13 + <AppenderRef ref="STDOUT"/>14 + </Root>15 + </Loggers>16 +</Configuration>src/main/resources/securis-client.properties
.. .. @@ -1 +1,3 @@ 1 -public.key.file = /Users/cproberto/Documents/wsPython/doky/tests/mykey.pub1 +public.key.file = /Users/cproberto/Documents/wsPython/doky/tests/mykey.pub2 +app.code = CurisIntegrity3 +customer.code = ROBsrc/patch/java/net/curisit/securis/LicenseGenerator.java
.. .. @@ -8,21 +8,22 @@ 8 8 import java.nio.file.StandardOpenOption; 9 9 import java.security.InvalidKeyException; 10 10 import java.security.NoSuchAlgorithmException; 11 -import java.security.NoSuchProviderException;12 11 import java.security.Signature; 13 12 import java.security.SignatureException; 14 13 import java.security.spec.InvalidKeySpecException; 15 14 import java.text.MessageFormat; 16 15 import java.util.Date; 17 16 import java.util.Map; 17 +import java.util.TreeMap;18 18 19 19 import net.curisit.securis.beans.LicenseBean; 20 20 import net.curisit.securis.beans.RequestBean; 21 +import net.curisit.securis.beans.SignedLicenseBean;21 22 import net.curisit.securis.utils.JsonUtils; 22 23 23 24 import org.apache.commons.net.util.Base64; 24 -import org.slf4j.Logger;25 -import org.slf4j.LoggerFactory;25 +import org.apache.logging.log4j.LogManager;26 +import org.apache.logging.log4j.Logger;26 27 27 28 /** 28 29 * License generator and signer .. .. @@ -31,7 +32,7 @@ 31 32 */ 32 33 public class LicenseGenerator { 33 34 34 - private static final Logger log = LoggerFactory.getLogger(LicenseGenerator.class);35 + private static final Logger log = LogManager.getLogger(LicenseGenerator.class);35 36 36 37 private static LicenseGenerator singleton = new LicenseGenerator(); 37 38 .. .. @@ -55,9 +56,10 @@ 55 56 * @return 56 57 * @throws SeCurisException 57 58 */ 58 - public LicenseBean generateLicense(RequestBean req, Map<String, Object> metadata, Date expirationDate, String licenseCode) throws SeCurisException {59 + public LicenseBean generateLicense(RequestBean req, Map<String, Object> metadata, Date expirationDate, String licenseType, String licenseCode) throws SeCurisException {59 60 log.info(MessageFormat.format("Generating license: MAC: {0}, Customer code: {1}, AppCode: {2}", req.getMacAddresses(), req.getCustomerCode(), req.getAppCode())); 60 61 LicenseBean license = new LicenseBean(req); 62 + license.setLicenseType(licenseType);61 63 license.setLicenseCode(licenseCode); 62 64 license.setExpirationDate(expirationDate); 63 65 license.setMetadata(metadata); .. .. @@ -74,9 +76,10 @@ 74 76 * @throws SeCurisException 75 77 */ 76 78 public void save(LicenseBean license, File file) throws SeCurisException { 79 + SignedLicenseBean signedLic = new SignedLicenseBean(license);77 80 byte[] json; 78 81 try { 79 - json = JsonUtils.toJSON(license, true).getBytes("utf-8");82 + json = JsonUtils.toJSON(signedLic, true).getBytes("utf-8");80 83 Files.write(Paths.get(file.toURI()), json, StandardOpenOption.CREATE); 81 84 } catch (UnsupportedEncodingException e) { 82 85 log.error("Error creating json doc from license: " + license, e); .. .. @@ -128,7 +131,15 @@ 128 131 throw new SeCurisException("License could not be generated"); 129 132 } 130 133 131 - public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchProviderException, InvalidKeyException, SignatureException {134 + public static void main(String[] args) throws SeCurisException {135 + Paths.get(new File("/Users/cproberto/Documents/wsCurisIT/SeCurisClient/license.req").toURI());136 +137 + RequestBean req = ReqGenerator.getInstance().loadRequest(new File("/Users/cproberto/Documents/wsCurisIT/SeCurisClient/license.req"));138 + Map<String, Object> metadata = new TreeMap<>();139 + metadata.put("maxUsers", 23);140 + metadata.put("maxInstances", 12);141 + LicenseBean lic = LicenseGenerator.getInstance().generateLicense(req, metadata, new Date(new Date().getTime() + 3600 * 1000), "L01", "LIC-9812987123-12837129873");142 + LicenseGenerator.getInstance().save(lic, new File("/Users/cproberto/Documents/wsCurisIT/SeCurisClient/license.lic"));132 143 133 144 System.out.print("os.arch: " + System.getProperty("os.arch") + " " + System.getProperty("os.name")); 134 145