diff --git a/server/src/com/cloud/dc/ClusterDetailsDaoImpl.java b/server/src/com/cloud/dc/ClusterDetailsDaoImpl.java index e488695d711..4ee63c42890 100755 --- a/server/src/com/cloud/dc/ClusterDetailsDaoImpl.java +++ b/server/src/com/cloud/dc/ClusterDetailsDaoImpl.java @@ -22,6 +22,7 @@ import java.util.Map; import javax.ejb.Local; +import com.cloud.utils.crypt.DBEncryptionUtil; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; @@ -31,12 +32,12 @@ import com.cloud.utils.db.Transaction; public class ClusterDetailsDaoImpl extends GenericDaoBase implements ClusterDetailsDao { protected final SearchBuilder ClusterSearch; protected final SearchBuilder DetailSearch; - + protected ClusterDetailsDaoImpl() { ClusterSearch = createSearchBuilder(); ClusterSearch.and("clusterId", ClusterSearch.entity().getClusterId(), SearchCriteria.Op.EQ); ClusterSearch.done(); - + DetailSearch = createSearchBuilder(); DetailSearch.and("clusterId", DetailSearch.entity().getClusterId(), SearchCriteria.Op.EQ); DetailSearch.and("name", DetailSearch.entity().getName(), SearchCriteria.Op.EQ); @@ -48,32 +49,40 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase sc = DetailSearch.create(); sc.setParameters("clusterId", clusterId); sc.setParameters("name", name); - - return findOneIncludingRemovedBy(sc); + + ClusterDetailsVO detail = findOneIncludingRemovedBy(sc); + if("password".equals(name) && detail != null){ + detail.setValue(DBEncryptionUtil.decrypt(detail.getValue())); + } + return detail; } - + @Override public Map findDetails(long clusterId) { SearchCriteria sc = ClusterSearch.create(); sc.setParameters("clusterId", clusterId); - + List results = search(sc, null); Map details = new HashMap(results.size()); for (ClusterDetailsVO result : results) { - details.put(result.getName(), result.getValue()); + if("password".equals(result.getName())){ + details.put(result.getName(), DBEncryptionUtil.decrypt(result.getValue())); + } else { + details.put(result.getName(), result.getValue()); + } } return details; } - + @Override public void deleteDetails(long clusterId) { SearchCriteria sc = ClusterSearch.create(); sc.setParameters("clusterId", clusterId); - + List results = search(sc, null); for (ClusterDetailsVO result : results) { - remove(result.getId()); + remove(result.getId()); } } @@ -84,9 +93,13 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase sc = ClusterSearch.create(); sc.setParameters("clusterId", clusterId); expunge(sc); - + for (Map.Entry detail : details.entrySet()) { - ClusterDetailsVO vo = new ClusterDetailsVO(clusterId, detail.getKey(), detail.getValue()); + String value = detail.getValue(); + if("password".equals(detail.getKey())){ + value = DBEncryptionUtil.encrypt(value); + } + ClusterDetailsVO vo = new ClusterDetailsVO(clusterId, detail.getKey(), value); persist(vo); } txn.commit(); @@ -100,10 +113,10 @@ public class ClusterDetailsDaoImpl extends GenericDaoBase