From 289817ea5e3c007cfcd0f7fc797db15b35e49ab1 Mon Sep 17 00:00:00 2001 From: Jan van de Pol Date: Wed, 1 Apr 2026 11:50:16 +0200 Subject: [PATCH 1/7] Refactor Windows credential management to use direct API calls instead of cmdkey --- internal/launcher/launcher.go | 27 +-------- internal/launcher/launcher_unix.go | 3 + internal/launcher/launcher_windows.go | 81 +++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 25 deletions(-) diff --git a/internal/launcher/launcher.go b/internal/launcher/launcher.go index 3b7212e..316057c 100644 --- a/internal/launcher/launcher.go +++ b/internal/launcher/launcher.go @@ -601,17 +601,7 @@ func (l *Launcher) storeWindowsCredential(conn *models.Connection) error { username = fmt.Sprintf("%s\\%s", conn.Domain, conn.Username) } - // Use cmdkey to store the credential - // cmdkey /generic:TERMSRV/hostname /user:username /pass:password - cmd := exec.Command("cmdkey", "/generic:TERMSRV/"+target, "/user:"+username, "/pass:"+conn.Password) - hideConsoleWindow(cmd) - - output, err := cmd.CombinedOutput() - if err != nil { - return fmt.Errorf("cmdkey failed: %w, output: %s", err, string(output)) - } - - return nil + return writeWindowsCredential("TERMSRV/"+target, username, conn.Password) } // RemoveWindowsCredential removes RDP credentials from Windows Credential Manager @@ -630,20 +620,7 @@ func (l *Launcher) RemoveWindowsCredential(conn *models.Connection) error { target = fmt.Sprintf("%s:%d", conn.Host, port) } - // Use cmdkey to delete the credential - // cmdkey /delete:TERMSRV/hostname - cmd := exec.Command("cmdkey", "/delete:TERMSRV/"+target) - hideConsoleWindow(cmd) - - output, err := cmd.CombinedOutput() - if err != nil { - // Don't return error if credential doesn't exist - if !strings.Contains(string(output), "not found") { - return fmt.Errorf("cmdkey delete failed: %w, output: %s", err, string(output)) - } - } - - return nil + return deleteWindowsCredential("TERMSRV/" + target) } // CleanupAllCredentials removes all MremoteGO-stored credentials from Windows Credential Manager diff --git a/internal/launcher/launcher_unix.go b/internal/launcher/launcher_unix.go index 0ce27cc..41aa414 100644 --- a/internal/launcher/launcher_unix.go +++ b/internal/launcher/launcher_unix.go @@ -11,3 +11,6 @@ import ( func hideConsoleWindow(cmd *exec.Cmd) { // Nothing to do on Unix-like systems } + +func writeWindowsCredential(target, username, password string) error { return nil } +func deleteWindowsCredential(target string) error { return nil } diff --git a/internal/launcher/launcher_windows.go b/internal/launcher/launcher_windows.go index c8d8a3b..0f76c7c 100644 --- a/internal/launcher/launcher_windows.go +++ b/internal/launcher/launcher_windows.go @@ -4,8 +4,11 @@ package launcher import ( + "fmt" "os/exec" + "runtime" "syscall" + "unsafe" ) // hideConsoleWindow sets the command attributes to hide console windows on Windows @@ -15,3 +18,81 @@ func hideConsoleWindow(cmd *exec.Cmd) { CreationFlags: 0x08000000, // CREATE_NO_WINDOW } } + +// writeWindowsCredential stores a generic credential in Windows Credential Manager +// using CredWriteW directly, avoiding cmdkey's argument-parsing issues with +// usernames or passwords that contain spaces or special characters. +func writeWindowsCredential(target, username, password string) error { + credWriteW := syscall.NewLazyDLL("advapi32.dll").NewProc("CredWriteW") + + targetPtr, err := syscall.UTF16PtrFromString(target) + if err != nil { + return fmt.Errorf("invalid target name: %w", err) + } + userPtr, err := syscall.UTF16PtrFromString(username) + if err != nil { + return fmt.Errorf("invalid username: %w", err) + } + + // Encode password as UTF-16LE bytes without null terminator, as expected by + // Windows Credential Manager for RDP credentials consumed by mstsc. + passUTF16 := syscall.StringToUTF16(password) + passUTF16 = passUTF16[:len(passUTF16)-1] // strip null terminator + passBlobSize := uint32(len(passUTF16) * 2) + + // CREDENTIALW mirrors the Win32 CREDENTIALW struct layout. + type credentialW struct { + Flags uint32 + Type uint32 + TargetName *uint16 + Comment *uint16 + LastWritten [2]uint32 + CredentialBlobSize uint32 + CredentialBlob uintptr + Persist uint32 + AttributeCount uint32 + Attributes uintptr + TargetAlias *uint16 + UserName *uint16 + } + + var blobPtr uintptr + if passBlobSize > 0 { + blobPtr = uintptr(unsafe.Pointer(&passUTF16[0])) + } + + cred := credentialW{ + Type: 1, // CRED_TYPE_GENERIC + TargetName: targetPtr, + UserName: userPtr, + CredentialBlobSize: passBlobSize, + CredentialBlob: blobPtr, + Persist: 2, // CRED_PERSIST_LOCAL_MACHINE + } + + ret, _, callErr := credWriteW.Call(uintptr(unsafe.Pointer(&cred)), 0) + runtime.KeepAlive(passUTF16) // prevent GC until after the syscall + if ret == 0 { + return fmt.Errorf("CredWriteW failed: %w", callErr) + } + return nil +} + +// deleteWindowsCredential removes a generic credential from Windows Credential Manager. +// Returns nil if the credential does not exist. +func deleteWindowsCredential(target string) error { + credDeleteW := syscall.NewLazyDLL("advapi32.dll").NewProc("CredDeleteW") + + targetPtr, err := syscall.UTF16PtrFromString(target) + if err != nil { + return fmt.Errorf("invalid target name: %w", err) + } + + const credTypeGeneric = 1 + const errorNotFound = syscall.Errno(1168) // ERROR_NOT_FOUND + ret, _, callErr := credDeleteW.Call(uintptr(unsafe.Pointer(targetPtr)), credTypeGeneric, 0) + if ret == 0 && callErr != errorNotFound { + return fmt.Errorf("CredDeleteW failed: %w", callErr) + } + return nil +} From c2947a0495ccc33dd3efb6772e1bed19dfd7d411 Mon Sep 17 00:00:00 2001 From: Jan van de Pol Date: Wed, 1 Apr 2026 12:15:21 +0200 Subject: [PATCH 2/7] Fix password encoding in writeWindowsCredential to handle errors correctly --- internal/launcher/launcher_windows.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/launcher/launcher_windows.go b/internal/launcher/launcher_windows.go index 0f76c7c..047f1a4 100644 --- a/internal/launcher/launcher_windows.go +++ b/internal/launcher/launcher_windows.go @@ -36,7 +36,10 @@ func writeWindowsCredential(target, username, password string) error { // Encode password as UTF-16LE bytes without null terminator, as expected by // Windows Credential Manager for RDP credentials consumed by mstsc. - passUTF16 := syscall.StringToUTF16(password) + passUTF16, err := syscall.UTF16FromString(password) + if err != nil { + return fmt.Errorf("invalid password: %w", err) + } passUTF16 = passUTF16[:len(passUTF16)-1] // strip null terminator passBlobSize := uint32(len(passUTF16) * 2) From 213a80bfe9aabd2dfc7f48cd328930592536fcbe Mon Sep 17 00:00:00 2001 From: Jan van de Pol Date: Wed, 1 Apr 2026 14:27:54 +0200 Subject: [PATCH 3/7] feat: Also fetch username from 1password --- internal/launcher/launcher.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/launcher/launcher.go b/internal/launcher/launcher.go index 316057c..37f3170 100644 --- a/internal/launcher/launcher.go +++ b/internal/launcher/launcher.go @@ -36,8 +36,15 @@ func (l *Launcher) Launch(conn *models.Connection) error { return fmt.Errorf("cannot launch a folder") } - // Resolve 1Password reference if needed (make a copy to avoid modifying the original) + // Resolve 1Password references if needed (make a copy to avoid modifying the original) resolvedConn := *conn + if l.onePasswordProvider.IsReference(conn.Username) { + resolved, err := l.onePasswordProvider.ResolveSecret(conn.Username) + if err != nil { + return fmt.Errorf("failed to resolve username from 1Password: %w", err) + } + resolvedConn.Username = resolved + } if l.onePasswordProvider.IsReference(conn.Password) { resolved, err := l.onePasswordProvider.ResolveSecret(conn.Password) if err != nil { From f50ca16ea57deda6410e6e263cbe8493d6ae26c2 Mon Sep 17 00:00:00 2001 From: Jan van de Pol Date: Fri, 3 Apr 2026 08:32:16 +0200 Subject: [PATCH 4/7] feat: Add RDP Gateway support with credential management and UI integration --- .claude/settings.json | 7 + .gitignore | 2 +- internal/gui/dialogs.go | 670 +++++++++++++++++++++++++------- internal/launcher/launcher.go | 70 +++- internal/secrets/onepassword.go | 6 - pkg/models/connection.go | 48 ++- 6 files changed, 645 insertions(+), 158 deletions(-) create mode 100644 .claude/settings.json diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..b55e75b --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "allow": [ + "Bash(go build:*)" + ] + } +} diff --git a/.gitignore b/.gitignore index 34ca2d8..9c8a237 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # Binaries for programs and plugins -*.exe +*.exe* *.exe~ *.dll *.so diff --git a/internal/gui/dialogs.go b/internal/gui/dialogs.go index 93e3140..8f00e77 100644 --- a/internal/gui/dialogs.go +++ b/internal/gui/dialogs.go @@ -2,16 +2,64 @@ package gui import ( "fmt" + "net/url" "strconv" "strings" "time" "fyne.io/fyne/v2" + "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" +"fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/jaydenthorup/mremotego/pkg/models" ) +// stableFormLayout is a two-column form layout with a fixed label column width, +// so field widths stay constant regardless of which rows are shown or hidden. +type stableFormLayout struct{ labelWidth float32 } + +func (l *stableFormLayout) Layout(objects []fyne.CanvasObject, size fyne.Size) { + pad := theme.Padding() + fieldX := l.labelWidth + pad + fieldW := size.Width - fieldX + y := float32(0) + first := true + for i := 0; i+1 < len(objects); i += 2 { + label, field := objects[i], objects[i+1] + if !label.Visible() && !field.Visible() { + continue + } + if !first { + y += pad + } + first = false + rowH := fyne.Max(label.MinSize().Height, field.MinSize().Height) + label.Move(fyne.NewPos(0, y)) + label.Resize(fyne.NewSize(l.labelWidth, rowH)) + field.Move(fyne.NewPos(fieldX, y)) + field.Resize(fyne.NewSize(fieldW, rowH)) + y += rowH + } +} + +func (l *stableFormLayout) MinSize(objects []fyne.CanvasObject) fyne.Size { + pad := theme.Padding() + minH := float32(0) + first := true + for i := 0; i+1 < len(objects); i += 2 { + if !objects[i].Visible() && !objects[i+1].Visible() { + continue + } + if !first { + minH += pad + } + first = false + minH += fyne.Max(objects[i].MinSize().Height, objects[i+1].MinSize().Height) + } + return fyne.NewSize(l.labelWidth+pad, minH) +} + // collectAllFolders recursively collects all folders with their full paths func (w *MainWindow) collectAllFolders(connections []*models.Connection, prefix string, folderMap map[string]*models.Connection, folderNames *[]string) { for _, conn := range connections { @@ -127,89 +175,247 @@ func (w *MainWindow) showAddConnectionDialog() { folderSelect := widget.NewSelect(folderNames, nil) folderSelect.SetSelected("(Root)") + // RDP Gateway widgets + useGatewayCheck := widget.NewCheck("Use RDP Gateway", nil) + + gatewayUsageSelect := widget.NewSelect([]string{"Never", "Always", "Detect"}, nil) + gatewayUsageSelect.SetSelected("Always") + gatewayHostnameEntry := widget.NewEntry() + gatewayHostnameEntry.SetPlaceHolder("gateway.example.com") + gatewayCredentialsSelect := widget.NewSelect([]string{ + "Use the same username and password", + "Use a different username and password", + "Use a smart card", + }, nil) + gatewayCredentialsSelect.SetSelected("Use the same username and password") + gatewayUsernameEntry := widget.NewEntry() + gatewayUsernameEntry.SetPlaceHolder("username or op://vault/item/field") + gatewayPasswordEntry := widget.NewEntry() + gatewayPasswordEntry.SetPlaceHolder("password or op://vault/item/field") + gatewayDomainEntry := widget.NewEntry() + gatewayDomainEntry.SetPlaceHolder("gateway domain") + + gatewayUsageLabel := widget.NewLabelWithStyle("Gateway Usage", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayHostnameLabel := widget.NewLabelWithStyle("Gateway Hostname", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayCredentialsLabel := widget.NewLabelWithStyle("Gateway Credentials", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayUsernameLabel := widget.NewLabelWithStyle("Gateway Username", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayPasswordLabel := widget.NewLabelWithStyle("Gateway Password", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayDomainLabel := widget.NewLabelWithStyle("Gateway Domain", fyne.TextAlignTrailing, fyne.TextStyle{}) + + // All gateway rows start hidden + gatewayUsageLabel.Hide() + gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide() + gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide() + gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + // 1Password integration storeTo1PasswordCheck := widget.NewCheck("Store password in 1Password", nil) vaultSelect := widget.NewSelect([]string{"DevOps", "Private", "Employee"}, nil) vaultSelect.SetSelected("DevOps") + vaultLabel := widget.NewLabelWithStyle("Vault", fyne.TextAlignTrailing, fyne.TextStyle{}) + vaultLabel.Hide() vaultSelect.Hide() + gatewayCheckLabel := widget.NewLabel("") + gatewayCheckLabel.Hide() + useGatewayCheck.Hide() + + var formContainer *fyne.Container + + hideAllGatewayRows := func() { + gatewayCheckLabel.Hide(); useGatewayCheck.Hide() + gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + } + storeTo1PasswordCheck.OnChanged = func(checked bool) { if checked { + vaultLabel.Show() vaultSelect.Show() } else { + vaultLabel.Hide() vaultSelect.Hide() } + formContainer.Refresh() } - form := &widget.Form{ - Items: []*widget.FormItem{ - {Text: "Name", Widget: nameEntry}, - {Text: "Protocol", Widget: protocolSelect}, - {Text: "Host", Widget: hostEntry}, - {Text: "Port", Widget: portEntry}, - {Text: "Username", Widget: usernameEntry}, - {Text: "Password", Widget: passwordEntry}, - {Text: "Domain", Widget: domainEntry}, - {Text: "Description", Widget: descriptionEntry}, - {Text: "Folder", Widget: folderSelect}, - {Text: "", Widget: storeTo1PasswordCheck}, - {Text: "Vault", Widget: vaultSelect}, - }, - OnSubmit: func() { - conn := models.NewConnection(nameEntry.Text, models.Protocol(protocolSelect.Selected)) - conn.Host = hostEntry.Text - conn.Username = usernameEntry.Text - conn.Password = passwordEntry.Text - conn.Domain = domainEntry.Text - conn.Description = descriptionEntry.Text - conn.Created = time.Now().Format(time.RFC3339) - conn.Modified = conn.Created - - if portEntry.Text != "" { - if port, err := strconv.Atoi(portEntry.Text); err == nil { - conn.Port = port - } - } else { - conn.Port = conn.Protocol.GetDefaultPort() - } + showGatewayDifferentCreds := func(show bool) { + if show { + gatewayUsernameLabel.Show() + gatewayUsernameEntry.Show() + gatewayPasswordLabel.Show() + gatewayPasswordEntry.Show() + gatewayDomainLabel.Show() + gatewayDomainEntry.Show() + } else { + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + } + formContainer.Refresh() + } + + gatewayCredentialsSelect.OnChanged = func(selected string) { + showGatewayDifferentCreds(selected == "Use a different username and password") + } + + useGatewayCheck.OnChanged = func(checked bool) { + if checked { + gatewayUsageLabel.Show(); gatewayUsageSelect.Show() + gatewayHostnameLabel.Show(); gatewayHostnameEntry.Show() + gatewayCredentialsLabel.Show(); gatewayCredentialsSelect.Show() + showGatewayDifferentCreds(gatewayCredentialsSelect.Selected == "Use a different username and password") + } else { + gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + } + formContainer.Refresh() + } + + protocolSelect.OnChanged = func(selected string) { + if selected == "rdp" { + gatewayCheckLabel.Show() + useGatewayCheck.Show() + } else { + hideAllGatewayRows() + useGatewayCheck.SetChecked(false) + } + formContainer.Refresh() + } - // If user wants to store in 1Password, create the item - if storeTo1PasswordCheck.Checked && conn.Password != "" && !w.manager.IsOnePasswordReference(conn.Password) { - vault := vaultSelect.Selected - reference, err := w.manager.CreateOnePasswordItem(vault, conn.Name, conn.Username, conn.Password) - if err != nil { - dialog.ShowError(fmt.Errorf("Failed to create 1Password item: %w", err), w.window) - return + labelMinWidth := widget.NewLabelWithStyle("Gateway Credentials", fyne.TextAlignTrailing, fyne.TextStyle{}).MinSize().Width + formContainer = container.New(&stableFormLayout{labelWidth: labelMinWidth}, + widget.NewLabelWithStyle("Name", fyne.TextAlignTrailing, fyne.TextStyle{}), nameEntry, + widget.NewLabelWithStyle("Protocol", fyne.TextAlignTrailing, fyne.TextStyle{}), protocolSelect, + widget.NewLabelWithStyle("Host", fyne.TextAlignTrailing, fyne.TextStyle{}), hostEntry, + widget.NewLabelWithStyle("Port", fyne.TextAlignTrailing, fyne.TextStyle{}), portEntry, + widget.NewLabelWithStyle("Username", fyne.TextAlignTrailing, fyne.TextStyle{}), usernameEntry, + widget.NewLabelWithStyle("Password", fyne.TextAlignTrailing, fyne.TextStyle{}), passwordEntry, + widget.NewLabelWithStyle("Domain", fyne.TextAlignTrailing, fyne.TextStyle{}), domainEntry, + widget.NewLabelWithStyle("Description", fyne.TextAlignTrailing, fyne.TextStyle{}), descriptionEntry, + widget.NewLabelWithStyle("Folder", fyne.TextAlignTrailing, fyne.TextStyle{}), folderSelect, + gatewayCheckLabel, useGatewayCheck, + gatewayUsageLabel, gatewayUsageSelect, + gatewayHostnameLabel, gatewayHostnameEntry, + gatewayCredentialsLabel, gatewayCredentialsSelect, + gatewayUsernameLabel, gatewayUsernameEntry, + gatewayPasswordLabel, gatewayPasswordEntry, + gatewayDomainLabel, gatewayDomainEntry, + widget.NewLabel(""), storeTo1PasswordCheck, + vaultLabel, vaultSelect, + ) + + scroll := container.NewScroll(container.NewPadded(formContainer)) + scroll.SetMinSize(fyne.NewSize(500, 500)) + d := dialog.NewCustomConfirm("Add Connection", "Submit", "Close", scroll, func(confirmed bool) { + if !confirmed { + return + } + + conn := models.NewConnection(nameEntry.Text, models.Protocol(protocolSelect.Selected)) + conn.Host = hostEntry.Text + conn.Username = usernameEntry.Text + conn.Password = passwordEntry.Text + conn.Domain = domainEntry.Text + conn.Description = descriptionEntry.Text + conn.Created = time.Now().Format(time.RFC3339) + conn.Modified = conn.Created + + conn.UseGateway = useGatewayCheck.Checked + if conn.UseGateway { + conn.GatewayHostname = gatewayHostnameEntry.Text + switch gatewayUsageSelect.Selected { + case "Never": + conn.GatewayUsageMethod = "never" + case "Detect": + conn.GatewayUsageMethod = "detect" + default: + conn.GatewayUsageMethod = "always" + } + switch gatewayCredentialsSelect.Selected { + case "Use a different username and password": + conn.GatewayCredentials = "different" + conn.GatewayDomain = gatewayDomainEntry.Text + gwUser := gatewayUsernameEntry.Text + gwPass := gatewayPasswordEntry.Text + if storeTo1PasswordCheck.Checked && gwPass != "" && !w.manager.IsOnePasswordReference(gwPass) { + vault := vaultSelect.Selected + gwTitle := nameEntry.Text + " Gateway" + ref, err := w.manager.CreateOnePasswordItem(vault, gwTitle, gwUser, gwPass) + if err != nil { + dialog.ShowError(fmt.Errorf("Failed to create 1Password item for gateway: %w", err), w.window) + return + } + conn.GatewayPassword = ref + conn.GatewayUsername = fmt.Sprintf("op://%s/%s/username", vault, url.PathEscape(gwTitle)) + } else { + conn.GatewayUsername = gwUser + conn.GatewayPassword = gwPass } - // Replace password with 1Password reference - conn.Password = reference - dialog.ShowInformation("Success", fmt.Sprintf("Password stored in 1Password vault '%s'", vault), w.window) + case "Use a smart card": + conn.GatewayCredentials = "smartcard" + default: + conn.GatewayCredentials = "same" } + } - // Add to selected folder or root - selectedFolder := folderSelect.Selected - if selectedFolder == "(Root)" { - w.manager.GetConfig().Connections = append(w.manager.GetConfig().Connections, conn) - } else { - // Find the folder and add to its children - folder := folderMap[selectedFolder] - if folder != nil { - folder.Children = append(folder.Children, conn) - } + if portEntry.Text != "" { + if port, err := strconv.Atoi(portEntry.Text); err == nil { + conn.Port = port } + } else { + conn.Port = conn.Protocol.GetDefaultPort() + } - if err := w.manager.Save(); err != nil { - dialog.ShowError(err, w.window) + // If user wants to store in 1Password, create the item + if storeTo1PasswordCheck.Checked && conn.Password != "" && !w.manager.IsOnePasswordReference(conn.Password) { + vault := vaultSelect.Selected + reference, err := w.manager.CreateOnePasswordItem(vault, conn.Name, conn.Username, conn.Password) + if err != nil { + dialog.ShowError(fmt.Errorf("Failed to create 1Password item: %w", err), w.window) return } + conn.Password = reference + } + + // Add to selected folder or root + selectedFolder := folderSelect.Selected + if selectedFolder == "(Root)" { + w.manager.GetConfig().Connections = append(w.manager.GetConfig().Connections, conn) + } else { + folder := folderMap[selectedFolder] + if folder != nil { + folder.Children = append(folder.Children, conn) + } + } - w.refreshTree() - dialog.ShowInformation("Success", "Connection added successfully", w.window) - }, - } + if err := w.manager.Save(); err != nil { + dialog.ShowError(err, w.window) + return + } - d := dialog.NewCustom("Add Connection", "Close", form, w.window) - d.Resize(fyne.NewSize(500, 700)) + w.refreshTree() + }, w.window) + d.Resize(fyne.NewSize(620, 600)) d.Show() } @@ -303,108 +509,308 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { folderSelect := widget.NewSelect(folderNames, nil) folderSelect.SetSelected(currentFolder) + // RDP Gateway widgets + useGatewayCheck := widget.NewCheck("Use RDP Gateway", nil) + useGatewayCheck.SetChecked(conn.UseGateway) + + gatewayUsageSelect := widget.NewSelect([]string{"Never", "Always", "Detect"}, nil) + switch conn.GatewayUsageMethod { + case "never": + gatewayUsageSelect.SetSelected("Never") + case "detect": + gatewayUsageSelect.SetSelected("Detect") + default: + gatewayUsageSelect.SetSelected("Always") + } + + gatewayHostnameEntry := widget.NewEntry() + gatewayHostnameEntry.SetPlaceHolder("gateway.example.com") + gatewayHostnameEntry.SetText(conn.GatewayHostname) + + gatewayCredentialsSelect := widget.NewSelect([]string{ + "Use the same username and password", + "Use a different username and password", + "Use a smart card", + }, nil) + switch conn.GatewayCredentials { + case "different": + gatewayCredentialsSelect.SetSelected("Use a different username and password") + case "smartcard": + gatewayCredentialsSelect.SetSelected("Use a smart card") + default: + gatewayCredentialsSelect.SetSelected("Use the same username and password") + } + + gatewayUsernameEntry := widget.NewEntry() + gatewayUsernameEntry.SetPlaceHolder("username or op://vault/item/field") + gatewayUsernameEntry.SetText(conn.GatewayUsername) + + gatewayPasswordEntry := widget.NewEntry() + gatewayPasswordEntry.SetPlaceHolder("password or op://vault/item/field") + gatewayPasswordEntry.SetText(conn.GatewayPassword) + + gatewayDomainEntry := widget.NewEntry() + gatewayDomainEntry.SetPlaceHolder("gateway domain") + gatewayDomainEntry.SetText(conn.GatewayDomain) + + gatewayUsageLabel := widget.NewLabelWithStyle("Gateway Usage", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayHostnameLabel := widget.NewLabelWithStyle("Gateway Hostname", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayCredentialsLabel := widget.NewLabelWithStyle("Gateway Credentials", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayUsernameLabel := widget.NewLabelWithStyle("Gateway Username", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayPasswordLabel := widget.NewLabelWithStyle("Gateway Password", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayDomainLabel := widget.NewLabelWithStyle("Gateway Domain", fyne.TextAlignTrailing, fyne.TextStyle{}) + + // Set initial gateway row visibility + if !conn.UseGateway { + gatewayUsageLabel.Hide() + gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide() + gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide() + gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + } else if conn.GatewayCredentials != "different" { + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + } + // 1Password integration for edit storeTo1PasswordCheck := widget.NewCheck("Push password to 1Password", nil) vaultSelect := widget.NewSelect([]string{"DevOps", "Private", "Employee"}, nil) vaultSelect.SetSelected("DevOps") + vaultLabel := widget.NewLabelWithStyle("Vault", fyne.TextAlignTrailing, fyne.TextStyle{}) + vaultLabel.Hide() vaultSelect.Hide() + // Show gateway checkbox only when protocol is RDP + gatewayCheckLabel := widget.NewLabel("") + if conn.Protocol != "rdp" { + gatewayCheckLabel.Hide() + useGatewayCheck.Hide() + } + + var formContainer *fyne.Container + + hideAllGatewayRows := func() { + gatewayCheckLabel.Hide(); useGatewayCheck.Hide() + gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + } + storeTo1PasswordCheck.OnChanged = func(checked bool) { if checked { + vaultLabel.Show() vaultSelect.Show() } else { + vaultLabel.Hide() vaultSelect.Hide() } + formContainer.Refresh() } - form := &widget.Form{ - Items: []*widget.FormItem{ - {Text: "Name", Widget: nameEntry}, - {Text: "Protocol", Widget: protocolSelect}, - {Text: "Host", Widget: hostEntry}, - {Text: "Port", Widget: portEntry}, - {Text: "Username", Widget: usernameEntry}, - {Text: "Password", Widget: passwordEntry}, - {Text: "Domain", Widget: domainEntry}, - {Text: "Description", Widget: descriptionEntry}, - {Text: "Folder", Widget: folderSelect}, - {Text: "", Widget: storeTo1PasswordCheck}, - {Text: "Vault", Widget: vaultSelect}, - }, - OnSubmit: func() { - // If user wants to push password to 1Password - if storeTo1PasswordCheck.Checked && passwordEntry.Text != "" && !w.manager.IsOnePasswordReference(passwordEntry.Text) { - vault := vaultSelect.Selected - reference, err := w.manager.CreateOnePasswordItem(vault, nameEntry.Text, usernameEntry.Text, passwordEntry.Text) - if err != nil { - dialog.ShowError(fmt.Errorf("Failed to create 1Password item: %w", err), w.window) - return - } - // Replace password with 1Password reference - conn.Password = reference - dialog.ShowInformation("Success", fmt.Sprintf("Password stored in 1Password vault '%s'", vault), w.window) - } else { - conn.Password = passwordEntry.Text - } + showGatewayDifferentCreds := func(show bool) { + if show { + gatewayUsernameLabel.Show() + gatewayUsernameEntry.Show() + gatewayPasswordLabel.Show() + gatewayPasswordEntry.Show() + gatewayDomainLabel.Show() + gatewayDomainEntry.Show() + } else { + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + } + formContainer.Refresh() + } - conn.Name = nameEntry.Text - conn.Protocol = models.Protocol(protocolSelect.Selected) - conn.Host = hostEntry.Text - conn.Username = usernameEntry.Text - conn.Domain = domainEntry.Text - conn.Description = descriptionEntry.Text - conn.Modified = time.Now().Format(time.RFC3339) + gatewayCredentialsSelect.OnChanged = func(selected string) { + showGatewayDifferentCreds(selected == "Use a different username and password") + } - if port, err := strconv.Atoi(portEntry.Text); err == nil { - conn.Port = port + useGatewayCheck.OnChanged = func(checked bool) { + if checked { + gatewayUsageLabel.Show(); gatewayUsageSelect.Show() + gatewayHostnameLabel.Show(); gatewayHostnameEntry.Show() + gatewayCredentialsLabel.Show(); gatewayCredentialsSelect.Show() + showGatewayDifferentCreds(gatewayCredentialsSelect.Selected == "Use a different username and password") + } else { + gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + } + formContainer.Refresh() + } + + protocolSelect.OnChanged = func(selected string) { + if selected == "rdp" { + gatewayCheckLabel.Show() + useGatewayCheck.Show() + } else { + hideAllGatewayRows() + useGatewayCheck.SetChecked(false) + } + formContainer.Refresh() + } + + labelMinWidth := widget.NewLabelWithStyle("Gateway Credentials", fyne.TextAlignTrailing, fyne.TextStyle{}).MinSize().Width + formContainer = container.New(&stableFormLayout{labelWidth: labelMinWidth}, + widget.NewLabelWithStyle("Name", fyne.TextAlignTrailing, fyne.TextStyle{}), nameEntry, + widget.NewLabelWithStyle("Protocol", fyne.TextAlignTrailing, fyne.TextStyle{}), protocolSelect, + widget.NewLabelWithStyle("Host", fyne.TextAlignTrailing, fyne.TextStyle{}), hostEntry, + widget.NewLabelWithStyle("Port", fyne.TextAlignTrailing, fyne.TextStyle{}), portEntry, + widget.NewLabelWithStyle("Username", fyne.TextAlignTrailing, fyne.TextStyle{}), usernameEntry, + widget.NewLabelWithStyle("Password", fyne.TextAlignTrailing, fyne.TextStyle{}), passwordEntry, + widget.NewLabelWithStyle("Domain", fyne.TextAlignTrailing, fyne.TextStyle{}), domainEntry, + widget.NewLabelWithStyle("Description", fyne.TextAlignTrailing, fyne.TextStyle{}), descriptionEntry, + widget.NewLabelWithStyle("Folder", fyne.TextAlignTrailing, fyne.TextStyle{}), folderSelect, + gatewayCheckLabel, useGatewayCheck, + gatewayUsageLabel, gatewayUsageSelect, + gatewayHostnameLabel, gatewayHostnameEntry, + gatewayCredentialsLabel, gatewayCredentialsSelect, + gatewayUsernameLabel, gatewayUsernameEntry, + gatewayPasswordLabel, gatewayPasswordEntry, + gatewayDomainLabel, gatewayDomainEntry, + widget.NewLabel(""), storeTo1PasswordCheck, + vaultLabel, vaultSelect, + ) + + scroll := container.NewScroll(container.NewPadded(formContainer)) + scroll.SetMinSize(fyne.NewSize(500, 500)) + d := dialog.NewCustomConfirm("Edit Connection", "Submit", "Close", scroll, func(confirmed bool) { + if !confirmed { + return + } + + // If user wants to push password to 1Password + if storeTo1PasswordCheck.Checked && passwordEntry.Text != "" && !w.manager.IsOnePasswordReference(passwordEntry.Text) { + vault := vaultSelect.Selected + reference, err := w.manager.CreateOnePasswordItem(vault, nameEntry.Text, usernameEntry.Text, passwordEntry.Text) + if err != nil { + dialog.ShowError(fmt.Errorf("Failed to create 1Password item: %w", err), w.window) + return } + conn.Password = reference + } else { + conn.Password = passwordEntry.Text + } - // Handle folder change - selectedFolder := folderSelect.Selected - if selectedFolder != currentFolder { - // Remove from old parent - if parentFolder != nil { - // Remove from parent's children - for i, child := range parentFolder.Children { - if child == conn { - parentFolder.Children = append(parentFolder.Children[:i], parentFolder.Children[i+1:]...) - break - } + conn.Name = nameEntry.Text + conn.Protocol = models.Protocol(protocolSelect.Selected) + conn.Host = hostEntry.Text + conn.Username = usernameEntry.Text + conn.Domain = domainEntry.Text + conn.Description = descriptionEntry.Text + conn.Modified = time.Now().Format(time.RFC3339) + + conn.UseGateway = useGatewayCheck.Checked + if conn.UseGateway { + conn.GatewayHostname = gatewayHostnameEntry.Text + switch gatewayUsageSelect.Selected { + case "Never": + conn.GatewayUsageMethod = "never" + case "Detect": + conn.GatewayUsageMethod = "detect" + default: + conn.GatewayUsageMethod = "always" + } + switch gatewayCredentialsSelect.Selected { + case "Use a different username and password": + conn.GatewayCredentials = "different" + conn.GatewayDomain = gatewayDomainEntry.Text + gwUser := gatewayUsernameEntry.Text + gwPass := gatewayPasswordEntry.Text + if storeTo1PasswordCheck.Checked && gwPass != "" && !w.manager.IsOnePasswordReference(gwPass) { + vault := vaultSelect.Selected + gwTitle := nameEntry.Text + " Gateway" + ref, err := w.manager.CreateOnePasswordItem(vault, gwTitle, gwUser, gwPass) + if err != nil { + dialog.ShowError(fmt.Errorf("Failed to create 1Password item for gateway: %w", err), w.window) + return } + conn.GatewayPassword = ref + conn.GatewayUsername = fmt.Sprintf("op://%s/%s/username", vault, url.PathEscape(gwTitle)) } else { - // Remove from root - for i, c := range w.manager.GetConfig().Connections { - if c == conn { - w.manager.GetConfig().Connections = append(w.manager.GetConfig().Connections[:i], w.manager.GetConfig().Connections[i+1:]...) - break - } - } + conn.GatewayUsername = gwUser + conn.GatewayPassword = gwPass } + case "Use a smart card": + conn.GatewayCredentials = "smartcard" + default: + conn.GatewayCredentials = "same" + } + } else { + conn.GatewayHostname = "" + conn.GatewayUsageMethod = "" + conn.GatewayCredentials = "" + conn.GatewayUsername = "" + conn.GatewayPassword = "" + conn.GatewayDomain = "" + } - // Add to new parent - if selectedFolder == "(Root)" { - w.manager.GetConfig().Connections = append(w.manager.GetConfig().Connections, conn) - } else { - newParent := folderMap[selectedFolder] - if newParent != nil { - newParent.Children = append(newParent.Children, conn) + if port, err := strconv.Atoi(portEntry.Text); err == nil { + conn.Port = port + } + + // Handle folder change + selectedFolder := folderSelect.Selected + if selectedFolder != currentFolder { + // Remove from old parent + if parentFolder != nil { + for i, child := range parentFolder.Children { + if child == conn { + parentFolder.Children = append(parentFolder.Children[:i], parentFolder.Children[i+1:]...) + break + } + } + } else { + for i, c := range w.manager.GetConfig().Connections { + if c == conn { + w.manager.GetConfig().Connections = append(w.manager.GetConfig().Connections[:i], w.manager.GetConfig().Connections[i+1:]...) + break } } } - if err := w.manager.Save(); err != nil { - dialog.ShowError(err, w.window) - return + // Add to new parent + if selectedFolder == "(Root)" { + w.manager.GetConfig().Connections = append(w.manager.GetConfig().Connections, conn) + } else { + newParent := folderMap[selectedFolder] + if newParent != nil { + newParent.Children = append(newParent.Children, conn) + } } + } - w.refreshTree() - w.updateDetailsPanel(conn) - dialog.ShowInformation("Success", "Connection updated successfully", w.window) - }, - } + if err := w.manager.Save(); err != nil { + dialog.ShowError(err, w.window) + return + } - d := dialog.NewCustom("Edit Connection", "Close", form, w.window) - d.Resize(fyne.NewSize(500, 700)) + w.refreshTree() + w.updateDetailsPanel(conn) + }, w.window) + d.Resize(fyne.NewSize(620, 600)) d.Show() } diff --git a/internal/launcher/launcher.go b/internal/launcher/launcher.go index 37f3170..f269d4b 100644 --- a/internal/launcher/launcher.go +++ b/internal/launcher/launcher.go @@ -60,6 +60,22 @@ func (l *Launcher) Launch(conn *models.Connection) error { resolvedConn.Password = resolved } } + if l.onePasswordProvider.IsReference(conn.GatewayUsername) { + resolved, err := l.onePasswordProvider.ResolveSecret(conn.GatewayUsername) + if err != nil { + return fmt.Errorf("failed to resolve gateway username from 1Password: %w", err) + } + resolvedConn.GatewayUsername = resolved + } + if l.onePasswordProvider.IsReference(conn.GatewayPassword) { + resolved, err := l.onePasswordProvider.ResolveSecret(conn.GatewayPassword) + if err != nil { + fmt.Printf("Warning: Failed to resolve gateway password from 1Password: %v (gateway will prompt for credentials)\n", err) + resolvedConn.GatewayPassword = "" + } else { + resolvedConn.GatewayPassword = resolved + } + } switch resolvedConn.Protocol { case models.ProtocolSSH: @@ -317,6 +333,11 @@ func (l *Launcher) launchRDP(conn *models.Connection) error { fmt.Printf("Warning: Failed to store credentials: %v\n", err) } } + if conn.UseGateway && conn.GatewayCredentials == "different" && conn.GatewayHostname != "" && conn.GatewayPassword != "" { + if err := l.storeGatewayCredential(conn); err != nil { + fmt.Printf("Warning: Failed to store gateway credentials: %v\n", err) + } + } // Create a temporary .rdp file with connection settings rdpFile, err := l.createRDPFile(conn, target) @@ -537,9 +558,38 @@ func (l *Launcher) createRDPFile(conn *models.Connection, target string) (string rdpContent += "remoteapplicationmode:i:0\r\n" rdpContent += "alternate shell:s:\r\n" rdpContent += "shell working directory:s:\r\n" - rdpContent += "gatewayhostname:s:\r\n" - rdpContent += "gatewayusagemethod:i:4\r\n" - rdpContent += "gatewaycredentialssource:i:4\r\n" + if conn.UseGateway && conn.GatewayHostname != "" { + rdpContent += fmt.Sprintf("gatewayhostname:s:%s\r\n", conn.GatewayHostname) + + usageMethod := 1 // default: always + switch conn.GatewayUsageMethod { + case "detect": + usageMethod = 2 + case "never": + usageMethod = 4 + } + rdpContent += fmt.Sprintf("gatewayusagemethod:i:%d\r\n", usageMethod) + + credSource := 1 // default: same credentials + switch conn.GatewayCredentials { + case "different": + credSource = 0 + case "smartcard": + credSource = 4 + } + rdpContent += fmt.Sprintf("gatewaycredentialssource:i:%d\r\n", credSource) + + if conn.GatewayCredentials == "different" && conn.GatewayUsername != "" { + rdpContent += fmt.Sprintf("gatewayusername:s:%s\r\n", conn.GatewayUsername) + if conn.GatewayDomain != "" { + rdpContent += fmt.Sprintf("gatewaydomain:s:%s\r\n", conn.GatewayDomain) + } + } + } else { + rdpContent += "gatewayhostname:s:\r\n" + rdpContent += "gatewayusagemethod:i:4\r\n" + rdpContent += "gatewaycredentialssource:i:4\r\n" + } rdpContent += "gatewayprofileusagemethod:i:0\r\n" rdpContent += "promptcredentialonce:i:0\r\n" rdpContent += "gatewaybrokeringtype:i:0\r\n" @@ -611,6 +661,20 @@ func (l *Launcher) storeWindowsCredential(conn *models.Connection) error { return writeWindowsCredential("TERMSRV/"+target, username, conn.Password) } +// storeGatewayCredential stores RDP Gateway credentials in Windows Credential Manager +func (l *Launcher) storeGatewayCredential(conn *models.Connection) error { + if runtime.GOOS != "windows" { + return nil + } + + username := conn.GatewayUsername + if conn.GatewayDomain != "" { + username = fmt.Sprintf("%s\\%s", conn.GatewayDomain, conn.GatewayUsername) + } + + return writeWindowsCredential("TERMSRV/"+conn.GatewayHostname, username, conn.GatewayPassword) +} + // RemoveWindowsCredential removes RDP credentials from Windows Credential Manager func (l *Launcher) RemoveWindowsCredential(conn *models.Connection) error { if runtime.GOOS != "windows" { diff --git a/internal/secrets/onepassword.go b/internal/secrets/onepassword.go index 8b1ee06..94867fd 100644 --- a/internal/secrets/onepassword.go +++ b/internal/secrets/onepassword.go @@ -38,7 +38,6 @@ func (p *OnePasswordProvider) IsAuthenticated() bool { } cmd := exec.Command("op", "whoami") - hideConsoleWindow(cmd) return cmd.Run() == nil } @@ -96,7 +95,6 @@ func (p *OnePasswordProvider) ResolveSecret(reference string) (string, error) { // Use 'op item get' which handles special characters in item names // This is more robust than 'op read' for items with parentheses, spaces, etc. cmd := exec.Command("op", "item", "get", item, "--vault="+vault, "--fields", "label="+field, "--reveal") - hideConsoleWindow(cmd) output, err := cmd.CombinedOutput() if err != nil { @@ -170,7 +168,6 @@ func (p *OnePasswordProvider) CheckItemExists(vault, title string) (string, bool // Try to get the item cmd := exec.Command("op", "item", "get", title, "--vault="+vault, "--format=json") - hideConsoleWindow(cmd) output, err := cmd.CombinedOutput() if err != nil { @@ -224,7 +221,6 @@ func (p *OnePasswordProvider) CreateItem(vault, title, username, password string } cmd := exec.Command("op", args...) - hideConsoleWindow(cmd) output, err := cmd.CombinedOutput() if err != nil { @@ -248,7 +244,6 @@ func (p *OnePasswordProvider) CreateItem(vault, title, username, password string } cmd := exec.Command("op", args...) - hideConsoleWindow(cmd) output, err := cmd.CombinedOutput() if err != nil { @@ -270,7 +265,6 @@ func (p *OnePasswordProvider) ListVaults() ([]string, error) { } cmd := exec.Command("op", "vault", "list", "--format=json") - hideConsoleWindow(cmd) _, err := cmd.Output() if err != nil { diff --git a/pkg/models/connection.go b/pkg/models/connection.go index 133072e..092ede8 100644 --- a/pkg/models/connection.go +++ b/pkg/models/connection.go @@ -40,6 +40,15 @@ type Connection struct { Resolution string `yaml:"resolution,omitempty"` // For RDP ExtraArgs string `yaml:"extra_args,omitempty"` // Additional protocol-specific args + // RDP Gateway options (RDP only) + UseGateway bool `yaml:"use_gateway,omitempty"` + GatewayUsageMethod string `yaml:"gateway_usage_method,omitempty"` // "never", "always", "detect" + GatewayHostname string `yaml:"gateway_hostname,omitempty"` + GatewayCredentials string `yaml:"gateway_credentials,omitempty"` // "same", "different", "smartcard" + GatewayUsername string `yaml:"gateway_username,omitempty"` + GatewayPassword string `yaml:"gateway_password,omitempty"` + GatewayDomain string `yaml:"gateway_domain,omitempty"` + // Metadata Tags []string `yaml:"tags,omitempty"` Notes string `yaml:"notes,omitempty"` @@ -118,22 +127,29 @@ func (c *Connection) DeepCopy() *Connection { } connCopy := &Connection{ - Name: c.Name, - Type: c.Type, - Protocol: c.Protocol, - Host: c.Host, - Port: c.Port, - Username: c.Username, - Password: c.Password, - Domain: c.Domain, - Description: c.Description, - UseCredSSP: c.UseCredSSP, - ColorDepth: c.ColorDepth, - Resolution: c.Resolution, - ExtraArgs: c.ExtraArgs, - Notes: c.Notes, - Created: c.Created, - Modified: c.Modified, + Name: c.Name, + Type: c.Type, + Protocol: c.Protocol, + Host: c.Host, + Port: c.Port, + Username: c.Username, + Password: c.Password, + Domain: c.Domain, + Description: c.Description, + UseCredSSP: c.UseCredSSP, + ColorDepth: c.ColorDepth, + Resolution: c.Resolution, + ExtraArgs: c.ExtraArgs, + UseGateway: c.UseGateway, + GatewayUsageMethod: c.GatewayUsageMethod, + GatewayHostname: c.GatewayHostname, + GatewayCredentials: c.GatewayCredentials, + GatewayUsername: c.GatewayUsername, + GatewayPassword: c.GatewayPassword, + GatewayDomain: c.GatewayDomain, + Notes: c.Notes, + Created: c.Created, + Modified: c.Modified, } // Deep copy tags From 4fb7404c3869af7294a0e4ad1381378a55414e53 Mon Sep 17 00:00:00 2001 From: Jan van de Pol Date: Tue, 21 Apr 2026 21:18:40 +0200 Subject: [PATCH 5/7] feat: Enhance RDP connection options and improve UI - Added support for RDP authentication levels and CredSSP usage in connection settings. - Updated Makefile to include new build flags for GUI applications. - Improved the user interface for adding and editing connections, including new fields for authentication level and CredSSP. - Enhanced the launcher to handle new RDP settings and bypass local addresses for gateways. - Updated 1Password integration to check for CLI availability more effectively. - Added new RDP files with updated settings for testing. - Created new screenshots and recordings for documentation purposes. --- .claude/settings.json | 7 +- Makefile | 4 +- internal/gui/dialogs.go | 254 +++++++++++++++--- internal/gui/mainwindow.go | 41 ++- internal/launcher/launcher.go | 44 ++- internal/secrets/onepassword.go | 5 +- pkg/models/connection.go | 78 +++--- temp/.claude/settings.local.json | 9 + temp/ART1WV-DB002 org.rdp | 46 ++++ temp/ART1WV-DB002 working.rdp | 48 ++++ temp/ART1WV-DB002-minimal.rdp | 8 + temp/ART1WV-DB002.rdp | 48 ++++ temp/ART1WV-DB002.xml | 31 +++ temp/Recording 2026-04-21 132654.mp4 | Bin 0 -> 4855148 bytes temp/Screenshot 2026-04-21 113910.png | Bin 0 -> 44870 bytes ...Screenshot 2026-04-21 114829 (Warning).png | Bin 0 -> 28128 bytes 16 files changed, 530 insertions(+), 93 deletions(-) create mode 100644 temp/.claude/settings.local.json create mode 100644 temp/ART1WV-DB002 org.rdp create mode 100644 temp/ART1WV-DB002 working.rdp create mode 100644 temp/ART1WV-DB002-minimal.rdp create mode 100644 temp/ART1WV-DB002.rdp create mode 100644 temp/ART1WV-DB002.xml create mode 100644 temp/Recording 2026-04-21 132654.mp4 create mode 100644 temp/Screenshot 2026-04-21 113910.png create mode 100644 temp/Screenshot 2026-04-21 114829 (Warning).png diff --git a/.claude/settings.json b/.claude/settings.json index b55e75b..b213596 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1,7 +1,12 @@ { "permissions": { "allow": [ - "Bash(go build:*)" + "Bash(go build:*)", + "Bash(make build *)" + ], + "additionalDirectories": [ + "c:\\github\\jaydenthorup\\mremotego", + "c:\\github\\jaydenthorup\\mremotego\\bin" ] } } diff --git a/Makefile b/Makefile index 7ef5da8..fbe2d31 100644 --- a/Makefile +++ b/Makefile @@ -25,7 +25,7 @@ build-cli: # Build the GUI application build-gui: @echo "Building $(GUI_BINARY)..." - @go build -o $(BUILD_DIR)/$(GUI_BINARY) $(GUI_PATH) + @go build -ldflags="-H windowsgui" -o $(BUILD_DIR)/$(GUI_BINARY) $(GUI_PATH) @echo "✓ GUI build complete: $(BUILD_DIR)/$(GUI_BINARY)" # Build for multiple platforms @@ -40,7 +40,7 @@ build-all: @GOOS=linux GOARCH=amd64 go build -o $(BUILD_DIR)/$(GUI_BINARY)-linux-amd64 $(GUI_PATH) @GOOS=darwin GOARCH=amd64 go build -o $(BUILD_DIR)/$(GUI_BINARY)-darwin-amd64 $(GUI_PATH) @GOOS=darwin GOARCH=arm64 go build -o $(BUILD_DIR)/$(GUI_BINARY)-darwin-arm64 $(GUI_PATH) - @GOOS=windows GOARCH=amd64 go build -o $(BUILD_DIR)/$(GUI_BINARY)-windows-amd64.exe $(GUI_PATH) + @GOOS=windows GOARCH=amd64 go build -ldflags="-H windowsgui" -o $(BUILD_DIR)/$(GUI_BINARY)-windows-amd64.exe $(GUI_PATH) @echo "✓ GUI multi-platform build complete" # Clean build artifacts diff --git a/internal/gui/dialogs.go b/internal/gui/dialogs.go index 8f00e77..1b6de77 100644 --- a/internal/gui/dialogs.go +++ b/internal/gui/dialogs.go @@ -10,7 +10,7 @@ import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" -"fyne.io/fyne/v2/theme" + "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/jaydenthorup/mremotego/pkg/models" ) @@ -175,8 +175,21 @@ func (w *MainWindow) showAddConnectionDialog() { folderSelect := widget.NewSelect(folderNames, nil) folderSelect.SetSelected("(Root)") - // RDP Gateway widgets - useGatewayCheck := widget.NewCheck("Use RDP Gateway", nil) + // RDP-specific widgets (shown for any RDP connection) + authLevelSelect := widget.NewSelect([]string{"Always connect, even if authentication fails", "Don't connect if authentication fails", "Warn me if authentication fails"}, nil) + authLevelSelect.SetSelected("Always connect, even if authentication fails") + authLevelLabel := widget.NewLabelWithStyle("Auth Level", fyne.TextAlignTrailing, fyne.TextStyle{}) + authLevelLabel.Hide() + authLevelSelect.Hide() + + useCredSSPCheck := widget.NewCheck("Use CredSSP", nil) + useCredSSPCheck.SetChecked(true) + credSSPLabel := widget.NewLabel("") + credSSPLabel.Hide() + useCredSSPCheck.Hide() + + // RD Gateway widgets + useGatewayCheck := widget.NewCheck("Use RD Gateway", nil) gatewayUsageSelect := widget.NewSelect([]string{"Never", "Always", "Detect"}, nil) gatewayUsageSelect.SetSelected("Always") @@ -195,12 +208,18 @@ func (w *MainWindow) showAddConnectionDialog() { gatewayDomainEntry := widget.NewEntry() gatewayDomainEntry.SetPlaceHolder("gateway domain") + gatewayProfileSelect := widget.NewSelect([]string{"Use settings from this connection", "Use system default gateway profile"}, nil) + gatewayProfileSelect.SetSelected("Use settings from this connection") + gatewayBypassLocalCheck := widget.NewCheck("Bypass gateway for local addresses", nil) + gatewayUsageLabel := widget.NewLabelWithStyle("Gateway Usage", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayHostnameLabel := widget.NewLabelWithStyle("Gateway Hostname", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayCredentialsLabel := widget.NewLabelWithStyle("Gateway Credentials", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayUsernameLabel := widget.NewLabelWithStyle("Gateway Username", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayPasswordLabel := widget.NewLabelWithStyle("Gateway Password", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayDomainLabel := widget.NewLabelWithStyle("Gateway Domain", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayProfileLabel := widget.NewLabelWithStyle("Gateway Profile", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayBypassLocalLabel := widget.NewLabel("") // All gateway rows start hidden gatewayUsageLabel.Hide() @@ -215,6 +234,10 @@ func (w *MainWindow) showAddConnectionDialog() { gatewayPasswordEntry.Hide() gatewayDomainLabel.Hide() gatewayDomainEntry.Hide() + gatewayProfileLabel.Hide() + gatewayProfileSelect.Hide() + gatewayBypassLocalLabel.Hide() + gatewayBypassLocalCheck.Hide() // 1Password integration storeTo1PasswordCheck := widget.NewCheck("Store password in 1Password", nil) @@ -231,13 +254,24 @@ func (w *MainWindow) showAddConnectionDialog() { var formContainer *fyne.Container hideAllGatewayRows := func() { - gatewayCheckLabel.Hide(); useGatewayCheck.Hide() - gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() - gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() - gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() - gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() - gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() - gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + gatewayCheckLabel.Hide() + useGatewayCheck.Hide() + gatewayUsageLabel.Hide() + gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide() + gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide() + gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + gatewayProfileLabel.Hide() + gatewayProfileSelect.Hide() + gatewayBypassLocalLabel.Hide() + gatewayBypassLocalCheck.Hide() } storeTo1PasswordCheck.OnChanged = func(checked bool) { @@ -276,17 +310,34 @@ func (w *MainWindow) showAddConnectionDialog() { useGatewayCheck.OnChanged = func(checked bool) { if checked { - gatewayUsageLabel.Show(); gatewayUsageSelect.Show() - gatewayHostnameLabel.Show(); gatewayHostnameEntry.Show() - gatewayCredentialsLabel.Show(); gatewayCredentialsSelect.Show() + gatewayUsageLabel.Show() + gatewayUsageSelect.Show() + gatewayHostnameLabel.Show() + gatewayHostnameEntry.Show() + gatewayCredentialsLabel.Show() + gatewayCredentialsSelect.Show() + gatewayProfileLabel.Show() + gatewayProfileSelect.Show() + gatewayBypassLocalLabel.Show() + gatewayBypassLocalCheck.Show() showGatewayDifferentCreds(gatewayCredentialsSelect.Selected == "Use a different username and password") } else { - gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() - gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() - gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() - gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() - gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() - gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + gatewayUsageLabel.Hide() + gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide() + gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide() + gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + gatewayProfileLabel.Hide() + gatewayProfileSelect.Hide() + gatewayBypassLocalLabel.Hide() + gatewayBypassLocalCheck.Hide() } formContainer.Refresh() } @@ -295,9 +346,17 @@ func (w *MainWindow) showAddConnectionDialog() { if selected == "rdp" { gatewayCheckLabel.Show() useGatewayCheck.Show() + authLevelLabel.Show() + authLevelSelect.Show() + credSSPLabel.Show() + useCredSSPCheck.Show() } else { hideAllGatewayRows() useGatewayCheck.SetChecked(false) + authLevelLabel.Hide() + authLevelSelect.Hide() + credSSPLabel.Hide() + useCredSSPCheck.Hide() } formContainer.Refresh() } @@ -313,6 +372,8 @@ func (w *MainWindow) showAddConnectionDialog() { widget.NewLabelWithStyle("Domain", fyne.TextAlignTrailing, fyne.TextStyle{}), domainEntry, widget.NewLabelWithStyle("Description", fyne.TextAlignTrailing, fyne.TextStyle{}), descriptionEntry, widget.NewLabelWithStyle("Folder", fyne.TextAlignTrailing, fyne.TextStyle{}), folderSelect, + authLevelLabel, authLevelSelect, + credSSPLabel, useCredSSPCheck, gatewayCheckLabel, useGatewayCheck, gatewayUsageLabel, gatewayUsageSelect, gatewayHostnameLabel, gatewayHostnameEntry, @@ -320,6 +381,8 @@ func (w *MainWindow) showAddConnectionDialog() { gatewayUsernameLabel, gatewayUsernameEntry, gatewayPasswordLabel, gatewayPasswordEntry, gatewayDomainLabel, gatewayDomainEntry, + gatewayProfileLabel, gatewayProfileSelect, + gatewayBypassLocalLabel, gatewayBypassLocalCheck, widget.NewLabel(""), storeTo1PasswordCheck, vaultLabel, vaultSelect, ) @@ -340,6 +403,18 @@ func (w *MainWindow) showAddConnectionDialog() { conn.Created = time.Now().Format(time.RFC3339) conn.Modified = conn.Created + if conn.Protocol == models.ProtocolRDP { + conn.UseCredSSP = useCredSSPCheck.Checked + switch authLevelSelect.Selected { + case "Don't connect if authentication fails": + conn.RDPAuthenticationLevel = "fail" + case "Warn me if authentication fails": + conn.RDPAuthenticationLevel = "warn" + default: + conn.RDPAuthenticationLevel = "always" + } + } + conn.UseGateway = useGatewayCheck.Checked if conn.UseGateway { conn.GatewayHostname = gatewayHostnameEntry.Text @@ -351,6 +426,12 @@ func (w *MainWindow) showAddConnectionDialog() { default: conn.GatewayUsageMethod = "always" } + if gatewayProfileSelect.Selected == "Use system default gateway profile" { + conn.GatewayProfileUsageMethod = "default" + } else { + conn.GatewayProfileUsageMethod = "explicit" + } + conn.GatewayBypassIfLocal = gatewayBypassLocalCheck.Checked switch gatewayCredentialsSelect.Selected { case "Use a different username and password": conn.GatewayCredentials = "different" @@ -509,8 +590,31 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { folderSelect := widget.NewSelect(folderNames, nil) folderSelect.SetSelected(currentFolder) - // RDP Gateway widgets - useGatewayCheck := widget.NewCheck("Use RDP Gateway", nil) + // RDP-specific widgets + authLevelSelect := widget.NewSelect([]string{"Always connect, even if authentication fails", "Don't connect if authentication fails", "Warn me if authentication fails"}, nil) + switch conn.RDPAuthenticationLevel { + case "fail": + authLevelSelect.SetSelected("Don't connect if authentication fails") + case "warn": + authLevelSelect.SetSelected("Warn me if authentication fails") + default: + authLevelSelect.SetSelected("Always connect, even if authentication fails") + } + authLevelLabel := widget.NewLabelWithStyle("Auth Level", fyne.TextAlignTrailing, fyne.TextStyle{}) + + useCredSSPCheck := widget.NewCheck("Use CredSSP", nil) + useCredSSPCheck.SetChecked(conn.UseCredSSP) + credSSPLabel := widget.NewLabel("") + + if conn.Protocol != "rdp" { + authLevelLabel.Hide() + authLevelSelect.Hide() + credSSPLabel.Hide() + useCredSSPCheck.Hide() + } + + // RD Gateway widgets + useGatewayCheck := widget.NewCheck("Use RD Gateway", nil) useGatewayCheck.SetChecked(conn.UseGateway) gatewayUsageSelect := widget.NewSelect([]string{"Never", "Always", "Detect"}, nil) @@ -553,12 +657,24 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { gatewayDomainEntry.SetPlaceHolder("gateway domain") gatewayDomainEntry.SetText(conn.GatewayDomain) + gatewayProfileSelect := widget.NewSelect([]string{"Use settings from this connection", "Use system default gateway profile"}, nil) + if conn.GatewayProfileUsageMethod == "default" { + gatewayProfileSelect.SetSelected("Use system default gateway profile") + } else { + gatewayProfileSelect.SetSelected("Use settings from this connection") + } + + gatewayBypassLocalCheck := widget.NewCheck("Bypass gateway for local addresses", nil) + gatewayBypassLocalCheck.SetChecked(conn.GatewayBypassIfLocal) + gatewayUsageLabel := widget.NewLabelWithStyle("Gateway Usage", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayHostnameLabel := widget.NewLabelWithStyle("Gateway Hostname", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayCredentialsLabel := widget.NewLabelWithStyle("Gateway Credentials", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayUsernameLabel := widget.NewLabelWithStyle("Gateway Username", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayPasswordLabel := widget.NewLabelWithStyle("Gateway Password", fyne.TextAlignTrailing, fyne.TextStyle{}) gatewayDomainLabel := widget.NewLabelWithStyle("Gateway Domain", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayProfileLabel := widget.NewLabelWithStyle("Gateway Profile", fyne.TextAlignTrailing, fyne.TextStyle{}) + gatewayBypassLocalLabel := widget.NewLabel("") // Set initial gateway row visibility if !conn.UseGateway { @@ -574,6 +690,10 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { gatewayPasswordEntry.Hide() gatewayDomainLabel.Hide() gatewayDomainEntry.Hide() + gatewayProfileLabel.Hide() + gatewayProfileSelect.Hide() + gatewayBypassLocalLabel.Hide() + gatewayBypassLocalCheck.Hide() } else if conn.GatewayCredentials != "different" { gatewayUsernameLabel.Hide() gatewayUsernameEntry.Hide() @@ -601,13 +721,24 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { var formContainer *fyne.Container hideAllGatewayRows := func() { - gatewayCheckLabel.Hide(); useGatewayCheck.Hide() - gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() - gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() - gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() - gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() - gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() - gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + gatewayCheckLabel.Hide() + useGatewayCheck.Hide() + gatewayUsageLabel.Hide() + gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide() + gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide() + gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + gatewayProfileLabel.Hide() + gatewayProfileSelect.Hide() + gatewayBypassLocalLabel.Hide() + gatewayBypassLocalCheck.Hide() } storeTo1PasswordCheck.OnChanged = func(checked bool) { @@ -646,17 +777,34 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { useGatewayCheck.OnChanged = func(checked bool) { if checked { - gatewayUsageLabel.Show(); gatewayUsageSelect.Show() - gatewayHostnameLabel.Show(); gatewayHostnameEntry.Show() - gatewayCredentialsLabel.Show(); gatewayCredentialsSelect.Show() + gatewayUsageLabel.Show() + gatewayUsageSelect.Show() + gatewayHostnameLabel.Show() + gatewayHostnameEntry.Show() + gatewayCredentialsLabel.Show() + gatewayCredentialsSelect.Show() + gatewayProfileLabel.Show() + gatewayProfileSelect.Show() + gatewayBypassLocalLabel.Show() + gatewayBypassLocalCheck.Show() showGatewayDifferentCreds(gatewayCredentialsSelect.Selected == "Use a different username and password") } else { - gatewayUsageLabel.Hide(); gatewayUsageSelect.Hide() - gatewayHostnameLabel.Hide(); gatewayHostnameEntry.Hide() - gatewayCredentialsLabel.Hide(); gatewayCredentialsSelect.Hide() - gatewayUsernameLabel.Hide(); gatewayUsernameEntry.Hide() - gatewayPasswordLabel.Hide(); gatewayPasswordEntry.Hide() - gatewayDomainLabel.Hide(); gatewayDomainEntry.Hide() + gatewayUsageLabel.Hide() + gatewayUsageSelect.Hide() + gatewayHostnameLabel.Hide() + gatewayHostnameEntry.Hide() + gatewayCredentialsLabel.Hide() + gatewayCredentialsSelect.Hide() + gatewayUsernameLabel.Hide() + gatewayUsernameEntry.Hide() + gatewayPasswordLabel.Hide() + gatewayPasswordEntry.Hide() + gatewayDomainLabel.Hide() + gatewayDomainEntry.Hide() + gatewayProfileLabel.Hide() + gatewayProfileSelect.Hide() + gatewayBypassLocalLabel.Hide() + gatewayBypassLocalCheck.Hide() } formContainer.Refresh() } @@ -665,9 +813,17 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { if selected == "rdp" { gatewayCheckLabel.Show() useGatewayCheck.Show() + authLevelLabel.Show() + authLevelSelect.Show() + credSSPLabel.Show() + useCredSSPCheck.Show() } else { hideAllGatewayRows() useGatewayCheck.SetChecked(false) + authLevelLabel.Hide() + authLevelSelect.Hide() + credSSPLabel.Hide() + useCredSSPCheck.Hide() } formContainer.Refresh() } @@ -683,6 +839,8 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { widget.NewLabelWithStyle("Domain", fyne.TextAlignTrailing, fyne.TextStyle{}), domainEntry, widget.NewLabelWithStyle("Description", fyne.TextAlignTrailing, fyne.TextStyle{}), descriptionEntry, widget.NewLabelWithStyle("Folder", fyne.TextAlignTrailing, fyne.TextStyle{}), folderSelect, + authLevelLabel, authLevelSelect, + credSSPLabel, useCredSSPCheck, gatewayCheckLabel, useGatewayCheck, gatewayUsageLabel, gatewayUsageSelect, gatewayHostnameLabel, gatewayHostnameEntry, @@ -690,6 +848,8 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { gatewayUsernameLabel, gatewayUsernameEntry, gatewayPasswordLabel, gatewayPasswordEntry, gatewayDomainLabel, gatewayDomainEntry, + gatewayProfileLabel, gatewayProfileSelect, + gatewayBypassLocalLabel, gatewayBypassLocalCheck, widget.NewLabel(""), storeTo1PasswordCheck, vaultLabel, vaultSelect, ) @@ -722,6 +882,18 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { conn.Description = descriptionEntry.Text conn.Modified = time.Now().Format(time.RFC3339) + if conn.Protocol == models.ProtocolRDP { + conn.UseCredSSP = useCredSSPCheck.Checked + switch authLevelSelect.Selected { + case "Don't connect if authentication fails": + conn.RDPAuthenticationLevel = "fail" + case "Warn me if authentication fails": + conn.RDPAuthenticationLevel = "warn" + default: + conn.RDPAuthenticationLevel = "always" + } + } + conn.UseGateway = useGatewayCheck.Checked if conn.UseGateway { conn.GatewayHostname = gatewayHostnameEntry.Text @@ -733,6 +905,12 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { default: conn.GatewayUsageMethod = "always" } + if gatewayProfileSelect.Selected == "Use system default gateway profile" { + conn.GatewayProfileUsageMethod = "default" + } else { + conn.GatewayProfileUsageMethod = "explicit" + } + conn.GatewayBypassIfLocal = gatewayBypassLocalCheck.Checked switch gatewayCredentialsSelect.Selected { case "Use a different username and password": conn.GatewayCredentials = "different" @@ -765,6 +943,8 @@ func (w *MainWindow) showEditConnectionDialog(conn *models.Connection) { conn.GatewayUsername = "" conn.GatewayPassword = "" conn.GatewayDomain = "" + conn.GatewayProfileUsageMethod = "" + conn.GatewayBypassIfLocal = false } if port, err := strconv.Atoi(portEntry.Text); err == nil { diff --git a/internal/gui/mainwindow.go b/internal/gui/mainwindow.go index 0b707cc..0fdbad2 100644 --- a/internal/gui/mainwindow.go +++ b/internal/gui/mainwindow.go @@ -358,8 +358,30 @@ func (w *MainWindow) updateDetailsPanel(conn *models.Connection) { // Add action buttons details.Add(widget.NewLabel("")) - connectBtn := widget.NewButton("🚀 Connect", func() { - w.connectToConnection(conn) + + statusContainer := container.NewVBox() + var connectBtn *widget.Button + + connectBtn = widget.NewButton("🚀 Connect", func() { + connectBtn.Disable() + statusContainer.RemoveAll() + statusContainer.Add(widget.NewProgressBarInfinite()) + statusContainer.Refresh() + + go func() { + err := w.launcher.Launch(conn) + w.window.Canvas().Content().Refresh() + + if err != nil { + dialog.ShowError(fmt.Errorf("Failed to launch connection: %w", err), w.window) + } else { + dialog.ShowInformation("Connected", fmt.Sprintf("Launched connection to %s", conn.Name), w.window) + } + + connectBtn.Enable() + statusContainer.RemoveAll() + statusContainer.Refresh() + }() }) connectBtn.Importance = widget.HighImportance @@ -374,6 +396,7 @@ func (w *MainWindow) updateDetailsPanel(conn *models.Connection) { actionButtons := container.NewGridWithColumns(3, connectBtn, editBtn, deleteBtn) details.Add(actionButtons) + details.Add(statusContainer) w.detailsCard.SetContent(details) } @@ -583,18 +606,20 @@ func (w *MainWindow) check1PasswordAuth() { return } - // Check if 1Password CLI is authenticated + // Only verify that the CLI is present in PATH. Running `op whoami` to + // check the live authentication status spawns a visible console window + // on Windows for ~2s at startup. Authentication errors surface when a + // reference is actually resolved in the launcher. opProvider := w.launcher.GetOnePasswordProvider() - if opProvider.IsEnabled() && !opProvider.IsAuthenticated() { - // Show a helpful dialog - content := widget.NewLabel(opProvider.GetAuthenticationInstructions()) + if !opProvider.IsEnabled() { + content := widget.NewLabel("Your connections use 1Password references (op://...) but the 1Password CLI (op) was not found in PATH. Install it and ensure it is on your PATH.") content.Wrapping = fyne.TextWrapWord scrollContainer := container.NewVScroll(content) - scrollContainer.SetMinSize(fyne.NewSize(600, 400)) + scrollContainer.SetMinSize(fyne.NewSize(600, 200)) dialog.ShowCustom( - "1Password CLI Not Authenticated", + "1Password CLI Not Installed", "OK", scrollContainer, w.window, diff --git a/internal/launcher/launcher.go b/internal/launcher/launcher.go index f269d4b..4abf0df 100644 --- a/internal/launcher/launcher.go +++ b/internal/launcher/launcher.go @@ -552,9 +552,27 @@ func (l *Launcher) createRDPFile(conn *models.Connection, target string) (string rdpContent += "redirectclipboard:i:1\r\n" rdpContent += "redirectposdevices:i:0\r\n" rdpContent += "autoreconnection enabled:i:1\r\n" - rdpContent += "authentication level:i:2\r\n" - rdpContent += "prompt for credentials:i:0\r\n" + + // Authentication level: 0 = always connect, 1 = don't connect on failure, 2 = warn + authLevel := 0 + switch conn.RDPAuthenticationLevel { + case "fail": + authLevel = 1 + case "warn": + authLevel = 2 + } + rdpContent += fmt.Sprintf("authentication level:i:%d\r\n", authLevel) + + rdpContent += "prompt for credentials:i:1\r\n" rdpContent += "negotiate security layer:i:1\r\n" + + // Use CredSSP + credSSP := 1 + if !conn.UseCredSSP { + credSSP = 0 + } + rdpContent += fmt.Sprintf("use cred ssp:i:%d\r\n", credSSP) + rdpContent += "remoteapplicationmode:i:0\r\n" rdpContent += "alternate shell:s:\r\n" rdpContent += "shell working directory:s:\r\n" @@ -590,13 +608,27 @@ func (l *Launcher) createRDPFile(conn *models.Connection, target string) (string rdpContent += "gatewayusagemethod:i:4\r\n" rdpContent += "gatewaycredentialssource:i:4\r\n" } - rdpContent += "gatewayprofileusagemethod:i:0\r\n" - rdpContent += "promptcredentialonce:i:0\r\n" + + // Gateway profile usage method: 0 = use default profile, 1 = use explicit settings (default) + profileMethod := 1 + if conn.GatewayProfileUsageMethod == "default" { + profileMethod = 0 + } + rdpContent += fmt.Sprintf("gatewayprofileusagemethod:i:%d\r\n", profileMethod) + + rdpContent += "promptcredentialonce:i:1\r\n" rdpContent += "gatewaybrokeringtype:i:0\r\n" - rdpContent += "use redirection server name:i:0\r\n" + rdpContent += "use redirection server name:i:1\r\n" rdpContent += "rdgiskdcproxy:i:0\r\n" rdpContent += "kdcproxyname:s:\r\n" + // Bypass gateway for local addresses + bypassLocal := 0 + if conn.GatewayBypassIfLocal { + bypassLocal = 1 + } + rdpContent += fmt.Sprintf("gatewayisbypassiflocal:i:%d\r\n", bypassLocal) + // Resolution settings if conn.Resolution != "" { // Parse resolution like "1920x1080" @@ -661,7 +693,7 @@ func (l *Launcher) storeWindowsCredential(conn *models.Connection) error { return writeWindowsCredential("TERMSRV/"+target, username, conn.Password) } -// storeGatewayCredential stores RDP Gateway credentials in Windows Credential Manager +// storeGatewayCredential stores RD Gateway credentials in Windows Credential Manager func (l *Launcher) storeGatewayCredential(conn *models.Connection) error { if runtime.GOOS != "windows" { return nil diff --git a/internal/secrets/onepassword.go b/internal/secrets/onepassword.go index 94867fd..94e92f4 100644 --- a/internal/secrets/onepassword.go +++ b/internal/secrets/onepassword.go @@ -21,9 +21,8 @@ func NewOnePasswordProvider() *OnePasswordProvider { // isOnePasswordCLIAvailable checks if the 1Password CLI (op) is installed func isOnePasswordCLIAvailable() bool { - cmd := exec.Command("op", "--version") - hideConsoleWindow(cmd) - return cmd.Run() == nil + _, err := exec.LookPath("op") + return err == nil } // IsEnabled returns whether 1Password CLI is available diff --git a/pkg/models/connection.go b/pkg/models/connection.go index 092ede8..4b970d8 100644 --- a/pkg/models/connection.go +++ b/pkg/models/connection.go @@ -35,19 +35,22 @@ type Connection struct { Children []*Connection `yaml:"children,omitempty"` // Advanced options - UseCredSSP bool `yaml:"use_credssp,omitempty"` - ColorDepth int `yaml:"color_depth,omitempty"` // For RDP - Resolution string `yaml:"resolution,omitempty"` // For RDP - ExtraArgs string `yaml:"extra_args,omitempty"` // Additional protocol-specific args - - // RDP Gateway options (RDP only) - UseGateway bool `yaml:"use_gateway,omitempty"` - GatewayUsageMethod string `yaml:"gateway_usage_method,omitempty"` // "never", "always", "detect" - GatewayHostname string `yaml:"gateway_hostname,omitempty"` - GatewayCredentials string `yaml:"gateway_credentials,omitempty"` // "same", "different", "smartcard" - GatewayUsername string `yaml:"gateway_username,omitempty"` - GatewayPassword string `yaml:"gateway_password,omitempty"` - GatewayDomain string `yaml:"gateway_domain,omitempty"` + UseCredSSP bool `yaml:"use_credssp,omitempty"` + RDPAuthenticationLevel string `yaml:"rdp_authentication_level,omitempty"` // "none", "prompt", "required" + ColorDepth int `yaml:"color_depth,omitempty"` // For RDP + Resolution string `yaml:"resolution,omitempty"` // For RDP + ExtraArgs string `yaml:"extra_args,omitempty"` // Additional protocol-specific args + + // RD Gateway options (RDP only) + UseGateway bool `yaml:"use_gateway,omitempty"` + GatewayUsageMethod string `yaml:"gateway_usage_method,omitempty"` // "never", "always", "detect" + GatewayHostname string `yaml:"gateway_hostname,omitempty"` + GatewayCredentials string `yaml:"gateway_credentials,omitempty"` // "same", "different", "smartcard" + GatewayUsername string `yaml:"gateway_username,omitempty"` + GatewayPassword string `yaml:"gateway_password,omitempty"` + GatewayDomain string `yaml:"gateway_domain,omitempty"` + GatewayProfileUsageMethod string `yaml:"gateway_profile_usage_method,omitempty"` // "default", "explicit" + GatewayBypassIfLocal bool `yaml:"gateway_bypass_if_local,omitempty"` // Metadata Tags []string `yaml:"tags,omitempty"` @@ -127,29 +130,32 @@ func (c *Connection) DeepCopy() *Connection { } connCopy := &Connection{ - Name: c.Name, - Type: c.Type, - Protocol: c.Protocol, - Host: c.Host, - Port: c.Port, - Username: c.Username, - Password: c.Password, - Domain: c.Domain, - Description: c.Description, - UseCredSSP: c.UseCredSSP, - ColorDepth: c.ColorDepth, - Resolution: c.Resolution, - ExtraArgs: c.ExtraArgs, - UseGateway: c.UseGateway, - GatewayUsageMethod: c.GatewayUsageMethod, - GatewayHostname: c.GatewayHostname, - GatewayCredentials: c.GatewayCredentials, - GatewayUsername: c.GatewayUsername, - GatewayPassword: c.GatewayPassword, - GatewayDomain: c.GatewayDomain, - Notes: c.Notes, - Created: c.Created, - Modified: c.Modified, + Name: c.Name, + Type: c.Type, + Protocol: c.Protocol, + Host: c.Host, + Port: c.Port, + Username: c.Username, + Password: c.Password, + Domain: c.Domain, + Description: c.Description, + UseCredSSP: c.UseCredSSP, + RDPAuthenticationLevel: c.RDPAuthenticationLevel, + ColorDepth: c.ColorDepth, + Resolution: c.Resolution, + ExtraArgs: c.ExtraArgs, + UseGateway: c.UseGateway, + GatewayUsageMethod: c.GatewayUsageMethod, + GatewayHostname: c.GatewayHostname, + GatewayCredentials: c.GatewayCredentials, + GatewayUsername: c.GatewayUsername, + GatewayPassword: c.GatewayPassword, + GatewayDomain: c.GatewayDomain, + GatewayProfileUsageMethod: c.GatewayProfileUsageMethod, + GatewayBypassIfLocal: c.GatewayBypassIfLocal, + Notes: c.Notes, + Created: c.Created, + Modified: c.Modified, } // Deep copy tags diff --git a/temp/.claude/settings.local.json b/temp/.claude/settings.local.json new file mode 100644 index 0000000..7bdcf00 --- /dev/null +++ b/temp/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Read(//c/github/jaydenthorup/mremotego/**)", + "Bash(go build *)", + "Bash(go *)" + ] + } +} diff --git a/temp/ART1WV-DB002 org.rdp b/temp/ART1WV-DB002 org.rdp new file mode 100644 index 0000000..80b5188 --- /dev/null +++ b/temp/ART1WV-DB002 org.rdp @@ -0,0 +1,46 @@ +full address:s:ART1WV-DB002 +username:s:ambitionIT2@arte.local +screen mode id:i:2 +use multimon:i:0 +session bpp:i:32 +compression:i:1 +keyboardhook:i:2 +audiocapturemode:i:0 +videoplaybackmode:i:1 +connection type:i:7 +networkautodetect:i:1 +bandwidthautodetect:i:1 +displayconnectionbar:i:1 +enableworkspacereconnect:i:0 +disable wallpaper:i:0 +allow font smoothing:i:1 +allow desktop composition:i:1 +disable full window drag:i:0 +disable menu anims:i:0 +disable themes:i:0 +disable cursor setting:i:0 +bitmapcachepersistenable:i:1 +audiomode:i:0 +redirectprinters:i:0 +redirectcomports:i:0 +redirectsmartcards:i:0 +redirectclipboard:i:1 +redirectposdevices:i:0 +autoreconnection enabled:i:1 +authentication level:i:2 +prompt for credentials:i:0 +negotiate security layer:i:1 +remoteapplicationmode:i:0 +alternate shell:s: +shell working directory:s: +gatewayhostname:s://rdg.artegroep.nl +gatewayusagemethod:i:2 +gatewaycredentialssource:i:4 +gatewayprofileusagemethod:i:0 +promptcredentialonce:i:1 +gatewaybrokeringtype:i:0 +use redirection server name:i:0 +rdgiskdcproxy:i:0 +kdcproxyname:s: +smart sizing:i:1 +gatewayisbypassiflocal:i:1 \ No newline at end of file diff --git a/temp/ART1WV-DB002 working.rdp b/temp/ART1WV-DB002 working.rdp new file mode 100644 index 0000000..944a606 --- /dev/null +++ b/temp/ART1WV-DB002 working.rdp @@ -0,0 +1,48 @@ +full address:s:ART1WV-DB002 +username:s:AmbitionIT2@arte.local +screen mode id:i:2 +use multimon:i:0 +session bpp:i:32 +compression:i:1 +keyboardhook:i:2 +audiocapturemode:i:0 +videoplaybackmode:i:1 +connection type:i:7 +networkautodetect:i:1 +bandwidthautodetect:i:1 +displayconnectionbar:i:1 +enableworkspacereconnect:i:0 +disable wallpaper:i:0 +allow font smoothing:i:1 +allow desktop composition:i:1 +disable full window drag:i:0 +disable menu anims:i:0 +disable themes:i:0 +disable cursor setting:i:0 +bitmapcachepersistenable:i:1 +audiomode:i:0 +redirectprinters:i:0 +redirectcomports:i:0 +redirectsmartcards:i:0 +redirectclipboard:i:1 +redirectposdevices:i:0 +autoreconnection enabled:i:1 +authentication level:i:0 +prompt for credentials:i:1 +negotiate security layer:i:1 +use cred ssp:i:1 +remoteapplicationmode:i:0 +alternate shell:s: +shell working directory:s: +gatewayhostname:s:rdg.artegroep.nl +gatewayusagemethod:i:1 +gatewaycredentialssource:i:0 +gatewayprofileusagemethod:i:1 +promptcredentialonce:i:1 +gatewaybrokeringtype:i:0 +use redirection server name:i:1 +rdgiskdcproxy:i:0 +kdcproxyname:s: +smart sizing:i:1 +gatewayisbypassiflocal:i:0 +password:s: \ No newline at end of file diff --git a/temp/ART1WV-DB002-minimal.rdp b/temp/ART1WV-DB002-minimal.rdp new file mode 100644 index 0000000..5e66b4e --- /dev/null +++ b/temp/ART1WV-DB002-minimal.rdp @@ -0,0 +1,8 @@ +full address:s:ART1WV-DB002 +gatewayhostname:s:rdg.artegroep.nl +gatewayusagemethod:i:1 +gatewaycredentialssource:i:0 +gatewayprofileusagemethod:i:0 +username:s:AmbitionIT2@arte.local +authentication level:i:0 +prompt for credentials:i:1 diff --git a/temp/ART1WV-DB002.rdp b/temp/ART1WV-DB002.rdp new file mode 100644 index 0000000..944a606 --- /dev/null +++ b/temp/ART1WV-DB002.rdp @@ -0,0 +1,48 @@ +full address:s:ART1WV-DB002 +username:s:AmbitionIT2@arte.local +screen mode id:i:2 +use multimon:i:0 +session bpp:i:32 +compression:i:1 +keyboardhook:i:2 +audiocapturemode:i:0 +videoplaybackmode:i:1 +connection type:i:7 +networkautodetect:i:1 +bandwidthautodetect:i:1 +displayconnectionbar:i:1 +enableworkspacereconnect:i:0 +disable wallpaper:i:0 +allow font smoothing:i:1 +allow desktop composition:i:1 +disable full window drag:i:0 +disable menu anims:i:0 +disable themes:i:0 +disable cursor setting:i:0 +bitmapcachepersistenable:i:1 +audiomode:i:0 +redirectprinters:i:0 +redirectcomports:i:0 +redirectsmartcards:i:0 +redirectclipboard:i:1 +redirectposdevices:i:0 +autoreconnection enabled:i:1 +authentication level:i:0 +prompt for credentials:i:1 +negotiate security layer:i:1 +use cred ssp:i:1 +remoteapplicationmode:i:0 +alternate shell:s: +shell working directory:s: +gatewayhostname:s:rdg.artegroep.nl +gatewayusagemethod:i:1 +gatewaycredentialssource:i:0 +gatewayprofileusagemethod:i:1 +promptcredentialonce:i:1 +gatewaybrokeringtype:i:0 +use redirection server name:i:1 +rdgiskdcproxy:i:0 +kdcproxyname:s: +smart sizing:i:1 +gatewayisbypassiflocal:i:0 +password:s: \ No newline at end of file diff --git a/temp/ART1WV-DB002.xml b/temp/ART1WV-DB002.xml new file mode 100644 index 0000000..a6071ec --- /dev/null +++ b/temp/ART1WV-DB002.xml @@ -0,0 +1,31 @@ + + + + \ No newline at end of file diff --git a/temp/Recording 2026-04-21 132654.mp4 b/temp/Recording 2026-04-21 132654.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1c5387002cd7291f342980d3122324f3bd804b50 GIT binary patch literal 4855148 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