12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/usr/bin/env bash
- while true;do ls | grep -q dockerbunker.sh;if [[ $? == 0 ]];then BASE_DIR=$PWD;break;else cd ../;fi;done
- PROPER_NAME="IPsec VPN Server"
- SERVICE_NAME="$(echo -e "${PROPER_NAME,,}" | tr -d '[:space:]')"
- declare -a environment=( "data/env/dockerbunker.env" "data/include/init.sh" )
- for env in "${environment[@]}";do
- [[ -f "${BASE_DIR}"/$env ]] && source "${BASE_DIR}"/$env
- done
- declare -a containers=( "${SERVICE_NAME}-service-dockerbunker" )
- declare -A IMAGES=( [service]="dockerbunker/${SERVICE_NAME}" )
- declare -A volumes=( [${SERVICE_NAME}-data-vol-1]="/lib/modules" )
- declare -A BUILD_IMAGES=( [dockerbunker/${SERVICE_NAME}]="${DOCKERFILES}/${SERVICE_NAME}" )
- [[ -z $1 ]] && options_menu
- configure() {
- pre_configure_routine
-
- ! [[ -d "${BASE_DIR}/data/Dockerfiles/ipsecvpnserver" ]] \
- && git clone https://github.com/hwdsl2/docker-ipsec-vpn-server.git data/Dockerfiles/ipsecvpnserver >/dev/null
- echo -e "\n# \e[4mIPsec VPN Server Settings\e[0m"
- if [ -z "$VPN_USER" ]; then
- read -p "VPN Username: " -ei "vpnuser" VPN_USER
- else
- read -p "VPN Username: " -ei "${VPN_USER}" VPN_USER
- fi
-
- if [ -z "$VPN_PASSWORD" ]; then
- stty_orig=`stty -g`
- stty -echo
- read -p "VPN Password: " -ei "" VPN_PASSWORD
- stty $stty_orig
- echo ""
- fi
- prompt_confirm "OK to use Google DNS?"
- if [[ $? == 0 ]];then
- read -p "Enter DNS 1: " dns1
- read -p "Enter DNS 2: " dns2
- sed -i 's/8\.8\.8\.8/${dns1}/' "${BASE_DIR}"/data/Dockerfiles/${SERVICE_NAME}/run.sh
- sed -i 's/8\.8\.4\.4/${dns2}/' "${BASE_DIR}"/data/Dockerfiles/${SERVICE_NAME}/run.sh
- fi
- # avoid tr illegal byte sequence in macOS when generating random strings
- if [[ $OSTYPE =~ "darwin" ]];then
- if [[ $LC_ALL ]];then
- oldLC_ALL=$LC_ALL
- export LC_ALL=C
- else
- export LC_ALL=C
- fi
- fi
- cat <<-EOF >> "${SERVICE_ENV}"
- # Please use long, random alphanumeric strings (A-Za-z0-9)
- VPN_IPSEC_PSK=$(tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 64)
- # ------------------------------
- # User configuration
- # ------------------------------
-
- VPN_USER=${VPN_USER}
- VPN_PASSWORD="${VPN_PASSWORD}"
- EOF
- if [[ $OSTYPE =~ "darwin" ]];then
- unset LC_ALL
- fi
- post_configure_routine
- }
- setup() {
- initial_setup_routine
-
- if ! lsmod | grep -q af_key;then
- echo -en "\e[1mLoading the IPsec NETKEY kernel module on the Docker host\e[0m"
- modprobe af_key
- exit_response
- [[ ! $(grep ^af_key$ /etc/modules) ]] && echo af_key >> /etc/modules
- fi
- docker_run_all
- post_setup_routine
- }
- $1
|