Compare commits

...
Sign in to create a new pull request.

19 commits

Author SHA1 Message Date
Shinsuke Sugaya
0d640c4c1a fess-parent 13.16.3 2022-01-16 15:06:10 +09:00
Shinsuke Sugaya
4f3715d7b0 [maven-release-plugin] prepare for next development iteration 2021-12-21 00:26:41 +00:00
Shinsuke Sugaya
c77c583751 [maven-release-plugin] prepare release fess-13.16.0 2021-12-21 00:26:37 +00:00
Shinsuke Sugaya
954e921b0a fess-parent 13.16.2 2021-12-21 09:24:59 +09:00
Shinsuke Sugaya
95495d8022 fess-parent 13.16.2-SNAPSHOT 2021-12-21 08:16:02 +09:00
Shinsuke Sugaya
dd0e62fed9 update dependencies 2021-12-20 17:46:53 +09:00
Shinsuke Sugaya
ce9b90e8d0 fess-parent 13.16.0 2021-12-20 15:03:57 +09:00
Shinsuke Sugaya
fe46f40bdb fix #2613 add 13.15 2021-12-18 11:07:28 +09:00
Shinsuke Sugaya
8e28802be8 fix #2612 update eol date 2021-12-18 11:06:27 +09:00
Shinsuke Sugaya
c811957ed4 fix #2608 add formatMsgNoLookups 2021-12-10 20:02:45 +09:00
Shinsuke Sugaya
a7cf8f68f5 13.16.0-SNAPSHOT 2021-12-09 18:04:31 +09:00
Shinsuke Sugaya
afbc3e8935 [maven-release-plugin] prepare for next development iteration 2021-12-03 21:20:05 +09:00
Shinsuke Sugaya
ff4448a22b [maven-release-plugin] prepare release fess-13.15.1 2021-12-03 21:20:00 +09:00
Shinsuke Sugaya
e89e9034fb fess-parent 13.15.1 2021-12-02 17:23:30 +09:00
Shinsuke Sugaya
1de403fc21 fess-parent 13.15.1-SNAPSHOT 2021-12-02 13:38:29 +09:00
Shinsuke Sugaya
9fceb419a5 #2605 check if user permission 2021-12-01 22:24:39 +09:00
Shinsuke Sugaya
b7a4af6eab organized imports 2021-12-01 21:30:27 +09:00
Shinsuke Sugaya
00297eb14e fix #2605 add ldap.allow.empty.permission 2021-12-01 21:29:40 +09:00
Shinsuke Sugaya
fb7e40e421 fix #2604 remove duplicated roles 2021-12-01 21:21:28 +09:00
18 changed files with 235 additions and 33 deletions

View file

@ -5,9 +5,13 @@ name: Java CI with Maven
on:
push:
branches: [ master ]
branches:
- master
- "*.x"
pull_request:
branches: [ master ]
branches:
- master
- "*.x"
jobs:
build:
@ -32,6 +36,7 @@ jobs:
with:
repository: codelibs/fess-parent
path: fess-parent
ref: 13.16.x
- name: Install fess-parent
run: |
cd fess-parent

View file

@ -2,7 +2,7 @@
<project name="dbflute" basedir=".">
<property name="mydbflute.dir" value="${basedir}/mydbflute" />
<property name="target.dir" value="${basedir}/target" />
<property name="branch.name" value="es-7.15" />
<property name="branch.name" value="es-7.16" />
<property name="mydbflute.url" value="https://github.com/lastaflute/lastaflute-example-waterfront/archive/${branch.name}.zip" />
<target name="mydbflute.check">

View file

