From cc7088c75425851e77fca72023300d412df6fb04 Mon Sep 17 00:00:00 2001 From: crschnick Date: Wed, 30 Jul 2025 18:27:42 +0000 Subject: [PATCH] Password manager fixes --- .../app/pwman/BitwardenPasswordManager.java | 3 ++- .../xpipe/app/pwman/OnePasswordManager.java | 26 ++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java index 11a3f35fe..4d30891c0 100644 --- a/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/BitwardenPasswordManager.java @@ -43,7 +43,8 @@ public class BitwardenPasswordManager implements PasswordManager { if (r[1].contains("You are not logged in")) { var script = ShellScript.lines( sc.getShellDialect().getEchoCommand("Log in into your Bitwarden account from the CLI:", false), - "bw login"); + "bw login", + sc.getShellDialect().getPauseCommand()); TerminalLauncher.openDirect("Bitwarden login", script); return null; } diff --git a/app/src/main/java/io/xpipe/app/pwman/OnePasswordManager.java b/app/src/main/java/io/xpipe/app/pwman/OnePasswordManager.java index 8ee6c57eb..b563ea5f1 100644 --- a/app/src/main/java/io/xpipe/app/pwman/OnePasswordManager.java +++ b/app/src/main/java/io/xpipe/app/pwman/OnePasswordManager.java @@ -11,6 +11,8 @@ import io.xpipe.core.JacksonMapper; import com.fasterxml.jackson.annotation.JsonTypeName; +import java.util.regex.Pattern; + @JsonTypeName("onePassword") public class OnePasswordManager implements PasswordManager { @@ -36,12 +38,28 @@ public class OnePasswordManager implements PasswordManager { return null; } + String vault = null; + String name = key; + + if (key.startsWith("op://")) { + var match = Pattern.compile("op://(\\w+)/(\\w+)").matcher(key); + if (match.find()) { + vault = match.group(1); + name = match.group(2); + } + } + try { + var b = CommandBuilder.of() + .add("op", "item", "get") + .addLiteral(name) + .add("--format", "json", "--fields", "username,password"); + if (vault != null) { + b.add("--vault").addLiteral(vault); + } + var r = getOrStartShell() - .command(CommandBuilder.of() - .add("op", "item", "get") - .addLiteral(key) - .add("--format", "json", "--fields", "username,password")) + .command(b) .sensitive() .readStdoutOrThrow(); var tree = JacksonMapper.getDefault().readTree(r);