Merge "Updated champ-lib to use the correct logger"
[aai/champ.git] / champ-service / src / main / java / org / onap / champ / ChampApplication.java
1 /**
2  * ============LICENSE_START==========================================
3  * org.onap.aai
4  * ===================================================================
5  * Copyright Â© 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * Copyright Â© 2017-2018 Amdocs
7  * ===================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  */
21 package org.onap.champ;
22
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import javax.annotation.PostConstruct;
27
28 import org.eclipse.jetty.util.security.Password;
29 import org.onap.champ.service.logging.LoggingUtil;
30 import org.springframework.beans.factory.annotation.Autowired;
31 import org.springframework.boot.autoconfigure.SpringBootApplication;
32 import org.springframework.boot.builder.SpringApplicationBuilder;
33 import org.springframework.boot.web.support.SpringBootServletInitializer;
34 import org.springframework.context.annotation.ImportResource;
35 import org.springframework.core.env.Environment;
36
37 @SpringBootApplication
38 @ImportResource({"file:${SERVICE_BEANS}/*.xml"})
39 public class ChampApplication extends SpringBootServletInitializer {
40
41     @Autowired
42     private Environment env;
43
44     public static void main(String[] args) {
45         LoggingUtil.initMdcContext();
46         
47         String keyStorePassword = System.getProperty("KEY_STORE_PASSWORD");
48         if (keyStorePassword == null || keyStorePassword.isEmpty()) {
49             throw new RuntimeException("Environment property KEY_STORE_PASSWORD not set");
50         }
51
52         Map<String, Object> props = new HashMap<>();
53         String deobfuscatedKeyStorePassword = keyStorePassword.startsWith("OBF:") ? Password.deobfuscate(keyStorePassword) : keyStorePassword;
54         props.put("server.ssl.key-store-password", deobfuscatedKeyStorePassword);
55
56         String trustStoreLocation = System.getProperty("TRUST_STORE_LOCATION");
57         String trustStorePassword = System.getProperty("TRUST_STORE_PASSWORD");
58         if (trustStoreLocation != null && trustStorePassword != null) {
59             trustStorePassword = trustStorePassword.startsWith("OBF:") ? Password.deobfuscate(trustStorePassword) : trustStorePassword;
60             props.put("server.ssl.trust-store", trustStoreLocation);
61             props.put("server.ssl.trust-store-password", trustStorePassword);
62         }
63
64         String requireClientAuth = System.getenv("REQUIRE_CLIENT_AUTH");
65         if (requireClientAuth == null || requireClientAuth.isEmpty()) {
66             props.put("server.ssl.client-auth", "need");
67         }else {
68             props.put("server.ssl.client-auth",requireClientAuth.equals("true")?"need":"want");
69         }       
70
71         new ChampApplication().configure(new SpringApplicationBuilder(ChampApplication.class).properties(props))
72                 .run(args);
73     }
74
75     /**
76      * Set required trust store system properties using values from application.properties
77      */
78     @PostConstruct
79     public void setSystemProperties() {
80         String trustStorePath = env.getProperty("server.ssl.key-store");
81         if (trustStorePath != null) {
82             String trustStorePassword = env.getProperty("server.ssl.key-store-password");
83
84             if (trustStorePassword != null) {
85                 System.setProperty("javax.net.ssl.trustStore", trustStorePath);
86                 System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);
87             } else {
88                 throw new IllegalArgumentException("Env property server.ssl.key-store-password not set");
89             }
90         }
91     }
92 }