added proxy configs to send mail rule node and sysadmin

This commit is contained in:
YevhenBondarenko 2020-05-13 16:42:30 +03:00 committed by Andrew Shvayka
parent 7ee2cdfe3e
commit c2dd91d819
7 changed files with 75 additions and 4 deletions

View File

@ -131,6 +131,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
node.put("username", "");
node.put("password", "");
node.put("tlsVersion", "TLSv1.2");//NOSONAR, key used to identify password field (not password value itself)
node.put("enableProxy", false);
mailSettings.setJsonValue(node);
adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, mailSettings);
}

View File

@ -115,6 +115,21 @@ public class DefaultMailService implements MailService {
if (enableTls && jsonConfig.has("tlsVersion") && StringUtils.isNoneEmpty(jsonConfig.get("tlsVersion").asText())) {
javaMailProperties.put(MAIL_PROP + protocol + ".ssl.protocols", jsonConfig.get("tlsVersion").asText());
}
boolean enableProxy = jsonConfig.has("enableProxy") && jsonConfig.get("enableProxy").asBoolean();
if (enableProxy) {
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.host", jsonConfig.get("proxyHost").asText());
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.port", jsonConfig.get("proxyPort").asText());
String proxyUser = jsonConfig.get("proxyUser").asText();
if (StringUtils.isNoneEmpty(proxyUser)) {
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.user", proxyUser);
}
String proxyPassword = jsonConfig.get("proxyPassword").asText();
if (StringUtils.isNoneEmpty(proxyPassword)) {
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.password", proxyPassword);
}
}
return javaMailProperties;
}

View File

@ -147,6 +147,16 @@ public class TbSendEmailNode implements TbNode {
if (this.config.isEnableTls() && StringUtils.isNoneEmpty(this.config.getTlsVersion())) {
javaMailProperties.put(MAIL_PROP + protocol + ".ssl.protocols", this.config.getTlsVersion());
}
if (this.config.isEnableProxy()) {
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.host", config.getProxyHost());
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.port", config.getProxyPort());
if (StringUtils.isNoneEmpty(config.getProxyUser())) {
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.user", config.getProxyUser());
}
if (StringUtils.isNoneEmpty(config.getProxyPassword())) {
javaMailProperties.put(MAIL_PROP + protocol + ".proxy.password", config.getProxyPassword());
}
}
return javaMailProperties;
}
}

View File

@ -30,6 +30,11 @@ public class TbSendEmailNodeConfiguration implements NodeConfiguration {
private int timeout;
private boolean enableTls;
private String tlsVersion;
private boolean enableProxy;
private String proxyHost;
private String proxyPort;
private String proxyUser;
private String proxyPassword;
@Override
public TbSendEmailNodeConfiguration defaultConfiguration() {
@ -41,6 +46,7 @@ public class TbSendEmailNodeConfiguration implements NodeConfiguration {
configuration.setTimeout(10000);
configuration.setEnableTls(false);
configuration.setTlsVersion("TLSv1.2");
configuration.setEnableProxy(false);
return configuration;
}
}

View File

@ -88,6 +88,37 @@
</md-option>
</md-select>
</md-input-container>
<md-checkbox class="md-block" flex="100" flex-gt-sm="60" ng-disabled="$root.loading" aria-label="{{ 'admin.enable-proxy' | translate }}" ng-model="vm.settings.jsonValue.enableProxy">
{{ 'admin.enable-proxy' | translate }}
</md-checkbox>
<div layout-gt-sm="row">
<md-input-container class="md-block" flex="100" flex-gt-sm="60" ng-if="vm.settings.jsonValue.enableProxy">
<label translate>admin.proxy-host</label>
<input required name="proxyHost" ng-model="vm.settings.jsonValue.proxyHost">
<div ng-messages="vm.settingsForm.proxyHost.$error">
<div translate ng-message="required">admin.proxy-host-required</div>
</div>
</md-input-container>
<md-input-container ng-if="vm.settings.jsonValue.enableProxy" class="md-block" flex="100" flex-gt-sm="40">
<label translate>admin.proxy-port</label>
<input required name="proxyPort" ng-model="vm.settings.jsonValue.proxyPort"
ng-pattern="/^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/"
md-maxlength="5">
<div ng-messages="vm.settingsForm.proxyPort.$error" role="alert" multiple>
<div translate ng-message="required">admin.proxy-port-required</div>
<div translate ng-message="pattern">admin.proxy-port-invalid</div>
<div translate ng-message="md-maxlength">admin.proxy-port-invalid</div>
</div>
</md-input-container>
</div>
<md-input-container class="md-block" ng-if="vm.settings.jsonValue.enableProxy">
<label translate>admin.proxy-user</label>
<input name="proxyUser" ng-model="vm.settings.jsonValue.proxyUser">
</md-input-container>
<md-input-container class="md-block" ng-if="vm.settings.jsonValue.enableProxy">
<label translate>admin.proxy-password</label>
<input name="proxyPassword" ng-model="vm.settings.jsonValue.proxyPassword">
</md-input-container>
<md-input-container class="md-block">
<label translate>common.username</label>
<input name="username" placeholder="{{ 'common.enter-username' | translate }}" ng-model="vm.settings.jsonValue.username">

View File

@ -87,6 +87,14 @@
"timeout-invalid": "That doesn't look like a valid timeout.",
"enable-tls": "Enable TLS",
"tls-version": "TLS version",
"enable-proxy": "Enable proxy",
"proxy-host": "Proxy host",
"proxy-host-required": "Proxy host is required.",
"proxy-port": "Proxy port",
"proxy-port-required": "You must supply a proxy port.",
"proxy-port-invalid": "That doesn't look like a valid proxy port.",
"proxy-user": "Proxy user",
"proxy-password": "Proxy password",
"send-test-mail": "Send test mail",
"security-settings": "Security settings",
"password-policy": "Password policy",