This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.19 by this push:
new a10eee25b34 Add method for decrypting values accordingly (#9088)
a10eee25b34 is described below
commit a10eee25b3432a268597e54e05024933bed90c0a
Author: Bryan Lima <[email protected]>
AuthorDate: Tue Jun 18 05:31:35 2024 -0300
Add method for decrypting values accordingly (#9088)
---
.../main/java/com/cloud/domain/dao/DomainDetailsDao.java | 2 ++
.../java/com/cloud/domain/dao/DomainDetailsDaoImpl.java | 15 +++++++++++++--
.../src/main/java/com/cloud/user/AccountDetailsDao.java | 2 ++
.../main/java/com/cloud/user/AccountDetailsDaoImpl.java | 15 +++++++++++++--
4 files changed, 30 insertions(+), 4 deletions(-)
diff --git
a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java
b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java
index 51362cf885e..6b53e49764e 100644
--- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java
+++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDao.java
@@ -31,4 +31,6 @@ public interface DomainDetailsDao extends
GenericDao<DomainDetailVO, Long> {
void deleteDetails(long domainId);
void update(long domainId, Map<String, String> details);
+
+ String getActualValue(DomainDetailVO domainDetailVO);
}
diff --git
a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java
b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java
index dad3fe9ad1e..50097d154f5 100644
--- a/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/domain/dao/DomainDetailsDaoImpl.java
@@ -24,6 +24,7 @@ import javax.inject.Inject;
import com.cloud.domain.DomainDetailVO;
import com.cloud.domain.DomainVO;
+import com.cloud.utils.crypt.DBEncryptionUtil;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.QueryBuilder;
import com.cloud.utils.db.SearchBuilder;
@@ -34,6 +35,7 @@ import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
public class DomainDetailsDaoImpl extends GenericDaoBase<DomainDetailVO, Long>
implements DomainDetailsDao, ScopedConfigStorage {
protected final SearchBuilder<DomainDetailVO> domainSearch;
@@ -111,7 +113,7 @@ public class DomainDetailsDaoImpl extends
GenericDaoBase<DomainDetailVO, Long> i
String enableDomainSettingsForChildDomain =
_configDao.getValue("enable.domain.settings.for.child.domain");
if (!Boolean.parseBoolean(enableDomainSettingsForChildDomain)) {
vo = findDetail(id, key.key());
- return vo == null ? null : vo.getValue();
+ return vo == null ? null : getActualValue(vo);
}
DomainVO domain = _domainDao.findById(id);
// if value is not configured in domain then check its parent domain
till ROOT
@@ -125,6 +127,15 @@ public class DomainDetailsDaoImpl extends
GenericDaoBase<DomainDetailVO, Long> i
break;
}
}
- return vo == null ? null : vo.getValue();
+ return vo == null ? null : getActualValue(vo);
+ }
+
+ @Override
+ public String getActualValue(DomainDetailVO domainDetailVO) {
+ ConfigurationVO configurationVO =
_configDao.findByName(domainDetailVO.getName());
+ if (configurationVO != null && configurationVO.isEncrypted()) {
+ return DBEncryptionUtil.decrypt(domainDetailVO.getValue());
+ }
+ return domainDetailVO.getValue();
}
}
diff --git a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDao.java
b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDao.java
index f4534ee41ee..514433e8068 100644
--- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDao.java
+++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDao.java
@@ -34,4 +34,6 @@ public interface AccountDetailsDao extends
GenericDao<AccountDetailVO, Long> {
* they will get created
*/
void update(long accountId, Map<String, String> details);
+
+ String getActualValue(AccountDetailVO accountDetailVO);
}
diff --git
a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java
b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java
index 5451192fc6d..de562e27f9e 100644
--- a/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/user/AccountDetailsDaoImpl.java
@@ -23,6 +23,7 @@ import java.util.Optional;
import javax.inject.Inject;
+import com.cloud.utils.crypt.DBEncryptionUtil;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.ConfigKey.Scope;
import org.apache.cloudstack.framework.config.ScopedConfigStorage;
@@ -40,6 +41,7 @@ import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.SearchCriteria.Op;
import com.cloud.utils.db.TransactionLegacy;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO,
Long> implements AccountDetailsDao, ScopedConfigStorage {
protected final SearchBuilder<AccountDetailVO> accountSearch;
@@ -119,7 +121,7 @@ public class AccountDetailsDaoImpl extends
GenericDaoBase<AccountDetailVO, Long>
public String getConfigValue(long id, ConfigKey<?> key) {
// check if account level setting is configured
AccountDetailVO vo = findDetail(id, key.key());
- String value = vo == null ? null : vo.getValue();
+ String value = vo == null ? null : getActualValue(vo);
if (value != null) {
return value;
}
@@ -140,7 +142,7 @@ public class AccountDetailsDaoImpl extends
GenericDaoBase<AccountDetailVO, Long>
while (domain != null) {
DomainDetailVO domainVO =
_domainDetailsDao.findDetail(domain.getId(), key.key());
if (domainVO != null) {
- value = domainVO.getValue();
+ value = _domainDetailsDao.getActualValue(domainVO);
break;
} else if (domain.getParent() != null) {
domain = _domainDao.findById(domain.getParent());
@@ -152,4 +154,13 @@ public class AccountDetailsDaoImpl extends
GenericDaoBase<AccountDetailVO, Long>
}
return value;
}
+
+ @Override
+ public String getActualValue(AccountDetailVO accountDetailVO) {
+ ConfigurationVO configurationVO =
_configDao.findByName(accountDetailVO.getName());
+ if (configurationVO != null && configurationVO.isEncrypted()) {
+ return DBEncryptionUtil.decrypt(accountDetailVO.getValue());
+ }
+ return accountDetailVO.getValue();
+ }
}