diff --git a/src/main/java/org/codelibs/fess/Constants.java b/src/main/java/org/codelibs/fess/Constants.java index 2328505cb..3f80cd87c 100644 --- a/src/main/java/org/codelibs/fess/Constants.java +++ b/src/main/java/org/codelibs/fess/Constants.java @@ -104,6 +104,8 @@ public class Constants extends CoreLibConstants { public static final String WEB_DESIGN_EDITOR_PROPERTY = "design.editor"; + public static final String APP_VALUE_PROPERTY = "system.properties"; + public static final String DEFAULT_LABEL_VALUE_PROPERTY = "label.value"; public static final String DEFAULT_SORT_VALUE_PROPERTY = "sort.value"; diff --git a/src/main/java/org/codelibs/fess/app/web/admin/general/AdminGeneralAction.java b/src/main/java/org/codelibs/fess/app/web/admin/general/AdminGeneralAction.java index 627dc426a..00b1e4a14 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/general/AdminGeneralAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/general/AdminGeneralAction.java @@ -29,6 +29,7 @@ import org.codelibs.core.lang.StringUtil; import org.codelibs.core.misc.DynamicProperties; import org.codelibs.fess.Constants; import org.codelibs.fess.app.web.base.FessAdminAction; +import org.codelibs.fess.helper.SystemHelper; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.mylasta.mail.TestmailPostcard; import org.codelibs.fess.util.ComponentUtil; @@ -136,6 +137,7 @@ public class AdminGeneralAction extends FessAdminAction { fessConfig.setUserInfo(isCheckboxEnabled(form.userInfo)); fessConfig.setUserFavorite(isCheckboxEnabled(form.userFavorite)); fessConfig.setWebApiJson(isCheckboxEnabled(form.webApiJson)); + fessConfig.setAppValue(form.appValue); fessConfig.setDefaultLabelValue(form.defaultLabelValue); fessConfig.setDefaultSortValue(form.defaultSortValue); fessConfig.setVirtualHostValue(form.virtualHostValue); @@ -167,10 +169,12 @@ public class AdminGeneralAction extends FessAdminAction { fessConfig.storeSystemProperties(); ComponentUtil.getLdapManager().updateConfig(); - ComponentUtil.getSystemHelper().refreshDesignJspFiles(); + final SystemHelper systemHelper = ComponentUtil.getSystemHelper(); + systemHelper.refreshDesignJspFiles(); + systemHelper.updateSystemProperties(); if (StringUtil.isNotBlank(form.logLevel)) { - ComponentUtil.getSystemHelper().setLogLevel(form.logLevel); + systemHelper.setLogLevel(form.logLevel); } } @@ -186,6 +190,7 @@ public class AdminGeneralAction extends FessAdminAction { form.userInfo = fessConfig.isUserInfo() ? Constants.TRUE : Constants.FALSE; form.userFavorite = fessConfig.isUserFavorite() ? Constants.TRUE : Constants.FALSE; form.webApiJson = fessConfig.isWebApiJson() ? Constants.TRUE : Constants.FALSE; + form.appValue = fessConfig.getAppValue(); form.defaultLabelValue = fessConfig.getDefaultLabelValue(); form.defaultSortValue = fessConfig.getDefaultSortValue(); form.virtualHostValue = fessConfig.getVirtualHostValue(); diff --git a/src/main/java/org/codelibs/fess/app/web/admin/general/EditForm.java b/src/main/java/org/codelibs/fess/app/web/admin/general/EditForm.java index 8cf195a6b..e9c15bd38 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/general/EditForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/general/EditForm.java @@ -55,6 +55,9 @@ public class EditForm { @Size(max = 10) public String webApiJson; + @Size(max = 10000) + public String appValue; + @Size(max = 1000) public String defaultLabelValue; diff --git a/src/main/java/org/codelibs/fess/helper/SystemHelper.java b/src/main/java/org/codelibs/fess/helper/SystemHelper.java index b56e595e6..37d299fa9 100644 --- a/src/main/java/org/codelibs/fess/helper/SystemHelper.java +++ b/src/main/java/org/codelibs/fess/helper/SystemHelper.java @@ -61,6 +61,7 @@ import org.codelibs.fess.mylasta.action.FessUserBean; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.util.ComponentUtil; import org.codelibs.fess.util.GsaConfigParser; +import org.codelibs.fess.util.ParameterUtil; import org.codelibs.fess.util.ResourceUtil; import org.codelibs.fess.validation.FessActionValidator; import org.lastaflute.core.message.supplier.UserMessagesCreator; @@ -109,6 +110,7 @@ public class SystemHelper { if (logger.isDebugEnabled()) { logger.debug("Initialize " + this.getClass().getSimpleName()); } + updateSystemProperties(); final FessConfig fessConfig = ComponentUtil.getFessConfig(); filterPathEncoding = fessConfig.getPathEncoding(); supportedLanguages = fessConfig.getSupportedLanguagesAsArray(); @@ -433,6 +435,25 @@ public class SystemHelper { ComponentUtil.getRelatedContentHelper().update(); ComponentUtil.getRelatedQueryHelper().update(); ComponentUtil.getKeyMatchHelper().update(); + updateSystemProperties(); + } + + public void updateSystemProperties() { + final String value = ComponentUtil.getFessConfig().getAppValue(); + if (StringUtil.isNotBlank(value)) { + ParameterUtil.parse(value).entrySet().stream().filter(e -> { + final String key = e.getKey(); + if (StringUtil.isNotBlank(key)) { + return false; + } + if (key.startsWith("fess.")) { + return true; + } + return System.getProperty(key) == null; + }).forEach(e -> { + System.setProperty(e.getKey(), e.getValue()); + }); + } } public String updateConfiguration() { 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 17989abfb..763522b8e 100644 --- a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java +++ b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java @@ -1169,6 +1169,9 @@ public class FessLabels extends UserMessages { /** The key of the message: JSON Response */ public static final String LABELS_web_api_json_enabled = "{labels.web_api_json_enabled}"; + /** The key of the message: System Properties */ + public static final String LABELS_app_value = "{labels.app_value}"; + /** The key of the message: Default Label Value */ public static final String LABELS_default_label_value = "{labels.default_label_value}"; 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 89b903ab3..946321770 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java @@ -139,6 +139,8 @@ public interface FessProp { String ROLE_VALUE_PREFIX = "role:"; + String APP_VALUES = "appValues"; + String DEFAULT_SORT_VALUES = "defaultSortValues"; String DEFAULT_LABEL_VALUES = "defaultLabelValues"; @@ -312,6 +314,15 @@ public interface FessProp { }).filter(StringUtil::isNotBlank).toArray(n -> new String[n]); } + default void setAppValue(final String value) { + setSystemProperty(Constants.APP_VALUE_PROPERTY, value); + propMap.remove(APP_VALUES); + } + + default String getAppValue() { + return getSystemProperty(Constants.APP_VALUE_PROPERTY, StringUtil.EMPTY); + } + default void setDefaultLabelValue(final String value) { setSystemProperty(Constants.DEFAULT_LABEL_VALUE_PROPERTY, value); propMap.remove(DEFAULT_LABEL_VALUES); diff --git a/src/main/resources/fess_label.properties b/src/main/resources/fess_label.properties index cd479f997..995e4f7da 100644 --- a/src/main/resources/fess_label.properties +++ b/src/main/resources/fess_label.properties @@ -381,6 +381,7 @@ labels.search_log_enabled=Search Logging labels.user_info_enabled=User Logging labels.user_favorite_enabled=Favorite Logging labels.web_api_json_enabled=JSON Response +labels.app_value=System Properties labels.default_label_value=Default Label Value labels.default_sort_value=Default Sort Value labels.virtual_host_value=Virtual Hosts diff --git a/src/main/resources/fess_label_de.properties b/src/main/resources/fess_label_de.properties index 82462ea50..222f1368f 100644 --- a/src/main/resources/fess_label_de.properties +++ b/src/main/resources/fess_label_de.properties @@ -371,6 +371,7 @@ labels.search_log_enabled=Protokollierung Suche labels.user_info_enabled=User Logging labels.user_favorite_enabled=Favorite Logging labels.web_api_json_enabled=JSON Response +labels.app_value=System Properties labels.default_label_value=Default Label Value labels.default_sort_value=Default Sort Value labels.virtual_host_value=Virtual Hosts diff --git a/src/main/resources/fess_label_en.properties b/src/main/resources/fess_label_en.properties index cd479f997..995e4f7da 100644 --- a/src/main/resources/fess_label_en.properties +++ b/src/main/resources/fess_label_en.properties @@ -381,6 +381,7 @@ labels.search_log_enabled=Search Logging labels.user_info_enabled=User Logging labels.user_favorite_enabled=Favorite Logging labels.web_api_json_enabled=JSON Response +labels.app_value=System Properties labels.default_label_value=Default Label Value labels.default_sort_value=Default Sort Value labels.virtual_host_value=Virtual Hosts diff --git a/src/main/resources/fess_label_ja.properties b/src/main/resources/fess_label_ja.properties index cebc3ab93..723ce9ace 100644 --- a/src/main/resources/fess_label_ja.properties +++ b/src/main/resources/fess_label_ja.properties @@ -373,6 +373,7 @@ labels.search_log_enabled=検索ログ labels.user_info_enabled=ユーザログ labels.user_favorite_enabled=お気に入りログ labels.web_api_json_enabled=JSONレスポンス +labels.app_value=システムプロパティ labels.default_label_value=デフォルトのラベル値 labels.default_sort_value=デフォルトのソート値 labels.virtual_host_value=仮想ホスト diff --git a/src/main/resources/fess_label_ko.properties b/src/main/resources/fess_label_ko.properties index bd44cd7bf..b63839e56 100644 --- a/src/main/resources/fess_label_ko.properties +++ b/src/main/resources/fess_label_ko.properties @@ -355,6 +355,7 @@ labels.search_log_enabled = 검색 로그 labels.user_info_enabled = 사용자 로그 labels.user_favorite_enabled = 즐겨찾기 로그 labels.web_api_json_enabled = JSON 응답 +labels.app_value=System Properties labels.default_label_value = 기본 레이블 값 labels.default_sort_value = 기본 정렬 값 labels.append_query_param_enabled = 검색 매개 변수 추가 diff --git a/src/main/resources/fess_label_ru.properties b/src/main/resources/fess_label_ru.properties index c81c0d725..67da6d11e 100644 --- a/src/main/resources/fess_label_ru.properties +++ b/src/main/resources/fess_label_ru.properties @@ -358,6 +358,7 @@ labels.search_log_enabled=Search Logging labels.user_info_enabled=User Logging labels.user_favorite_enabled=Favorite Logging labels.web_api_json_enabled=JSON Response +labels.app_value=System Properties labels.default_label_value=Default Label Value labels.default_sort_value=Default Sort Value labels.append_query_param_enabled=Append Params to URL diff --git a/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp b/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp index 2852ee70f..f263c480a 100644 --- a/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp +++ b/src/main/webapp/WEB-INF/view/admin/general/admin_general.jsp @@ -93,6 +93,15 @@ +