Shinsuke Sugaya 6 gadi atpakaļ
vecāks
revīzija
617e765460

+ 2 - 1
src/main/java/org/codelibs/fess/app/web/admin/wizard/AdminWizardAction.java

@@ -252,7 +252,8 @@ public class AdminWizardAction extends FessAdminAction {
     }
 
     protected String convertCrawlingPath(final String path) {
-        if (path.startsWith("http:") || path.startsWith("https:") || path.startsWith("smb:") || path.startsWith("ftp:")) {
+        if (path.startsWith("http:") || path.startsWith("https:") || path.startsWith("smb:") || path.startsWith("smb1:")
+                || path.startsWith("ftp:")) {
             return path;
         }
 

+ 1 - 1
src/main/java/org/codelibs/fess/app/web/go/GoAction.java

@@ -153,6 +153,6 @@ public class GoAction extends FessSearchAction {
     }
 
     protected boolean isFileSystemPath(final String url) {
-        return url.startsWith("file:") || url.startsWith("smb:") || url.startsWith("ftp:");
+        return url.startsWith("file:") || url.startsWith("smb:") || url.startsWith("smb1:") || url.startsWith("ftp:");
     }
 }

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

@@ -74,7 +74,7 @@ public class FessCrawlerThread extends CrawlerThread {
                 dataMap.put(fessConfig.getIndexFieldUrl(), url);
                 final List<String> roleTypeList = new ArrayList<>();
                 stream(crawlingConfig.getPermissions()).of(stream -> stream.forEach(p -> roleTypeList.add(p)));
-                if (url.startsWith("smb:") || url.startsWith("file:") || url.startsWith("ftp:")) {
+                if (url.startsWith("smb:") || url.startsWith("smb1:") || url.startsWith("file:") || url.startsWith("ftp:")) {
                     if (url.endsWith("/")) {
                         // directory
                         return true;

+ 20 - 0
src/main/java/org/codelibs/fess/es/config/exentity/DataConfig.java

@@ -203,6 +203,7 @@ public class DataConfig extends BsDataConfig implements CrawlingConfig {
         if (StringUtil.isNotBlank(fileAuthStr)) {
             final String[] fileAuthNames = fileAuthStr.split(",");
             final List<SmbAuthentication> smbAuthList = new ArrayList<>();
+            final List<org.codelibs.fess.crawler.client.smb1.SmbAuthentication> smb1AuthList = new ArrayList<>();
             final List<FtpAuthentication> ftpAuthList = new ArrayList<>();
             for (final String fileAuthName : fileAuthNames) {
                 final String scheme = paramMap.get(CRAWLER_FILE_AUTH + "." + fileAuthName + ".scheme");
@@ -231,6 +232,21 @@ public class DataConfig extends BsDataConfig implements CrawlingConfig {
                     smbAuth.setUsername(username);
                     smbAuth.setPassword(password == null ? StringUtil.EMPTY : password);
                     smbAuthList.add(smbAuth);
+
+                    final org.codelibs.fess.crawler.client.smb1.SmbAuthentication smb1Auth =
+                            new org.codelibs.fess.crawler.client.smb1.SmbAuthentication();
+                    smb1Auth.setDomain(domain == null ? StringUtil.EMPTY : domain);
+                    smb1Auth.setServer(hostname);
+                    if (StringUtil.isNotBlank(port)) {
+                        try {
+                            smb1Auth.setPort(Integer.parseInt(port));
+                        } catch (final NumberFormatException e) {
+                            logger.warn("Failed to parse " + port, e);
+                        }
+                    }
+                    smb1Auth.setUsername(username);
+                    smb1Auth.setPassword(password == null ? StringUtil.EMPTY : password);
+                    smb1AuthList.add(smb1Auth);
                 } else if (Constants.FTP.equals(scheme)) {
                     final String hostname = paramMap.get(CRAWLER_FILE_AUTH + "." + fileAuthName + ".host");
                     final String port = paramMap.get(CRAWLER_FILE_AUTH + "." + fileAuthName + ".port");
@@ -259,6 +275,10 @@ public class DataConfig extends BsDataConfig implements CrawlingConfig {
             if (!smbAuthList.isEmpty()) {
                 factoryParamMap.put(SmbClient.SMB_AUTHENTICATIONS_PROPERTY, smbAuthList.toArray(new SmbAuthentication[smbAuthList.size()]));
             }
+            if (!smb1AuthList.isEmpty()) {
+                factoryParamMap.put(org.codelibs.fess.crawler.client.smb1.SmbClient.SMB_AUTHENTICATIONS_PROPERTY,
+                        smb1AuthList.toArray(new org.codelibs.fess.crawler.client.smb1.SmbAuthentication[smb1AuthList.size()]));
+            }
             if (!ftpAuthList.isEmpty()) {
                 factoryParamMap.put(FtpClient.FTP_AUTHENTICATIONS_PROPERTY, ftpAuthList.toArray(new FtpAuthentication[ftpAuthList.size()]));
             }

+ 12 - 0
src/main/java/org/codelibs/fess/es/config/exentity/FileConfig.java

@@ -159,6 +159,7 @@ public class FileConfig extends BsFileConfig implements CrawlingConfig {
         // auth params
         final List<FileAuthentication> fileAuthList = fileAuthenticationService.getFileAuthenticationList(getId());
         final List<SmbAuthentication> smbAuthList = new ArrayList<>();
+        final List<org.codelibs.fess.crawler.client.smb1.SmbAuthentication> smb1AuthList = new ArrayList<>();
         final List<FtpAuthentication> ftpAuthList = new ArrayList<>();
         for (final FileAuthentication fileAuth : fileAuthList) {
             if (Constants.SAMBA.equals(fileAuth.getProtocolScheme())) {
@@ -171,6 +172,15 @@ public class FileConfig extends BsFileConfig implements CrawlingConfig {
                 smbAuth.setUsername(fileAuth.getUsername());
                 smbAuth.setPassword(fileAuth.getPassword());
                 smbAuthList.add(smbAuth);
+
+                final org.codelibs.fess.crawler.client.smb1.SmbAuthentication smb1Auth =
+                        new org.codelibs.fess.crawler.client.smb1.SmbAuthentication();
+                smb1Auth.setDomain(domain == null ? StringUtil.EMPTY : domain);
+                smb1Auth.setServer(fileAuth.getHostname());
+                smb1Auth.setPort(fileAuth.getPort() == null ? -1 : fileAuth.getPort().intValue());
+                smb1Auth.setUsername(fileAuth.getUsername());
+                smb1Auth.setPassword(fileAuth.getPassword());
+                smb1AuthList.add(smb1Auth);
             } else if (Constants.FTP.equals(fileAuth.getProtocolScheme())) {
                 final FtpAuthentication ftpAuth = new FtpAuthentication();
                 ftpAuth.setServer(fileAuth.getHostname());
@@ -181,6 +191,8 @@ public class FileConfig extends BsFileConfig implements CrawlingConfig {
             }
         }
         paramMap.put(SmbClient.SMB_AUTHENTICATIONS_PROPERTY, smbAuthList.toArray(new SmbAuthentication[smbAuthList.size()]));
+        paramMap.put(org.codelibs.fess.crawler.client.smb1.SmbClient.SMB_AUTHENTICATIONS_PROPERTY,
+                smb1AuthList.toArray(new org.codelibs.fess.crawler.client.smb1.SmbAuthentication[smb1AuthList.size()]));
         paramMap.put(FtpClient.FTP_AUTHENTICATIONS_PROPERTY, ftpAuthList.toArray(new FtpAuthentication[ftpAuthList.size()]));
 
         return paramMap;

+ 30 - 10
src/main/java/org/codelibs/fess/helper/PermissionHelper.java

@@ -35,6 +35,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import jcifs.SID;
+import jcifs.smb1.smb1.ACE;
 
 public class PermissionHelper {
     private static final Logger logger = LoggerFactory.getLogger(PermissionHelper.class);
@@ -109,18 +110,37 @@ public class PermissionHelper {
     public List<String> getSmbRoleTypeList(final ResponseData responseData) {
         final List<String> roleTypeList = new ArrayList<>();
         final FessConfig fessConfig = ComponentUtil.getFessConfig();
-        if (fessConfig.isSmbRoleFromFile() && responseData.getUrl().startsWith("smb:")) {
-            final SambaHelper sambaHelper = ComponentUtil.getSambaHelper();
-            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);
+        if (fessConfig.isSmbRoleFromFile()) {
+            if (responseData.getUrl().startsWith("smb:")) {
+                final SambaHelper sambaHelper = ComponentUtil.getSambaHelper();
+                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);
+                        }
+                    }
+                    if (logger.isDebugEnabled()) {
+                        logger.debug("smbUrl:" + responseData.getUrl() + " roleType:" + roleTypeList.toString());
                     }
                 }
-                if (logger.isDebugEnabled()) {
-                    logger.debug("smbUrl:" + responseData.getUrl() + " roleType:" + roleTypeList.toString());
+            } else if (responseData.getUrl().startsWith("smb1:")) {
+                final SambaHelper sambaHelper = ComponentUtil.getSambaHelper();
+                final ACE[] aces =
+                        (ACE[]) responseData.getMetaDataMap().get(
+                                org.codelibs.fess.crawler.client.smb1.SmbClient.SMB_ACCESS_CONTROL_ENTRIES);
+                if (aces != null) {
+                    for (final ACE item : aces) {
+                        final jcifs.smb1.smb1.SID sid = item.getSID();
+                        final String accountId = sambaHelper.getAccountId(sid);
+                        if (accountId != null) {
+                            roleTypeList.add(accountId);
+                        }
+                    }
+                    if (logger.isDebugEnabled()) {
+                        logger.debug("smbUrl:" + responseData.getUrl() + " roleType:" + roleTypeList.toString());
+                    }
                 }
             }
         }

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

@@ -71,6 +71,24 @@ public class SambaHelper {
         return null;
     }
 
+    public String getAccountId(final jcifs.smb1.smb1.SID sid) {
+        final int type = sid.getType();
+        if (logger.isDebugEnabled()) {
+            try {
+                logger.debug("Processing SID: {} {} {}", type, sid, sid.toDisplayString());
+            } catch (Exception e) {
+                // ignore
+            }
+        }
+        final Integer id = fessConfig.getAvailableSmbSidType(type);
+        if (id != null) {
+            return createSearchRole(id, sid.getAccountName());
+        } else if (logger.isDebugEnabled()) {
+            logger.debug("Ignored SID: {} {}", type, sid);
+        }
+        return null;
+    }
+
     protected String createSearchRole(final int type, final String name) {
         return type + fessConfig.getCanonicalLdapName(name);
     }

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

@@ -267,7 +267,7 @@ public class ViewHelper {
             return "#not-found-" + DocumentUtil.getValue(document, fessConfig.getIndexFieldDocId(), String.class);
         }
 
-        final boolean isSmbUrl = url.startsWith("smb:");
+        final boolean isSmbUrl = url.startsWith("smb:") || url.startsWith("smb1:");
         final boolean isFtpUrl = url.startsWith("ftp:");
         final boolean isSmbOrFtpUrl = isSmbUrl || isFtpUrl;
 
@@ -278,6 +278,7 @@ public class ViewHelper {
 
         if (isSmbUrl) {
             url = url.replace("smb:", "file:");
+            url = url.replace("smb1:", "file:");
         }
 
         if (isHttpUrl && isSmbOrFtpUrl) {

+ 17 - 5
src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java

@@ -58,6 +58,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     -Djcifs.smb.client.soTimeout=35000
     -Djcifs.smb.client.connTimeout=60000
     -Djcifs.smb.client.sessionTimeout=60000
+    -Djcifs.smb1.smb.client.connTimeout=60000
+    -Djcifs.smb1.smb.client.soTimeout=35000
+    -Djcifs.smb1.smb.client.responseTimeout=30000
     -Dgroovy.use.classvalue=true
     -Dio.netty.noUnsafe=true
     -Dio.netty.noKeySetOptimization=true
@@ -115,6 +118,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     -Djcifs.smb.client.soTimeout=35000
     -Djcifs.smb.client.connTimeout=60000
     -Djcifs.smb.client.sessionTimeout=60000
+    -Djcifs.smb1.smb.client.connTimeout=60000
+    -Djcifs.smb1.smb.client.soTimeout=35000
+    -Djcifs.smb1.smb.client.responseTimeout=30000
     -Dgroovy.use.classvalue=true
     -Dio.netty.noUnsafe=true
     -Dio.netty.noKeySetOptimization=true
@@ -265,7 +271,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     /** The key of the configuration. e.g. http,https */
     String CRAWLER_WEB_PROTOCOLS = "crawler.web.protocols";
 
-    /** The key of the configuration. e.g. file,smb,ftp */
+    /** The key of the configuration. e.g. file,smb,smb1,ftp */
     String CRAWLER_FILE_PROTOCOLS = "crawler.file.protocols";
 
     /** The key of the configuration. e.g. false */
@@ -1474,6 +1480,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     -Djcifs.smb.client.soTimeout=35000
     -Djcifs.smb.client.connTimeout=60000
     -Djcifs.smb.client.sessionTimeout=60000
+    -Djcifs.smb1.smb.client.connTimeout=60000
+    -Djcifs.smb1.smb.client.soTimeout=35000
+    -Djcifs.smb1.smb.client.responseTimeout=30000
     -Dgroovy.use.classvalue=true
     -Dio.netty.noUnsafe=true
     -Dio.netty.noKeySetOptimization=true
@@ -1540,6 +1549,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
     -Djcifs.smb.client.soTimeout=35000
     -Djcifs.smb.client.connTimeout=60000
     -Djcifs.smb.client.sessionTimeout=60000
+    -Djcifs.smb1.smb.client.connTimeout=60000
+    -Djcifs.smb1.smb.client.soTimeout=35000
+    -Djcifs.smb1.smb.client.responseTimeout=30000
     -Dgroovy.use.classvalue=true
     -Dio.netty.noUnsafe=true
     -Dio.netty.noKeySetOptimization=true
@@ -2066,7 +2078,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
 
     /**
      * Get the value for the key 'crawler.file.protocols'. <br>
-     * The value is, e.g. file,smb,ftp <br>
+     * The value is, e.g. file,smb,smb1,ftp <br>
      * @return The value of found property. (NotNull: if not found, exception but basically no way)
      */
     String getCrawlerFileProtocols();
@@ -8197,13 +8209,13 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             defaultMap.put(FessConfig.APP_DIGEST_ALGORISM, "sha256");
             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-server\n-Xmx512m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseConcMarkSweepGC\n-XX:CMSInitiatingOccupancyFraction=75\n-XX:+UseCMSInitiatingOccupancyOnly\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:+HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\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-Dgroovy.use.classvalue=true\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-server\n-Xmx512m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseConcMarkSweepGC\n-XX:CMSInitiatingOccupancyFraction=75\n-XX:+UseCMSInitiatingOccupancyOnly\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:+HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\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-Dgroovy.use.classvalue=true\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");
             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-server\n-Xmx256m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseConcMarkSweepGC\n-XX:CMSInitiatingOccupancyFraction=75\n-XX:+UseCMSInitiatingOccupancyOnly\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:+HeapDumpOnOutOfMemoryError\n-Dgroovy.use.classvalue=true\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");
             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-server\n-Xmx128m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseConcMarkSweepGC\n-XX:CMSInitiatingOccupancyFraction=75\n-XX:+UseCMSInitiatingOccupancyOnly\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:+HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\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-Dgroovy.use.classvalue=true\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-server\n-Xmx128m\n-XX:MaxMetaspaceSize=128m\n-XX:CompressedClassSpaceSize=32m\n-XX:-UseGCOverheadLimit\n-XX:+UseConcMarkSweepGC\n-XX:CMSInitiatingOccupancyFraction=75\n-XX:+UseCMSInitiatingOccupancyOnly\n-XX:+UseTLAB\n-XX:+DisableExplicitGC\n-XX:+HeapDumpOnOutOfMemoryError\n-XX:-OmitStackTraceInFastThrow\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-Dgroovy.use.classvalue=true\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");
             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}");
@@ -8256,7 +8268,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
             defaultMap.put(FessConfig.CRAWLER_DOCUMENT_FULLSTOP_CHARS, "u002eu06d4u2e3cu3002");
             defaultMap.put(FessConfig.CRAWLER_CRAWLING_DATA_ENCODING, "UTF-8");
             defaultMap.put(FessConfig.CRAWLER_WEB_PROTOCOLS, "http,https");
-            defaultMap.put(FessConfig.CRAWLER_FILE_PROTOCOLS, "file,smb,ftp");
+            defaultMap.put(FessConfig.CRAWLER_FILE_PROTOCOLS, "file,smb,smb1,ftp");
             defaultMap.put(FessConfig.CRAWLER_IGNORE_ROBOTS_TXT, "false");
             defaultMap.put(FessConfig.CRAWLER_IGNORE_ROBOTS_TAGS, "false");
             defaultMap.put(FessConfig.CRAWLER_IGNORE_CONTENT_EXCEPTION, "true");

+ 1 - 1
src/main/java/org/codelibs/fess/util/GsaConfigParser.java

@@ -70,7 +70,7 @@ public class GsaConfigParser extends DefaultHandler {
 
     protected String[] webProtocols = new String[] { "http:", "https:" };
 
-    protected String[] fileProtocols = new String[] { "file:", "smb:" };
+    protected String[] fileProtocols = new String[] { "file:", "smb:", "smb1:", "ftp:" };
 
     protected LinkedList<String> tagQueue;
 

+ 1 - 1
src/main/resources/crawler/rule.xml

@@ -97,7 +97,7 @@
 		<property name="allRequired">true</property>
 		<postConstruct name="addRule">
 			<arg>"url"</arg>
-			<arg>"(file|smb|ftp):.*"</arg>
+			<arg>"(file|smb|smb1|ftp):.*"</arg>
 		</postConstruct>
 		<postConstruct name="addRule">
 			<arg>"mimeType"</arg>

+ 7 - 1
src/main/resources/fess_config.properties

@@ -39,6 +39,9 @@ jvm.crawler.options=\
 -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\
 -Dgroovy.use.classvalue=true\n\
 -Dio.netty.noUnsafe=true\n\
 -Dio.netty.noKeySetOptimization=true\n\
@@ -96,6 +99,9 @@ jvm.thumbnail.options=\
 -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\
 -Dgroovy.use.classvalue=true\n\
 -Dio.netty.noUnsafe=true\n\
 -Dio.netty.noKeySetOptimization=true\n\
@@ -167,7 +173,7 @@ crawler.document.space.chars=u0009u000Au000Bu000Cu000Du001Cu001Du001Eu001Fu0020u
 crawler.document.fullstop.chars=u002eu06d4u2e3cu3002
 crawler.crawling.data.encoding=UTF-8
 crawler.web.protocols=http,https
-crawler.file.protocols=file,smb,ftp
+crawler.file.protocols=file,smb,smb1,ftp
 crawler.ignore.robots.txt=false
 crawler.ignore.robots.tags=false
 crawler.ignore.content.exception=true