1 /*******************************************************************************
\r
2 * ============LICENSE_START==================================================
\r
4 * * ===========================================================================
\r
5 * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * * ===========================================================================
\r
7 * * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * * you may not use this file except in compliance with the License.
\r
9 * * You may obtain a copy of the License at
\r
11 * * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * * Unless required by applicable law or agreed to in writing, software
\r
14 * * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * * See the License for the specific language governing permissions and
\r
17 * * limitations under the License.
\r
18 * * ============LICENSE_END====================================================
\r
20 * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
\r
22 ******************************************************************************/
\r
25 package com.att.research.datarouter.node;
\r
27 import org.eclipse.jetty.servlet.*;
\r
28 import org.eclipse.jetty.util.ssl.*;
\r
29 import org.eclipse.jetty.server.*;
\r
30 import org.eclipse.jetty.server.nio.*;
\r
31 import org.eclipse.jetty.server.ssl.*;
\r
32 import org.apache.log4j.Logger;
\r
35 * The main starting point for the Data Router node
\r
37 public class NodeMain {
\r
38 private NodeMain() {}
\r
39 private static Logger logger = Logger.getLogger("com.att.research.datarouter.node.NodeMain");
\r
40 private static class wfconfig implements Runnable {
\r
41 private NodeConfigManager ncm;
\r
42 public wfconfig(NodeConfigManager ncm) {
\r
45 public synchronized void run() {
\r
48 public synchronized void waitforconfig() {
\r
49 ncm.registerConfigTask(this);
\r
50 while (!ncm.isConfigured()) {
\r
51 logger.info("NODE0003 Waiting for Node Configuration");
\r
54 } catch (Exception e) {
\r
57 ncm.deregisterConfigTask(this);
\r
58 logger.info("NODE0004 Node Configuration Data Received");
\r
61 private static Delivery d;
\r
62 private static NodeConfigManager ncm;
\r
64 * Reset the retry timer for a subscription
\r
66 public static void resetQueue(String subid, String ip) {
\r
67 d.resetQueue(ncm.getSpoolDir(subid, ip));
\r
70 * Start the data router.
\r
72 * The location of the node configuration file can be set using the
\r
73 * com.att.research.datarouter.node.ConfigFile system property. By
\r
74 * default, it is "etc/node.properties".
\r
76 public static void main(String[] args) throws Exception {
\r
77 logger.info("NODE0001 Data Router Node Starting");
\r
78 IsFrom.setDNSCache();
\r
79 ncm = NodeConfigManager.getInstance();
\r
80 logger.info("NODE0002 I am " + ncm.getMyName());
\r
81 (new wfconfig(ncm)).waitforconfig();
\r
82 d = new Delivery(ncm);
\r
83 LogManager lm = new LogManager(ncm);
\r
84 Server server = new Server();
\r
85 SelectChannelConnector http = new SelectChannelConnector();
\r
86 http.setPort(ncm.getHttpPort());
\r
87 http.setMaxIdleTime(2000);
\r
88 http.setRequestHeaderSize(2048);
\r
89 SslSelectChannelConnector https = new SslSelectChannelConnector();
\r
90 https.setPort(ncm.getHttpsPort());
\r
91 https.setMaxIdleTime(30000);
\r
92 https.setRequestHeaderSize(8192);
\r
93 SslContextFactory cf = https.getSslContextFactory();
\r
95 /**Skip SSLv3 Fixes*/
\r
96 cf.addExcludeProtocols("SSLv3");
\r
97 logger.info("Excluded protocols node-"+cf.getExcludeProtocols());
\r
98 /**End of SSLv3 Fixes*/
\r
100 cf.setKeyStoreType(ncm.getKSType());
\r
101 cf.setKeyStorePath(ncm.getKSFile());
\r
102 cf.setKeyStorePassword(ncm.getKSPass());
\r
103 cf.setKeyManagerPassword(ncm.getKPass());
\r
104 server.setConnectors(new Connector[] { http, https });
\r
105 ServletContextHandler ctxt = new ServletContextHandler(0);
\r
106 ctxt.setContextPath("/");
\r
107 server.setHandler(ctxt);
\r
108 ctxt.addServlet(new ServletHolder(new NodeServlet()), "/*");
\r
109 logger.info("NODE0005 Data Router Node Activating Service");
\r