Fix Main Vulnerabilities
[dmaap/datarouter.git] / datarouter-prov / src / main / java / org / onap / dmaap / datarouter / provisioning / Main.java
index 3afce99..651d731 100644 (file)
@@ -90,9 +90,9 @@ public class Main {
     public static final String DEFAULT_TRUSTSTORE = "/opt/java/jdk/jdk180/jre/lib/security/cacerts";
     public static final String KEYSTORE_TYPE_PROPERTY = "org.onap.dmaap.datarouter.provserver.keystore.type";
     public static final String KEYSTORE_PATH_PROPERTY = "org.onap.dmaap.datarouter.provserver.keystore.path";
-    public static final String KEYSTORE_PASSWORD_PROPERTY = "org.onap.dmaap.datarouter.provserver.keystore.password";
+    public static final String KEYSTORE_PASS_PROPERTY = "org.onap.dmaap.datarouter.provserver.keystore.password";
     public static final String TRUSTSTORE_PATH_PROPERTY = "org.onap.dmaap.datarouter.provserver.truststore.path";
-    public static final String TRUSTSTORE_PASSWORD_PROPERTY = "org.onap.dmaap.datarouter.provserver.truststore.password";
+    public static final String TRUSTSTORE_PASS_PROPERTY = "org.onap.dmaap.datarouter.provserver.truststore.password";
 
     /**
      * The one and only {@link Server} instance in this JVM
@@ -110,7 +110,7 @@ public class Main {
         Logger logger = Logger.getLogger("org.onap.dmaap.datarouter.provisioning.internal");
 
         // Check DB is accessible and contains the expected tables
-        if (!checkDatabase(logger)) {
+        if (!checkDatabase()) {
             System.exit(1);
         }
 
@@ -127,7 +127,6 @@ public class Main {
         httpConfiguration.setSecurePort(httpsPort);
         httpConfiguration.setOutputBufferSize(32768);
         httpConfiguration.setRequestHeaderSize(2048);
-        httpConfiguration.setIdleTimeout(300000);
         httpConfiguration.setSendServerVersion(true);
         httpConfiguration.setSendDateHeader(false);
 
@@ -146,6 +145,7 @@ public class Main {
             new HttpConnectionFactory(httpConfiguration))) {
             httpServerConnector.setPort(httpPort);
             httpServerConnector.setAcceptQueueSize(2);
+            httpServerConnector.setIdleTimeout(300000);
 
             // HTTPS configuration
             HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
@@ -154,95 +154,94 @@ public class Main {
             // HTTPS connector
             SslContextFactory sslContextFactory = new SslContextFactory();
             sslContextFactory.setKeyStorePath(p.getProperty(KEYSTORE_PATH_PROPERTY));
-            sslContextFactory.setKeyStorePassword(p.getProperty(KEYSTORE_PASSWORD_PROPERTY));
+            sslContextFactory.setKeyStorePassword(p.getProperty(KEYSTORE_PASS_PROPERTY));
             sslContextFactory
-                .setKeyManagerPassword(p.getProperty("org.onap.dmaap.datarouter.provserver.keymanager.password"));
+                    .setKeyManagerPassword(p.getProperty("org.onap.dmaap.datarouter.provserver.keymanager.password"));
             // SSL stuff
             /* Skip SSLv3 Fixes */
             sslContextFactory.addExcludeProtocols("SSLv3");
             logger.info("Excluded protocols prov-" + Arrays.toString(sslContextFactory.getExcludeProtocols()));
             /* End of SSLv3 Fixes */
 
-            ServerConnector httpsServerConnector = new ServerConnector(server,
-                new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
-                new HttpConnectionFactory(httpsConfiguration));
-            httpsServerConnector.setPort(httpsPort);
-            httpsServerConnector.setIdleTimeout(30000);
-            httpsServerConnector.setAcceptQueueSize(2);
-
-            sslContextFactory.setKeyStoreType(p.getProperty(KEYSTORE_TYPE_PROPERTY, "jks"));
-            sslContextFactory.setKeyStorePath(p.getProperty(KEYSTORE_PATH_PROPERTY));
-            sslContextFactory.setKeyStorePassword(p.getProperty(KEYSTORE_PASSWORD_PROPERTY));
-            sslContextFactory
-                .setKeyManagerPassword(p.getProperty("org.onap.dmaap.datarouter.provserver.keymanager.password"));
-
-            String ts = p.getProperty(TRUSTSTORE_PATH_PROPERTY);
-            if (ts != null && ts.length() > 0) {
-                System.out.println("@@ TS -> " + ts);
-                sslContextFactory.setTrustStorePath(ts);
-                sslContextFactory.setTrustStorePassword(p.getProperty(TRUSTSTORE_PASSWORD_PROPERTY));
-            } else {
-                sslContextFactory.setTrustStorePath(DEFAULT_TRUSTSTORE);
-                sslContextFactory.setTrustStorePassword("changeit");
+            try (ServerConnector httpsServerConnector = new ServerConnector(server,
+                    new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
+                    new HttpConnectionFactory(httpsConfiguration))) {
+                httpsServerConnector.setPort(httpsPort);
+                httpsServerConnector.setIdleTimeout(30000);
+                httpsServerConnector.setAcceptQueueSize(2);
+
+                sslContextFactory.setKeyStoreType(p.getProperty(KEYSTORE_TYPE_PROPERTY, "jks"));
+                sslContextFactory.setKeyStorePath(p.getProperty(KEYSTORE_PATH_PROPERTY));
+                sslContextFactory.setKeyStorePassword(p.getProperty(KEYSTORE_PASS_PROPERTY));
+                sslContextFactory
+                        .setKeyManagerPassword(p.getProperty("org.onap.dmaap.datarouter.provserver.keymanager.password"));
+
+                String ts = p.getProperty(TRUSTSTORE_PATH_PROPERTY);
+                if (ts != null && ts.length() > 0) {
+                    logger.info("@@ TS -> " + ts);
+                    sslContextFactory.setTrustStorePath(ts);
+                    sslContextFactory.setTrustStorePassword(p.getProperty(TRUSTSTORE_PASS_PROPERTY));
+                } else {
+                    sslContextFactory.setTrustStorePath(DEFAULT_TRUSTSTORE);
+                    sslContextFactory.setTrustStorePassword("changeit");
+                }
+                sslContextFactory.setWantClientAuth(true);
+
+                // Servlet and Filter configuration
+                ServletContextHandler ctxt = new ServletContextHandler(0);
+                ctxt.setContextPath("/");
+                ctxt.addServlet(new ServletHolder(new FeedServlet()), "/feed/*");
+                ctxt.addServlet(new ServletHolder(new FeedLogServlet()), "/feedlog/*");
+                ctxt.addServlet(new ServletHolder(new PublishServlet()), "/publish/*");
+                ctxt.addServlet(new ServletHolder(new SubscribeServlet()), "/subscribe/*");
+                ctxt.addServlet(new ServletHolder(new StatisticsServlet()), "/statistics/*");
+                ctxt.addServlet(new ServletHolder(new SubLogServlet()), "/sublog/*");
+                ctxt.addServlet(new ServletHolder(new GroupServlet()),
+                        "/group/*"); //Provision groups - Rally US708115 -1610
+                ctxt.addServlet(new ServletHolder(new SubscriptionServlet()), "/subs/*");
+                ctxt.addServlet(new ServletHolder(new InternalServlet()), "/internal/*");
+                ctxt.addServlet(new ServletHolder(new RouteServlet()), "/internal/route/*");
+                ctxt.addServlet(new ServletHolder(new DRFeedsServlet()), "/");
+                ctxt.addFilter(new FilterHolder(new ThrottleFilter()), "/publish/*", EnumSet.of(DispatcherType.REQUEST));
+
+                ContextHandlerCollection contexts = new ContextHandlerCollection();
+                contexts.addHandler(ctxt);
+
+                // Request log configuration
+                NCSARequestLog nrl = new NCSARequestLog();
+                nrl.setFilename(
+                        p.getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir") + "/request.log.yyyy_mm_dd");
+                nrl.setFilenameDateFormat("yyyyMMdd");
+                nrl.setRetainDays(90);
+                nrl.setAppend(true);
+                nrl.setExtended(false);
+                nrl.setLogCookies(false);
+                nrl.setLogTimeZone("GMT");
+
+                RequestLogHandler reqlog = new RequestLogHandler();
+                reqlog.setRequestLog(nrl);
+
+                // Server's Handler collection
+                hc = new HandlerCollection();
+                hc.setHandlers(new Handler[]{contexts, new DefaultHandler()});
+                hc.addHandler(reqlog);
+
+                // Daemon to clean up the log directory on a daily basis
+                Timer rolex = new Timer();
+                rolex.scheduleAtFixedRate(new PurgeLogDirTask(), 0, 86400000L);    // run once per day
+
+                // Start LogfileLoader
+                LogfileLoader.getLoader();
+
+                try (ServerConnector serverConnector = new ServerConnector(server,
+                        new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
+                        new HttpConnectionFactory(httpsConfiguration))) {
+                    serverConnector.setPort(httpsPort);
+                    serverConnector.setIdleTimeout(500000);
+                }
+
+                server.setConnectors(new Connector[]{httpServerConnector, httpsServerConnector});
             }
-            sslContextFactory.setTrustStorePath("/opt/app/datartr/self_signed/cacerts.jks");
-            sslContextFactory.setTrustStorePassword("changeit");
-            sslContextFactory.setWantClientAuth(true);
-
-            // Servlet and Filter configuration
-            ServletContextHandler ctxt = new ServletContextHandler(0);
-            ctxt.setContextPath("/");
-            ctxt.addServlet(new ServletHolder(new FeedServlet()), "/feed/*");
-            ctxt.addServlet(new ServletHolder(new FeedLogServlet()), "/feedlog/*");
-            ctxt.addServlet(new ServletHolder(new PublishServlet()), "/publish/*");
-            ctxt.addServlet(new ServletHolder(new SubscribeServlet()), "/subscribe/*");
-            ctxt.addServlet(new ServletHolder(new StatisticsServlet()), "/statistics/*");
-            ctxt.addServlet(new ServletHolder(new SubLogServlet()), "/sublog/*");
-            ctxt.addServlet(new ServletHolder(new GroupServlet()),
-                "/group/*"); //Provision groups - Rally US708115 -1610
-            ctxt.addServlet(new ServletHolder(new SubscriptionServlet()), "/subs/*");
-            ctxt.addServlet(new ServletHolder(new InternalServlet()), "/internal/*");
-            ctxt.addServlet(new ServletHolder(new RouteServlet()), "/internal/route/*");
-            ctxt.addServlet(new ServletHolder(new DRFeedsServlet()), "/");
-            ctxt.addFilter(new FilterHolder(new ThrottleFilter()), "/publish/*", EnumSet.of(DispatcherType.REQUEST));
-
-            ContextHandlerCollection contexts = new ContextHandlerCollection();
-            contexts.addHandler(ctxt);
-
-            // Request log configuration
-            NCSARequestLog nrl = new NCSARequestLog();
-            nrl.setFilename(
-                p.getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir") + "/request.log.yyyy_mm_dd");
-            nrl.setFilenameDateFormat("yyyyMMdd");
-            nrl.setRetainDays(90);
-            nrl.setAppend(true);
-            nrl.setExtended(false);
-            nrl.setLogCookies(false);
-            nrl.setLogTimeZone("GMT");
-
-            RequestLogHandler reqlog = new RequestLogHandler();
-            reqlog.setRequestLog(nrl);
-
-            // Server's Handler collection
-            hc = new HandlerCollection();
-            hc.setHandlers(new Handler[]{contexts, new DefaultHandler()});
-            hc.addHandler(reqlog);
-
-            // Daemon to clean up the log directory on a daily basis
-            Timer rolex = new Timer();
-            rolex.scheduleAtFixedRate(new PurgeLogDirTask(), 0, 86400000L);    // run once per day
-
-            // Start LogfileLoader
-            LogfileLoader.getLoader();
-
-            try (ServerConnector serverConnector = new ServerConnector(server,
-                new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
-                new HttpConnectionFactory(httpsConfiguration))) {
-                serverConnector.setPort(httpsPort);
-                serverConnector.setIdleTimeout(500000);
-            }
-
-            server.setConnectors(new Connector[]{httpServerConnector, httpsServerConnector});
         }
         server.setHandler(hc);
         server.setStopAtShutdown(true);
@@ -256,7 +255,7 @@ public class Main {
         logger.info("PROV0001 **** AT&T Data Router Provisioning Server halted.");
     }
 
-    private static boolean checkDatabase(Logger logger) {
+    private static boolean checkDatabase() {
         DB db = new DB();
         return db.runRetroFits();
     }