From 2ef571c241d6544a6ccf6dcb017f932c875bd1b3 Mon Sep 17 00:00:00 2001 From: Joe Julian Date: Sat, 11 Apr 2026 08:26:37 -0700 Subject: [PATCH] Use runtime-dir Unix sockets for local gRPC --- README.md | 3 ++ browser/extension/README.md | 4 +- browser/extension/background.js | 4 +- browser/extension/manifest.firefox.json | 2 +- browser/extension/options.html | 2 +- browser/extension/options.js | 2 +- cmd/keepassgo-browser-bridge/main.go | 26 +++++++++- docs/browser-extension.md | 26 ++++++++-- internal/api/host.go | 53 ++++++++++++++++++-- internal/api/host_test.go | 43 +++++++++++++++- internal/appui/runtime.go | 6 +-- internal/browserbridge/bridge.go | 37 ++++++++++++-- internal/browserbridge/bridge_test.go | 34 +++++++++++++ internal/browserbridge/client.go | 19 +++++-- internal/grpcaddr/addr.go | 66 +++++++++++++++++++++++++ internal/grpcaddr/addr_test.go | 48 ++++++++++++++++++ 16 files changed, 346 insertions(+), 29 deletions(-) create mode 100644 internal/grpcaddr/addr.go create mode 100644 internal/grpcaddr/addr_test.go diff --git a/README.md b/README.md index 19fe7c0..a84c875 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,9 @@ You will need the Android SDK and NDK installed and configured for real device o Desktop automation is resolved through the secure gRPC API rather than synthetic auto-type. See [`docs/desktop-automation.md`](./docs/desktop-automation.md). +On desktop, KeePassGO now listens on a Unix socket by default under the user runtime directory. +Set `KEEPASSGO_GRPC_ADDR` or `-grpc-addr` to override it, for example `tcp://127.0.0.1:47777`. + ## Browser Extension Firefox and Chromium browser integration is available through the local gRPC API plus a native messaging bridge. diff --git a/browser/extension/README.md b/browser/extension/README.md index fbd3f03..0da7df8 100644 --- a/browser/extension/README.md +++ b/browser/extension/README.md @@ -2,9 +2,9 @@ Shared extension assets for Firefox and Chromium-based browsers live here. -- `manifest.firefox.json` uses the fixed Firefox extension id `browser@keepassgo.invalid` +- `manifest.firefox.json` uses the fixed Firefox extension id `browser@keepassgo.com` - `manifest.chromium.json` is the Chromium/Chrome manifest template -- `background.js` talks to the native messaging host `org.keepassgo.browser` +- `background.js` talks to the native messaging host `com.keepassgo.browser` - `content.js` fills username and password fields on the current page - `options.html` stores the local gRPC address and API token in browser extension storage diff --git a/browser/extension/background.js b/browser/extension/background.js index 07e0a76..d77862f 100644 --- a/browser/extension/background.js +++ b/browser/extension/background.js @@ -1,7 +1,7 @@ const ext = globalThis.browser ?? globalThis.chrome; -const nativeHost = "org.keepassgo.browser"; +const nativeHost = "com.keepassgo.browser"; const defaultSettings = { - grpcAddress: "127.0.0.1:47777", + grpcAddress: "", bearerToken: "" }; diff --git a/browser/extension/manifest.firefox.json b/browser/extension/manifest.firefox.json index ea23659..2632fb5 100644 --- a/browser/extension/manifest.firefox.json +++ b/browser/extension/manifest.firefox.json @@ -25,7 +25,7 @@ ], "browser_specific_settings": { "gecko": { - "id": "browser@keepassgo.invalid" + "id": "browser@keepassgo.com" } } } diff --git a/browser/extension/options.html b/browser/extension/options.html index a1f1246..d1b0b6e 100644 --- a/browser/extension/options.html +++ b/browser/extension/options.html @@ -17,7 +17,7 @@