From c77da2937568c4cac9dba969371c7b4dcd6f89fa Mon Sep 17 00:00:00 2001
From: Shinsuke Sugaya <shinsuke@apache.org>
Date: Thu, 14 Mar 2019 12:05:19 +0900
Subject: [PATCH] fix #2045 add session.tracking.modes
---
.../java/org/codelibs/fess/helper/ViewHelper.java | 5 +++++
.../fess/mylasta/direction/FessConfig.java | 15 +++++++++++++++
.../codelibs/fess/mylasta/direction/FessProp.java | 7 +++++++
src/main/resources/fess_config.properties | 2 ++
4 files changed, 29 insertions(+)
diff --git a/src/main/java/org/codelibs/fess/helper/ViewHelper.java b/src/main/java/org/codelibs/fess/helper/ViewHelper.java
index 0639aef7c..87b19729e 100644
--- a/src/main/java/org/codelibs/fess/helper/ViewHelper.java
+++ b/src/main/java/org/codelibs/fess/helper/ViewHelper.java
@@ -38,6 +38,8 @@ import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
+import javax.servlet.ServletContext;
+import javax.servlet.SessionTrackingMode;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -145,6 +147,9 @@ public class ViewHelper {
highlightTagPost = fessConfig.getQueryHighlightTagPost();
highlightedFields = fessConfig.getQueryHighlightContentDescriptionFieldsAsArray();
fessConfig.getQueryHighlightTerminalChars().codePoints().forEach(hihglightTerminalCharSet::add);
+ final ServletContext servletContext = ComponentUtil.getComponent(ServletContext.class);
+ servletContext.setSessionTrackingModes(fessConfig.getSessionTrackingModesAsSet().stream().map(s -> SessionTrackingMode.valueOf(s))
+ .collect(Collectors.toSet()));
}
public String getContentTitle(final Map<String, Object> document) {
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 de51ffe76..d25c0cc9c 100644
--- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
+++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
@@ -854,6 +854,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
/** The key of the configuration. e.g. FES */
String COOKIE_REMEMBER_ME_HARBOR_KEY = "cookie.remember.me.harbor.key";
+ /** The key of the configuration. e.g. cookie */
+ String SESSION_TRACKING_MODES = "session.tracking.modes";
+
/** The key of the configuration. e.g. 25 */
String PAGING_PAGE_SIZE = "paging.page.size";
@@ -4043,6 +4046,13 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
*/
String getCookieRememberMeHarborKey();
+ /**
+ * Get the value for the key 'session.tracking.modes'. <br>
+ * The value is, e.g. cookie <br>
+ * @return The value of found property. (NotNull: if not found, exception but basically no way)
+ */
+ String getSessionTrackingModes();
+
/**
* Get the value for the key 'paging.page.size'. <br>
* The value is, e.g. 25 <br>
@@ -7441,6 +7451,10 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
return get(FessConfig.COOKIE_REMEMBER_ME_HARBOR_KEY);
}
+ public String getSessionTrackingModes() {
+ return get(FessConfig.SESSION_TRACKING_MODES);
+ }
+
public String getPagingPageSize() {
return get(FessConfig.PAGING_PAGE_SIZE);
}
@@ -8823,6 +8837,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
defaultMap.put(FessConfig.COOKIE_DEFAULT_EXPIRE, "3600");
defaultMap.put(FessConfig.COOKIE_ETERNAL_EXPIRE, "86400");
defaultMap.put(FessConfig.COOKIE_REMEMBER_ME_HARBOR_KEY, "FES");
+ defaultMap.put(FessConfig.SESSION_TRACKING_MODES, "cookie");
defaultMap.put(FessConfig.PAGING_PAGE_SIZE, "25");
defaultMap.put(FessConfig.PAGING_PAGE_RANGE_SIZE, "5");
defaultMap.put(FessConfig.PAGING_PAGE_RANGE_FILL_LIMIT, "true");
diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java
index e36022297..eef4f6ee1 100644
--- a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java
+++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java
@@ -1992,4 +1992,11 @@ public interface FessProp {
}
+ String getSessionTrackingModes();
+
+ default Set<String> getSessionTrackingModesAsSet() {
+ return split(getSessionTrackingModes(), ",")
+ .get(stream -> stream.map(s -> s.trim().toUpperCase(Locale.ENGLISH)).collect(Collectors.toSet()));
+ }
+
}
diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties
index dd6dc0992..588e27b2b 100644
--- a/src/main/resources/fess_config.properties
+++ b/src/main/resources/fess_config.properties
@@ -457,6 +457,8 @@ cookie.eternal.expire = 86400
# The cookie key of remember-me for Fess
cookie.remember.me.harbor.key = FES
+session.tracking.modes=cookie
+
# ----------------------------------------------------------
# Paging
# ------
--
GitLab