2020-06-01 13:51:24 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
set -ex
|
|
|
|
|
|
|
|
|
|
# Initialize
|
|
|
|
|
if [[ $1 == init ]]; then
|
2021-06-14 20:38:44 +00:00
|
|
|
# set GNUPGHOME as a workaround for
|
|
|
|
|
#
|
|
|
|
|
# gpg-agent[106]: error binding socket to '/root/.gnupg/S.gpg-agent': File name too long
|
|
|
|
|
#
|
|
|
|
|
# when using docker volume mount
|
|
|
|
|
#
|
|
|
|
|
# ref: https://dev.gnupg.org/T2964
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
export GNUPGHOME="${GNUPGHOME:-"/tmp/gnupg"}"
|
|
|
|
|
rm -rf "${GNUPGHOME}" || true
|
|
|
|
|
mkdir -p "${GNUPGHOME}"
|
|
|
|
|
chmod 0700 "${GNUPGHOME}"
|
2020-06-01 13:51:24 +00:00
|
|
|
|
|
|
|
|
# Initialize pass
|
|
|
|
|
gpg --generate-key --batch /protonmail/gpgparams
|
2021-06-15 02:07:56 +00:00
|
|
|
pass init "${KEY_ID:-"pass-key"}"
|
2020-06-01 13:51:24 +00:00
|
|
|
|
|
|
|
|
# Login
|
2021-06-14 20:38:44 +00:00
|
|
|
do_login="/protonmail/proton-bridge --cli $*"
|
|
|
|
|
if [[ "x${PROTONMAIL_USERNAME}" != "x" && "x${PROTONMAIL_PASSWORD}" != "x" ]]; then
|
|
|
|
|
# automated login if both username and password are set
|
|
|
|
|
do_login="/protonmail/login.exp ${do_login}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
$do_login
|
|
|
|
|
|
|
|
|
|
# copy gnupg files to default path
|
|
|
|
|
mkdir -p /root/.gnupg
|
|
|
|
|
kill "$(pidof gpg-agent)"
|
|
|
|
|
cp -a "${GNUPGHOME}/" /root/.gnupg/
|
2020-06-01 13:51:24 +00:00
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
# socat will make the conn appear to come from 127.0.0.1
|
|
|
|
|
# ProtonMail Bridge currently expects that.
|
|
|
|
|
# It also allows us to bind to the real ports :)
|
|
|
|
|
socat TCP-LISTEN:25,fork TCP:127.0.0.1:1025 &
|
|
|
|
|
socat TCP-LISTEN:143,fork TCP:127.0.0.1:1143 &
|
|
|
|
|
|
|
|
|
|
# Start protonmail
|
|
|
|
|
# Fake a terminal, so it does not quit because of EOF...
|
|
|
|
|
rm -f faketty
|
|
|
|
|
mkfifo faketty
|
2021-03-03 21:11:57 +00:00
|
|
|
cat faketty | /protonmail/proton-bridge --cli $@
|
2020-06-01 13:51:24 +00:00
|
|
|
|
|
|
|
|
fi
|