This is an automated email from the ASF dual-hosted git repository.

nvazquez pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new eb3acc3  Externalize tls version and security protocols configuration 
on mail sending (#5119)
eb3acc3 is described below

commit eb3acc334b082f95fb930424a01c0538507bbeb6
Author: Daniel Augusto Veronezi Salvador 
<[email protected]>
AuthorDate: Wed Jul 21 09:01:11 2021 -0300

    Externalize tls version and security protocols configuration on mail 
sending (#5119)
    
    * Externalize configs to alert
    
    * Externalize configs to project
    
    Co-authored-by: GutoVeronezi <[email protected]>
---
 .../src/main/java/com/cloud/alert/AlertManager.java         |  6 ++++++
 server/src/main/java/com/cloud/alert/AlertManagerImpl.java  |  3 ++-
 server/src/main/java/com/cloud/projects/ProjectManager.java |  7 +++++++
 .../main/java/com/cloud/projects/ProjectManagerImpl.java    | 13 ++++++++++++-
 4 files changed, 27 insertions(+), 2 deletions(-)

diff --git 
a/engine/components-api/src/main/java/com/cloud/alert/AlertManager.java 
b/engine/components-api/src/main/java/com/cloud/alert/AlertManager.java
index be29a5d..6a90e74 100644
--- a/engine/components-api/src/main/java/com/cloud/alert/AlertManager.java
+++ b/engine/components-api/src/main/java/com/cloud/alert/AlertManager.java
@@ -35,6 +35,12 @@ public interface AlertManager extends Manager, AlertService {
         "Alert", "0.75", "Percentage (as a value between 0 and 1) of allocated 
storage utilization above which alerts will be sent about low storage 
available.", true,
         ConfigKey.Scope.Cluster, null);
 
+    public static final ConfigKey<Boolean> AlertSmtpUseStartTLS = new 
ConfigKey<Boolean>("Advanced", Boolean.class, "alert.smtp.useStartTLS", "false",
+            "If set to true and if we enable security via alert.smtp.useAuth, 
this will enable StartTLS to secure the conection.", true);
+
+    public static final ConfigKey<String> AlertSmtpEnabledSecurityProtocols = 
new ConfigKey<String>("Advanced", String.class, 
"alert.smtp.enabledSecurityProtocols", "",
+            "White-space separated security protocols; ex: \"TLSv1 TLSv1.1\". 
Supported protocols: SSLv2Hello, SSLv3, TLSv1, TLSv1.1 and TLSv1.2", true);
+
     void clearAlert(AlertType alertType, long dataCenterId, long podId);
 
     void recalculateCapacity();
diff --git a/server/src/main/java/com/cloud/alert/AlertManagerImpl.java 
b/server/src/main/java/com/cloud/alert/AlertManagerImpl.java
index f6e4360..5ba8c26 100644
--- a/server/src/main/java/com/cloud/alert/AlertManagerImpl.java
+++ b/server/src/main/java/com/cloud/alert/AlertManagerImpl.java
@@ -759,7 +759,8 @@ public class AlertManagerImpl extends ManagerBase 
implements AlertManager, Confi
 
     @Override
     public ConfigKey<?>[] getConfigKeys() {
-        return new ConfigKey<?>[] {CPUCapacityThreshold, 
MemoryCapacityThreshold, StorageAllocatedCapacityThreshold, 
StorageCapacityThreshold};
+        return new ConfigKey<?>[] {CPUCapacityThreshold, 
MemoryCapacityThreshold, StorageAllocatedCapacityThreshold, 
StorageCapacityThreshold, AlertSmtpEnabledSecurityProtocols,
+            AlertSmtpUseStartTLS};
     }
 
     @Override
diff --git a/server/src/main/java/com/cloud/projects/ProjectManager.java 
b/server/src/main/java/com/cloud/projects/ProjectManager.java
index f568146..8eebfd3 100644
--- a/server/src/main/java/com/cloud/projects/ProjectManager.java
+++ b/server/src/main/java/com/cloud/projects/ProjectManager.java
@@ -19,8 +19,15 @@ package com.cloud.projects;
 import java.util.List;
 
 import com.cloud.user.Account;
+import org.apache.cloudstack.framework.config.ConfigKey;
 
 public interface ProjectManager extends ProjectService {
+    public static final ConfigKey<Boolean> ProjectSmtpUseStartTLS = new 
ConfigKey<Boolean>("Advanced", Boolean.class, "project.smtp.useStartTLS", 
"false",
+            "If set to true and if we enable security via 
project.smtp.useAuth, this will enable StartTLS to secure the conection.", 
true);
+
+    public static final ConfigKey<String> ProjectSmtpEnabledSecurityProtocols 
= new ConfigKey<String>("Advanced", String.class, 
"project.smtp.enabledSecurityProtocols", "",
+            "White-space separated security protocols; ex: \"TLSv1 TLSv1.1\". 
Supported protocols: SSLv2Hello, SSLv3, TLSv1, TLSv1.1 and TLSv1.2", true);
+
     boolean canAccessProjectAccount(Account caller, long accountId);
 
     boolean canModifyProjectAccount(Account caller, long accountId);
diff --git a/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java 
b/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java
index 7cb4674..6d51c19 100644
--- a/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java
+++ b/server/src/main/java/com/cloud/projects/ProjectManagerImpl.java
@@ -82,13 +82,15 @@ import com.cloud.utils.db.TransactionStatus;
 import com.cloud.utils.exception.CloudRuntimeException;
 import java.util.HashSet;
 import java.util.Set;
+import org.apache.cloudstack.framework.config.ConfigKey;
+import org.apache.cloudstack.framework.config.Configurable;
 import org.apache.cloudstack.utils.mailing.MailAddress;
 import org.apache.cloudstack.utils.mailing.SMTPMailProperties;
 import org.apache.cloudstack.utils.mailing.SMTPMailSender;
 import org.apache.commons.lang3.BooleanUtils;
 
 @Component
-public class ProjectManagerImpl extends ManagerBase implements ProjectManager {
+public class ProjectManagerImpl extends ManagerBase implements ProjectManager, 
Configurable {
     public static final Logger s_logger = 
Logger.getLogger(ProjectManagerImpl.class);
 
     @Inject
@@ -1366,4 +1368,13 @@ public class ProjectManagerImpl extends ManagerBase 
implements ProjectManager {
         return _allowUserToCreateProject;
     }
 
+    @Override
+    public String getConfigComponentName() {
+        return ProjectManager.class.getSimpleName();
+    }
+
+    @Override
+    public ConfigKey<?>[] getConfigKeys() {
+        return new ConfigKey<?>[] {ProjectSmtpEnabledSecurityProtocols, 
ProjectSmtpUseStartTLS};
+    }
 }

Reply via email to