protonmail-bridge-nextcoud-.../build/entrypoint.sh

76 lines
3.0 KiB
Bash
Raw Normal View History

2020-06-01 13:51:24 +00:00
#!/bin/bash
set -ex
# Initialize
if [[ $1 == init ]]; then
# Initialize pass
gpg --generate-key --batch /protonmail/gpgparams
pass init pass-key
2022-10-16 06:49:38 +00:00
# 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
2020-06-01 13:51:24 +00:00
# Login
/protonmail/proton-bridge --cli $@
2020-06-01 13:51:24 +00:00
else
2024-12-10 09:57:05 +00:00
if [[ $HOME == "/" ]] then
echo "When running rootless, you must set a home dir as the HOME env var. We recommend /data. Make sure it is writable by the user running the container (currently id is $(id -u) and HOME is $HOME)."
2024-12-10 09:57:05 +00:00
exit 1
fi
# give friendly error if you don't have protonmail data
2024-12-10 09:57:05 +00:00
if [[ `find $HOME | wc -l` == 1 ]]; then # 1 because find $HOME will always return $HOME
echo "No files found - start the container with the init command, or copy/mount files into it at $HOME first. Sleeping 5 minutes before exiting so you have time to copy the files over."
sleep 300
exit 1
fi
# give friendly error if the user doesn't own the data
if [[ $(id -u) != 0 ]]; then
2024-12-06 19:18:08 +00:00
if [[ `find $HOME/.* -not -user $(id -u) | wc -l` != 0 ]]; then
echo "You do not own the data in $HOME. Please chown it to $(id -u), run the container as the owner of the data or run the container as root."
exit 1
2024-12-06 19:18:08 +00:00
fi
fi
# delete lock files if they exist - this can happen if the container is restarted forcefully
find $HOME -name "*.lock" -delete
2024-12-10 09:57:05 +00:00
2020-06-01 13:51:24 +00:00
# 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 :)
if [[ $(id -u) == 0 ]]; then
socat TCP-LISTEN:25,fork TCP:127.0.0.1:1025 &
socat TCP-LISTEN:143,fork TCP:127.0.0.1:1143 &
fi
2024-12-06 12:45:31 +00:00
socat TCP-LISTEN:2025,fork TCP:127.0.0.1:1025 &
socat TCP-LISTEN:2143,fork TCP:127.0.0.1:1143 &
2020-06-01 13:51:24 +00:00
# Broken until https://github.com/ProtonMail/proton-bridge/issues/512 is resolved.
2024-12-12 11:53:18 +00:00
# check if the vault-editor can read the config
/protonmail/vault-editor read 2>&1 1>/dev/null
# Modify the protonmail config with env variables and expected values. Env variables must be converted from string to boolean.
/protonmail/vault-editor read | \
jq '.Settings.AutoUpdate = (env.PROTONMAIL_AutoUpdate | if . == "true" then true else false end)
| .Settings.TelemetryDisabled = (env.PROTONMAIL_TelemetryDisabled | if . == "true" then true else false end)
| .Settings.GluonDir |= "\(env.HOME)/.local/share/protonmail/bridge-v3/gluon"
| .Settings.Autostart = false
| .Settings.SMTPPort = 1025
2024-12-12 14:14:44 +00:00
| .Settings.IMAPPort = 1143 ' > /tmp/protonmail-conf.json
cat /tmp/protonmail-conf.json | /protonmail/vault-editor write
rm /tmp/protonmail-conf.json
2024-12-11 11:27:43 +00:00
2020-06-01 13:51:24 +00:00
# Start protonmail
2024-12-06 12:45:31 +00:00
/protonmail/proton-bridge --noninteractive $@
2020-06-01 13:51:24 +00:00
fi