replace with mailflute
This commit is contained in:
parent
9098cfcb4a
commit
ead89791e8
15 changed files with 539 additions and 183 deletions
22
pom.xml
22
pom.xml
|
@ -43,6 +43,7 @@
|
|||
<lasta.taglib.version>0.6.0</lasta.taglib.version>
|
||||
<servlet.version>3.1.0</servlet.version>
|
||||
<jsp.version>2.3.1</jsp.version>
|
||||
<mailflute.version>0.4.2</mailflute.version>
|
||||
|
||||
<!-- Partner Library -->
|
||||
<slf4j.version>1.7.12</slf4j.version>
|
||||
|
@ -434,6 +435,11 @@
|
|||
<artifactId>corelib</artifactId>
|
||||
<version>0.3.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ibm.icu</groupId>
|
||||
<artifactId>icu4j</artifactId>
|
||||
|
@ -457,16 +463,9 @@
|
|||
|
||||
<!-- mail -->
|
||||
<dependency>
|
||||
<!-- TODO remove -->
|
||||
<groupId>com.sun.mail</groupId>
|
||||
<artifactId>javax.mail</artifactId>
|
||||
<version>1.5.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<!-- TODO remove -->
|
||||
<groupId>javax.activation</groupId>
|
||||
<artifactId>activation</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<groupId>org.dbflute.mail</groupId>
|
||||
<artifactId>mailflute</artifactId>
|
||||
<version>${mailflute.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- csv -->
|
||||
|
@ -503,10 +502,9 @@
|
|||
|
||||
<!-- template -->
|
||||
<dependency>
|
||||
<!-- TODO remove with lasta -->
|
||||
<groupId>com.github.jknack</groupId>
|
||||
<artifactId>handlebars</artifactId>
|
||||
<version>2.2.2</version>
|
||||
<version>2.3.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- groovy -->
|
||||
|
|
|
@ -27,10 +27,12 @@ import java.util.Date;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.codelibs.core.CoreLibConstants;
|
||||
import org.codelibs.core.beans.util.BeanUtil;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.core.misc.DynamicProperties;
|
||||
import org.codelibs.fess.Constants;
|
||||
|
@ -41,27 +43,23 @@ import org.codelibs.fess.es.client.FessEsClient;
|
|||
import org.codelibs.fess.helper.CrawlingSessionHelper;
|
||||
import org.codelibs.fess.helper.DataIndexHelper;
|
||||
import org.codelibs.fess.helper.FieldHelper;
|
||||
import org.codelibs.fess.helper.MailHelper;
|
||||
import org.codelibs.fess.helper.OverlappingHostHelper;
|
||||
import org.codelibs.fess.helper.PathMappingHelper;
|
||||
import org.codelibs.fess.helper.WebFsIndexHelper;
|
||||
import org.codelibs.fess.mylasta.direction.FessConfig;
|
||||
import org.codelibs.fess.mylasta.mail.CrawlerPostcard;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
import org.codelibs.fess.util.ResourceUtil;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.kohsuke.args4j.CmdLineException;
|
||||
import org.kohsuke.args4j.CmdLineParser;
|
||||
import org.kohsuke.args4j.Option;
|
||||
import org.lastaflute.core.mail.Postbox;
|
||||
import org.lastaflute.di.core.SingletonLaContainer;
|
||||
import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.github.jknack.handlebars.Context;
|
||||
import com.github.jknack.handlebars.Handlebars;
|
||||
import com.github.jknack.handlebars.Template;
|
||||
import com.github.jknack.handlebars.io.FileTemplateLoader;
|
||||
|
||||
public class Crawler implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@ -72,8 +70,6 @@ public class Crawler implements Serializable {
|
|||
|
||||
private static final String DATA_CRAWLING_PROCESS = "DataStoreCrawler";
|
||||
|
||||
private static final String MAIL_TEMPLATE_NAME = "crawler";
|
||||
|
||||
@Resource
|
||||
protected FessEsClient fessEsClient;
|
||||
|
||||
|
@ -92,11 +88,6 @@ public class Crawler implements Serializable {
|
|||
@Resource
|
||||
protected DynamicProperties crawlerProperties;
|
||||
|
||||
@Resource
|
||||
protected MailHelper mailHelper;
|
||||
|
||||
public String notificationSubject = "[FESS] Crawler completed";
|
||||
|
||||
protected static class Options {
|
||||
|
||||
@Option(name = "-s", aliases = "--sessionId", metaVar = "sessionId", usage = "Session ID")
|
||||
|
@ -304,15 +295,17 @@ public class Crawler implements Serializable {
|
|||
// ignore
|
||||
}
|
||||
|
||||
final FileTemplateLoader loader = new FileTemplateLoader(ResourceUtil.getMailTemplatePath(StringUtil.EMPTY).toFile());
|
||||
final Handlebars handlebars = new Handlebars(loader);
|
||||
|
||||
try {
|
||||
final Template template = handlebars.compile(MAIL_TEMPLATE_NAME);
|
||||
final Context hbsContext = Context.newContext(dataMap);
|
||||
final String body = template.apply(hbsContext);
|
||||
|
||||
mailHelper.send(toAddresses, notificationSubject, body);
|
||||
FessConfig fessConfig = ComponentUtil.getComponent(FessConfig.class);
|
||||
Postbox postbox = ComponentUtil.getComponent(Postbox.class);
|
||||
CrawlerPostcard.droppedInto(postbox, postcard -> {
|
||||
postcard.setFrom(fessConfig.getMailFromAddress(), fessConfig.getMailFromName());
|
||||
postcard.addReplyTo(fessConfig.getMailReturnPath());
|
||||
Stream.of(toAddresses).forEach(address -> {
|
||||
postcard.addTo(address);
|
||||
});
|
||||
BeanUtil.copyMapToBean(dataMap, postcard);
|
||||
});
|
||||
} catch (final Exception e) {
|
||||
logger.warn("Failed to send the notification.", e);
|
||||
}
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
/*
|
||||
* Copyright 2009-2015 the CodeLibs Project and the Others.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
* either express or implied. See the License for the specific language
|
||||
* governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package org.codelibs.fess.helper;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.mail.Message;
|
||||
import javax.mail.MessagingException;
|
||||
import javax.mail.Session;
|
||||
import javax.mail.Transport;
|
||||
import javax.mail.internet.InternetAddress;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.exception.FessSystemException;
|
||||
|
||||
public class MailHelper implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public String from = Constants.DEFAULT_FROM_EMAIL;
|
||||
|
||||
private final boolean debug = false;
|
||||
|
||||
Properties props = new Properties();
|
||||
|
||||
public void addProperty(final String key, final String value) {
|
||||
props.put(key, value);
|
||||
}
|
||||
|
||||
public void send(final String[] toAddresses, final String subject, final String text) {
|
||||
if (toAddresses == null || toAddresses.length == 0) {
|
||||
throw new FessSystemException("TO address is empty.");
|
||||
}
|
||||
|
||||
if (debug) {
|
||||
props.put("mail.debug", Constants.TRUE);
|
||||
}
|
||||
|
||||
final Session session = Session.getInstance(props, null);
|
||||
session.setDebug(debug);
|
||||
|
||||
try {
|
||||
// create a message
|
||||
final MimeMessage msg = new MimeMessage(session);
|
||||
msg.setFrom(new InternetAddress(from));
|
||||
final InternetAddress[] address = new InternetAddress[toAddresses.length];
|
||||
for (int i = 0; i < toAddresses.length; i++) {
|
||||
address[i] = new InternetAddress(toAddresses[i]);
|
||||
}
|
||||
msg.setRecipients(Message.RecipientType.TO, address);
|
||||
msg.setSubject(subject);
|
||||
msg.setSentDate(new Date());
|
||||
msg.setText(text);
|
||||
|
||||
Transport.send(msg);
|
||||
} catch (final MessagingException e) {
|
||||
throw new FessSystemException("Failed to send " + Arrays.toString(toAddresses), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -509,7 +509,7 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: General */
|
||||
public static final String LABELS_menu_crawl_config = "{labels.menu_crawl_config}";
|
||||
|
||||
/** The key of the message: Scheduled Job */
|
||||
/** The key of the message: Scheduler */
|
||||
public static final String LABELS_menu_scheduled_job_config = "{labels.menu_scheduled_job_config}";
|
||||
|
||||
/** The key of the message: System */
|
||||
|
@ -518,7 +518,7 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Index */
|
||||
public static final String LABELS_menu_document_config = "{labels.menu_document_config}";
|
||||
|
||||
/** The key of the message: Design */
|
||||
/** The key of the message: Page Design */
|
||||
public static final String LABELS_menu_design = "{labels.menu_design}";
|
||||
|
||||
/** The key of the message: Dictionary */
|
||||
|
@ -629,6 +629,9 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Help */
|
||||
public static final String LABELS_HEADER_HELP = "{labels.header.help}";
|
||||
|
||||
/** The key of the message: Search... */
|
||||
public static final String LABELS_SIDEBAR_placeholder_search = "{labels.sidebar.placeholder_search}";
|
||||
|
||||
/** The key of the message: Copyright(C) 2009-2015 CodeLibs Project. <span class="br-phone"></span>All Rights Reserved. */
|
||||
public static final String LABELS_FOOTER_COPYRIGHT = "{labels.footer.copyright}";
|
||||
|
||||
|
@ -1517,7 +1520,7 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Next */
|
||||
public static final String LABELS_crawling_session_next_page = "{labels.crawling_session_next_page}";
|
||||
|
||||
/** The key of the message: Session ID: */
|
||||
/** The key of the message: Session ID */
|
||||
public static final String LABELS_crawling_session_session_id_search = "{labels.crawling_session_session_id_search}";
|
||||
|
||||
/** The key of the message: Session ID */
|
||||
|
@ -2051,7 +2054,7 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Edit */
|
||||
public static final String LABELS_key_match_button_edit = "{labels.key_match_button_edit}";
|
||||
|
||||
/** The key of the message: Design */
|
||||
/** The key of the message: Page Design */
|
||||
public static final String LABELS_design_configuration = "{labels.design_configuration}";
|
||||
|
||||
/** The key of the message: File Upload */
|
||||
|
@ -2273,7 +2276,7 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Crawling Configuration */
|
||||
public static final String LABELS_wizard_crawling_config_title = "{labels.wizard_crawling_config_title}";
|
||||
|
||||
/** The key of the message: Crawling Setting */
|
||||
/** The key of the message: Crawling Settings */
|
||||
public static final String LABELS_wizard_crawling_setting_title = "{labels.wizard_crawling_setting_title}";
|
||||
|
||||
/** The key of the message: Name */
|
||||
|
@ -2333,7 +2336,7 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Skip */
|
||||
public static final String LABELS_wizard_button_finish = "{labels.wizard_button_finish}";
|
||||
|
||||
/** The key of the message: Search Result */
|
||||
/** The key of the message: Search */
|
||||
public static final String LABELS_search_list_configuration = "{labels.search_list_configuration}";
|
||||
|
||||
/** The key of the message: Type a search query. */
|
||||
|
@ -2471,6 +2474,9 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Confirm */
|
||||
public static final String LABELS_failure_url_link_confirm = "{labels.failure_url_link_confirm}";
|
||||
|
||||
/** The key of the message: Delete All */
|
||||
public static final String LABELS_failure_url_delete_all_link = "{labels.failure_url_delete_all_link}";
|
||||
|
||||
/** The key of the message: Do you want to delete all? */
|
||||
public static final String LABELS_failure_url_delete_all_confirmation = "{labels.failure_url_delete_all_confirmation}";
|
||||
|
||||
|
@ -3607,7 +3613,7 @@ public class FessLabels extends ActionMessages {
|
|||
/** The key of the message: Fess */
|
||||
public static final String LABELS_admin_brand_title = "{labels.admin_brand_title}";
|
||||
|
||||
/** The key of the message: Fess Dashboard */
|
||||
/** The key of the message: Dashboard */
|
||||
public static final String LABELS_admin_dashboard_title = "{labels.admin_dashboard_title}";
|
||||
|
||||
/** The key of the message: Toggle navigation */
|
||||
|
|
|
@ -31,6 +31,12 @@ public interface FessConfig extends FessEnv {
|
|||
/** The key of the configuration. e.g. true */
|
||||
String PAGING_PAGE_RANGE_FILL_LIMIT = "paging.page.range.fill.limit";
|
||||
|
||||
/** The key of the configuration. e.g. Administrator */
|
||||
String MAIL_FROM_NAME = "mail.from.name";
|
||||
|
||||
/** The key of the configuration. e.g. root@localhost */
|
||||
String MAIL_FROM_ADDRESS = "mail.from.address";
|
||||
|
||||
/**
|
||||
* Get the value of property as {@link String}.
|
||||
* @param propertyKey The key of the property. (NotNull)
|
||||
|
@ -155,6 +161,21 @@ public interface FessConfig extends FessEnv {
|
|||
*/
|
||||
boolean isPagingPageRangeFillLimit();
|
||||
|
||||
/**
|
||||
* Get the value for the key 'mail.from.name'. <br>
|
||||
* The value is, e.g. Administrator <br>
|
||||
* comment: From
|
||||
* @return The value of found property. (NotNull: if not found, exception but basically no way)
|
||||
*/
|
||||
String getMailFromName();
|
||||
|
||||
/**
|
||||
* Get the value for the key 'mail.from.address'. <br>
|
||||
* The value is, e.g. root@localhost <br>
|
||||
* @return The value of found property. (NotNull: if not found, exception but basically no way)
|
||||
*/
|
||||
String getMailFromAddress();
|
||||
|
||||
/**
|
||||
* The simple implementation for configuration.
|
||||
* @author FreeGen
|
||||
|
@ -215,5 +236,13 @@ public interface FessConfig extends FessEnv {
|
|||
public boolean isPagingPageRangeFillLimit() {
|
||||
return is(FessConfig.PAGING_PAGE_RANGE_FILL_LIMIT);
|
||||
}
|
||||
|
||||
public String getMailFromName() {
|
||||
return get(FessConfig.MAIL_FROM_NAME);
|
||||
}
|
||||
|
||||
public String getMailFromAddress() {
|
||||
return get(FessConfig.MAIL_FROM_ADDRESS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,268 @@
|
|||
package org.codelibs.fess.mylasta.mail;
|
||||
|
||||
import org.lastaflute.core.mail.LaTypicalPostcard;
|
||||
import org.lastaflute.core.mail.MPCall;
|
||||
import org.lastaflute.core.mail.Postbox;
|
||||
|
||||
/**
|
||||
* The postcard for MailFlute on LastaFlute.
|
||||
* @author FreeGen
|
||||
*/
|
||||
public class CrawlerPostcard extends LaTypicalPostcard {
|
||||
|
||||
// ===================================================================================
|
||||
// Definition
|
||||
// ==========
|
||||
public static final String PATH = "crawler.dfmail";
|
||||
|
||||
// ===================================================================================
|
||||
// Entry Point
|
||||
// ===========
|
||||
public static CrawlerPostcard droppedInto(Postbox postbox, MPCall<CrawlerPostcard> postcardLambda) {
|
||||
CrawlerPostcard postcard = new CrawlerPostcard();
|
||||
postcardLambda.write(postcard);
|
||||
postbox.post(postcard);
|
||||
return postcard;
|
||||
}
|
||||
|
||||
// ===================================================================================
|
||||
// Meta Data
|
||||
// =========
|
||||
@Override
|
||||
protected String getBodyFile() {
|
||||
return PATH;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] getPropertyNames() {
|
||||
return new String[] { "hostname", "webFsCrawlStartTime", "webFsCrawlEndTime", "webFsCrawlExecTime", "webFsIndexExecTime",
|
||||
"webFsIndexSize", "dataCrawlStartTime", "dataCrawlEndTime", "dataCrawlExecTime", "dataIndexExecTime", "dataFsIndexSize",
|
||||
"commitStartTime", "commitEndTime", "commitExecTime", "optimizeStartTime", "optimizeEndTime", "optimizeExecTime",
|
||||
"crawlerStartTime", "crawlerEndTime", "crawlerExecTime" };
|
||||
}
|
||||
|
||||
// ===================================================================================
|
||||
// Postcard Request
|
||||
// ================
|
||||
// -----------------------------------------------------
|
||||
// Mail Address
|
||||
// ------------
|
||||
public void setFrom(String from, String personal) {
|
||||
doSetFrom(from, personal);
|
||||
}
|
||||
|
||||
public void addTo(String to) {
|
||||
doAddTo(to);
|
||||
}
|
||||
|
||||
public void addTo(String to, String personal) {
|
||||
doAddTo(to, personal);
|
||||
}
|
||||
|
||||
public void addCc(String cc) {
|
||||
doAddCc(cc);
|
||||
}
|
||||
|
||||
public void addCc(String cc, String personal) {
|
||||
doAddCc(cc, personal);
|
||||
}
|
||||
|
||||
public void addBcc(String bcc) {
|
||||
doAddBcc(bcc);
|
||||
}
|
||||
|
||||
public void addBcc(String bcc, String personal) {
|
||||
doAddBcc(bcc, personal);
|
||||
}
|
||||
|
||||
public void addReplyTo(String replyTo) {
|
||||
doAddReplyTo(replyTo);
|
||||
}
|
||||
|
||||
public void addReplyTo(String replyTo, String personal) {
|
||||
doAddReplyTo(replyTo, personal);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Application Variable
|
||||
// --------------------
|
||||
/**
|
||||
* Set the value of hostname, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param hostname The parameter value of hostname. (NotNull)
|
||||
*/
|
||||
public void setHostname(String hostname) {
|
||||
registerVariable("hostname", hostname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of webFsCrawlStartTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param webFsCrawlStartTime The parameter value of webFsCrawlStartTime. (NotNull)
|
||||
*/
|
||||
public void setWebFsCrawlStartTime(String webFsCrawlStartTime) {
|
||||
registerVariable("webFsCrawlStartTime", webFsCrawlStartTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of webFsCrawlEndTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param webFsCrawlEndTime The parameter value of webFsCrawlEndTime. (NotNull)
|
||||
*/
|
||||
public void setWebFsCrawlEndTime(String webFsCrawlEndTime) {
|
||||
registerVariable("webFsCrawlEndTime", webFsCrawlEndTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of webFsCrawlExecTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param webFsCrawlExecTime The parameter value of webFsCrawlExecTime. (NotNull)
|
||||
*/
|
||||
public void setWebFsCrawlExecTime(String webFsCrawlExecTime) {
|
||||
registerVariable("webFsCrawlExecTime", webFsCrawlExecTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of webFsIndexExecTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param webFsIndexExecTime The parameter value of webFsIndexExecTime. (NotNull)
|
||||
*/
|
||||
public void setWebFsIndexExecTime(String webFsIndexExecTime) {
|
||||
registerVariable("webFsIndexExecTime", webFsIndexExecTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of webFsIndexSize, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param webFsIndexSize The parameter value of webFsIndexSize. (NotNull)
|
||||
*/
|
||||
public void setWebFsIndexSize(String webFsIndexSize) {
|
||||
registerVariable("webFsIndexSize", webFsIndexSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of dataCrawlStartTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param dataCrawlStartTime The parameter value of dataCrawlStartTime. (NotNull)
|
||||
*/
|
||||
public void setDataCrawlStartTime(String dataCrawlStartTime) {
|
||||
registerVariable("dataCrawlStartTime", dataCrawlStartTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of dataCrawlEndTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param dataCrawlEndTime The parameter value of dataCrawlEndTime. (NotNull)
|
||||
*/
|
||||
public void setDataCrawlEndTime(String dataCrawlEndTime) {
|
||||
registerVariable("dataCrawlEndTime", dataCrawlEndTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of dataCrawlExecTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param dataCrawlExecTime The parameter value of dataCrawlExecTime. (NotNull)
|
||||
*/
|
||||
public void setDataCrawlExecTime(String dataCrawlExecTime) {
|
||||
registerVariable("dataCrawlExecTime", dataCrawlExecTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of dataIndexExecTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param dataIndexExecTime The parameter value of dataIndexExecTime. (NotNull)
|
||||
*/
|
||||
public void setDataIndexExecTime(String dataIndexExecTime) {
|
||||
registerVariable("dataIndexExecTime", dataIndexExecTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of dataFsIndexSize, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param dataFsIndexSize The parameter value of dataFsIndexSize. (NotNull)
|
||||
*/
|
||||
public void setDataFsIndexSize(String dataFsIndexSize) {
|
||||
registerVariable("dataFsIndexSize", dataFsIndexSize);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of commitStartTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param commitStartTime The parameter value of commitStartTime. (NotNull)
|
||||
*/
|
||||
public void setCommitStartTime(String commitStartTime) {
|
||||
registerVariable("commitStartTime", commitStartTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of commitEndTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param commitEndTime The parameter value of commitEndTime. (NotNull)
|
||||
*/
|
||||
public void setCommitEndTime(String commitEndTime) {
|
||||
registerVariable("commitEndTime", commitEndTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of commitExecTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param commitExecTime The parameter value of commitExecTime. (NotNull)
|
||||
*/
|
||||
public void setCommitExecTime(String commitExecTime) {
|
||||
registerVariable("commitExecTime", commitExecTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of optimizeStartTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param optimizeStartTime The parameter value of optimizeStartTime. (NotNull)
|
||||
*/
|
||||
public void setOptimizeStartTime(String optimizeStartTime) {
|
||||
registerVariable("optimizeStartTime", optimizeStartTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of optimizeEndTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param optimizeEndTime The parameter value of optimizeEndTime. (NotNull)
|
||||
*/
|
||||
public void setOptimizeEndTime(String optimizeEndTime) {
|
||||
registerVariable("optimizeEndTime", optimizeEndTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of optimizeExecTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param optimizeExecTime The parameter value of optimizeExecTime. (NotNull)
|
||||
*/
|
||||
public void setOptimizeExecTime(String optimizeExecTime) {
|
||||
registerVariable("optimizeExecTime", optimizeExecTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of crawlerStartTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param crawlerStartTime The parameter value of crawlerStartTime. (NotNull)
|
||||
*/
|
||||
public void setCrawlerStartTime(String crawlerStartTime) {
|
||||
registerVariable("crawlerStartTime", crawlerStartTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of crawlerEndTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param crawlerEndTime The parameter value of crawlerEndTime. (NotNull)
|
||||
*/
|
||||
public void setCrawlerEndTime(String crawlerEndTime) {
|
||||
registerVariable("crawlerEndTime", crawlerEndTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of crawlerExecTime, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param crawlerExecTime The parameter value of crawlerExecTime. (NotNull)
|
||||
*/
|
||||
public void setCrawlerExecTime(String crawlerExecTime) {
|
||||
registerVariable("crawlerExecTime", crawlerExecTime);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,139 @@
|
|||
package org.codelibs.fess.mylasta.mail;
|
||||
|
||||
import org.lastaflute.core.mail.LaTypicalPostcard;
|
||||
import org.lastaflute.core.mail.MPCall;
|
||||
import org.lastaflute.core.mail.Postbox;
|
||||
|
||||
/**
|
||||
* The postcard for MailFlute on LastaFlute.
|
||||
* @author FreeGen
|
||||
*/
|
||||
public class EsStatusPostcard extends LaTypicalPostcard {
|
||||
|
||||
// ===================================================================================
|
||||
// Definition
|
||||
// ==========
|
||||
public static final String PATH = "es_status.dfmail";
|
||||
|
||||
// ===================================================================================
|
||||
// Entry Point
|
||||
// ===========
|
||||
public static EsStatusPostcard droppedInto(Postbox postbox, MPCall<EsStatusPostcard> postcardLambda) {
|
||||
EsStatusPostcard postcard = new EsStatusPostcard();
|
||||
postcardLambda.write(postcard);
|
||||
postbox.post(postcard);
|
||||
return postcard;
|
||||
}
|
||||
|
||||
// ===================================================================================
|
||||
// Meta Data
|
||||
// =========
|
||||
@Override
|
||||
protected String getBodyFile() {
|
||||
return PATH;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] getPropertyNames() {
|
||||
return new String[] { "hostname", "server", "statusBefore", "statusAfter", "indexBefore", "indexAfter" };
|
||||
}
|
||||
|
||||
// ===================================================================================
|
||||
// Postcard Request
|
||||
// ================
|
||||
// -----------------------------------------------------
|
||||
// Mail Address
|
||||
// ------------
|
||||
public void setFrom(String from, String personal) {
|
||||
doSetFrom(from, personal);
|
||||
}
|
||||
|
||||
public void addTo(String to) {
|
||||
doAddTo(to);
|
||||
}
|
||||
|
||||
public void addTo(String to, String personal) {
|
||||
doAddTo(to, personal);
|
||||
}
|
||||
|
||||
public void addCc(String cc) {
|
||||
doAddCc(cc);
|
||||
}
|
||||
|
||||
public void addCc(String cc, String personal) {
|
||||
doAddCc(cc, personal);
|
||||
}
|
||||
|
||||
public void addBcc(String bcc) {
|
||||
doAddBcc(bcc);
|
||||
}
|
||||
|
||||
public void addBcc(String bcc, String personal) {
|
||||
doAddBcc(bcc, personal);
|
||||
}
|
||||
|
||||
public void addReplyTo(String replyTo) {
|
||||
doAddReplyTo(replyTo);
|
||||
}
|
||||
|
||||
public void addReplyTo(String replyTo, String personal) {
|
||||
doAddReplyTo(replyTo, personal);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Application Variable
|
||||
// --------------------
|
||||
/**
|
||||
* Set the value of hostname, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param hostname The parameter value of hostname. (NotNull)
|
||||
*/
|
||||
public void setHostname(String hostname) {
|
||||
registerVariable("hostname", hostname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of server, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param server The parameter value of server. (NotNull)
|
||||
*/
|
||||
public void setServer(String server) {
|
||||
registerVariable("server", server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of statusBefore, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param statusBefore The parameter value of statusBefore. (NotNull)
|
||||
*/
|
||||
public void setStatusBefore(String statusBefore) {
|
||||
registerVariable("statusBefore", statusBefore);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of statusAfter, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param statusAfter The parameter value of statusAfter. (NotNull)
|
||||
*/
|
||||
public void setStatusAfter(String statusAfter) {
|
||||
registerVariable("statusAfter", statusAfter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of indexBefore, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param indexBefore The parameter value of indexBefore. (NotNull)
|
||||
*/
|
||||
public void setIndexBefore(String indexBefore) {
|
||||
registerVariable("indexBefore", indexBefore);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of indexAfter, used in parameter comment. <br>
|
||||
* Even if empty string, treated as empty plainly. So "IF pmb != null" is false if empty.
|
||||
* @param indexAfter The parameter value of indexAfter. (NotNull)
|
||||
*/
|
||||
public void setIndexAfter(String indexAfter) {
|
||||
registerVariable("indexAfter", indexAfter);
|
||||
}
|
||||
}
|
|
@ -37,7 +37,6 @@ import org.codelibs.fess.helper.IntervalControlHelper;
|
|||
import org.codelibs.fess.helper.JobHelper;
|
||||
import org.codelibs.fess.helper.KeyMatchHelper;
|
||||
import org.codelibs.fess.helper.LabelTypeHelper;
|
||||
import org.codelibs.fess.helper.MailHelper;
|
||||
import org.codelibs.fess.helper.OverlappingHostHelper;
|
||||
import org.codelibs.fess.helper.PathMappingHelper;
|
||||
import org.codelibs.fess.helper.QueryHelper;
|
||||
|
@ -67,8 +66,6 @@ public final class ComponentUtil {
|
|||
|
||||
private static final String INDEX_UPDATER = "indexUpdater";
|
||||
|
||||
private static final String MAIL_HELPER = "mailHelper";
|
||||
|
||||
private static final String FILE_TYPE_HELPER = "fileTypeHelper";
|
||||
|
||||
private static final String EXTRACTOR_FACTORY = "extractorFactory";
|
||||
|
@ -216,10 +213,6 @@ public final class ComponentUtil {
|
|||
return SingletonLaContainer.getComponent(name + JOB_EXECUTOR_SUFFIX);
|
||||
}
|
||||
|
||||
public static MailHelper getMailHelper() {
|
||||
return SingletonLaContainer.getComponent(MAIL_HELPER);
|
||||
}
|
||||
|
||||
public static FileTypeHelper getFileTypeHelper() {
|
||||
return SingletonLaContainer.getComponent(FILE_TYPE_HELPER);
|
||||
}
|
||||
|
|
|
@ -121,15 +121,6 @@
|
|||
</component>
|
||||
<component name="crawlingSessionHelper" class="org.codelibs.fess.helper.CrawlingSessionHelper">
|
||||
</component>
|
||||
<component name="mailHelper" class="org.codelibs.fess.helper.MailHelper">
|
||||
<postConstruct name="addProperty">
|
||||
<arg>"mail.smtp.host"</arg>
|
||||
<arg>"localhost"</arg>
|
||||
</postConstruct>
|
||||
<!--
|
||||
<property name="from">"Administrator <root@localhost>"</property>
|
||||
-->
|
||||
</component>
|
||||
<component name="roleQueryHelper" class="org.codelibs.fess.helper.impl.RoleQueryHelperImpl">
|
||||
<!-- ex. parameter: fessRoles=123%0aadmin -->
|
||||
<!--
|
||||
|
|
|
@ -43,3 +43,11 @@ paging.page.range.size = 3
|
|||
|
||||
# The option 'fillLimit' of page range for paging
|
||||
paging.page.range.fill.limit = true
|
||||
|
||||
# ----------------------------------------------------------
|
||||
# Mail
|
||||
# ------
|
||||
# From
|
||||
mail.from.name = Administrator
|
||||
mail.from.address = root@localhost
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ time.adjust.time.millis = 0
|
|||
# Mail
|
||||
# ------
|
||||
# Does it send mock mail? (true: no send actually, logging only)
|
||||
mail.send.mock = true
|
||||
mail.send.mock = false
|
||||
|
||||
# SMTP server settings for main: host:port
|
||||
mail.smtp.server.main.host.and.port = localhost:25
|
||||
|
@ -36,7 +36,6 @@ mail.subject.test.prefix =
|
|||
# The common return path of all mail
|
||||
mail.return.path = root@localhost
|
||||
|
||||
|
||||
# ========================================================================================
|
||||
# DB
|
||||
# ====
|
||||
|
|
43
src/main/resources/mail/crawler.dfmail
Normal file
43
src/main/resources/mail/crawler.dfmail
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
[Crawler Notification]
|
||||
Crawler notification mail.
|
||||
*/
|
||||
subject: [FESS] Crawler completed: /*pmb.hostname*/
|
||||
>>>
|
||||
--- Server Info ---
|
||||
Host Name: /*IF pmb.hostname != null*//*pmb.hostname*//*END*//*IF pmb.hostname == null*/Unknown/*END*/
|
||||
/*IF pmb.webFsIndexSize != null*/
|
||||
--- Web/FileSystem Crawler ---
|
||||
Start Time: /*pmb.webFsCrawlStartTime*/
|
||||
End Time: /*pmb.webFsCrawlEndTime*/
|
||||
Exec Time: /*pmb.webFsCrawlExecTime*/ms
|
||||
|
||||
--- Web/FileSystem Indexer ---
|
||||
Exec Time: /*pmb.webFsIndexExecTime*/
|
||||
Num of Doc: /*pmb.webFsIndexSize*/ docs
|
||||
/*END*//*IF pmb.dataFsIndexSize != null*/
|
||||
--- Data Store Crawler ---
|
||||
Start Time: /*pmb.dataCrawlStartTime*/
|
||||
End Time: /*pmb.dataCrawlEndTime*/
|
||||
Exec Time: /*pmb.dataCrawlExecTime*/ms
|
||||
|
||||
--- Data Store Indexer ---
|
||||
Exec Time: /*pmb.dataIndexExecTime*/
|
||||
Num of Doc: /*pmb.dataFsIndexSize*/ docs
|
||||
/*END*//*IF pmb.commitExecTime != null*/
|
||||
--- Indexer(Commit) ---
|
||||
Start Time: /*pmb.commitStartTime*/
|
||||
End Time: /*pmb.commitEndTime*/
|
||||
Exec Time: /*pmb.commitExecTime*/ms
|
||||
/*END*//*IF pmb.optimizeEndTime*/
|
||||
--- Indexer(Optimize) ---
|
||||
Start Time: /*pmb.optimizeStartTime*/
|
||||
End Time: /*pmb.optimizeEndTime*/
|
||||
Exec Time: /*pmb.optimizeExecTime*/ms
|
||||
/*END*/
|
||||
--- Total ---
|
||||
Start Time: /*pmb.crawlerStartTime*/
|
||||
End Time: /*pmb.crawlerEndTime*/
|
||||
Exec Time: /*pmb.crawlerExecTime*/ms
|
||||
Status: /*IF pmb.success != null*/Success/*END*//*IF pmb.success == null*/Fail/*END*/
|
||||
|
13
src/main/resources/mail/es_status.dfmail
Normal file
13
src/main/resources/mail/es_status.dfmail
Normal file
|
@ -0,0 +1,13 @@
|
|||
/*
|
||||
[Crawler Notification]
|
||||
*/
|
||||
subject: [FESS] Status Change: /*pmb.hostname*/
|
||||
>>>
|
||||
--- Server Info ---
|
||||
Host Name: /*IF pmb.hostname != null*//*pmb.hostname*//*END*//*IF pmb.hostname == null*/Unknown/*END*/
|
||||
Elasticsearch: /*pmb.server*/
|
||||
|
||||
--- Status ---
|
||||
/*IF pmb.statusBefore != null*/Status: /*pmb.statusBefore*/ -> /*pmb.statusAfter*//*END*/
|
||||
/*IF pmb.indexBefore != null*/Index: /*pmb.indexBefore*/ -> /*pmb.indexAfter*//*END*/
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
--- Server Info ---
|
||||
{{#if hostname}}Host Name: {{hostname}}{{/if}}
|
||||
{{#if webFsIndexSize}}
|
||||
--- Web/FileSystem Crawler ---
|
||||
Start Time: {{webFsCrawlStartTime}}
|
||||
End Time: {{webFsCrawlEndTime}}
|
||||
Exec Time: {{webFsCrawlExecTime}}ms
|
||||
|
||||
--- Web/FileSystem Indexer ---
|
||||
Exec Time: {{webFsIndexExecTime}}
|
||||
Num of Doc: {{webFsIndexSize}} docs
|
||||
{{/if}}{{#if dataFsIndexSize}}
|
||||
--- Data Store Crawler ---
|
||||
Start Time: {{dataCrawlStartTime}}
|
||||
End Time: {{dataCrawlEndTime}}
|
||||
Exec Time: {{dataCrawlExecTime}}ms
|
||||
|
||||
--- Data Store Indexer ---
|
||||
Exec Time: {{dataIndexExecTime}}
|
||||
Num of Doc: {{dataFsIndexSize}} docs
|
||||
{{/if}}{{#if commitExecTime}}
|
||||
--- Indexer(Commit) ---
|
||||
Start Time: {{commitStartTime}}
|
||||
End Time: {{commitEndTime}}
|
||||
Exec Time: {{commitExecTime}}ms
|
||||
{{/if}}{{#if optimizeEndTime}}
|
||||
--- Indexer(Optimize) ---
|
||||
Start Time: {{optimizeStartTime}}
|
||||
End Time: {{optimizeEndTime}}
|
||||
Exec Time: {{optimizeExecTime}}ms
|
||||
{{/if}}
|
||||
--- Total ---
|
||||
Start Time: {{crawlerStartTime}}
|
||||
End Time: {{crawlerEndTime}}
|
||||
Exec Time: {{crawlerExecTime}}ms
|
||||
Status: {{#if success}}Success{{else}}Fail{{/if}}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
--- Server Info ---
|
||||
{{#if hostname}}Host Name: {{hostname}}{{/if}}
|
||||
Solr Server: {{server}}
|
||||
|
||||
--- Status ---
|
||||
{{#if statusBefore}}Status: {{statusBefore}} -> {{statusAfter}}{{/if}}
|
||||
{{#if indexBefore}}Index: {{indexBefore}} -> {{indexAfter}}{{/if}}
|
||||
|
Loading…
Add table
Reference in a new issue