From cfb48fb7b7ed568320b1d0497ec4210ee03f7234 Mon Sep 17 00:00:00 2001 From: kishan Date: Tue, 20 Dec 2011 12:58:24 +0530 Subject: [PATCH] bug 12337: encrypt Hidden category config values only --- .../cloud/configuration/ConfigurationVO.java | 8 ++- .../ConfigurationManagerImpl.java | 3 + .../configuration/dao/ConfigurationDao.java | 4 +- .../dao/ConfigurationDaoImpl.java | 62 ++++++++----------- .../cloud/server/ConfigurationServerImpl.java | 4 +- .../cloud/server/ManagementServerImpl.java | 2 +- .../cloud/upgrade/dao/Upgrade2214to30.java | 2 +- 7 files changed, 38 insertions(+), 47 deletions(-) diff --git a/core/src/com/cloud/configuration/ConfigurationVO.java b/core/src/com/cloud/configuration/ConfigurationVO.java index 95f32fd04db..3ddcbe1e307 100644 --- a/core/src/com/cloud/configuration/ConfigurationVO.java +++ b/core/src/com/cloud/configuration/ConfigurationVO.java @@ -22,6 +22,8 @@ import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; + +import com.cloud.utils.crypt.DBEncryptionUtil; @Entity @Table(name="configuration") @@ -36,7 +38,7 @@ public class ConfigurationVO implements Configuration{ @Column(name="name") private String name; - @Column(name="value", length=4095, encryptable=true) + @Column(name="value", length=4095) private String value; @Column(name="description", length=1024) @@ -88,8 +90,8 @@ public class ConfigurationVO implements Configuration{ this.name = name; } - public String getValue() { - return value; + public String getValue() { + return ("Hidden".equals(getCategory()) ? DBEncryptionUtil.decrypt(value) : value); } public void setValue(String value) { diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index b506bf7f9c4..57bf4ab456a 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -2773,6 +2773,9 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura String value = cmd.getValue(); String description = cmd.getDescription(); try { + if("Hidden".equals(category)){ + value = DBEncryptionUtil.encrypt(value); + } ConfigurationVO entity = new ConfigurationVO(category, instance, component, name, value, description); _configDao.persist(entity); s_logger.info("Successfully added configuration value into db: category:" + category + " instance:" + instance + " component:" + component + " name:" + name + " value:" + value); diff --git a/server/src/com/cloud/configuration/dao/ConfigurationDao.java b/server/src/com/cloud/configuration/dao/ConfigurationDao.java index 8c51eb9b694..8d1ff17d709 100644 --- a/server/src/com/cloud/configuration/dao/ConfigurationDao.java +++ b/server/src/com/cloud/configuration/dao/ConfigurationDao.java @@ -59,7 +59,7 @@ public interface ConfigurationDao extends GenericDao { */ public String getValue(String name); - public String getValueAndInitIfNotExist(String name, String initValue); + public String getValueAndInitIfNotExist(String name, String category, String initValue); /** @@ -69,6 +69,4 @@ public interface ConfigurationDao extends GenericDao { boolean isPremium(); ConfigurationVO findByName(String name); - - ConfigurationVO persistConfigValue(ConfigurationVO config); } diff --git a/server/src/com/cloud/configuration/dao/ConfigurationDaoImpl.java b/server/src/com/cloud/configuration/dao/ConfigurationDaoImpl.java index d72c48fca1d..4c180341fc7 100644 --- a/server/src/com/cloud/configuration/dao/ConfigurationDaoImpl.java +++ b/server/src/com/cloud/configuration/dao/ConfigurationDaoImpl.java @@ -26,7 +26,6 @@ import java.util.Map; import javax.ejb.Local; import javax.naming.ConfigurationException; -import javax.persistence.EntityExistsException; import org.apache.log4j.Logger; @@ -77,15 +76,18 @@ public class ConfigurationDaoImpl extends GenericDaoBase sc = NameSearch.create(); - sc.setParameters("name", name); - List configurations = listIncludingRemovedBy(sc); - - if (configurations.size() == 0) { - return null; - } - - ConfigurationVO config = configurations.get(0); - String value = config.getValue(); - return value; + ConfigurationVO config = findByName(name); + return (config == null) ? null : config.getValue(); } @Override @DB - public String getValueAndInitIfNotExist(String name, String initValue) { + public String getValueAndInitIfNotExist(String name, String category, String initValue) { Transaction txn = Transaction.currentTxn(); PreparedStatement stmt = null; PreparedStatement stmtInsert = null; @@ -166,19 +159,26 @@ public class ConfigurationDaoImpl extends GenericDaoBase