From 55175292b0ece57ed5df49ab02770a2c7fa488c1 Mon Sep 17 00:00:00 2001 From: Xiaonan Shen Date: Mon, 1 Jun 2020 06:51:24 -0700 Subject: [PATCH] Add build from source --- build/.dockerignore | 8 ++++++++ build/Dockerfile | 28 ++++++++++++++++++++++++++++ build/VERSION | 1 + build/build.sh | 16 ++++++++++++++++ build/entrypoint.sh | 29 +++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+) create mode 100644 build/.dockerignore create mode 100644 build/Dockerfile create mode 100644 build/VERSION create mode 100644 build/build.sh create mode 100644 build/entrypoint.sh diff --git a/build/.dockerignore b/build/.dockerignore new file mode 100644 index 0000000..cdbb9e6 --- /dev/null +++ b/build/.dockerignore @@ -0,0 +1,8 @@ +* + +!.dockerignore +!VERSION +!entrypoint.sh +!gpgparams +!Dockerfile +!build.sh diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 0000000..c15d368 --- /dev/null +++ b/build/Dockerfile @@ -0,0 +1,28 @@ +FROM golang:1.13 AS build + +# Install dependencies +RUN apt-get update && apt-get install -y libsecret-1-dev + +# Build +WORKDIR /build/ +COPY build.sh VERSION /build/ +RUN bash build.sh + +FROM ubuntu:20.04 +LABEL maintainer="Xiaonan Shen " + +EXPOSE 25/tcp +EXPOSE 143/tcp + +# Install dependencies and protonmail bridge +RUN apt-get update \ + && apt-get install -y --no-install-recommends socat pass libsecret-1-0 \ + && rm -rf /var/lib/apt/lists/* + +# Copy bash scripts +COPY gpgparams entrypoint.sh /protonmail/ + +# Copy protonmail +COPY --from=build /build/proton-bridge/Desktop-Bridge /protonmail/ + +ENTRYPOINT ["bash", "/protonmail/entrypoint.sh"] diff --git a/build/VERSION b/build/VERSION new file mode 100644 index 0000000..f3d6a1a --- /dev/null +++ b/build/VERSION @@ -0,0 +1 @@ +v1.2.7-live.1 \ No newline at end of file diff --git a/build/build.sh b/build/build.sh new file mode 100644 index 0000000..c549fbe --- /dev/null +++ b/build/build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -ex + +VERSION=`cat VERSION` + +# Clone new code +git clone https://github.com/ProtonMail/proton-bridge.git +cd proton-bridge +git checkout $VERSION + +# Enable debug log +sed -i "s/build desktop/-debug build desktop/" Makefile + +# Build +make build-nogui diff --git a/build/entrypoint.sh b/build/entrypoint.sh new file mode 100644 index 0000000..26d26c3 --- /dev/null +++ b/build/entrypoint.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +set -ex + +# Initialize +if [[ $1 == init ]]; then + + # Initialize pass + gpg --generate-key --batch /protonmail/gpgparams + pass init pass-key + + # Login + /protonmail/Desktop-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/Desktop-Bridge --cli + +fi