Skip to content

Commit a10eee2

Browse files
authored
Add method for decrypting values accordingly (#9088)
1 parent 591cc4f commit a10eee2

File tree

4 files changed

+30
-4
lines changed

4 files changed

+30
-4
lines changed

engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,6 @@ public interface DomainDetailsDao extends GenericDao<DomainDetailVO, Long> {
3131
void deleteDetails(long domainId);
3232

3333
void update(long domainId, Map<String, String> details);
34+
35+
String getActualValue(DomainDetailVO domainDetailVO);
3436
}

engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import com.cloud.domain.DomainDetailVO;
2626
import com.cloud.domain.DomainVO;
27+
import com.cloud.utils.crypt.DBEncryptionUtil;
2728
import com.cloud.utils.db.GenericDaoBase;
2829
import com.cloud.utils.db.QueryBuilder;
2930
import com.cloud.utils.db.SearchBuilder;
@@ -34,6 +35,7 @@
3435
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
3536
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
3637
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
38+
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
3739

3840
public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long> implements DomainDetailsDao, ScopedConfigStorage {
3941
protected final SearchBuilder<DomainDetailVO> domainSearch;
@@ -111,7 +113,7 @@ public String getConfigValue(long id, ConfigKey<?> key) {
111113
String enableDomainSettingsForChildDomain = _configDao.getValue("enable.domain.settings.for.child.domain");
112114
if (!Boolean.parseBoolean(enableDomainSettingsForChildDomain)) {
113115
vo = findDetail(id, key.key());
114-
return vo == null ? null : vo.getValue();
116+
return vo == null ? null : getActualValue(vo);
115117
}
116118
DomainVO domain = _domainDao.findById(id);
117119
// if value is not configured in domain then check its parent domain till ROOT
@@ -125,6 +127,15 @@ public String getConfigValue(long id, ConfigKey<?> key) {
125127
break;
126128
}
127129
}
128-
return vo == null ? null : vo.getValue();
130+
return vo == null ? null : getActualValue(vo);
131+
}
132+
133+
@Override
134+
public String getActualValue(DomainDetailVO domainDetailVO) {
135+
ConfigurationVO configurationVO = _configDao.findByName(domainDetailVO.getName());
136+
if (configurationVO != null && configurationVO.isEncrypted()) {
137+
return DBEncryptionUtil.decrypt(domainDetailVO.getValue());
138+
}
139+
return domainDetailVO.getValue();
129140
}
130141
}

engine/schema/src/main/java/com/cloud/user/AccountDetailsDao.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@ public interface AccountDetailsDao extends GenericDao<AccountDetailVO, Long> {
3434
* they will get created
3535
*/
3636
void update(long accountId, Map<String, String> details);
37+
38+
String getActualValue(AccountDetailVO accountDetailVO);
3739
}

engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import javax.inject.Inject;
2525

26+
import com.cloud.utils.crypt.DBEncryptionUtil;
2627
import org.apache.cloudstack.framework.config.ConfigKey;
2728
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
2829
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
@@ -40,6 +41,7 @@
4041
import com.cloud.utils.db.SearchCriteria.Op;
4142
import com.cloud.utils.db.TransactionLegacy;
4243
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
44+
import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
4345

4446
public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long> implements AccountDetailsDao, ScopedConfigStorage {
4547
protected final SearchBuilder<AccountDetailVO> accountSearch;
@@ -119,7 +121,7 @@ public Scope getScope() {
119121
public String getConfigValue(long id, ConfigKey<?> key) {
120122
// check if account level setting is configured
121123
AccountDetailVO vo = findDetail(id, key.key());
122-
String value = vo == null ? null : vo.getValue();
124+
String value = vo == null ? null : getActualValue(vo);
123125
if (value != null) {
124126
return value;
125127
}
@@ -140,7 +142,7 @@ public String getConfigValue(long id, ConfigKey<?> key) {
140142
while (domain != null) {
141143
DomainDetailVO domainVO = _domainDetailsDao.findDetail(domain.getId(), key.key());
142144
if (domainVO != null) {
143-
value = domainVO.getValue();
145+
value = _domainDetailsDao.getActualValue(domainVO);
144146
break;
145147
} else if (domain.getParent() != null) {
146148
domain = _domainDao.findById(domain.getParent());
@@ -152,4 +154,13 @@ public String getConfigValue(long id, ConfigKey<?> key) {
152154
}
153155
return value;
154156
}
157+
158+
@Override
159+
public String getActualValue(AccountDetailVO accountDetailVO) {
160+
ConfigurationVO configurationVO = _configDao.findByName(accountDetailVO.getName());
161+
if (configurationVO != null && configurationVO.isEncrypted()) {
162+
return DBEncryptionUtil.decrypt(accountDetailVO.getValue());
163+
}
164+
return accountDetailVO.getValue();
165+
}
155166
}

0 commit comments

Comments
 (0)