#!/usr/bin/env bash ##makedesc: Install openvpn v2.6.3 (src) set -eo pipefail installed() { command -v "$1" >/dev/null 2>&1; } require() { local missing=() for pkg in "$@"; do installed "$pkg" || missing+=("$pkg") done if [ ${#missing[@]} -gt 0 ]; then if [ "$(uname -s)" = "Darwin" ]; then if installed brew; then brew install "${missing[@]}" else echo "ERROR: Missing: ${missing[*]}. Install manually or use brew." >&2 exit 1 fi else sudo apt install -y "${missing[@]}" fi fi } download() { if installed wget; then wget -q --show-progress "$1" -O "$2" else curl -fsSL "$1" -o "$2" fi } unpack_targz() { tar -xzvf "$1" -C "$2" } install() { if [ "$(uname -s)" = "Darwin" ]; then if installed brew; then brew install openvpn else echo "ERROR: Install Homebrew first." >&2 exit 1 fi return fi echo echo "===============================================" echo "Installing openvpn" echo "===============================================" echo # https://openvpn.net/community-downloads/ # https://openvpn.net/community-resources/installing-openvpn/ OVPNVER='2.6.3' require libssl-dev liblzo2-dev libpam0g-dev mkdir -p "$HOME/install/" download "https://swupdate.openvpn.org/community/releases/openvpn-${OVPNVER}.tar.gz" "$HOME/install/openvpn-${OVPNVER}.tar.gz" unpack_targz "$HOME/install/openvpn-${OVPNVER}.tar.gz" "$HOME/install/" cd "$HOME/install/openvpn-${OVPNVER}" sudo ./configure sudo make sudo make install sudo apt install -y network-manager-openvpn network-manager-openvpn-gnome echo echo "Finish!" openvpn --version echo } case "$1" in *) install ;; esac