From df0083224d59d57952c037a41eee58a2b9ad37e1 Mon Sep 17 00:00:00 2001 From: qiaozhanwei Date: Fri, 24 May 2019 10:26:09 +0800 Subject: [PATCH 1/4] mail support ssl and install.sh update --- .../cn/escheduler/alert/utils/Constants.java | 2 ++ .../cn/escheduler/alert/utils/MailUtils.java | 16 ++++++++++++++-- .../src/main/resources/alert.properties | 5 +++++ install.sh | 9 +++++++++ sql/escheduler.sql | 2 +- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/escheduler-alert/src/main/java/cn/escheduler/alert/utils/Constants.java b/escheduler-alert/src/main/java/cn/escheduler/alert/utils/Constants.java index 07d1866a5d..1e1a7671e8 100644 --- a/escheduler-alert/src/main/java/cn/escheduler/alert/utils/Constants.java +++ b/escheduler-alert/src/main/java/cn/escheduler/alert/utils/Constants.java @@ -59,6 +59,8 @@ public class Constants { public static final String MAIL_SMTP_STARTTLS_ENABLE = "mail.smtp.starttls.enable"; + public static final String MAIL_SMTP_SSL_ENABLE = "mail.smtp.ssl.enable"; + public static final String TEXT_HTML_CHARSET_UTF_8 = "text/html;charset=utf-8"; public static final String STRING_TRUE = "true"; diff --git a/escheduler-alert/src/main/java/cn/escheduler/alert/utils/MailUtils.java b/escheduler-alert/src/main/java/cn/escheduler/alert/utils/MailUtils.java index 0e514ffee6..d97d9d9d57 100644 --- a/escheduler-alert/src/main/java/cn/escheduler/alert/utils/MailUtils.java +++ b/escheduler-alert/src/main/java/cn/escheduler/alert/utils/MailUtils.java @@ -33,6 +33,7 @@ import org.springframework.util.ResourceUtils; import javax.mail.*; import javax.mail.internet.*; import java.io.*; +import java.security.Security; import java.util.*; import static cn.escheduler.alert.utils.PropertyUtils.getInt; @@ -58,6 +59,10 @@ public class MailUtils { public static final String xlsFilePath = getString(Constants.XLS_FILE_PATH); + public static final String starttlsEnable = getString(Constants.MAIL_SMTP_STARTTLS_ENABLE); + + public static final String sslEnable = getString(Constants.MAIL_SMTP_SSL_ENABLE); + private static Template MAIL_TEMPLATE; static { @@ -122,7 +127,10 @@ public class MailUtils { //set charset email.setCharset(Constants.UTF_8); // TLS verification - email.setTLS(true); + email.setTLS(Boolean.valueOf(starttlsEnable)); + + // SSL verification + email.setSSL(Boolean.valueOf(sslEnable)); if (CollectionUtils.isNotEmpty(receivers)){ // receivers mail for (String receiver : receivers) { @@ -269,11 +277,15 @@ public class MailUtils { * @throws MessagingException */ private static MimeMessage getMimeMessage(Collection receivers) throws MessagingException { +// Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); +// final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; + Properties props = new Properties(); props.setProperty(Constants.MAIL_HOST, mailServerHost); props.setProperty(Constants.MAIL_SMTP_AUTH, Constants.STRING_TRUE); props.setProperty(Constants.MAIL_TRANSPORT_PROTOCOL, mailProtocol); - props.setProperty(Constants.MAIL_SMTP_STARTTLS_ENABLE, Constants.STRING_TRUE); + props.setProperty(Constants.MAIL_SMTP_STARTTLS_ENABLE, starttlsEnable); + props.setProperty("mail.smtp.ssl.enable", sslEnable); Authenticator auth = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { diff --git a/escheduler-alert/src/main/resources/alert.properties b/escheduler-alert/src/main/resources/alert.properties index 2fc2bb70f9..602384a818 100644 --- a/escheduler-alert/src/main/resources/alert.properties +++ b/escheduler-alert/src/main/resources/alert.properties @@ -8,6 +8,11 @@ mail.server.port=25 mail.sender=xxxxxxx mail.passwd=xxxxxxx +# TLS +mail.smtp.starttls.enable=false +# SSL +mail.smtp.ssl.enable=true + #xls file path,need create if not exist xls.file.path=/tmp/xls diff --git a/install.sh b/install.sh index ce0cd0096c..e5be33d73e 100644 --- a/install.sh +++ b/install.sh @@ -96,6 +96,13 @@ mailSender="xxxxxxxxxx" # 发送人密码 mailPassword="xxxxxxxxxx" +# TLS邮件协议支持 +starttlsEnable="false" + +# SSL邮件协议支持 +# 注意:默认开启的是SSL协议,TLS和SSL只能有一个处于true状态 +sslEnable="true" + # 下载Excel路径 xlsFilePath="/tmp/xls" @@ -307,6 +314,8 @@ sed -i ${txt} "s#mail.server.host.*#mail.server.host=${mailServerHost}#g" conf/a sed -i ${txt} "s#mail.server.port.*#mail.server.port=${mailServerPort}#g" conf/alert.properties sed -i ${txt} "s#mail.sender.*#mail.sender=${mailSender}#g" conf/alert.properties sed -i ${txt} "s#mail.passwd.*#mail.passwd=${mailPassword}#g" conf/alert.properties +sed -i ${txt} "s#mail.smtp.starttls.enable.*#mail.smtp.starttls.enable=${starttlsEnable}#g" conf/alert.properties +sed -i ${txt} "s#mail.smtp.ssl.enable.*#mail.smtp.ssl.enable=${sslEnable}#g" conf/alert.properties sed -i ${txt} "s#xls.file.path.*#xls.file.path=${xlsFilePath}#g" conf/alert.properties diff --git a/sql/escheduler.sql b/sql/escheduler.sql index 7dd5b874d7..774de10e42 100644 --- a/sql/escheduler.sql +++ b/sql/escheduler.sql @@ -426,7 +426,7 @@ CREATE TABLE `t_escheduler_worker_server` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- Records of t_escheduler_user,user : admin , password : escheduler123 -INSERT INTO `t_escheduler_user` VALUES ('1', 'admin', '055a97b5fcd6d120372ad1976518f371', '0', '825193156@qq.com', '15001335629', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22'); +INSERT INTO `t_escheduler_user` VALUES ('1', 'admin', '055a97b5fcd6d120372ad1976518f371', '0', 'xxx@qq.com', 'xxxx', '0', '2018-03-27 15:48:50', '2018-10-24 17:40:22'); INSERT INTO `t_escheduler_alertgroup` VALUES (1, 'escheduler管理员告警组', '0', 'escheduler管理员告警组','2018-11-29 10:20:39', '2018-11-29 10:20:39'); INSERT INTO `t_escheduler_relation_user_alertgroup` VALUES ('1', '1', '1', '2018-11-29 10:22:33', '2018-11-29 10:22:33'); From 6b5706d6b3312173b5b8d8f364bc840dfe721835 Mon Sep 17 00:00:00 2001 From: qiaozhanwei Date: Fri, 24 May 2019 16:50:47 +0800 Subject: [PATCH 2/4] master startup lock dev update --- .../main/java/cn/escheduler/api/service/UsersService.java | 3 +++ .../java/cn/escheduler/dao/mapper/UserMapperProvider.java | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/escheduler-api/src/main/java/cn/escheduler/api/service/UsersService.java b/escheduler-api/src/main/java/cn/escheduler/api/service/UsersService.java index 16766a98cf..5db8662c07 100644 --- a/escheduler-api/src/main/java/cn/escheduler/api/service/UsersService.java +++ b/escheduler-api/src/main/java/cn/escheduler/api/service/UsersService.java @@ -115,6 +115,9 @@ public class UsersService extends BaseService { user.setUserType(UserType.GENERAL_USER); user.setCreateTime(now); user.setUpdateTime(now); + if (StringUtils.isEmpty(queue)){ + queue = ""; + } user.setQueue(queue); // save user diff --git a/escheduler-dao/src/main/java/cn/escheduler/dao/mapper/UserMapperProvider.java b/escheduler-dao/src/main/java/cn/escheduler/dao/mapper/UserMapperProvider.java index f70ba8250f..4a7df12a0f 100644 --- a/escheduler-dao/src/main/java/cn/escheduler/dao/mapper/UserMapperProvider.java +++ b/escheduler-dao/src/main/java/cn/escheduler/dao/mapper/UserMapperProvider.java @@ -203,7 +203,9 @@ public class UserMapperProvider { public String queryUserPaging(Map parameter) { return new SQL() { { - SELECT("u.*,t.tenant_name,q.queue_name"); + SELECT("u.id,u.user_name,u.user_password,u.user_type,u.email,u.phone,u.tenant_id,u.create_time,u.update_time,t.tenant_name," + + "case when u.queue <> '' then u.queue else q.queue_name end as queue," + + "q.queue_name"); FROM(TABLE_NAME + " u "); LEFT_OUTER_JOIN("t_escheduler_tenant t on u.tenant_id = t.id"); LEFT_OUTER_JOIN("t_escheduler_queue q on t.queue_id = q.id"); @@ -228,7 +230,8 @@ public class UserMapperProvider { public String queryDetailsById(Map parameter) { return new SQL() { { - SELECT("u.*,q.queue_name,t.tenant_name"); + SELECT("u.*, t.tenant_name," + + "case when u.queue <> '' then u.queue else q.queue_name end as queue_name"); FROM(TABLE_NAME + " u,t_escheduler_tenant t,t_escheduler_queue q"); From 8a4fe1d86ec40aaea4e12aa7877bd45997e2dab1 Mon Sep 17 00:00:00 2001 From: ligang Date: Fri, 24 May 2019 17:46:19 +0800 Subject: [PATCH 3/4] Determine if a node exists before deleting it --- .../java/cn/escheduler/common/queue/TaskQueueZkImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java b/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java index 1b39cb1e8d..28f696aa6e 100644 --- a/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java +++ b/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java @@ -206,7 +206,10 @@ public class TaskQueueZkImpl extends AbstractZKClient implements ITaskQueue { String taskIdPath = tasksQueuePath + nodeValue; logger.info("consume task {}", taskIdPath); try{ - zk.delete().forPath(taskIdPath); + Stat stat = zk.checkExists().forPath(taskIdPath); + if(stat != null){ + zk.delete().forPath(taskIdPath); + } }catch(Exception e){ logger.error(String.format("delete task:%s from zookeeper fail, exception:" ,nodeValue) ,e); } From b3feb1f6ef0846b3d4dbe425537b2b151c901bfc Mon Sep 17 00:00:00 2001 From: qiaozhanwei Date: Fri, 24 May 2019 18:22:19 +0800 Subject: [PATCH 4/4] creating a user queue is not required --- .../home/pages/security/pages/users/_source/createUser.vue | 6 +++++- escheduler-ui/src/js/module/i18n/locale/zh_CN.js | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/escheduler-ui/src/js/conf/home/pages/security/pages/users/_source/createUser.vue b/escheduler-ui/src/js/conf/home/pages/security/pages/users/_source/createUser.vue index f2da80ce84..9d3ab042d8 100644 --- a/escheduler-ui/src/js/conf/home/pages/security/pages/users/_source/createUser.vue +++ b/escheduler-ui/src/js/conf/home/pages/security/pages/users/_source/createUser.vue @@ -40,9 +40,13 @@ - +