#!/usr/bin/env bash
# Check global openvpn load stats

# Default settings
OPENVPN_DIR=/etc/openvpn
OPENVPN_TIMEOUT=2

# Find script's directory to load the configuration
SCRIPT_DIR=$(dirname $0)

# Load overrides if needed - redir to null in case file does not exist and we use defaults
. $SCRIPT_DIR/openvpn.cfg 2>/dev/null

is_absolute_path() {
	local path="$1"
	case "$path" in
		(/*) ;;
		(*) ! : ;;
	esac
}

for CONFIG in $OPENVPN_DIR/*.conf
do
	if [ -e $CONFIG ];
	then
		INSTANCE=$(basename $CONFIG .conf)

		OPENVPN_MGMT=$(grep ^management $CONFIG)
		OPENVPN_HOST=$(echo $OPENVPN_MGMT|awk '{print $2}')
		OPENVPN_PORT=$(echo $OPENVPN_MGMT|awk '{print $3}')

		OPENVPN_PASSWORD_FILE=$(echo $OPENVPN_MGMT|awk '{print $4}')
		if [ "$OPENVPN_PASSWORD_FILE" != "" ];
		then
			if ! is_absolute_path "$OPENVPN_PASSWORD_FILE";
			then
				OPENVPN_PASSWORD_FILE="$OPENVPN_DIR/$OPENVPN_PASSWORD_FILE"
			fi

			OPENVPN_PASSWORD=$(cat $OPENVPN_PASSWORD_FILE)
		else
			OPENVPN_PASSWORD=""
		fi

		LOAD=$(echo -e "${OPENVPN_PASSWORD}\nload-stats"|nc -q ${OPENVPN_TIMEOUT} ${OPENVPN_HOST} ${OPENVPN_PORT} 2>/dev/null|grep ^SUCCESS)

		if [ "$LOAD" != "" ];
		then
			echo '<<<app-openvpn-loadstats-'$INSTANCE$'>>>'
			echo $LOAD
		fi
	fi
done
