diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f8ae178 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +* + +!.gitignore +!LICENSE +!*.sh +!gpgparams +!Dockerfile \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6f315a6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:buster-slim +LABEL maintainer="Xiaonan Shen " + +EXPOSE 25/tcp +EXPOSE 143/tcp +ENV DEB_URL https://protonmail.com/download/protonmail-bridge_1.2.6-1_amd64.deb +WORKDIR /root + +# Copy gpg parameters and .deb installer +COPY gpgparams /protonmail/ + +# Install dependencies and protonmail bridge +RUN apt-get update \ + && apt-get install -y --no-install-recommends socat pass \ + && apt-get install -y wget \ + && wget -O /protonmail/protonmail.deb ${DEB_URL} \ + && apt-get install -y --no-install-recommends /protonmail/protonmail.deb \ + && apt-get purge -y wget \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* \ + && rm /protonmail/protonmail.deb + +COPY entrypoint.sh /bin/ +RUN chmod +x /bin/entrypoint.sh + +ENTRYPOINT ["/bin/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..119186f --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +set -e + +# Initialize +if [[ $1 == init ]]; then + + # # Parse parameters + # TFP="" # Default empty two factor passcode + # shift # skip `init` + # while [[ $# -gt 0 ]]; do + # key="$1" + # case $key in + # -u|--username) + # USERNAME="$2" + # ;; + # -p|--password) + # PASSWORD="$2" + # ;; + # -t|--twofactor) + # TWOFACTOR="$2" + # ;; + # esac + # shift + # shift + # done + + # Initialize pass + gpg --generate-key --batch /protonmail/gpgparams + pass init pass-key + + # Login + protonmail-bridge --cli + +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 + cat faketty | protonmail-bridge --cli + +fi diff --git a/gpgparams b/gpgparams new file mode 100644 index 0000000..355568e --- /dev/null +++ b/gpgparams @@ -0,0 +1,8 @@ +%no-protection +%echo Generating a basic OpenPGP key +Key-Type: RSA +Key-Length: 2048 +Name-Real: pass-key +Expire-Date: 0 +%commit +%echo done