97 lines
2.7 KiB
Bash
97 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
DOCKER_IMAGE=onedata/docker-openvpn-kube-for-mac:1.3.0
|
|
|
|
# colors
|
|
GREEN='\033[1;32m'
|
|
RED='\033[0;31m'
|
|
WHITE='\033[1;37m'
|
|
NOCOLOR='\033[0m'
|
|
|
|
# marks
|
|
TICK='\xE2\x9C\x94'
|
|
CROSS='\xE2\x9D\x8C'
|
|
|
|
create() {
|
|
command -v docker > /dev/null 2>&1 || { echo >&2 "couldn't find docker client. Aborting..."; exit 1; }
|
|
|
|
[ ! "$(docker ps | grep docker-openvpn)" ] || { echo 'It seems VPN is already running. Do Nothing.'; exit 1; }
|
|
|
|
docker container rm docker-openvpn > /dev/null 2>&1
|
|
docker volume rm ovpn-data > /dev/null 2>&1
|
|
|
|
printf "${GREEN}"
|
|
|
|
printf "Creating docker volume ..........."
|
|
error=$(docker volume create --name ovpn-data 2>&1 >/dev/null)
|
|
check "$error"
|
|
|
|
printf "Initializing vpn config .........."
|
|
error=$(docker run -v ovpn-data:/etc/openvpn --rm $DOCKER_IMAGE ovpn_genconfig -u udp://localhost 2>&1 >/dev/null)
|
|
check "$error"
|
|
|
|
printf "Creating CA (may take sometime) .."
|
|
error=$(docker run -v ovpn-data:/etc/openvpn --rm -i -e "EASYRSA_BATCH=1" -e "EASYRSA_REQ_CN=Default CA" $DOCKER_IMAGE ovpn_initpki nopass 2>&1 >/dev/null)
|
|
check "$error"
|
|
|
|
printf "Creating client certificate ......"
|
|
error=$(docker run -v ovpn-data:/etc/openvpn --rm -i $DOCKER_IMAGE easyrsa build-client-full DockerForMac nopass 2>&1 >/dev/null)
|
|
check "$error"
|
|
|
|
printf "Starting vpn server .............."
|
|
error=$(docker run --dns 8.8.8.8 --restart=always -v ovpn-data:/etc/openvpn --name docker-openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN $DOCKER_IMAGE 2>&1 >/dev/null)
|
|
check "$error"
|
|
|
|
printf "Exporting client certificate ....."
|
|
docker run -v ovpn-data:/etc/openvpn --rm $DOCKER_IMAGE ovpn_getclient DockerForMac > ./DockerForMac.ovpn
|
|
printf "${TICK}\n"
|
|
|
|
printf "${WHITE}\n"
|
|
|
|
echo 'Please follow the below instructions '
|
|
echo '********************************************************'
|
|
echo '1. Install (or Run) Tunnelblick '
|
|
echo '2. Run open ./DockerForMac.ovpn '
|
|
echo '3. In Tunnelblick, select `Connect DockerForMac` '
|
|
echo '4. Wait for the server response (it will take a minute) '
|
|
|
|
printf "${NOCOLOR}\n"
|
|
}
|
|
|
|
destroy() {
|
|
printf "${GREEN}"
|
|
|
|
printf "Stopping vpn server ........."
|
|
docker container stop docker-openvpn > /dev/null 2>&1
|
|
docker container rm docker-openvpn > /dev/null 2>&1
|
|
printf "${TICK}\n"
|
|
|
|
printf "${WHITE}\n"
|
|
echo 'In Tunnelblick, select `Disconnect DockerForMac` '
|
|
printf "${NOCOLOR}\n"
|
|
}
|
|
|
|
check() {
|
|
if [ $? -eq 0 ]; then
|
|
printf "${TICK}\n"
|
|
else
|
|
printf "${CROSS}\n"
|
|
printf "${RED}ERROR: %s\n" "$1"
|
|
printf "${NOCOLOR}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
create)
|
|
create
|
|
;;
|
|
destroy)
|
|
destroy
|
|
;;
|
|
*)
|
|
echo $"Valid arguments are: create | destroy"
|
|
exit 1
|
|
esac
|
|
|