diff --git a/bin/ovpn_copy_server_files b/bin/ovpn_copy_server_files index be92f0e..42fa827 100755 --- a/bin/ovpn_copy_server_files +++ b/bin/ovpn_copy_server_files @@ -2,6 +2,8 @@ ## @licence MIT ## @author Copyright (C) 2015 Robin Schneider +set -e + if [ -z "$OPENVPN" ]; then export OPENVPN="$PWD" fi @@ -10,27 +12,30 @@ if ! source "$OPENVPN/ovpn_env.sh"; then exit 1 fi -TARGET="/tmp/openvpn_${OVPN_CN}" +TARGET="$OPENVPN/server" if [ -n "$1" ]; then TARGET="$1" -else - TARGET="$OPENVPN/server" fi +mkdir -p "${TARGET}" ## Ensure that no other keys then the one for the server is present. -rm --recursive --force "$TARGET/pki/private" "$TARGET/pki/issued" +rm -rf "$TARGET/pki/private" "$TARGET/pki/issued" + +FILES=( + "openvpn.conf" + "ovpn_env.sh" + "pki/private/${OVPN_CN}.key" + "pki/issued/${OVPN_CN}.crt" + "pki/dh.pem" + "pki/ta.key" + "pki/ca.crt" +) + +# rsync isn't available to keep size down +# cp --parents isn't in busybox version +# hack the directory structure with tar +tar cf - -C "${OPENVPN}" "${FILES[@]}" | tar xvf - -C "${TARGET}" -echo " -openvpn.conf -ovpn_env.sh -pki/private/${OVPN_CN}.key -pki/issued/${OVPN_CN}.crt -pki/dh.pem -pki/ta.key -pki/ca.crt -" | rsync --recursive --verbose \ - --files-from - \ - "$OPENVPN/" "$TARGET" mkdir -p "$TARGET/ccd" echo "Created the openvpn configuration for the server: $TARGET" diff --git a/tests/paranoid.sh b/tests/paranoid.sh new file mode 100755 index 0000000..e9da883 --- /dev/null +++ b/tests/paranoid.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -ex + +IMG=${IMG:-kylemanna/openvpn} + +temp=$(mktemp -d) + +pushd $temp + +SERV_IP=$(ip -4 -o addr show scope global | awk '{print $4}' | sed -e 's:/.*::' | head -n1) + +docker run --net=none --rm -t -i -v $PWD:/etc/openvpn $IMG ovpn_genconfig -u udp://$SERV_IP + +docker run --net=none --rm -t -i -v $PWD:/etc/openvpn -e "EASYRSA_BATCH=1" -e "EASYRSA_REQ_CN=Travis-CI Test CA" kylemanna/openvpn ovpn_initpki nopass + +docker run --net=none --rm -t -i -v $PWD:/etc/openvpn $IMG ovpn_copy_server_files + +popd +# Can't delete the temp directory as docker creates some files as root. +# Just let it die with the test instance. +rm -rf $temp || true