mirror of
https://github.com/lwthiker/curl-impersonate.git
synced 2026-08-25 22:08:14 +00:00
Use a template for generating Dockerfiles
Since the firefox and chrome builds are similar except for the TLS library used, it makes sense to unify their Dockerfiles. This commit introduces a template Dockerfile from which both the build Dockerfiles are generated using the simple 'mustache' template system.
This commit is contained in:
@@ -1,22 +1,34 @@
|
||||
# Python is needed for building libnss
|
||||
#
|
||||
# NOTE: THIS DOCKERFILE IS GENERATED FROM "Dockerfile.template" VIA
|
||||
# "generate-dockerfiles.sh".
|
||||
#
|
||||
# PLEASE DO NOT EDIT IT DIRECTLY.
|
||||
#
|
||||
|
||||
# Python is needed for building libnss.
|
||||
# Use it as a common base.
|
||||
FROM python:3.10.1-slim-buster
|
||||
|
||||
WORKDIR /build
|
||||
|
||||
# Common dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y git ninja-build cmake curl zlib1g-dev
|
||||
|
||||
# Dependencies for building libnss
|
||||
# See https://firefox-source-docs.mozilla.org/security/nss/build.html#mozilla-projects-nss-building
|
||||
RUN apt-get update && \
|
||||
apt-get install -y mercurial git ninja-build cmake python3-pip curl zlib1g-dev
|
||||
|
||||
# The following are needed because we are going to change some autoconf scripts,
|
||||
# both for libnghttp2 and curl.
|
||||
RUN apt-get install -y autoconf automake autotools-dev pkg-config libtool
|
||||
RUN apt-get install -y mercurial python3-pip
|
||||
|
||||
# curl tries to load the CA certificates for libnss.
|
||||
# It loads them from /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so,
|
||||
# which is supplied by libnss3 on Debian/Ubuntu
|
||||
RUN apt-get install -y libnss3
|
||||
|
||||
|
||||
# The following are needed because we are going to change some autoconf scripts,
|
||||
# both for libnghttp2 and curl.
|
||||
RUN apt-get install -y autoconf automake autotools-dev pkg-config libtool
|
||||
|
||||
# Download and compile libbrotli
|
||||
ARG BROTLI_VERSION=1.0.9
|
||||
RUN curl -L https://github.com/google/brotli/archive/refs/tags/v${BROTLI_VERSION}.tar.gz -o brotli-${BROTLI_VERSION}.tar.gz && \
|
||||
@@ -33,12 +45,13 @@ ARG NSS_VERSION=nss-3.74
|
||||
# This tarball is already bundled with nspr, a dependency of libnss.
|
||||
ARG NSS_URL=https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_74_RTM/src/nss-3.74-with-nspr-4.32.tar.gz
|
||||
|
||||
# Download the nss library.
|
||||
# Download and compile nss.
|
||||
RUN curl -o ${NSS_VERSION}.tar.gz ${NSS_URL}
|
||||
RUN tar xf ${NSS_VERSION}.tar.gz && \
|
||||
cd ${NSS_VERSION}/nss && \
|
||||
./build.sh -o --disable-tests --static
|
||||
|
||||
|
||||
ARG NGHTTP2_VERSION=nghttp2-1.46.0
|
||||
ARG NGHTTP2_URL=https://github.com/nghttp2/nghttp2/releases/download/v1.46.0/nghttp2-1.46.0.tar.bz2
|
||||
|
||||
@@ -68,13 +81,14 @@ RUN cd ${CURL_VERSION} && \
|
||||
for p in $(ls curl-*.patch); do patch -p1 < $p; done && \
|
||||
autoreconf -fi
|
||||
|
||||
# Compile curl with nss
|
||||
# Compile curl with nghttp2, libbrotli and nss (firefox) or boringssl (chrome).
|
||||
# Enable keylogfile for debugging of TLS traffic.
|
||||
RUN cd ${CURL_VERSION} && \
|
||||
./configure --enable-static \
|
||||
--disable-shared \
|
||||
--with-nss=/build/${NSS_VERSION}/dist/Release \
|
||||
--with-nghttp2=/usr/local \
|
||||
--with-brotli=/build/brotli-${BROTLI_VERSION}/build/installed \
|
||||
--with-nss=/build/${NSS_VERSION}/dist/Release \
|
||||
CFLAGS="-I/build/${NSS_VERSION}/dist/public/nss -I/build/${NSS_VERSION}/dist/Release/include/nspr" \
|
||||
USE_CURL_SSLKEYLOGFILE=true && \
|
||||
make
|
||||
@@ -85,9 +99,9 @@ RUN mkdir out && \
|
||||
|
||||
# Re-compile libcurl dynamically
|
||||
RUN cd ${CURL_VERSION} && \
|
||||
./configure --with-nss=/build/${NSS_VERSION}/dist/Release \
|
||||
--with-nghttp2=/usr/local \
|
||||
./configure --with-nghttp2=/usr/local \
|
||||
--with-brotli=/build/brotli-${BROTLI_VERSION}/build/installed \
|
||||
--with-nss=/build/${NSS_VERSION}/dist/Release \
|
||||
CFLAGS="-I/build/${NSS_VERSION}/dist/public/nss -I/build/${NSS_VERSION}/dist/Release/include/nspr" \
|
||||
USE_CURL_SSLKEYLOGFILE=true && \
|
||||
make clean && make
|
||||
@@ -101,7 +115,6 @@ RUN ver=$(readlink -f curl-7.81.0/lib/.libs/libcurl.so | sed 's/.*so\.//') && \
|
||||
ln -s "libcurl-impersonate.so.$ver" "out/libcurl-impersonate.so" && \
|
||||
strip "out/libcurl-impersonate.so.$ver"
|
||||
|
||||
|
||||
# Wrapper script
|
||||
# Wrapper scripts
|
||||
COPY curl_ff* out/
|
||||
RUN chmod +x out/curl_*
|
||||
|
||||
Reference in New Issue
Block a user