#!/bin/bash
#
# Script that is used as a Docker entrypoint.
#
# It starts minidns with a zone resolving "localhost", and overrides
# /etc/resolv.conf to use it. Then launches docker CMD.
#
# This is used for more hermetic Docker test environments.
set -e
. "$(dirname "$0")/../util/lib.sh"
init
# Go to the root of the repository.
cd ../..
# Undo the EXIT trap, so minidns continues to run in the background.
trap - EXIT
set -v
# The DNS server resolves only "localhost"; tests will rely on this, as we
# $HOSTALIASES to point our test hostnames to localhost, so it needs to
# resolve.
echo "
localhost A 127.0.0.1
localhost AAAA ::1
" > /tmp/zones
start-stop-daemon --start --background \
--exec /tmp/minidns \
-- --zones=/tmp/zones
echo "nameserver 127.0.0.1" > /etc/resolv.conf
echo "nameserver ::1" >> /etc/resolv.conf
# Wait until the minidns resolver comes up.
wait_until_ready 53
# Disable the Go proxy, since now there is no external network access.
# Modules should be already be made available in the environment.
export GOPROXY=off
# Launch arguments, which come from docker CMD, as "chasquid" user.
# Running tests as root makes some integration tests more difficult, as for
# example Exim has hard-coded protections against running as root.
sudo -u "chasquid" -g "chasquid" \
--set-home \
--preserve-env PATH="$PATH" \
-- "$@"