From 6962dc1b3d9fc0a7caae43fb920c573d2fc850a1 Mon Sep 17 00:00:00 2001 From: Deepak Goel Date: Thu, 11 Jul 2019 15:49:10 -0700 Subject: [PATCH] script to create (or destroy) vpn for docker-on-mac --- mac-network.sh | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 mac-network.sh diff --git a/mac-network.sh b/mac-network.sh new file mode 100644 index 0000000..672e062 --- /dev/null +++ b/mac-network.sh @@ -0,0 +1,96 @@ +#!/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) Tunnelblink ' + echo '2. Run open ./DockerForMac.ovpn ' + echo '3. In Tunnelblink, 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 Tunnelblink, 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 +