浏览代码

fix #1136 smb2 support

Shinsuke Sugaya 7 年之前
父节点
当前提交
fa55def68a

+ 4 - 6
src/main/java/org/codelibs/fess/crawler/FessCrawlerThread.java

@@ -52,8 +52,7 @@ import org.codelibs.fess.util.DocumentUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import jcifs.smb.ACE;
-import jcifs.smb.SID;
+import jcifs.SID;
 
 public class FessCrawlerThread extends CrawlerThread {
     private static final Logger logger = LoggerFactory.getLogger(FessCrawlerThread.class);
@@ -91,10 +90,9 @@ public class FessCrawlerThread extends CrawlerThread {
                             return true;
                         }
 
-                        final ACE[] aces = (ACE[]) responseData.getMetaDataMap().get(SmbClient.SMB_ACCESS_CONTROL_ENTRIES);
-                        if (aces != null) {
-                            for (final ACE item : aces) {
-                                final SID sid = item.getSID();
+                        final SID[] sids = (SID[]) responseData.getMetaDataMap().get(SmbClient.SMB_ALLOWED_SID_ENTRIES);
+                        if (sids != null) {
+                            for (final SID sid : sids) {
                                 final String accountId = sambaHelper.getAccountId(sid);
                                 if (accountId != null) {
                                     roleTypeList.add(accountId);

+ 4 - 6
src/main/java/org/codelibs/fess/crawler/transformer/AbstractFessFileTransformer.java

@@ -63,8 +63,7 @@ import org.codelibs.fess.util.ComponentUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import jcifs.smb.ACE;
-import jcifs.smb.SID;
+import jcifs.SID;
 
 public abstract class AbstractFessFileTransformer extends AbstractTransformer implements FessTransformer {
 
@@ -448,10 +447,9 @@ public abstract class AbstractFessFileTransformer extends AbstractTransformer im
         final List<String> roleTypeList = new ArrayList<>();
         if (fessConfig.isSmbRoleFromFile() && responseData.getUrl().startsWith("smb:")) {
             final SambaHelper sambaHelper = ComponentUtil.getSambaHelper();
-            final ACE[] aces = (ACE[]) responseData.getMetaDataMap().get(SmbClient.SMB_ACCESS_CONTROL_ENTRIES);
-            if (aces != null) {
-                for (final ACE item : aces) {
-                    final SID sid = item.getSID();
+            final SID[] sids = (SID[]) responseData.getMetaDataMap().get(SmbClient.SMB_ALLOWED_SID_ENTRIES);
+            if (sids != null) {
+                for (final SID sid : sids) {
                     final String accountId = sambaHelper.getAccountId(sid);
                     if (accountId != null) {
                         roleTypeList.add(accountId);

+ 6 - 1
src/main/java/org/codelibs/fess/es/config/exentity/DataConfig.java

@@ -21,6 +21,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -330,7 +331,11 @@ public class DataConfig extends BsDataConfig implements CrawlingConfig {
         } else if (Constants.DIGEST.equals(scheme)) {
             authScheme = new DigestScheme();
         } else if (Constants.NTLM.equals(scheme)) {
-            authScheme = new NTLMScheme(new JcifsEngine());
+            final Properties props = new Properties();
+            paramMap.entrySet().stream().filter(e -> e.getKey().startsWith("jcifs.")).forEach(e -> {
+                props.setProperty(e.getKey(), e.getValue());
+            });
+            authScheme = new NTLMScheme(new JcifsEngine(props));
         } else if (Constants.FORM.equals(scheme)) {
             final String prefix = CRAWLER_WEB_AUTH + "." + webAuthName + ".";
             final Map<String, String> parameterMap =

+ 8 - 1
src/main/java/org/codelibs/fess/es/config/exentity/WebAuthentication.java

@@ -16,6 +16,7 @@
 package org.codelibs.fess.es.config.exentity;
 
 import java.util.Map;
+import java.util.Properties;
 
 import org.apache.http.auth.AuthScheme;
 import org.apache.http.auth.AuthScope;
@@ -34,6 +35,7 @@ import org.codelibs.fess.crawler.client.http.impl.AuthenticationImpl;
 import org.codelibs.fess.crawler.client.http.ntlm.JcifsEngine;
 import org.codelibs.fess.crawler.exception.CrawlerSystemException;
 import org.codelibs.fess.es.config.bsentity.BsWebAuthentication;
+import org.codelibs.fess.es.config.exentity.CrawlingConfig.ConfigName;
 import org.codelibs.fess.util.ComponentUtil;
 import org.codelibs.fess.util.ParameterUtil;
 import org.slf4j.Logger;
@@ -61,7 +63,12 @@ public class WebAuthentication extends BsWebAuthentication {
         } else if (Constants.DIGEST.equals(scheme)) {
             return new DigestScheme();
         } else if (Constants.NTLM.equals(scheme)) {
-            return new NTLMScheme(new JcifsEngine());
+            final Properties props = new Properties();
+            webConfig.getConfigParameterMap(ConfigName.CONFIG).entrySet().stream().filter(e -> e.getKey().startsWith("jcifs."))
+                    .forEach(e -> {
+                        props.setProperty(e.getKey(), e.getValue());
+                    });
+            return new NTLMScheme(new JcifsEngine(props));
         } else if (Constants.FORM.equals(scheme)) {
             final Map<String, String> parameterMap = ParameterUtil.parse(getParameters());
             return new FormScheme(parameterMap);

+ 1 - 1
src/main/java/org/codelibs/fess/helper/SambaHelper.java

@@ -20,7 +20,7 @@ import javax.annotation.PostConstruct;
 import org.codelibs.fess.mylasta.direction.FessConfig;
 import org.codelibs.fess.util.ComponentUtil;
 
-import jcifs.smb.SID;
+import jcifs.SID;
 
 public class SambaHelper {