@ -48,24 +48,24 @@
<param name="repo.url" value="${maven.release.repo.url}" />
<param name="jar.groupId" value="org/codelibs/fess" />
<param name="jar.artifactId" value="fess-ds-csv" />
<param name="jar.version" value="13.15.0" />
<param name="file.version" value="13.15.0" />
<param name="jar.version" value="13.16.0" />
<param name="file.version" value="13.16.0" />
</antcall>
<!-- fess-ds-db -->
<antcall target="install.plugin.jar">
<param name="repo.url" value="${maven.release.repo.url}" />
<param name="jar.groupId" value="org/codelibs/fess" />
<param name="jar.artifactId" value="fess-ds-db" />
<param name="jar.version" value="13.15.0" />
<param name="file.version" value="13.15.0" />
<param name="jar.version" value="13.16.0" />
<param name="file.version" value="13.16.0" />
</antcall>
<!-- fess-script-groovy -->
<antcall target="install.plugin.jar">
<param name="repo.url" value="${maven.release.repo.url}" />
<param name="jar.groupId" value="org/codelibs/fess" />
<param name="jar.artifactId" value="fess-script-groovy" />
<param name="jar.version" value="13.15.0" />
<param name="file.version" value="13.15.0" />
<param name="jar.version" value="13.16.0" />
<param name="file.version" value="13.16.0" />
</antcall>
</target>

View file

@ -19,8 +19,8 @@
<param name="plugin.groupId" value="org/codelibs${use.fesen}" />
<param name="plugin.name.prefix" value="${name.prefix}-" />
<param name="plugin.name" value="analysis-extension" />
<param name="plugin.version" value="0.15.0" />
<param name="plugin.zip.version" value="0.15.0" />
<param name="plugin.version" value="0.16.0" />
<param name="plugin.zip.version" value="0.16.0" />
</antcall>
<!-- analysis-fess -->
<antcall target="install.plugin">
@ -28,8 +28,8 @@
<param name="plugin.groupId" value="org/codelibs${use.fesen}" />
<param name="plugin.name.prefix" value="${name.prefix}-" />
<param name="plugin.name" value="analysis-fess" />
<param name="plugin.version" value="0.15.0" />
<param name="plugin.zip.version" value="0.15.0" />
<param name="plugin.version" value="0.16.0" />
<param name="plugin.zip.version" value="0.16.0" />
</antcall>
<!-- configsync -->
<antcall target="install.plugin">
@ -37,8 +37,8 @@
<param name="plugin.groupId" value="org/codelibs${use.fesen}" />
<param name="plugin.name.prefix" value="${name.prefix}-" />
<param name="plugin.name" value="configsync" />
<param name="plugin.version" value="0.15.0" />
<param name="plugin.zip.version" value="0.15.0" />
<param name="plugin.version" value="0.16.0" />
<param name="plugin.zip.version" value="0.16.0" />
</antcall>
<!-- minhash -->
<antcall target="install.plugin">
@ -46,8 +46,8 @@
<param name="plugin.groupId" value="org/codelibs${use.fesen}" />
<param name="plugin.name.prefix" value="${name.prefix}-" />
<param name="plugin.name" value="minhash" />
<param name="plugin.version" value="0.15.0" />
<param name="plugin.zip.version" value="0.15.0" />
<param name="plugin.version" value="0.16.0" />
<param name="plugin.zip.version" value="0.16.0" />
</antcall>
<antcall target="remove.jars" />

View file

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>fess</artifactId>
<version>13.15.1-SNAPSHOT</version>
<version>13.16.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Fess</name>
<description>Fess is Full tExt Search System.</description>
@ -30,7 +30,7 @@
<parent>
<groupId>org.codelibs.fess</groupId>
<artifactId>fess-parent</artifactId>
<version>13.15.0</version>
<version>13.16.3</version>
<relativePath />
</parent>
<properties>

View file

@ -66,6 +66,7 @@ set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dio.netty.recycler.maxCapacityPerThread=0
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j.shutdownHookEnabled=false
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j2.disable.jmx=true
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j2.formatMsgNoLookups=true
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dlog4j.skipJansi=true
REM SSL truststore for certificate validation over https

View file

@ -64,6 +64,7 @@ FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dio.netty.recycler.maxCapacityPerThread=0"
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j.shutdownHookEnabled=false"
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j2.disable.jmx=true"
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j2.formatMsgNoLookups=true"
FESS_JAVA_OPTS="$FESS_JAVA_OPTS -Dlog4j.skipJansi=true"
# Causes the JVM to dump its heap on OutOfMemory.

View file

