This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/master by this push:
new b28d638 Add support to StartTLS on Quota's mailing (#4573)
b28d638 is described below
commit b28d638ade0db8bd0d7edb2f227d633d2a2b9db2
Author: Daniel Augusto Veronezi Salvador
<[email protected]>
AuthorDate: Tue Apr 13 04:55:02 2021 -0300
Add support to StartTLS on Quota's mailing (#4573)
Co-authored-by: Daniel Augusto Veronezi Salvador <[email protected]>
---
.../apache/cloudstack/quota/QuotaAlertManagerImpl.java | 15 ++++++++++++---
.../org/apache/cloudstack/quota/constant/QuotaConfig.java | 3 +++
.../org/apache/cloudstack/quota/QuotaServiceImpl.java | 2 +-
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git
a/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaAlertManagerImpl.java
b/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaAlertManagerImpl.java
index 189a097..019420c 100644
---
a/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaAlertManagerImpl.java
+++
b/framework/quota/src/main/java/org/apache/cloudstack/quota/QuotaAlertManagerImpl.java
@@ -63,6 +63,7 @@ import com.sun.mail.smtp.SMTPMessage;
import com.sun.mail.smtp.SMTPSSLTransport;
import com.sun.mail.smtp.SMTPTransport;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang.BooleanUtils;
@Component
public class QuotaAlertManagerImpl extends ManagerBase implements
QuotaAlertManager {
@@ -116,9 +117,11 @@ public class QuotaAlertManagerImpl extends ManagerBase
implements QuotaAlertMana
String smtpPassword = configs.get(QuotaConfig.QuotaSmtpPassword.key());
String emailSender = configs.get(QuotaConfig.QuotaSmtpSender.key());
String smtpEnabledSecurityProtocols =
configs.get(QuotaConfig.QuotaSmtpEnabledSecurityProtocols.key());
+ String useStartTLSStr =
configs.get(QuotaConfig.QuotaSmtpUseStartTLS.key());
+ boolean useStartTLS = BooleanUtils.toBoolean(useStartTLSStr);
_lockAccountEnforcement =
"true".equalsIgnoreCase(configs.get(QuotaConfig.QuotaEnableEnforcement.key()));
- _emailQuotaAlert = new EmailQuotaAlert(smtpHost, smtpPort, useAuth,
smtpUsername, smtpPassword, emailSender, smtpEnabledSecurityProtocols,
_smtpDebug);
+ _emailQuotaAlert = new EmailQuotaAlert(smtpHost, smtpPort, useAuth,
smtpUsername, smtpPassword, emailSender, smtpEnabledSecurityProtocols,
useStartTLS, _smtpDebug);
return true;
}
@@ -342,14 +345,16 @@ public class QuotaAlertManagerImpl extends ManagerBase
implements QuotaAlertMana
private final String _smtpUsername;
private final String _smtpPassword;
private final String _emailSender;
+ private final boolean smtpUseStartTLS;
- public EmailQuotaAlert(String smtpHost, int smtpPort, boolean
smtpUseAuth, final String smtpUsername, final String smtpPassword, String
emailSender, String smtpEnabledSecurityProtocols, boolean smtpDebug) {
+ public EmailQuotaAlert(String smtpHost, int smtpPort, boolean
smtpUseAuth, final String smtpUsername, final String smtpPassword, String
emailSender, String smtpEnabledSecurityProtocols, boolean smtpUseStartTLS,
boolean smtpDebug) {
_smtpHost = smtpHost;
_smtpPort = smtpPort;
_smtpUseAuth = smtpUseAuth;
_smtpUsername = smtpUsername;
_smtpPassword = smtpPassword;
_emailSender = emailSender;
+ this.smtpUseStartTLS = smtpUseStartTLS;
if (!Strings.isNullOrEmpty(_smtpHost)) {
Properties smtpProps = new Properties();
@@ -371,6 +376,10 @@ public class QuotaAlertManagerImpl extends ManagerBase
implements QuotaAlertMana
smtpProps.put("mail.smtp.ssl.protocols",
smtpEnabledSecurityProtocols);
}
+ if (smtpUseAuth) {
+ smtpProps.put("mail.smtp.starttls.enable",
smtpUseStartTLS);
+ }
+
if (!Strings.isNullOrEmpty(smtpUsername) &&
!Strings.isNullOrEmpty(smtpPassword)) {
_smtpSession = Session.getInstance(smtpProps, new
Authenticator() {
@Override
@@ -413,7 +422,7 @@ public class QuotaAlertManagerImpl extends ManagerBase
implements QuotaAlertMana
msg.saveChanges();
SMTPTransport smtpTrans = null;
- if (_smtpUseAuth) {
+ if (_smtpUseAuth && !this.smtpUseStartTLS) {
smtpTrans = new SMTPSSLTransport(_smtpSession, new
URLName("smtp", _smtpHost, _smtpPort, null, _smtpUsername, _smtpPassword));
} else {
smtpTrans = new SMTPTransport(_smtpSession, new
URLName("smtp", _smtpHost, _smtpPort, null, _smtpUsername, _smtpPassword));
diff --git
a/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaConfig.java
b/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaConfig.java
index 14de1ce..4cb855f 100644
---
a/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaConfig.java
+++
b/framework/quota/src/main/java/org/apache/cloudstack/quota/constant/QuotaConfig.java
@@ -54,6 +54,9 @@ public interface QuotaConfig {
public static final ConfigKey<String> QuotaSmtpEnabledSecurityProtocols =
new ConfigKey<String>("Advanced", String.class,
"quota.usage.smtp.enabledSecurityProtocols", "",
"White-space separated security protocols; ex: \"TLSv1 TLSv1.1\".
Supported protocols: SSLv2Hello, SSLv3, TLSv1, TLSv1.1 and TLSv1.2", true);
+ public static final ConfigKey<String> QuotaSmtpUseStartTLS = new
ConfigKey<String>("Advanced", String.class, "quota.usage.smtp.useStartTLS",
"false",
+ "If set to true and if we enable security via
quota.usage.smtp.useAuth, this will enable StartTLS to secure the conection.",
true);
+
enum QuotaEmailTemplateTypes {
QUOTA_LOW, QUOTA_EMPTY, QUOTA_UNLOCK_ACCOUNT, QUOTA_STATEMENT
}
diff --git
a/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java
b/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java
index 80d69b9..a8c28a5 100644
---
a/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java
+++
b/plugins/database/quota/src/main/java/org/apache/cloudstack/quota/QuotaServiceImpl.java
@@ -137,7 +137,7 @@ public class QuotaServiceImpl extends ManagerBase
implements QuotaService, Confi
@Override
public ConfigKey<?>[] getConfigKeys() {
return new ConfigKey<?>[] {QuotaPluginEnabled, QuotaEnableEnforcement,
QuotaCurrencySymbol, QuotaStatementPeriod, QuotaSmtpHost, QuotaSmtpPort,
QuotaSmtpTimeout,
- QuotaSmtpUser, QuotaSmtpPassword, QuotaSmtpAuthType,
QuotaSmtpSender, QuotaSmtpEnabledSecurityProtocols};
+ QuotaSmtpUser, QuotaSmtpPassword, QuotaSmtpAuthType,
QuotaSmtpSender, QuotaSmtpEnabledSecurityProtocols, QuotaSmtpUseStartTLS};
}
@Override