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 f6344ef8f91518118220a842b7ff511d1141f3a8..c6bd28c6cb28ac4c26ccf9b036c6c434435ac6f5 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 6cc163084e3bd9d132fc6deaa54d54c978e7335b..7b6e496644b6022b0867cb7be56fb29293bc418e 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 418a8e1d3b196902d68e838a4206b5300b089fdf..0bd4c55687aebf0909937ad2e239566e8b214bcd 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<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;
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 1b5bb9800ffe512397ce3756732d89ba0019d775..7363b13388539e19856a10920d479b0a180f636d 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<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()]));
}
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 d4d1c7a6f64b158fe65b0ce167fb73392f4b11c1..de96578504fff770ea1dc57a6f39932778698457 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<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;
diff --git a/src/main/java/org/codelibs/fess/helper/PermissionHelper.java b/src/main/java/org/codelibs/fess/helper/PermissionHelper.java
index 10d328d4450aefb60c415144fa9984917085e7b3..ff454bf3e78e0f5299cbf10b4c8868ccf6629eff 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<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());
+ }
}
}
}
diff --git a/src/main/java/org/codelibs/fess/helper/SambaHelper.java b/src/main/java/org/codelibs/fess/helper/SambaHelper.java
index dbb40ca9a7c1765ef1ccc4ed9b40cbbd23ff77ca..998f64c507972fe3416a170f9927612a1402ed49 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 cbc451c6cee0ba432a83b3eef00ce1777eb521ff..1ea5a0b42cadd0a29df98effc7bf55fb1abb41f4 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 4b41f1b15ba46d56fe88283aeb6b0f8f41d5285d..491e733af4adf83c270b74f6f02ac71b4d2f0938 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'. <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");
diff --git a/src/main/java/org/codelibs/fess/util/GsaConfigParser.java b/src/main/java/org/codelibs/fess/util/GsaConfigParser.java
index f8ac201f0f4b73523b7b0676473ceb24debc4c3a..879f50d2c49bd763f474150ab640cbef7cbd44d5 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<String> tagQueue;
diff --git a/src/main/resources/crawler/rule.xml b/src/main/resources/crawler/rule.xml
index 3a2a91487d6b3af8b6f163cc6c4f90f38c7d229e..d3a6ccefde86b1a8627d12131ae3f8e841d24b84 100644
--- a/src/main/resources/crawler/rule.xml
+++ b/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>
diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties
index 9d37c000b5268602b87beb97c8a24b89feb5a38b..8721dd0cffeea654308d45ef17d5e5e90ef67c97 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