@ -15,9 +15,7 @@
*/
package org.codelibs.fess.app.web.admin.maintenance;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.nio.file.Files;
import java.nio.file.Path;
@ -35,7 +33,6 @@ import javax.annotation.Resource;
import org.apache.commons.text.StringEscapeUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.codelibs.core.exception.IORuntimeException;
import org.codelibs.core.io.CopyUtil;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.curl.CurlResponse;

View file

@ -92,6 +92,8 @@ public class AdminUpgradeAction extends FessAdminAction {
private static final String VERSION_13_14 = "13.14";
private static final String VERSION_13_15 = "13.15";
// ===================================================================================
// Attribute
//
@ -181,6 +183,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -213,6 +216,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -244,6 +248,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -274,6 +279,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -303,6 +309,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -331,6 +338,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -358,6 +366,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -383,6 +392,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -408,6 +418,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -432,6 +443,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -455,6 +467,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -477,6 +490,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -498,6 +512,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -518,6 +533,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -537,6 +553,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -555,6 +572,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -572,6 +590,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -588,6 +607,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -603,6 +623,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -617,6 +638,7 @@ public class AdminUpgradeAction extends FessAdminAction {
upgradeFrom13_12();
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -630,6 +652,7 @@ public class AdminUpgradeAction extends FessAdminAction {
try {
upgradeFrom13_13();
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -642,6 +665,7 @@ public class AdminUpgradeAction extends FessAdminAction {
} else if (VERSION_13_14.equals(form.targetVersion)) {
try {
upgradeFrom13_14();
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
@ -651,6 +675,18 @@ public class AdminUpgradeAction extends FessAdminAction {
logger.warn("Failed to upgrade data.", e);
saveError(messages -> messages.addErrorsFailedToUpgradeFrom(GLOBAL, VERSION_13_14, e.getLocalizedMessage()));
}
} else if (VERSION_13_15.equals(form.targetVersion)) {
try {
upgradeFrom13_15();
upgradeFromAll();
saveInfo(messages -> messages.addSuccessStartedDataUpdate(GLOBAL));
systemHelper.reloadConfiguration();
} catch (final Exception e) {
logger.warn("Failed to upgrade data.", e);
saveError(messages -> messages.addErrorsFailedToUpgradeFrom(GLOBAL, VERSION_13_15, e.getLocalizedMessage()));
}
} else {
saveError(messages -> messages.addErrorsUnknownVersionForUpgrade(GLOBAL));
}
@ -758,6 +794,10 @@ public class AdminUpgradeAction extends FessAdminAction {
// nothing
}
private void upgradeFrom13_15() {
// nothing
}
private void upgradeFromAll() {
// nothing
}

View file

@ -126,7 +126,7 @@ public class SystemHelper {
logger.debug("Initialize {}", this.getClass().getSimpleName());
}
final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.set(2023, 3 - 1, 22); // EOL Date
cal.set(2023, 6 - 1, 7); // EOL Date
eolTime = cal.getTimeInMillis();
if (isEoled()) {
logger.error("Your system is out of support. See https://fess.codelibs.org/eol.html");
@ -446,6 +446,13 @@ public class SystemHelper {
return getCurrentTimeAsLong() > eolTime;
}
public boolean isUserPermission(final String permission) {
if (StringUtil.isNotBlank(permission)) {
return permission.startsWith(ComponentUtil.getFessConfig().getRoleSearchUserPrefix());
}
return false;
}
public String getSearchRoleByUser(final String name) {
return createSearchRole(ComponentUtil.getFessConfig().getRoleSearchUserPrefix(), name);
}

View file

@ -161,10 +161,17 @@ public class LdapManager {
final Hashtable<String, String> env = createSearchEnv(username, password);
try (DirContextHolder holder = getDirContext(() -> env)) {
final DirContext context = holder.get();
if (logger.isDebugEnabled()) {
logger.debug("Logged in.", context);
final LdapUser ldapUser = createLdapUser(username, env);
if (!allowEmptyGroupAndRole(ldapUser)) {
if (logger.isDebugEnabled()) {
logger.debug("Login failed. No permissions. {}", context);
}
return OptionalEntity.empty();
}
return OptionalEntity.of(createLdapUser(username, env));
if (logger.isDebugEnabled()) {
logger.debug("Logged in. {}", context);
}
return OptionalEntity.of(ldapUser);
} catch (final Exception e) {
logger.debug("Login failed.", e);
}
@ -175,16 +182,37 @@ public class LdapManager {
final Hashtable<String, String> env = createSearchEnv();
try (DirContextHolder holder = getDirContext(() -> env)) {
final DirContext context = holder.get();
final LdapUser ldapUser = createLdapUser(username, env);
if (!allowEmptyGroupAndRole(ldapUser)) {
if (logger.isDebugEnabled()) {
logger.debug("Login failed. No permissions. {}", context);
}
return OptionalEntity.empty();
}
if (logger.isDebugEnabled()) {
logger.debug("Logged in.", context);
}
return OptionalEntity.of(createLdapUser(username, env));
return OptionalEntity.of(ldapUser);
} catch (final Exception e) {
logger.debug("Login failed.", e);
}
return OptionalEntity.empty();
}
protected boolean allowEmptyGroupAndRole(final LdapUser ldapUser) {
if (fessConfig.isLdapAllowEmptyPermission()) {
return true;
}
final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
for (final String permission : ldapUser.getPermissions()) {
if (!systemHelper.isUserPermission(permission)) {
return true;
}
}
return false;
}
protected LdapUser createLdapUser(final String username, final Hashtable<String, String> env) {
return new LdapUser(env, username);
}

View file

@ -17,6 +17,7 @@ package org.codelibs.fess.ldap;
import static org.codelibs.core.stream.StreamUtil.stream;
import java.util.Arrays;
import java.util.Hashtable;
import org.apache.commons.lang3.ArrayUtils;
@ -56,10 +57,10 @@ public class LdapUser implements FessUser {
final String groupFilter = fessConfig.getLdapGroupFilter();
if (StringUtil.isNotBlank(baseDn) && StringUtil.isNotBlank(accountFilter)) {
final LdapManager ldapManager = ComponentUtil.getLdapManager();
permissions = ArrayUtils.addAll(ldapManager.getRoles(this, baseDn, accountFilter, groupFilter, roles -> {
permissions = roles;
permissions = distinct(ArrayUtils.addAll(ldapManager.getRoles(this, baseDn, accountFilter, groupFilter, roles -> {
permissions = distinct(roles);
ComponentUtil.getActivityHelper().permissionChanged(OptionalThing.of(new FessUserBean(this)));
}), fessConfig.getRoleSearchUserPrefix() + ldapManager.normalizePermissionName(getName()));
}), fessConfig.getRoleSearchUserPrefix() + ldapManager.normalizePermissionName(getName())));
} else {
permissions = StringUtil.EMPTY_STRINGS;
}
@ -90,4 +91,14 @@ public class LdapUser implements FessUser {
return ComponentUtil.getFessConfig().isLdapAdminEnabled(name);
}
private static String[] distinct(final String[] values) {
if (values == null) {
return StringUtil.EMPTY_STRINGS;
}
if (values.length < 2) {
return values;
}
return Arrays.stream(values).distinct().toArray(n -> new String[n]);
}
}

View file

@ -86,6 +86,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.formatMsgNoLookups=true
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
@ -119,6 +120,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j2.formatMsgNoLookups=true
-Dlog4j.skipJansi=true
*/
String JVM_SUGGEST_OPTIONS = "jvm.suggest.options";
@ -157,6 +159,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j2.formatMsgNoLookups=true
-Dlog4j.skipJansi=true
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
-Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true
@ -1583,6 +1586,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
/** The key of the configuration. e.g. false */
String LDAP_LOWERCASE_PERMISSION_NAME = "ldap.lowercase.permission.name";
/** The key of the configuration. e.g. true */
String LDAP_ALLOW_EMPTY_PERMISSION = "ldap.allow.empty.permission";
/** The key of the configuration. e.g. true */
String LDAP_ROLE_SEARCH_USER_ENABLED = "ldap.role.search.user.enabled";
@ -1861,6 +1867,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.formatMsgNoLookups=true
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
@ -1899,6 +1906,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j2.formatMsgNoLookups=true
-Dlog4j.skipJansi=true
<br>
* @return The value of found property. (NotNull: if not found, exception but basically no way)
@ -1941,6 +1949,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j2.formatMsgNoLookups=true
-Dlog4j.skipJansi=true
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
-Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true
@ -6829,6 +6838,20 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
*/
boolean isLdapLowercasePermissionName();
/**
* Get the value for the key 'ldap.allow.empty.permission'. <br>
* The value is, e.g. true <br>
* @return The value of found property. (NotNull: if not found, exception but basically no way)
*/
String getLdapAllowEmptyPermission();
/**
* Is the property for the key 'ldap.allow.empty.permission' true? <br>
* The value is, e.g. true <br>
* @return The determination, true or false. (if not found, exception but basically no way)
*/
boolean isLdapAllowEmptyPermission();
/**
* Get the value for the key 'ldap.role.search.user.enabled'. <br>
* The value is, e.g. true <br>
@ -9839,6 +9862,14 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
return is(FessConfig.LDAP_LOWERCASE_PERMISSION_NAME);
}
public String getLdapAllowEmptyPermission() {
return get(FessConfig.LDAP_ALLOW_EMPTY_PERMISSION);
}
public boolean isLdapAllowEmptyPermission() {
return is(FessConfig.LDAP_ALLOW_EMPTY_PERMISSION);
}
public String getLdapRoleSearchUserEnabled() {
return get(FessConfig.LDAP_ROLE_SEARCH_USER_ENABLED);
}
@ -10045,11 +10076,11 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
defaultMap.put(FessConfig.APP_ENCRYPT_PROPERTY_PATTERN, ".*password|.*key|.*token|.*secret");
defaultMap.put(FessConfig.APP_EXTENSION_NAMES, "");
defaultMap.put(FessConfig.JVM_CRAWLER_OPTIONS,
"-Djava.awt.headless=true\n-Dfile.encoding=UTF-8\n-Djna.nosys=true\n-Djdk.io.permissionsUseCanonicalPath=true\n-Dhttp.maxConnections=20\n-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n-server\n-Xms128m\n-Xmx512m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:-HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\n-XX:+UnlockExperimentalVMOptions\n-XX:+UseG1GC\n-XX:InitiatingHeapOccupancyPercent=45\n-XX:G1HeapRegionSize=1m\n-XX:MaxGCPauseMillis=60000\n-XX:G1NewSizePercent=5\n-XX:G1MaxNewSizePercent=5\n-Djcifs.smb.client.responseTimeout=30000\n-Djcifs.smb.client.soTimeout=35000\n-Djcifs.smb.client.connTimeout=60000\n-Djcifs.smb.client.sessionTimeout=60000\n-Djcifs.smb1.smb.client.connTimeout=60000\n-Djcifs.smb1.smb.client.soTimeout=35000\n-Djcifs.smb1.smb.client.responseTimeout=30000\n-Dio.netty.noUnsafe=true\n-Dio.netty.noKeySetOptimization=true\n-Dio.netty.recycler.maxCapacityPerThread=0\n-Dlog4j.shutdownHookEnabled=false\n-Dlog4j2.disable.jmx=true\n-Dlog4j.skipJansi=true\n-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider\n-Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true\n");
"-Djava.awt.headless=true\n-Dfile.encoding=UTF-8\n-Djna.nosys=true\n-Djdk.io.permissionsUseCanonicalPath=true\n-Dhttp.maxConnections=20\n-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n-server\n-Xms128m\n-Xmx512m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:-HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\n-XX:+UnlockExperimentalVMOptions\n-XX:+UseG1GC\n-XX:InitiatingHeapOccupancyPercent=45\n-XX:G1HeapRegionSize=1m\n-XX:MaxGCPauseMillis=60000\n-XX:G1NewSizePercent=5\n-XX:G1MaxNewSizePercent=5\n-Djcifs.smb.client.responseTimeout=30000\n-Djcifs.smb.client.soTimeout=35000\n-Djcifs.smb.client.connTimeout=60000\n-Djcifs.smb.client.sessionTimeout=60000\n-Djcifs.smb1.smb.client.connTimeout=60000\n-Djcifs.smb1.smb.client.soTimeout=35000\n-Djcifs.smb1.smb.client.responseTimeout=30000\n-Dio.netty.noUnsafe=true\n-Dio.netty.noKeySetOptimization=true\n-Dio.netty.recycler.maxCapacityPerThread=0\n-Dlog4j.shutdownHookEnabled=false\n-Dlog4j2.formatMsgNoLookups=true\n-Dlog4j2.disable.jmx=true\n-Dlog4j.skipJansi=true\n-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider\n-Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true\n");
defaultMap.put(FessConfig.JVM_SUGGEST_OPTIONS,
"-Djava.awt.headless=true\n-Dfile.encoding=UTF-8\n-Djna.nosys=true\n-Djdk.io.permissionsUseCanonicalPath=true\n-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n-server\n-Xms128m\n-Xmx256m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:-HeapDumpOnOutOfMemoryError\n-XX:+UnlockExperimentalVMOptions\n-XX:+UseG1GC\n-XX:InitiatingHeapOccupancyPercent=45\n-XX:G1HeapRegionSize=1m\n-XX:MaxGCPauseMillis=60000\n-XX:G1NewSizePercent=5\n-XX:G1MaxNewSizePercent=30\n-Dio.netty.noUnsafe=true\n-Dio.netty.noKeySetOptimization=true\n-Dio.netty.recycler.maxCapacityPerThread=0\n-Dlog4j.shutdownHookEnabled=false\n-Dlog4j2.disable.jmx=true\n-Dlog4j.skipJansi=true\n");
"-Djava.awt.headless=true\n-Dfile.encoding=UTF-8\n-Djna.nosys=true\n-Djdk.io.permissionsUseCanonicalPath=true\n-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n-server\n-Xms128m\n-Xmx256m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:-HeapDumpOnOutOfMemoryError\n-XX:+UnlockExperimentalVMOptions\n-XX:+UseG1GC\n-XX:InitiatingHeapOccupancyPercent=45\n-XX:G1HeapRegionSize=1m\n-XX:MaxGCPauseMillis=60000\n-XX:G1NewSizePercent=5\n-XX:G1MaxNewSizePercent=30\n-Dio.netty.noUnsafe=true\n-Dio.netty.noKeySetOptimization=true\n-Dio.netty.recycler.maxCapacityPerThread=0\n-Dlog4j.shutdownHookEnabled=false\n-Dlog4j2.disable.jmx=true\n-Dlog4j2.formatMsgNoLookups=true\n-Dlog4j.skipJansi=true\n");
defaultMap.put(FessConfig.JVM_THUMBNAIL_OPTIONS,
"-Djava.awt.headless=true\n-Dfile.encoding=UTF-8\n-Djna.nosys=true\n-Djdk.io.permissionsUseCanonicalPath=true\n-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n-server\n-Xms128m\n-Xmx256m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:-HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\n-XX:+UnlockExperimentalVMOptions\n-XX:+UseG1GC\n-XX:InitiatingHeapOccupancyPercent=45\n-XX:G1HeapRegionSize=4m\n-XX:MaxGCPauseMillis=60000\n-XX:G1NewSizePercent=5\n-XX:G1MaxNewSizePercent=50\n-Djcifs.smb.client.responseTimeout=30000\n-Djcifs.smb.client.soTimeout=35000\n-Djcifs.smb.client.connTimeout=60000\n-Djcifs.smb.client.sessionTimeout=60000\n-Djcifs.smb1.smb.client.connTimeout=60000\n-Djcifs.smb1.smb.client.soTimeout=35000\n-Djcifs.smb1.smb.client.responseTimeout=30000\n-Dio.netty.noUnsafe=true\n-Dio.netty.noKeySetOptimization=true\n-Dio.netty.recycler.maxCapacityPerThread=0\n-Dlog4j.shutdownHookEnabled=false\n-Dlog4j2.disable.jmx=true\n-Dlog4j.skipJansi=true\n-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider\n-Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true\n");
"-Djava.awt.headless=true\n-Dfile.encoding=UTF-8\n-Djna.nosys=true\n-Djdk.io.permissionsUseCanonicalPath=true\n-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n-server\n-Xms128m\n-Xmx256m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:-HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\n-XX:+UnlockExperimentalVMOptions\n-XX:+UseG1GC\n-XX:InitiatingHeapOccupancyPercent=45\n-XX:G1HeapRegionSize=4m\n-XX:MaxGCPauseMillis=60000\n-XX:G1NewSizePercent=5\n-XX:G1MaxNewSizePercent=50\n-Djcifs.smb.client.responseTimeout=30000\n-Djcifs.smb.client.soTimeout=35000\n-Djcifs.smb.client.connTimeout=60000\n-Djcifs.smb.client.sessionTimeout=60000\n-Djcifs.smb1.smb.client.connTimeout=60000\n-Djcifs.smb1.smb.client.soTimeout=35000\n-Djcifs.smb1.smb.client.responseTimeout=30000\n-Dio.netty.noUnsafe=true\n-Dio.netty.noKeySetOptimization=true\n-Dio.netty.recycler.maxCapacityPerThread=0\n-Dlog4j.shutdownHookEnabled=false\n-Dlog4j2.disable.jmx=true\n-Dlog4j2.formatMsgNoLookups=true\n-Dlog4j.skipJansi=true\n-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider\n-Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true\n");
defaultMap.put(FessConfig.JOB_SYSTEM_JOB_IDS, "default_crawler");
defaultMap.put(FessConfig.JOB_TEMPLATE_TITLE_WEB, "Web Crawler - {0}");
defaultMap.put(FessConfig.JOB_TEMPLATE_TITLE_FILE, "File Crawler - {0}");
@ -10495,6 +10526,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
defaultMap.put(FessConfig.LDAP_IGNORE_NETBIOS_NAME, "true");
defaultMap.put(FessConfig.LDAP_GROUP_NAME_WITH_UNDERSCORES, "false");
defaultMap.put(FessConfig.LDAP_LOWERCASE_PERMISSION_NAME, "false");
defaultMap.put(FessConfig.LDAP_ALLOW_EMPTY_PERMISSION, "true");
defaultMap.put(FessConfig.LDAP_ROLE_SEARCH_USER_ENABLED, "true");
defaultMap.put(FessConfig.LDAP_ROLE_SEARCH_GROUP_ENABLED, "true");
defaultMap.put(FessConfig.LDAP_ROLE_SEARCH_ROLE_ENABLED, "true");

View file

@ -561,6 +561,7 @@ public final class ComponentUtil {
public static void setFessConfig(final FessConfig fessConfig) {
ComponentUtil.fessConfig = fessConfig;
if (fessConfig == null) {
systemHelper = null;
FessProp.propMap.clear();
componentMap.clear();
}

View file

@ -58,6 +58,7 @@ jvm.crawler.options=\
-Dio.netty.noKeySetOptimization=true\n\
-Dio.netty.recycler.maxCapacityPerThread=0\n\
-Dlog4j.shutdownHookEnabled=false\n\
-Dlog4j2.formatMsgNoLookups=true\n\
-Dlog4j2.disable.jmx=true\n\
-Dlog4j.skipJansi=true\n\
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider\n\
@ -91,6 +92,7 @@ jvm.suggest.options=\
-Dio.netty.recycler.maxCapacityPerThread=0\n\
-Dlog4j.shutdownHookEnabled=false\n\
-Dlog4j2.disable.jmx=true\n\
-Dlog4j2.formatMsgNoLookups=true\n\
-Dlog4j.skipJansi=true\n\
@ -129,6 +131,7 @@ jvm.thumbnail.options=\
-Dio.netty.recycler.maxCapacityPerThread=0\n\
-Dlog4j.shutdownHookEnabled=false\n\
-Dlog4j2.disable.jmx=true\n\
-Dlog4j2.formatMsgNoLookups=true\n\
-Dlog4j.skipJansi=true\n\
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider\n\
-Dorg.apache.pdfbox.rendering.UsePureJavaCMYKConversion=true\n\
@ -818,6 +821,7 @@ ldap.max.username.length=-1
ldap.ignore.netbios.name=true
ldap.group.name.with.underscores=false
ldap.lowercase.permission.name=false
ldap.allow.empty.permission=true
ldap.role.search.user.enabled=true
ldap.role.search.group.enabled=true

View file

@ -73,6 +73,7 @@
<la:option value="13.12">13.12</la:option>
<la:option value="13.13">13.13</la:option>
<la:option value="13.14">13.14</la:option>
<la:option value="13.14">13.15</la:option>
</la:select>
</div>
</div>

View file

@ -147,4 +147,24 @@ public class SystemHelperTest extends UnitFessTestCase {
assertEquals(1, filteredEnvMap.size());
assertEquals("123", filteredEnvMap.get("FESS_ENV_TEST"));
}
public void test_isUserPermission() {
assertTrue(systemHelper.isUserPermission("1test"));
assertFalse(systemHelper.isUserPermission(null));
assertFalse(systemHelper.isUserPermission(""));
assertFalse(systemHelper.isUserPermission(" "));
assertFalse(systemHelper.isUserPermission("2test"));
assertFalse(systemHelper.isUserPermission("Rtest"));
}
public void test_getSearchRole() {
assertEquals("1test", systemHelper.getSearchRoleByUser("test"));
assertEquals("Rtest", systemHelper.getSearchRoleByRole("test"));
assertEquals("2test", systemHelper.getSearchRoleByGroup("test"));
assertEquals("1", systemHelper.getSearchRoleByUser(""));
assertEquals("R", systemHelper.getSearchRoleByRole(""));
assertEquals("2", systemHelper.getSearchRoleByGroup(""));
}
}

View file

@ -15,12 +15,24 @@
*/
package org.codelibs.fess.ldap;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import org.codelibs.fess.helper.SystemHelper;
import org.codelibs.fess.mylasta.direction.FessConfig;
import org.codelibs.fess.unit.UnitFessTestCase;
import org.codelibs.fess.util.ComponentUtil;
public class LdapManagerTest extends UnitFessTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
ComponentUtil.register(new SystemHelper(), "systemHelper");
}
@SuppressWarnings("serial")
public void test_getSearchRoleName() {
ComponentUtil.setFessConfig(new FessConfig.SimpleImpl() {
@ -72,4 +84,46 @@ public class LdapManagerTest extends UnitFessTestCase {
assertEquals("___", ldapManager.replaceWithUnderscores("///"));
assertEquals("a_a", ldapManager.replaceWithUnderscores("a/a"));
}
public void test_allowEmptyGroupAndRole() {
final AtomicBoolean allowEmptyPermission = new AtomicBoolean();
ComponentUtil.setFessConfig(new FessConfig.SimpleImpl() {
public boolean isLdapAllowEmptyPermission() {
return allowEmptyPermission.get();
}
public String getRoleSearchUserPrefix() {
return "1";
}
});
LdapManager ldapManager = new LdapManager();
ldapManager.fessConfig = ComponentUtil.getFessConfig();
final List<String> permissionList = new ArrayList<>();
LdapUser user = new LdapUser(new Hashtable<>(), "test") {
@Override
public String[] getPermissions() {
return permissionList.toArray(n -> new String[n]);
}
};
allowEmptyPermission.set(true);
assertTrue(ldapManager.allowEmptyGroupAndRole(user));
allowEmptyPermission.set(false);
assertFalse(ldapManager.allowEmptyGroupAndRole(user));
permissionList.add("2aaa");
allowEmptyPermission.set(true);
assertTrue(ldapManager.allowEmptyGroupAndRole(user));
allowEmptyPermission.set(false);
assertTrue(ldapManager.allowEmptyGroupAndRole(user));
permissionList.clear();
permissionList.add("Raaa");
allowEmptyPermission.set(true);
assertTrue(ldapManager.allowEmptyGroupAndRole(user));
allowEmptyPermission.set(false);
assertTrue(ldapManager.allowEmptyGroupAndRole(user));
}
}