From 3293b85ad46d2622ae6ead2caf107e3c41c15561 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 29 Sep 2014 12:40:12 +0000
Subject: [PATCH] #2021 fix - Added Config class to read parameters
---
securis/src/main/java/net/curisit/securis/SeCurisServer.java | 15 ++-
securis/src/main/java/net/curisit/securis/utils/Config.java | 198 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 206 insertions(+), 7 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/SeCurisServer.java b/securis/src/main/java/net/curisit/securis/SeCurisServer.java
index 3f98d84..961da24 100644
--- a/securis/src/main/java/net/curisit/securis/SeCurisServer.java
+++ b/securis/src/main/java/net/curisit/securis/SeCurisServer.java
@@ -12,6 +12,7 @@
import net.curisit.securis.ioc.RequestsModule;
import net.curisit.securis.ioc.SecurisModule;
+import net.curisit.securis.utils.Config;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
@@ -149,7 +150,7 @@
QueuedThreadPool threadPool = new QueuedThreadPool();
threadPool.setMaxThreads(50);
- server = new Server(9997);
+ server = new Server(Config.getInt(Config.KEYS.SERVER_PORT, 9080));
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));
@@ -184,7 +185,7 @@
HttpConfiguration http_config = new HttpConfiguration();
http_config.setSecureScheme("https");
- http_config.setSecurePort(8443);
+ http_config.setSecurePort(Config.getInt(Config.KEYS.SERVER_SSL_PORT, 9443));
http_config.setOutputBufferSize(32768);
http_config.setSendServerVersion(true);
http_config.setSendDateHeader(false);
@@ -194,9 +195,9 @@
https_config.addCustomizer(new SecureRequestCustomizer());
SslContextFactory sslContextFactory = new SslContextFactory();
- sslContextFactory.setKeyStorePath("/Users/rob/.ssh/keys/securis.pkcs12");
- sslContextFactory.setKeyStoreType("PKCS12");
- sslContextFactory.setKeyStorePassword("curist3c");
+ sslContextFactory.setKeyStorePath(Config.get(Config.KEYS.KEYSTORE_PATH));
+ sslContextFactory.setKeyStoreType(Config.get(Config.KEYS.KEYSTORE_TYPE, "JKS"));
+ sslContextFactory.setKeyStorePassword(Config.get(Config.KEYS.KEYSTORE_PASSWORD, ""));
//sslContextFactory.setCertAlias("1");
// sslContextFactory.setKeyManagerPassword("curist3c");
// sslContextFactory.setTrustStorePath("/Users/rob/.ssh/keys/keystore");
@@ -206,8 +207,8 @@
LOG.info("Protocol: {}", sslContextFactory.getProtocol());
ServerConnector sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(https_config));
- sslConnector.setPort(8443);
- sslConnector.setHost("securis.curistec.com");
+ sslConnector.setPort(Config.getInt(Config.KEYS.SERVER_SSL_PORT, 9443));
+ sslConnector.setHost(Config.get(Config.KEYS.SERVER_HOSTNAME, "0.0.0.0"));
server.addConnector( sslConnector );
server.setHandler(context);
diff --git a/securis/src/main/java/net/curisit/securis/utils/Config.java b/securis/src/main/java/net/curisit/securis/utils/Config.java
new file mode 100644
index 0000000..bd22171
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/utils/Config.java
@@ -0,0 +1,198 @@
+package net.curisit.securis.utils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * Class that loads and serves global config parameters.
+ *
+ * @author rsanchez
+ */
+public class Config {
+
+ private static final Logger LOG = LogManager.getLogger(Config.class);
+
+ /**
+ * 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-server.properties";
+
+ private static Properties params = null;
+
+ static {
+ try {
+ loadParameters(KEY_CONFIG_FILE);
+ } catch (IOException e) {
+ LOG.error("Config file {} was not found in classpath", KEY_CONFIG_FILE);
+ System.exit(-2);
+ }
+ }
+
+ /**
+ * Loads application global parameters from a classpath resource
+ *
+ * @param resource
+ * : Resource location in classpath, i.e: "/resource/cp-securis.conf"
+ * @throws IOException
+ */
+ public static void loadParameters(String resource) throws IOException {
+
+ LOG.debug("Loading params from " + resource);
+ InputStream fileis = Params.class.getResourceAsStream(resource);
+
+ params = new Properties();
+ try {
+
+ params.load(fileis);
+ LOG.debug("Params loaded OK from {}", resource);
+ } catch (IOException e) {
+ LOG.error("Error loading config file: " + e);
+ params = null;
+ throw e;
+ }
+
+ }
+
+ public static String getByDomain(String domain, String paramname) {
+ return getByDomain(domain, paramname, null);
+ }
+
+ public static String getByPrefix(String prefix, String paramname) {
+ return get(prefix + "." + paramname, get(paramname));
+ }
+
+ public static String getByPrefix(String prefix, String paramname, String defaultVal) {
+ return get(prefix + "." + paramname, get(paramname, defaultVal));
+ }
+
+ public static String getByDomain(String domain, String paramname, String defaultval) {
+ return get(paramname + "." + domain, defaultval);
+ }
+
+ public static int getIntByDomain(String domain, String paramname) {
+ return getInt(paramname + "." + domain, getInt(paramname));
+ }
+
+ public static int getIntByDomain(String domain, String paramname, int defaultval) {
+ return getInt(paramname + "." + domain, defaultval);
+ }
+
+ /**
+ * Gets a List with all values of properties that begins with <code>prefix</code> It reads sequentially. For example:
+ *
+ * <pre>
+ * securis.sort.comparator.0: net.cp.securis.comparators.ComparePttidVsPtn
+ * securis.sort.comparator.1: net.cp.securis.comparators.CompareFrequency
+ * securis.sort.comparator.2: net.cp.securis.comparators.CompareOutgoingVsIncomming
+ * securis.sort.comparator.3: net.cp.securis.comparators.CompareDuration
+ * securis.sort.comparator.4: net.cp.securis.comparators.CompareCallVsSms
+ * </pre>
+ *
+ * That config (for prefix: "securis.sort.comparator" ) will return a List<String> with values:
+ *
+ * <pre>
+ * "net.cp.securis.comparators.ComparePttidVsPtn",
+ * "net.cp.securis.comparators.CompareFrequency",
+ * "net.cp.securis.comparators.CompareOutgoingVsIncomming",
+ * "net.cp.securis.comparators.CompareDuration",
+ * "net.cp.securis.comparators.CompareCallVsSms"
+ * </pre>
+ *
+ * Note: If there is a gap between suffixes process will stop, that is, only will be returned properties found before gap.
+ *
+ * @param prefix
+ * @return
+ */
+ public static List<String> getListByPrefix(String prefix) {
+ List<String> list = new ArrayList<String>();
+
+ String tpl = prefix + ".{0}";
+
+ int i = 0;
+ String value = get(MessageFormat.format(tpl, i++));
+ while (value != null) {
+ list.add(value);
+ value = get(MessageFormat.format(tpl, i++));
+ }
+
+ return list;
+ }
+
+ /**
+ * Gets param value in config file or environment variables
+ *
+ * @param paramname
+ * Global parameter's name
+ * @return Value of paramname or null if paramname is not found neither in config file nor in environment variables
+ */
+ public static String get(String paramname) {
+
+ assert (params != null) : "Parameters have not been loaded. Call method loadParameters(resource) before use Params.";
+
+ String value = params.getProperty(paramname);
+ if (value == null)
+ value = System.getenv(paramname);
+ return value;
+ }
+
+ /**
+ * Gets param value from config file or environment variables
+ *
+ * @param paramname
+ * Global parameter's name
+ * @param defaultval
+ * @return Value of paramname or defaultval if paramname is not found
+ */
+ public static String get(String paramname, String defaultval) {
+ String value = get(paramname);
+ return (value == null ? defaultval : value);
+ }
+
+ /**
+ * Gets param value in config file or environment variables
+ *
+ * @param paramname
+ * Global parameter's name
+ * @return Integer value of paramname or -1 if paramname is not found neither in config file nor in environment variables
+ */
+ public static int getInt(String paramname) {
+ String value = get(paramname);
+ return (value == null ? -1 : Integer.parseInt(value));
+ }
+
+ /**
+ * Gets param value from config file or environment variables
+ *
+ * @param paramname
+ * Global parameter's name
+ * @param defaultval
+ * @return Integer value of paramname or defaultval if paramname is not found
+ */
+ public static int getInt(String paramname, int defaultval) {
+ String value = get(paramname);
+ return (value == null ? defaultval : Integer.parseInt(value));
+ }
+
+ public static class KEYS {
+
+
+
+ public static final String SERVER_HOSTNAME = "license.server.hostname";
+
+ public static final String SERVER_PORT = "license.server.port";
+ public static final String SERVER_SSL_PORT = "license.server.ssl.port";
+
+ public static final String KEYSTORE_PATH = "ssl.keystore.path";
+ public static final String KEYSTORE_TYPE = "ssl.keystore.type";
+ public static final String KEYSTORE_PASSWORD = "ssl.keystore.password";
+ public static final String KEYSTORE_ALIAS = "ssl.keystore.alias";
+ }
+
+}
--
Gitblit v1.3.2