diff --git a/src/main/java/org/codelibs/fess/helper/SambaHelper.java b/src/main/java/org/codelibs/fess/helper/SambaHelper.java index c96c11c54..ea022a601 100644 --- a/src/main/java/org/codelibs/fess/helper/SambaHelper.java +++ b/src/main/java/org/codelibs/fess/helper/SambaHelper.java @@ -57,6 +57,6 @@ public class SambaHelper { } protected String createSearchRole(final int type, final String name) { - return type + name; + return type + fessConfig.getCanonicalLdapName(name); } } diff --git a/src/main/java/org/codelibs/fess/ldap/LdapManager.java b/src/main/java/org/codelibs/fess/ldap/LdapManager.java index 1e0c0c978..3b0a46ebd 100644 --- a/src/main/java/org/codelibs/fess/ldap/LdapManager.java +++ b/src/main/java/org/codelibs/fess/ldap/LdapManager.java @@ -18,7 +18,6 @@ package org.codelibs.fess.ldap; import static org.codelibs.core.stream.StreamUtil.stream; import java.util.ArrayList; -import java.util.Arrays; import java.util.Base64; import java.util.Collections; import java.util.Hashtable; @@ -247,22 +246,7 @@ public class LdapManager { } else { name = entryDn.substring(start, end); } - if (fessConfig.isLdapIgnoreNetbiosName()) { - final String[] values = name.split("\\\\"); - if (values.length == 0) { - return null; - } else if (values.length == 1) { - if (logger.isDebugEnabled()) { - logger.debug("name(1): " + values[0]); - } - return values[0]; - } - name = String.join("\\", Arrays.copyOfRange(values, 1, values.length)); - if (logger.isDebugEnabled()) { - logger.debug("name(2): " + name); - } - return name; - } + name = fessConfig.getCanonicalLdapName(name); if (logger.isDebugEnabled()) { logger.debug("name: " + name); } 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 002de37d2..055c74800 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java @@ -1817,4 +1817,18 @@ public interface FessProp { stream -> stream.filter(StringUtil::isNotBlank).map(String::trim).toArray(n -> new String[n])); } + boolean isLdapIgnoreNetbiosName(); + + public default String getCanonicalLdapName(final String name) { + if (isLdapIgnoreNetbiosName()) { + final String[] values = name.split("\\\\"); + if (values.length == 0) { + return null; + } else if (values.length == 1) { + return values[0]; + } + return String.join("\\", Arrays.copyOfRange(values, 1, values.length)); + } + return name; + } }