diff --git a/build.gradle.kts b/build.gradle.kts index 42e1a54..11b6a89 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -60,7 +60,7 @@ dependencies { implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.1") implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.1") - implementation("org.codelibs:jcifs:1.3.18.3") + implementation("org.codelibs:jcifs:2.1.35") implementation("org.jsoup:jsoup:1.14.3") implementation("commons-io:commons-io:2.11.0") implementation("io.pebbletemplates:pebble:3.1.5") diff --git a/src/main/kotlin/com/cognifide/gradle/common/file/transfer/smb/SmbFileTransfer.kt b/src/main/kotlin/com/cognifide/gradle/common/file/transfer/smb/SmbFileTransfer.kt index c280cfb..4e4fbe6 100644 --- a/src/main/kotlin/com/cognifide/gradle/common/file/transfer/smb/SmbFileTransfer.kt +++ b/src/main/kotlin/com/cognifide/gradle/common/file/transfer/smb/SmbFileTransfer.kt @@ -3,10 +3,13 @@ package com.cognifide.gradle.common.file.transfer.smb import com.cognifide.gradle.common.CommonExtension import com.cognifide.gradle.common.file.transfer.FileEntry import com.cognifide.gradle.common.file.transfer.ProtocolFileTransfer -import jcifs.smb.NtlmPasswordAuthentication +import jcifs.config.PropertyConfiguration +import jcifs.context.BaseContext +import jcifs.smb.NtlmPasswordAuthenticator import jcifs.smb.SmbFile import org.apache.commons.lang3.StringUtils import java.io.File +import java.util.Properties @Suppress("TooGenericExceptionCaught") class SmbFileTransfer(common: CommonExtension) : ProtocolFileTransfer(common) { @@ -101,12 +104,15 @@ class SmbFileTransfer(common: CommonExtension) : ProtocolFileTransfer(common) { fun file(dirUrl: String, fileName: String): SmbFile { val dirUrlNormalized = StringUtils.appendIfMissing(dirUrl, "/") - - return if (!user.orNull.isNullOrBlank() && !password.orNull.isNullOrBlank()) { - SmbFile(dirUrlNormalized, fileName, NtlmPasswordAuthentication(domain.orNull, user.get(), password.get())) - } else { - SmbFile(dirUrlNormalized, fileName) - }.apply { useCaches = false } + val properties = Properties() + val configuration = PropertyConfiguration(properties) + val context = + if (!user.orNull.isNullOrBlank() && !password.orNull.isNullOrBlank()) + BaseContext(configuration).withCredentials(NtlmPasswordAuthenticator(domain.orNull, user.get(), password.get())) + else + BaseContext(configuration).withAnonymousCredentials() + + return SmbFile(context.get(dirUrlNormalized), fileName).apply { useCaches = false } } fun dir(dirUrl: String): SmbFile = file(dirUrl, "").apply {