forked from mirrors/protonmail-bridge-docker
63 lines
1.7 KiB
Bash
63 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# Generate gpg keys
|
|
if [ ! -f ${HOME}/.gnupg ]; then
|
|
echo "Generateing gpg keys..."
|
|
# 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=/tmp/gnupg
|
|
mkdir ${GNUPGHOME}
|
|
chmod 700 ${GNUPGHOME}
|
|
gpg --generate-key --batch /srv/protonmail/gpgparams
|
|
pkill gpg-agent
|
|
mv ${GNUPGHOME} ${HOME}/.gnupg
|
|
export GNUPGHOME=""
|
|
fi
|
|
|
|
# Initialize pass
|
|
if [ ! -f ${HOME}/.password-store/.gpg-id ]; then
|
|
echo "Initializing pass"
|
|
pass init pass-key
|
|
fi
|
|
|
|
# Login
|
|
if [ ! -f ${HOME}/.logged-in ]; then
|
|
if [[ -n ${PROTONMAIL_USERNAME} && -n ${PROTONMAIL_PASSWORD} ]]; then
|
|
echo "Logging in"
|
|
auto-login.exp $@
|
|
echo "" > ${HOME}/.logged-in
|
|
else
|
|
# Wait for manual login
|
|
echo "=============================================================================="
|
|
echo "PROTONMAIL_USERNAME or PROTONMAIL_PASSWORD is not set. Will not do auto login."
|
|
echo "Run docker exec -it protonmail login.sh to login manually."
|
|
echo "Waiting for manual login..."
|
|
while [ ! -f ${HOME}/.logged-in ]; do
|
|
sleep 5
|
|
done
|
|
fi
|
|
fi
|
|
|
|
echo "Logged in flag detected. Starting protonmail bridge"
|
|
|
|
|
|
# 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:2025,fork TCP:127.0.0.1:1025 &
|
|
socat TCP-LISTEN:2143,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
|
|
cat faketty | proton-bridge --cli $@
|