diff --git a/src/main/java/org/codelibs/fess/helper/ViewHelper.java b/src/main/java/org/codelibs/fess/helper/ViewHelper.java index 0639aef7c53b700f779cf7ae3e8e4815747e013e..87b19729e3c7f5ad78d279c135e637f6702f82cf 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 de51ffe766d0137401bf7ec50328243c4a014c3e..d25c0cc9cadbc7edfb6f795a8b71515ff3ad9996 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 e360222975af2bf145d83903609118005a89156b..eef4f6ee149dd8ad8255e192d312e04067b661d6 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 dd6dc0992f7131717f12c8ebd9789405b12d8eb4..588e27b2b4046b0a9978c556ff761d35f3faa530 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 # ------