Fully end to end encrypted anonymous chat program. Server only stores public key lookup for users and the encrypted messages. No credentials are transfered to the server, but kept in local browser storage. This allows 100% safe chatting. https://safechat.ch
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.5 KiB

#! /bin/bash -e
# build and test everything in a fresh docker installation
img="ubuntu:latest"
repos=""
keys=""
envs=""
dirs="-v $(pwd):/workdir"
packages=""
targets="all check distcheck"
commands=()
if test -e ./build-in-docker.conf; then
# you can preconfigure the variables in file build-in-docker.conf
# if you do so, add the file to EXTRA_DIST in makefile.am
source ./build-in-docker.conf
fi
while test $# -gt 0; do
case "$1" in
(-h|--help)
echo "$0 [OPTIONS]"
echo
echo "OPTIONS:"
echo " -h, --help show this help"
echo " -i, --image <image> use given docker image instead of ${img}"
echo " -t, --targets targets specify build targets, default: ${targets}"
echo " -r, --repo <url> add given apt repository"
echo " -k, --key <url> add public key from url"
echo " -e, --env <var>=<val> set environment variable in docker"
echo " -d, --dir <dir> access given directory read only"
echo " -p, --package <pkg> install extra debian packages"
echo " -x, --exe <command> execute commands as root in docker"
echo
echo "EXAMPLE:"
echo
echo "$0 -i mwaeckerlin/ubuntu:trusty-i386 \\"
echo " -t deb \\"
echo " -e ANDROID_HOME=/opt/local/android \\"
echo " -d /opt/local/android \\"
echo " -r universe \\"
echo " -r https://dev.marc.waeckerlin.org/repository \\"
echo " -k https://dev.marc.waeckerlin.org/repository/PublicKey \\"
echo " -p mrw-c++"
echo
exit 0
;;
(-i|--image) shift;
img="$1"
;;
(-t|--targets) shift;
targets="$1"
;;
(-r|--repo) shift;
repos+=" $1"
;;
(-k|--key) shift;
keys+=" $1"
;;
(-e|--env) shift;
envs+=" -e $1"
;;
(-d|--dirs) shift;
dirs+=" -v $1:$1:ro"
;;
(-p|--package) shift;
packages+=" $1"
;;
(-x|--exe) shift;
commands+=("$1")
;;
(*)
echo "**** ERROR: unknown option '$1', try --help" 1>&2
exit 1
;;
esac
if test $# -eq 0; then
echo "**** ERROR: missing value, try --help" 2>61
exit 1
fi
shift
done
set -x
DOCKER_ID=$(docker run -d ${dirs} ${envs} -w /workdir $img sleep infinity)
trap "docker rm -f ${DOCKER_ID}" INT TERM EXIT
docker exec ${DOCKER_ID} apt-get install -y software-properties-common apt-transport-https dpkg-dev
if test -n "${repos}"; then
for repo in ${repos}; do
docker exec ${DOCKER_ID} apt-add-repository ${repo}
done
fi
if test -n "${keys}"; then
for key in ${keys}; do
wget -O- ${key} \
| docker exec -i ${DOCKER_ID} apt-key add -
done
fi
docker exec ${DOCKER_ID} apt-get update
if test -n "${packages}"; then
docker exec -i ${DOCKER_ID} apt-get install -y ${packages}
fi
for command in "${commands[@]}"; do
docker exec -i ${DOCKER_ID} ${command}
done
docker exec ${DOCKER_ID} ./resolve-debbuilddeps.sh
docker exec -u $(id -u) ${DOCKER_ID} svn upgrade || true
docker exec -u $(id -u) ${DOCKER_ID} ./bootstrap.sh -t "${targets}"