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.
107 lines
3.5 KiB
107 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}"
|
|
|