#!/bin/bash

# Must be root to use this tool
if [[ ! $EUID -eq 0 ]];then
  if [[ $(dpkg-query -s sudo) ]];then
        export SUDO="sudo"
  else
    echo "::: Please install sudo or run this as root."
    exit 1
  fi
fi

function makeOVPNFunc {
    shift
    $SUDO /opt/pivpn/makeOVPN.sh "$@"
    exit 1
}

function listOVPNFunc {
    $SUDO /opt/pivpn/listOVPN.sh
    exit 1
}

function debugFunc {
    $SUDO /opt/pivpn/pivpnDebug.sh
    exit 1
}

function removeOVPNFunc {
    $SUDO /opt/pivpn/removeOVPN.sh
    exit 1
}

function uninstallFunc {
    $SUDO /opt/pivpn/uninstall.sh
    exit 1
}

function versionFunc {
    printf "\e[1mVersion 1.6\e[0m\n"
}

function helpFunc {
    echo "::: Control all PiVPN specific functions!"
    echo ":::"
    echo "::: Usage: pivpn <command> [option]"
    echo ":::"
    echo "::: Commands:"
    echo ":::  -a, add [nopass]     Create a client ovpn profile, optional nopass"
    echo ":::  -d, debug            Start a debugging session if having trouble"
    echo ":::  -l, list             List all valid and revoked certificates"
    echo ":::  -r, revoke           Revoke a client ovpn profile"
    echo ":::  -h, help             Show this help dialog"
    echo ":::  -u, uninstall        Uninstall PiVPN from your system!"
    exit 1
}

if [[ $# = 0 ]]; then
    helpFunc
fi

# Handle redirecting to specific functions based on arguments
case "$1" in
"-a" | "add"                ) makeOVPNFunc "$@";;
"-d" | "debug"              ) debugFunc;;
"-l" | "list"               ) listOVPNFunc;;
"-r" | "revoke"             ) removeOVPNFunc;;
"-h" | "help"               ) helpFunc;;
"-u" | "uninstall"          ) uninstallFunc;;
"-v"                        ) versionFunc;;
*                           ) helpFunc;;
esac
