/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.vertical.adminweb; import java.util.Map; import java.util.Properties; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import com.google.common.base.Predicate; import com.google.common.collect.Maps; import com.enonic.cms.core.tools.DataSourceInfoResolver; import com.enonic.cms.core.vhost.VirtualHostResolver; public class PropertiesInfoModelFactory { private DataSourceInfoResolver dataSourceInfoResolver; private Properties configurationProperties; private Properties virtualHosts; public PropertiesInfoModelFactory( DataSourceInfoResolver dataSourceInfoResolver, Properties configurationProperties, final Properties virtualHosts ) { this.dataSourceInfoResolver = dataSourceInfoResolver; this.configurationProperties = configurationProperties; this.virtualHosts = virtualHosts; } public PropertiesInfoModel createSystemPropertiesModel() { PropertiesInfoModel infoModel = new PropertiesInfoModel(); try { infoModel.setSystemProperties( System.getProperties() ); infoModel.setDatasourceProperties( this.dataSourceInfoResolver.getInfo( false ) ); infoModel.setConfigurationProperties( getConfigurationProperties() ); infoModel.setVhostProperties( virtualHosts ); } catch ( Exception e ) { throw new VerticalAdminException( "Not able to create properties-model", e ); } return infoModel; } private Map<Object, Object> getConfigurationProperties() { return stripPasswords( this.configurationProperties ); } private Properties stripPasswords( Properties secretProperties ) { Properties publicProperties = new Properties(); for ( Map.Entry<Object, Object> prop : secretProperties.entrySet() ) { if ( prop.getKey() instanceof String ) { String key = (String) prop.getKey(); if ( key.matches( ".*[Pp][Aa][Ss][Ss][Ww][Oo][Rr][Dd]$" ) ) { publicProperties.put( key, "****" ); } else { publicProperties.put( key, prop.getValue() ); } } else { publicProperties.put( prop.getKey(), prop.getValue() ); } } return publicProperties; } }