diff --git a/src/main/java/org/codelibs/fess/helper/SystemHelper.java b/src/main/java/org/codelibs/fess/helper/SystemHelper.java
index b307c816c..1f790ceb2 100644
--- a/src/main/java/org/codelibs/fess/helper/SystemHelper.java
+++ b/src/main/java/org/codelibs/fess/helper/SystemHelper.java
@@ -29,6 +29,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -36,6 +37,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
+import java.util.TimeZone;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
@@ -107,11 +109,19 @@ public class SystemHelper {
protected String productVersion;
+ protected long eolTime;
+
@PostConstruct
public void init() {
if (logger.isDebugEnabled()) {
logger.debug("Initialize {}", this.getClass().getSimpleName());
}
+ final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ cal.set(2021, 6 - 1, 2);
+ eolTime = cal.getTimeInMillis();
+ if (isEoled()) {
+ logger.error("Your system is out of service. See https://fess.codelibs.org/eol.html");
+ }
updateSystemProperties();
final FessConfig fessConfig = ComponentUtil.getFessConfig();
filterPathEncoding = fessConfig.getPathEncoding();
@@ -398,10 +408,20 @@ public class SystemHelper {
public void setupAdminHtmlData(final TypicalAction action, final ActionRuntime runtime) {
runtime.registerData("developmentMode", ComponentUtil.getFessEsClient().isEmbedded());
final FessConfig fessConfig = ComponentUtil.getFessConfig();
- final String url = fessConfig.getOnlineHelpInstallation();
- runtime.registerData("installationLink", getHelpUrl(url));
+ final String installationLink = fessConfig.getOnlineHelpInstallation();
+ runtime.registerData("installationLink", getHelpUrl(installationLink));
runtime.registerData("storageEnabled",
StringUtil.isNotBlank(fessConfig.getStorageEndpoint()) && StringUtil.isNotBlank(fessConfig.getStorageBucket()));
+ final boolean eoled = isEoled();
+ runtime.registerData("eoled", eoled);
+ if (eoled) {
+ final String eolLink = fessConfig.getOnlineHelpEol();
+ runtime.registerData("eolLink", getHelpUrl(eolLink));
+ }
+ }
+
+ protected boolean isEoled() {
+ return getCurrentTimeAsLong() > eolTime;
}
public String getSearchRoleByUser(final String name) {
diff --git a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java
index 8ee984031..df2b5bdd6 100644
--- a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java
+++ b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java
@@ -2880,6 +2880,9 @@ public class FessLabels extends UserMessages {
/** The key of the message: Running as Development mode. For production use, please install a standalone elasticsearch server. */
public static final String LABELS_development_mode_warning = "{labels.development_mode_warning}";
+ /** The key of the message: Your system is out of service. See EOL page. */
+ public static final String LABELS_eol_error = "{labels.eol_error}";
+
/** The key of the message: Advance */
public static final String LABELS_ADVANCE = "{labels.advance}";
diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
index a0aa22248..09c1b1629 100644
--- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
+++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
@@ -1209,6 +1209,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
/** The key of the configuration. e.g. https://fess.codelibs.org/{lang}/{version}/install/install.html */
String ONLINE_HELP_INSTALLATION = "online.help.installation";
+ /** The key of the configuration. e.g. https://fess.codelibs.org/{lang}/eol.html */
+ String ONLINE_HELP_EOL = "online.help.eol";
+
/** The key of the configuration. e.g. failureurl */
String ONLINE_HELP_NAME_FAILUREURL = "online.help.name.failureurl";
@@ -5394,6 +5397,13 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
*/
String getOnlineHelpInstallation();
+ /**
+ * Get the value for the key 'online.help.eol'.
+ * The value is, e.g. https://fess.codelibs.org/{lang}/eol.html
+ * @return The value of found property. (NotNull: if not found, exception but basically no way)
+ */
+ String getOnlineHelpEol();
+
/**
* Get the value for the key 'online.help.name.failureurl'.
* The value is, e.g. failureurl
@@ -8428,6 +8438,10 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
return get(FessConfig.ONLINE_HELP_INSTALLATION);
}
+ public String getOnlineHelpEol() {
+ return get(FessConfig.ONLINE_HELP_EOL);
+ }
+
public String getOnlineHelpNameFailureurl() {
return get(FessConfig.ONLINE_HELP_NAME_FAILUREURL);
}
@@ -9366,6 +9380,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
defaultMap.put(FessConfig.SCHEDULER_MONITOR_INTERVAL, "30");
defaultMap.put(FessConfig.ONLINE_HELP_BASE_LINK, "https://fess.codelibs.org/{lang}/{version}/admin/");
defaultMap.put(FessConfig.ONLINE_HELP_INSTALLATION, "https://fess.codelibs.org/{lang}/{version}/install/install.html");
+ defaultMap.put(FessConfig.ONLINE_HELP_EOL, "https://fess.codelibs.org/{lang}/eol.html");
defaultMap.put(FessConfig.ONLINE_HELP_NAME_FAILUREURL, "failureurl");
defaultMap.put(FessConfig.ONLINE_HELP_NAME_ELEVATEWORD, "elevateword");
defaultMap.put(FessConfig.ONLINE_HELP_NAME_REQHEADER, "reqheader");
diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties
index e9a081d9b..a7914dd9b 100644
--- a/src/main/resources/fess_config.properties
+++ b/src/main/resources/fess_config.properties
@@ -675,6 +675,7 @@ scheduler.monitor.interval=30
# ------
online.help.base.link=https://fess.codelibs.org/{lang}/{version}/admin/
online.help.installation=https://fess.codelibs.org/{lang}/{version}/install/install.html
+online.help.eol=https://fess.codelibs.org/{lang}/eol.html
online.help.name.failureurl=failureurl
online.help.name.elevateword=elevateword
online.help.name.reqheader=reqheader
diff --git a/src/main/resources/fess_label.properties b/src/main/resources/fess_label.properties
index d7c744159..36d004ed5 100644
--- a/src/main/resources/fess_label.properties
+++ b/src/main/resources/fess_label.properties
@@ -951,6 +951,7 @@ labels.esreq_button_upload=Send
labels.facet_is_not_found=No match
labels.doc_score=Score:
labels.development_mode_warning=Running as Development mode. For production use, please install a standalone elasticsearch server.
+labels.eol_error=Your system is out of service. See EOL page.
labels.advance=Advance
labels.advance_search_title=Advanced Search
labels.advance_search_must_queries=All these words
diff --git a/src/main/resources/fess_label_en.properties b/src/main/resources/fess_label_en.properties
index d7c744159..36d004ed5 100644
--- a/src/main/resources/fess_label_en.properties
+++ b/src/main/resources/fess_label_en.properties
@@ -951,6 +951,7 @@ labels.esreq_button_upload=Send
labels.facet_is_not_found=No match
labels.doc_score=Score:
labels.development_mode_warning=Running as Development mode. For production use, please install a standalone elasticsearch server.
+labels.eol_error=Your system is out of service. See EOL page.
labels.advance=Advance
labels.advance_search_title=Advanced Search
labels.advance_search_must_queries=All these words
diff --git a/src/main/resources/fess_label_ja.properties b/src/main/resources/fess_label_ja.properties
index 1f171dab1..93a7b847e 100644
--- a/src/main/resources/fess_label_ja.properties
+++ b/src/main/resources/fess_label_ja.properties
@@ -951,6 +951,7 @@ labels.esreq_button_upload=送信
labels.facet_is_not_found=該当なし
labels.doc_score=スコア:
labels.development_mode_warning=開発モードで起動しています。本運用環境ではElasticsearchを別途インストールしてください。
+labels.eol_error=ご利用のシステムはサポートが終了しています。製品サポート期限のページを参照して、再インストールしてください。
labels.advance=詳細検索
labels.advance_search_title=詳細検索
labels.advance_search_must_queries=すべての単語を含む
diff --git a/src/main/webapp/WEB-INF/view/common/admin/header.jsp b/src/main/webapp/WEB-INF/view/common/admin/header.jsp
index 61b501699..3a6a2ace3 100644
--- a/src/main/webapp/WEB-INF/view/common/admin/header.jsp
+++ b/src/main/webapp/WEB-INF/view/common/admin/header.jsp
@@ -17,10 +17,15 @@