diff --git a/src/main/java/org/codelibs/fess/app/web/admin/wizard/AdminWizardAction.java b/src/main/java/org/codelibs/fess/app/web/admin/wizard/AdminWizardAction.java index f6344ef8f..c6bd28c6c 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/wizard/AdminWizardAction.java +++ b/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; } diff --git a/src/main/java/org/codelibs/fess/app/web/go/GoAction.java b/src/main/java/org/codelibs/fess/app/web/go/GoAction.java index 6cc163084..7b6e49664 100644 --- a/src/main/java/org/codelibs/fess/app/web/go/GoAction.java +++ b/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:"); } } diff --git a/src/main/java/org/codelibs/fess/crawler/FessCrawlerThread.java b/src/main/java/org/codelibs/fess/crawler/FessCrawlerThread.java index 418a8e1d3..0bd4c5568 100644 --- a/src/main/java/org/codelibs/fess/crawler/FessCrawlerThread.java +++ b/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 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; diff --git a/src/main/java/org/codelibs/fess/es/config/exentity/DataConfig.java b/src/main/java/org/codelibs/fess/es/config/exentity/DataConfig.java index 1b5bb9800..7363b1338 100644 --- a/src/main/java/org/codelibs/fess/es/config/exentity/DataConfig.java +++ b/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 smbAuthList = new ArrayList<>(); + final List smb1AuthList = new ArrayList<>(); final List 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()])); } diff --git a/src/main/java/org/codelibs/fess/es/config/exentity/FileConfig.java b/src/main/java/org/codelibs/fess/es/config/exentity/FileConfig.java index d4d1c7a6f..de9657850 100644 --- a/src/main/java/org/codelibs/fess/es/config/exentity/FileConfig.java +++ b/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 fileAuthList = fileAuthenticationService.getFileAuthenticationList(getId()); final List smbAuthList = new ArrayList<>(); + final List smb1AuthList = new ArrayList<>(); final List 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; diff --git a/src/main/java/org/codelibs/fess/helper/PermissionHelper.java b/src/main/java/org/codelibs/fess/helper/PermissionHelper.java index 10d328d44..ff454bf3e 100644 --- a/src/main/java/org/codelibs/fess/helper/PermissionHelper.java +++ b/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 getSmbRoleTypeList(final ResponseData responseData) { final List 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()); + } } } } diff --git a/src/main/java/org/codelibs/fess/helper/SambaHelper.java b/src/main/java/org/codelibs/fess/helper/SambaHelper.java index dbb40ca9a..998f64c50 100644 --- a/src/main/java/org/codelibs/fess/helper/SambaHelper.java +++ b/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); } diff --git a/src/main/java/org/codelibs/fess/helper/ViewHelper.java b/src/main/java/org/codelibs/fess/helper/ViewHelper.java index cbc451c6c..1ea5a0b42 100644 --- a/src/main/java/org/codelibs/fess/helper/ViewHelper.java +++ b/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) { diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java index 4b41f1b15..491e733af 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java +++ b/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'.
- * The value is, e.g. file,smb,ftp
+ * The value is, e.g. file,smb,smb1,ftp
* @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"); diff --git a/src/main/java/org/codelibs/fess/util/GsaConfigParser.java b/src/main/java/org/codelibs/fess/util/GsaConfigParser.java index f8ac201f0..879f50d2c 100644 --- a/src/main/java/org/codelibs/fess/util/GsaConfigParser.java +++ b/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 tagQueue; diff --git a/src/main/resources/crawler/rule.xml b/src/main/resources/crawler/rule.xml index 3a2a91487..d3a6ccefd 100644 --- a/src/main/resources/crawler/rule.xml +++ b/src/main/resources/crawler/rule.xml @@ -97,7 +97,7 @@ true "url" - "(file|smb|ftp):.*" + "(file|smb|smb1|ftp):.*" "mimeType" diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties index 9d37c000b..8721dd0cf 100644 --- a/src/main/resources/fess_config.properties +++ b/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