From 2755e7c6fea4f935c0c1401fb28a9490278475a8 Mon Sep 17 00:00:00 2001 From: zhourui Date: Fri, 14 Aug 2020 22:15:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=A0=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- o2server/pom.xml | 18 ++++ .../x/base/core/project/config/Config.java | 14 +++ .../com/x/base/core/project/config/Email.java | 90 +++++++++++++++++++ .../core/project/message/EmailFactory.java | 63 +++++++++++++ .../message/ExceptionEmailNotEnable.java | 12 +++ .../base/core/project/tools/NumberTools.java | 8 +- .../application/ApplicationServerTools.java | 2 +- 7 files changed, 202 insertions(+), 5 deletions(-) create mode 100644 o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Email.java create mode 100644 o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/EmailFactory.java create mode 100644 o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/ExceptionEmailNotEnable.java diff --git a/o2server/pom.xml b/o2server/pom.xml index 3be223542b..0d75233e6d 100644 --- a/o2server/pom.xml +++ b/o2server/pom.xml @@ -320,6 +320,14 @@ redis.clients jedis + + com.sun.mail + javax.mail + + + org.apache.commons + commons-email + @@ -797,6 +805,16 @@ jedis 3.3.0 + + com.sun.mail + javax.mail + 1.5.6 + + + org.apache.commons + commons-email + 1.5 + o2oa x_base_core_project diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Config.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Config.java index b25cb5cf0f..4de2fec661 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Config.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Config.java @@ -77,6 +77,7 @@ public class Config { public static final String PATH_CONFIG_PORTAL = "config/portal.json"; public static final String PATH_CONFIG_CACHE = "config/cache.json"; public static final String PATH_CONFIG_COMPONENTS = "config/components.json"; + public static final String PATH_CONFIG_EMAIL = "config/email.json"; public static final String DIR_COMMONS = "commons"; public static final String DIR_COMMONS_TESS4J_TESSDATA = "commons/tess4j/tessdata"; @@ -1276,6 +1277,19 @@ public class Config { return instance().cache; } + public Email email; + + public static synchronized Email email() throws Exception { + if (null == instance().email) { + Email obj = BaseTools.readConfigObject(PATH_CONFIG_EMAIL, Email.class); + if (null == obj) { + obj = Email.defaultInstance(); + } + instance().email = obj; + } + return instance().email; + } + private Components components = null; public static Components components() throws Exception { diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Email.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Email.java new file mode 100644 index 0000000000..dec8c06cde --- /dev/null +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Email.java @@ -0,0 +1,90 @@ +package com.x.base.core.project.config; + +import org.apache.commons.lang3.BooleanUtils; + +import com.x.base.core.project.annotation.FieldDescribe; +import com.x.base.core.project.tools.NumberTools; + +public class Email extends ConfigObject { + + public static final Boolean DEFAULT_ENABLE = false; + public static final String DEFAULT_HOST = ""; + public static final Integer DEFAULT_PORT = 25; + public static final Integer DEFAULT_SSLPORT = 465; + public static final Boolean DEFAULT_SSLENABLE = false; + public static final String DEFAULT_FROM = ""; + public static final String DEFAULT_USER = ""; + public static final String DEFAULT_PASS = ""; + + public static Email defaultInstance() { + return new Email(); + } + + public Email() { + this.enable = DEFAULT_ENABLE; + this.host = DEFAULT_HOST; + this.port = DEFAULT_PORT; + this.sslEnable = DEFAULT_SSLENABLE; + this.from = DEFAULT_FROM; + this.user = DEFAULT_USER; + this.pass = DEFAULT_PASS; + } + + @FieldDescribe("是否启用") + private Boolean enable; + + @FieldDescribe("SMTP主机地址") + private String host; + + @FieldDescribe("SMTP发送端口") + private Integer port; + + @FieldDescribe("是否启用ssl") + private Boolean sslEnable; + + @FieldDescribe("发送人") + private String from; + + @FieldDescribe("用户名") + private String user; + + @FieldDescribe("密码") + private String pass; + + public Boolean getEnable() { + return BooleanUtils.isTrue(this.enable); + } + + public String getHost() { + return host; + } + + public Integer getPort() { + if (NumberTools.nullOrLessThan(this.port, 1)) { + if (BooleanUtils.isTrue(this.sslEnable)) { + return DEFAULT_SSLPORT; + } else { + return DEFAULT_PORT; + } + } else { + return this.port; + } + } + + public Boolean getSslEnable() { + return BooleanUtils.isTrue(this.sslEnable); + } + + public String getFrom() { + return from; + } + + public String getUser() { + return user; + } + + public String getPass() { + return pass; + } + +} diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/EmailFactory.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/EmailFactory.java new file mode 100644 index 0000000000..d65fed830d --- /dev/null +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/EmailFactory.java @@ -0,0 +1,63 @@ +package com.x.base.core.project.message; + +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.mail.DefaultAuthenticator; +import org.apache.commons.mail.Email; +import org.apache.commons.mail.HtmlEmail; +import org.apache.commons.mail.ImageHtmlEmail; +import org.apache.commons.mail.MultiPartEmail; +import org.apache.commons.mail.SimpleEmail; + +import com.x.base.core.project.config.Config; + +public class EmailFactory { + + private EmailFactory() { + // nothing + } + + public static HtmlEmail htmlEmail() throws Exception { + if (BooleanUtils.isNotTrue(Config.email().getEnable())) { + throw new ExceptionEmailNotEnable(); + } + HtmlEmail email = new HtmlEmail(); + init(email); + return email; + } + + public static ImageHtmlEmail imageHtmlEmail() throws Exception { + if (BooleanUtils.isNotTrue(Config.email().getEnable())) { + throw new ExceptionEmailNotEnable(); + } + ImageHtmlEmail email = new ImageHtmlEmail(); + init(email); + return email; + } + + public static MultiPartEmail multiPartEmail() throws Exception { + if (BooleanUtils.isNotTrue(Config.email().getEnable())) { + throw new ExceptionEmailNotEnable(); + } + MultiPartEmail email = new MultiPartEmail(); + init(email); + return email; + } + + public static SimpleEmail simpleEmail() throws Exception { + if (BooleanUtils.isNotTrue(Config.email().getEnable())) { + throw new ExceptionEmailNotEnable(); + } + SimpleEmail email = new SimpleEmail(); + init(email); + return email; + } + + private static void init(Email email) throws Exception { + email.setHostName(Config.email().getHost()); + email.setSmtpPort(Config.email().getPort()); + email.setAuthenticator(new DefaultAuthenticator(Config.email().getUser(), Config.email().getPass())); + email.setSSLOnConnect(Config.email().getSslEnable()); + email.setFrom(Config.email().getFrom()); + } + +} diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/ExceptionEmailNotEnable.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/ExceptionEmailNotEnable.java new file mode 100644 index 0000000000..bcb1bf83f5 --- /dev/null +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/ExceptionEmailNotEnable.java @@ -0,0 +1,12 @@ +package com.x.base.core.project.message; + +import com.x.base.core.project.exception.PromptException; + +class ExceptionEmailNotEnable extends PromptException { + + private static final long serialVersionUID = 6226334698900029283L; + + ExceptionEmailNotEnable() { + super("email disabled."); + } +} \ No newline at end of file diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/NumberTools.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/NumberTools.java index 8e0eef8757..8cc802ee65 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/NumberTools.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/NumberTools.java @@ -16,11 +16,11 @@ public class NumberTools { return NumberUtils.compare(x, y) == 0; } - public static Boolean greaterThan(Integer x, Integer y) { + public static Boolean greaterThan(Number x, Number y) { if (null == x || null == y) { return false; } - return x > y; + return x.doubleValue() > y.doubleValue(); } public static Integer valueEuqalsThan(Integer x, Integer y, Integer euqalsValue, Integer notEuqalsValue) { @@ -74,11 +74,11 @@ public class NumberTools { return null; } - public static boolean nullOrLessThan(Integer value, Number number) { + public static boolean nullOrLessThan(Number value, Number number) { if (value == null) { return true; } - return value < number.intValue(); + return value.doubleValue() < number.doubleValue(); } } diff --git a/o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java b/o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java index 257f024945..94ee9d1683 100644 --- a/o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java +++ b/o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java @@ -162,7 +162,7 @@ public class ApplicationServerTools extends JettySeverTools { webApp.setContextPath("/" + name); webApp.setResourceBase(dir.getAbsolutePath()); webApp.setDescriptor(dir + "/WEB-INF/web.xml"); - webApp.setExtraClasspath(calculateExtraClassPath(cls, dir.toPath().resolve("WEB-INF/lib"))); + webApp.setExtraClasspath(calculateExtraClassPath(cls)); webApp.getInitParams().put("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false"); webApp.getInitParams().put("org.eclipse.jetty.jsp.precompiled", "true"); webApp.getInitParams().put("org.eclipse.jetty.servlet.Default.dirAllowed", "false"); -- GitLab