X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fdatarouter%2FApplication.java;h=d27a4a2e241e5e560f7f7f0adc2b302790bf3e91;hb=refs%2Fheads%2Fmaster;hp=5abe7f39bde91a02f2adf2c5c647db0ac1230558;hpb=b9fbe7fa64e864f9101938917f76ca2c853c0840;p=aai%2Fdata-router.git diff --git a/src/main/java/org/onap/aai/datarouter/Application.java b/src/main/java/org/onap/aai/datarouter/Application.java index 5abe7f3..d27a4a2 100644 --- a/src/main/java/org/onap/aai/datarouter/Application.java +++ b/src/main/java/org/onap/aai/datarouter/Application.java @@ -21,34 +21,61 @@ package org.onap.aai.datarouter; import java.util.HashMap; - +import javax.annotation.PostConstruct; import org.apache.camel.component.servlet.CamelHttpTransportServlet; import org.eclipse.jetty.util.security.Password; +import org.onap.aai.config.EdgesConfiguration; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.context.annotation.FilterType; @SpringBootApplication +@ComponentScan(basePackages = {"org.onap.aai.config", "org.onap.aai.setup", "org.onap.aai.datarouter"}, excludeFilters = { +@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, +value = EdgesConfiguration.class)}) +@PropertySource(value = "file:${CONFIG_HOME}/schemaIngest.properties") public class Application extends SpringBootServletInitializer{ - - private static final String CAMEL_URL_MAPPING = "/*"; - private static final String CAMEL_SERVLET_NAME = "CamelServlet"; + + private static final String CAMEL_URL_MAPPING = "/*"; + private static final String CAMEL_SERVLET_NAME = "CamelServlet"; + private static final String JETTY_OBFUSCATION_PATTERN = "OBF:"; + + @Autowired + private Environment env; public static void main(String[] args) { String keyStorePassword = System.getenv("KEY_STORE_PASSWORD"); if(keyStorePassword==null || keyStorePassword.isEmpty()){ throw new RuntimeException("Env property KEY_STORE_PASSWORD not set"); } + HashMap props = new HashMap<>(); - props.put("server.ssl.key-store-password", Password.deobfuscate(keyStorePassword)); - new Application().configure(new SpringApplicationBuilder(Application.class).properties(props)).run(args); + String deobfuscatedKeyStorePassword = keyStorePassword.startsWith(JETTY_OBFUSCATION_PATTERN)?Password.deobfuscate(keyStorePassword):keyStorePassword; + props.put("server.ssl.key-store-password", deobfuscatedKeyStorePassword); - + String trustStoreLocation = System.getenv("TRUST_STORE_LOCATION"); + String trustStorePassword = System.getenv("TRUST_STORE_PASSWORD"); + if(trustStoreLocation!=null && trustStorePassword !=null){ + trustStorePassword = trustStorePassword.startsWith(JETTY_OBFUSCATION_PATTERN)?Password.deobfuscate(trustStorePassword):trustStorePassword; + props.put("server.ssl.trust-store", trustStoreLocation); + props.put("server.ssl.trust-store-password", trustStorePassword); + } + + String requireClientAuth = System.getenv("REQUIRE_CLIENT_AUTH"); + props.put("server.ssl.client-auth", + Boolean.FALSE.toString().equalsIgnoreCase(requireClientAuth) ? "want" : "need"); + + new Application().configure(new SpringApplicationBuilder(Application.class).properties(props)).run(args); } - + @Bean public ServletRegistrationBean getServletRegistrationBean() { ServletRegistrationBean registration = new ServletRegistrationBean(new CamelHttpTransportServlet(), CAMEL_URL_MAPPING); @@ -56,5 +83,34 @@ public class Application extends SpringBootServletInitializer{ return registration; } - + /** + * Set required system properties using values from application.properties and schemaIngest.properties + */ + @PostConstruct + public void setSystemProperties() { + String trustStorePath = env.getProperty("server.ssl.key-store"); + if (trustStorePath != null) { + String trustStorePassword = env.getProperty("server.ssl.key-store-password"); + + if (trustStorePassword != null) { + System.setProperty("javax.net.ssl.trustStore", trustStorePath); + System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword); + } else { + throw new IllegalArgumentException("Env property server.ssl.key-store-password not set"); + } + } + + String schemaServiceKeyStorePassword = env.getProperty("schema.service.ssl.key-store-password"); + if( (schemaServiceKeyStorePassword != null) && (schemaServiceKeyStorePassword.startsWith(JETTY_OBFUSCATION_PATTERN))){ + System.setProperty("schema.service.ssl.key-store-password", Password.deobfuscate(schemaServiceKeyStorePassword)); + } + + String schemaServiceTrustStorePassword = env.getProperty("schema.service.ssl.trust-store-password"); + if ( (schemaServiceTrustStorePassword != null) && (schemaServiceTrustStorePassword.startsWith(JETTY_OBFUSCATION_PATTERN)) ){ + System.setProperty("schema.service.ssl.trust-store-password", Password.deobfuscate(schemaServiceTrustStorePassword)); + } + + } + + } \ No newline at end of file