[UI] Optional trust of all SSL Certificates
[validation.git] / ui / src / main / java / org / akraino / validation / ui / conf / UiInitializer.java
index febafe1..0520f58 100644 (file)
  */
 package org.akraino.validation.ui.conf;
 
+import java.io.IOException;
 import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.X509Certificate;
+import java.util.List;
 import java.util.Map;
 
 import javax.net.ssl.HostnameVerifier;
@@ -27,6 +29,11 @@ import javax.net.ssl.SSLSession;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
+import org.onap.portalsdk.core.domain.User;
+import org.onap.portalsdk.core.onboarding.exception.CipherUtilException;
+import org.onap.portalsdk.core.onboarding.util.CipherUtil;
+import org.onap.portalsdk.core.service.UserProfileService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
@@ -37,6 +44,9 @@ import com.sun.jersey.client.urlconnection.HTTPSProperties;
 @Component
 public class UiInitializer {
 
+    @Autowired
+    UserProfileService userService;
+
     // Create all-trusting host name verifier
     private final HostnameVerifier hostnameVerifier = new HostnameVerifier() {
         @Override
@@ -64,15 +74,36 @@ public class UiInitializer {
 
     @EventListener(ContextRefreshedEvent.class)
     public void setHttpProperties() throws NoSuchAlgorithmException, KeyManagementException {
-        SSLContext sslContext = SSLContext.getInstance("SSL");
-        sslContext.init(null, this.trustAll, new java.security.SecureRandom());
-        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
-        // Install the all-trusting host verifier
-        HttpsURLConnection.setDefaultHostnameVerifier(this.hostnameVerifier);
-        DefaultClientConfig config = new DefaultClientConfig();
-        Map<String, Object> properties = config.getProperties();
-        HTTPSProperties httpsProperties = new HTTPSProperties((str, sslSession) -> true, sslContext);
-        properties.put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, httpsProperties);
+        if (System.getenv("TRUST_ALL") != null && System.getenv("TRUST_ALL").equals("true")) {
+            SSLContext sslContext = SSLContext.getInstance("SSL");
+            sslContext.init(null, this.trustAll, new java.security.SecureRandom());
+            HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
+            // Install the all-trusting host verifier
+            HttpsURLConnection.setDefaultHostnameVerifier(this.hostnameVerifier);
+            DefaultClientConfig config = new DefaultClientConfig();
+            Map<String, Object> properties = config.getProperties();
+            HTTPSProperties httpsProperties = new HTTPSProperties((str, sslSession) -> true, sslContext);
+            properties.put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, httpsProperties);
+        }
+    }
+
+    @EventListener(ContextRefreshedEvent.class)
+    public void updateAdminUser() throws RuntimeException, IOException, CipherUtilException {
+        User admin = null;
+        List<User> users = userService.findAllActive();
+        for (User user : users) {
+            if (user.getLoginId().equals("admin")) {
+                admin = user;
+            }
+        }
+        if (admin == null) {
+            throw new RuntimeException("Admin user does not exist");
+        }
+        if (admin.getLoginPwd().equals("admin_password")) {
+            admin.setLoginPwd(
+                    CipherUtil.encryptPKC(System.getenv("UI_ADMIN_PASSWORD"), System.getenv("ENCRYPTION_KEY")));
+            userService.saveUser(admin);
+        }
     }
 
 }