aboutsummaryrefslogtreecommitdiffstats
path: root/community/keepassxc-proxy-static/keepassxc-proxy-install.in
diff options
context:
space:
mode:
Diffstat (limited to 'community/keepassxc-proxy-static/keepassxc-proxy-install.in')
-rw-r--r--community/keepassxc-proxy-static/keepassxc-proxy-install.in100
1 files changed, 100 insertions, 0 deletions
diff --git a/community/keepassxc-proxy-static/keepassxc-proxy-install.in b/community/keepassxc-proxy-static/keepassxc-proxy-install.in
new file mode 100644
index 00000000000..12f4fc0d740
--- /dev/null
+++ b/community/keepassxc-proxy-static/keepassxc-proxy-install.in
@@ -0,0 +1,100 @@
+#!/bin/sh
+set -eu
+
+readonly PROGNAME=${0##*/}
+readonly VERSION=@@VERSION@@
+
+readonly PROXY_BIN='/usr/libexec/keepassxc-proxy.static'
+
+readonly NAME='org.keepassxc.keepassxc_browser'
+readonly DESTDIR_FIREFOX='.var/app/org.mozilla.firefox/.mozilla/native-messaging-hosts'
+readonly DESTDIR_CHROMIUM='.var/app/org.chromium.Chromium/.config/chromium/NativeMessagingHosts'
+
+
+help() {
+ cat <<-EOF
+ Usage:
+ $PROGNAME [options] <browser>
+
+ Install proxy between Native Messaging browser extension and KeePassXC
+ to your browser.
+
+ The default <destdir> locations correspond to Flatpak applications:
+
+ firefox: ~/$DESTDIR_FIREFOX
+ chromium: ~/$DESTDIR_CHROMIUM
+
+ TIP: You will also need to expose KeePassXC's BrowserServer socket to
+ the Flatpak application:
+
+ flatpak override --filesystem=xdg-run/org.keepassxc.KeePassXC.BrowserServer:ro <app-id>
+
+ Arguments:
+ <browser> One of "firefox" (default), or "chromium".
+
+ Options:
+ -d <destdir> Override location of the native-messaging-hosts directory
+ (defaults are listed above).
+ -q Be quiet.
+ -V Print keepassxc-proxy version and exit.
+ -h Show this message and exit.
+ EOF
+}
+
+die() {
+ printf "$PROGNAME: %s\n" "$1"
+ exit 1
+}
+
+gen_manifest() {
+ cat <<-EOF
+ {
+ "name": "$NAME",
+ "description": "KeePassXC integration with native messaging support, workaround for flatpaked Firefox, see https://is.gd/flatpakFirefoxKPXC",
+ "path": "$DESTDIR/keepassxc-proxy",
+ "type": "stdio",
+ EOF
+ case "$BROWSER" in
+ firefox) cat <<-EOF
+ "allowed_extensions": [
+ "keepassxc-browser@keepassxc.org"
+ ]
+ EOF
+ ;;
+ *) cat <<-EOF
+ "allowed_origins": [
+ "chrome-extension://oboonakemofpalcgghocfoadofidjkkk/"
+ ]
+ EOF
+ ;;
+ esac
+ echo '}'
+}
+
+BROWSER=firefox
+DESTDIR=
+QUIET=false
+while getopts ':d:qVh' OPT; do
+ case "$OPT" in
+ d) DESTDIR=$OPTARG;;
+ q) QUIET=true;;
+ V) echo "keepassxc-proxy-rust $VERSION"; exit 0;;
+ h) help; exit 0;;
+ \?) die "unknown option: -$OPTARG";;
+ esac
+done
+shift $((OPTIND - 1))
+
+[ $# -eq 1 ] || die "invalid number of arguments, see '$PROGNAME -h'"
+BROWSER=$1
+
+[ "$DESTDIR" ] || case "$BROWSER" in
+ firefox) DESTDIR="$HOME/$DESTDIR_FIREFOX";;
+ chromium) DESTDIR="$HOME/$DESTDIR_CHROMIUM";;
+ *) die "unsupported browser: $BROWSER";;
+esac
+
+$QUIET || echo "Installing keepassxc-proxy for $BROWSER to $DESTDIR" >&2
+
+install -D -m755 "$PROXY_BIN" "$DESTDIR"/keepassxc-proxy
+gen_manifest > "$DESTDIR/$NAME.json"