diff --git a/build/Dockerfile b/build/Dockerfile index 4ce186e..9293111 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -18,20 +18,14 @@ FROM alpine:latest EXPOSE 1025/tcp EXPOSE 1143/tcp -RUN mkdir -p /root/.gnupg && chmod 700 /root/.gnupg - # Install dependencies and protonmail bridge RUN apk add --no-cache \ gcompat \ - libsecret \ - libfido2 \ gnupg \ pass \ - ca-certificates \ - dbus \ - dbus-x11 \ - gnome-keyring \ - haveged + libsecret \ + libfido2 \ + ca-certificates # Copy bash scripts COPY gpgparams entrypoint.sh /protonmail/ diff --git a/build/entrypoint.sh b/build/entrypoint.sh index 160b7ca..93584e6 100644 --- a/build/entrypoint.sh +++ b/build/entrypoint.sh @@ -1,36 +1,37 @@ -#!/bin/bash -set -ex +#!/bin/sh +set -e -# start entropy -haveged -w 1024 & +mkdir -p /root/.gnupg +chmod 700 /root/.gnupg -# start dbus -eval $(dbus-launch --sh-syntax) +# Initialize pass store if missing +if [ ! -d "/root/.password-store" ]; then + echo "Initializing password store..." -# start secret service -export $(gnome-keyring-daemon --start --components=secrets) + # Generate GPG key + gpg --batch --gen-key /protonmail/gpgparams -chmod 700 /root/.gnupg || true + # Extract fingerprint + KEY=$(gpg --list-secret-keys --with-colons | awk -F: '/^sec:/ {print $5; exit}') + + # Initialize pass + pass init "$KEY" +fi # Initialize -if [[ $1 == init ]]; then - gpg --generate-key --batch /protonmail/gpgparams +if [[ "$1" == "init" ]]; then + # Kill the other instance as only one can be running at a time. + # This allows users to run entrypoint init inside a running conainter + # which is useful in a k8s environment. + # || true to make sure this would not fail in case there is no running instance. + pkill protonmail-bridge || true - KEY=$(gpg --list-secret-keys --with-colons | awk -F: '/^sec:/ {print $5; exit}') - pass init "$KEY" - - # Kill the other instance as only one can be running at a time. - # This allows users to run entrypoint init inside a running conainter - # which is useful in a k8s environment. - # || true to make sure this would not fail in case there is no running instance. - pkill protonmail-bridge || true - - # Run any ProtonMail Bridge Command - Login - proton-bridge --cli $@ + # Run any ProtonMail Bridge Command - Login + proton-bridge --cli "$@" else - # Start ProtonMail Bridge - # Fake a terminal, so it does not quit because of EOF... - rm -f faketty - mkfifo faketty - cat faketty | proton-bridge --cli $@ + # Start ProtonMail Bridge + # Fake a terminal, so it does not quit because of EOF... + rm -f faketty + mkfifo faketty + cat faketty | proton-bridge --cli "$@" fi diff --git a/build/gpgparams b/build/gpgparams index 355568e..351df8e 100644 --- a/build/gpgparams +++ b/build/gpgparams @@ -1,8 +1,8 @@ %no-protection -%echo Generating a basic OpenPGP key Key-Type: RSA Key-Length: 2048 -Name-Real: pass-key +Subkey-Type: RSA +Name-Real: Proton Bridge +Name-Email: bridge@local Expire-Date: 0 %commit -%echo done