From 3ece32e4278bb9a7ddbae1ecb13cfbee09ec3678 Mon Sep 17 00:00:00 2001 From: hstyi Date: Mon, 22 Dec 2025 09:13:23 +0800 Subject: [PATCH] chore: handle IPv6 addresses correctly in RDP connection string --- .../plugin/internal/rdp/RDPProtocolProvider.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/app/termora/plugin/internal/rdp/RDPProtocolProvider.kt b/src/main/kotlin/app/termora/plugin/internal/rdp/RDPProtocolProvider.kt index 211a3db..6940e51 100644 --- a/src/main/kotlin/app/termora/plugin/internal/rdp/RDPProtocolProvider.kt +++ b/src/main/kotlin/app/termora/plugin/internal/rdp/RDPProtocolProvider.kt @@ -10,6 +10,8 @@ import kotlinx.coroutines.launch import org.apache.commons.io.FileUtils import org.apache.commons.io.IOUtils import org.apache.commons.lang3.StringUtils +import org.apache.commons.lang3.Strings +import org.apache.commons.lang3.SystemUtils import java.awt.datatransfer.DataFlavor import java.awt.datatransfer.StringSelection import java.net.URI @@ -64,7 +66,15 @@ internal class RDPProtocolProvider private constructor() : GenericProtocolProvid } val sb = StringBuilder() - sb.append("full address:s:").append(host.host).append(':').append(host.port).appendLine() + sb.append("full address:s:") + if (SystemUtils.IS_OS_WINDOWS && Strings.CI.contains(host.host, ":")) { + var newHost = Strings.CI.removeStart(host.host, "[") + newHost = Strings.CI.removeEnd(newHost, "]") + sb.append('[').append(newHost).append(']') + } else { + sb.append(host.host) + } + sb.append(':').append(host.port).appendLine() sb.append("username:s:").append(host.username).appendLine() val desktop = host.options.extras["desktop"] if (desktop.isNullOrBlank().not()) {