#!/bin/bash #----------------------------------------------------------------------------------------------------------------------------------- # # Rx3 Vpn Adm # # Copyright (C) 2025-2026 Arnaud G. GIBERT # mailto:arnaud@rx3.net # # This is free software: you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this program; If not, see # . # #----------------------------------------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------------------------------------------------- # Includes #----------------------------------------------------------------------------------------------------------------------------------- : "${RX3_LIB_DIR:=/usr/lib/rx3}" . "${RX3_LIB_DIR}/vpn.bash" #----------------------------------------------------------------------------------------------------------------------------------- # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- declare -g VERSION="1.2.4" declare -g NAME="Rx3_VPN_Adm" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-v | --verbose] {start | stop | restart | status | dump} [args...]" declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" declare -g prog="rx3-vpn" declare -g DEBUG="" #declare -g DEBUG="echo" #declare -g DEBUG=":" declare -g LOG="" #declare -g LOG=":" #declare -g LOG="echo" #----------------------------------------------------------------------------------------------------------------------------------- # Version Print #----------------------------------------------------------------------------------------------------------------------------------- rva_version_print() { version_print } #----------------------------------------------------------------------------------------------------------------------------------- # Help Print #----------------------------------------------------------------------------------------------------------------------------------- rva_help_print() { help_print } #----------------------------------------------------------------------------------------------------------------------------------- # Arg Parse #----------------------------------------------------------------------------------------------------------------------------------- rva_args_parse() { tmp_args=$(getopt -o hvV --long help,verbose,version -n "${NAME}" -- "$@") if [ $? != 0 ]; then echo "Terminating..." >&2; exit 1; fi eval set -- "${tmp_args}" while true do case "$1" in # Mode switches -h|--help) MODE="HELP"; shift;; -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; # End of options --) shift; break;; *) echo "args_parse internal error [$1]!"; exit 1;; esac done if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" -lt "1" ]] then echo_error "Not enough args!" MODE="HELP" EXIT_CODE=1 else case "$1" in start|stop|restart|status|dump) MODE="$(echo "$1" | tr '[:lower:]' '[:upper:]')" ;; *) echo_error "Invalid command: [$1]" MODE="HELP" EXIT_CODE=1 ;; esac fi fi } #----------------------------------------------------------------------------------------------------------------------------------- # Start #----------------------------------------------------------------------------------------------------------------------------------- rva_start() { echo "Starting..." if [ -r /var/lock/subsys/rx3-vpn ] then echo "already started" EXIT_CODE=0 else vpn_start EXIT_CODE=$? [ "${EXIT_CODE}" = 0 ] && touch /var/lock/subsys/rx3-vpn fi echo } #----------------------------------------------------------------------------------------------------------------------------------- # Stop #----------------------------------------------------------------------------------------------------------------------------------- rva_stop() { echo "Stopping..." if [ -r /var/lock/subsys/rx3-vpn ] then vpn_stop EXIT_CODE=$? else echo "already stopped" EXIT_CODE=0 fi [ "${EXIT_CODE}" = 0 ] && rm -f /var/lock/subsys/rx3-vpn echo } #----------------------------------------------------------------------------------------------------------------------------------- # Status #----------------------------------------------------------------------------------------------------------------------------------- rva_status() { vpn_status } #----------------------------------------------------------------------------------------------------------------------------------- # Dump #----------------------------------------------------------------------------------------------------------------------------------- rva_dump() { vpn_job_tab_dump } #----------------------------------------------------------------------------------------------------------------------------------- # Main #----------------------------------------------------------------------------------------------------------------------------------- vsl_add rva_args_parse "$@" case "${MODE}" in "EXIT") exit ${EXIT_CODE} ;; "HELP") rva_help_print exit ${EXIT_CODE} ;; "VERSION") rva_version_print exit ${EXIT_CODE} ;; esac vpn_init case "${MODE}" in START) rva_start ;; STOP) rva_stop ;; RESTART) rva_stop sleep 1 rva_start ;; STATUS) rva_status ;; DUMP) rva_dump ;; *) echo "Usage: $0 {start|stop|restart|status|dump}" EXIT_CODE=1 ;; esac vpn_deinit exit ${EXIT_CODE}